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