diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
| commit | 4f6e8d7a00cbeda1e70cc15be9c4af1018bdad53 (patch) | |
| tree | 54fd1b2695a591d2306d41264df67c53077b752c /toolbox/chmod.c | |
| download | system_core-4f6e8d7a00cbeda1e70cc15be9c4af1018bdad53.tar.gz system_core-4f6e8d7a00cbeda1e70cc15be9c4af1018bdad53.tar.bz2 system_core-4f6e8d7a00cbeda1e70cc15be9c4af1018bdad53.zip | |
Initial Contribution
Diffstat (limited to 'toolbox/chmod.c')
| -rw-r--r-- | toolbox/chmod.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/toolbox/chmod.c b/toolbox/chmod.c new file mode 100644 index 00000000..31a53bf7 --- /dev/null +++ b/toolbox/chmod.c @@ -0,0 +1,40 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <dirent.h> +#include <errno.h> + +#include <unistd.h> +#include <time.h> + +int chmod_main(int argc, char **argv) +{ + int i; + + if (argc < 3) { + fprintf(stderr, "Usage: chmod <MODE> <FILE>\n"); + return 10; + } + + int mode = 0; + const char* s = argv[1]; + while (*s) { + if (*s >= '0' && *s <= '7') { + mode = (mode<<3) | (*s-'0'); + } + else { + fprintf(stderr, "Bad mode\n"); + return 10; + } + s++; + } + for (i = 2; i < argc; i++) { + if (chmod(argv[i], mode) < 0) { + fprintf(stderr, "Unable to chmod %s: %s\n", argv[i], strerror(errno)); + return 10; + } + } + return 0; +} + |
