xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/chown.c (revision ec59a3ddbfceee0efe34584c2c9981a5e5ff1ec4)
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