diff options
Diffstat (limited to 'src/chown.c')
| -rw-r--r-- | src/chown.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/chown.c b/src/chown.c new file mode 100644 index 0000000..d4ba35a --- /dev/null +++ b/src/chown.c @@ -0,0 +1,36 @@ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +int main(int argc, char **argv) { + int ret; + char **f; + uid_t uid; + gid_t gid; + + if(argc < 2) { + printf("Usage: %s <uid>[:<gid>] <files>\n", argv[0]); + return EXIT_FAILURE; + } + + ret = sscanf(argv[1], "%d:%d", &uid, &gid); + if(ret < 1) { + fprintf(stderr, "Invalid owner: %s\n", argv[1]); + return EXIT_FAILURE; + } + + if(ret < 2) + gid = -1; + + f = &argv[2]; + argc -= 2; + + while(argc--) { + ret = chown(*f, uid, gid); + if(ret < 0) + fprintf(stderr, "Error changing ownership on file %s: %s\n", *f, strerror(errno)); + f++; + } +} |
