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
chown(const char * path,uid_t owner,gid_t group)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