chmod.c 413 B

123456789101112131415161718192021222324252627282930313233
  1. #include "lib.h"
  2. #include <errno.h>
  3. #include <stdlib.h>
  4. #include "sys9.h"
  5. #include "dir.h"
  6. int
  7. chmod(const char *path, mode_t mode)
  8. {
  9. Dir d;
  10. _nulldir(&d);
  11. d.mode = mode & 0777;
  12. if(_dirwstat(path, &d) < 0){
  13. _syserrno();
  14. return -1;
  15. }
  16. return 0;
  17. }
  18. int
  19. fchmod(int fd, mode_t mode)
  20. {
  21. Dir d;
  22. _nulldir(&d);
  23. d.mode = mode & 0777;
  24. if(_dirfwstat(fd, &d) < 0){
  25. _syserrno();
  26. return -1;
  27. }
  28. return 0;
  29. }