From ddb2cfd8a74670382e61bad0b567f3d30e9aea70 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 25 Mar 2020 13:21:37 +1100 Subject: Initial commit --- src/chown.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/chown.c (limited to 'src/chown.c') 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 +#include +#include +#include +#include + +int main(int argc, char **argv) { + int ret; + char **f; + uid_t uid; + gid_t gid; + + if(argc < 2) { + printf("Usage: %s [:] \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++; + } +} -- cgit v1.3