1 #include "lib.h" 2 #include "sys9.h" 3 #include <sys/types.h> 4 #include <sys/stat.h> 5 #include <unistd.h> 6 #include <string.h> 7 #include <errno.h> 8 #include <stdlib.h> 9 #include "dir.h" 10 11 int 12 chown(const char *path, uid_t owner, gid_t group) 13 { 14 int num; 15 Dir d; 16 17 _nulldir(&d); 18 19 /* find owner, group */ 20 d.uid = nil; 21 num = owner; 22 if(!_getpw(&num, &d.uid, 0)) { 23 errno = EINVAL; 24 return -1; 25 } 26 27 d.gid = nil; 28 num = group; 29 if(!_getpw(&num, &d.gid, 0)) { 30 errno = EINVAL; 31 return -1; 32 } 33 34 if(_dirwstat(path, &d) < 0){ 35 _syserrno(); 36 return -1; 37 } 38 return 0; 39 } 40