diff --git a/bin/.gitignore b/bin/.gitignore old mode 100644 new mode 100755 diff --git a/build.sh b/build.sh index f47db03..ee77652 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,7 @@ if [ -z $PROJECT_DIR ]; then fi if [ -z $CFLAGS ]; then - CFLAGS="-pedantic -s -Os -flto -Werror -Wall -Wextra -I$PROJECT_DIR -I$PROJECT_DIR/include/libmu -lm" + CFLAGS="-pedantic -s -Os -flto -Werror -Wall -Wextra" fi if [ -z $CC ]; then @@ -25,9 +25,11 @@ for project in $projects; do for i in $p; do cd $PROJECT_DIR/$i echo " * Compile" $i - env CC=$CC CFLAGS="$CFLAGS" OUTPUT="-o $PROJECT_DIR"/bin/$(basename $i) ./build.sh + env CC=$CC CFLAGS="$CFLAGS -I$PROJECT_DIR -I$PROJECT_DIR/include/libmu -lm" OUTPUT="-o $PROJECT_DIR"/bin/$(basename $i) ./build.sh cd $PROJECT_DIR done echo done done + +chmod -vR a+x bin/ diff --git a/src/coreutils/chgrp/chgrp.c b/src/coreutils/chgrp/chgrp.c index 2768b04..6a29d08 100644 --- a/src/coreutils/chgrp/chgrp.c +++ b/src/coreutils/chgrp/chgrp.c @@ -12,6 +12,7 @@ unsigned int r_flag; char *f_flag = "chgrp"; unsigned int H_flag; +unsigned int v_flag; int change(const char *path, void *p) { struct group *grp = (struct group *)p; @@ -27,13 +28,15 @@ int change(const char *path, void *p) { return 1; } + if (v_flag) + printf("chgrp: %s: changed group to %s\n", path, grp->gr_name); return 0; } int main(int argc, char **argv) { int opt; - while ((opt = getopt(argc, argv, "RfH")) != -1) { + while ((opt = getopt(argc, argv, "RfHv")) != -1) { switch (opt) { case 'R': r_flag = 1; @@ -47,8 +50,12 @@ int main(int argc, char **argv) { H_flag = 1; break; + case 'v': + v_flag = 1; + break; + default: - printf("chgrp [group] [file1 file2...]\n\t[-H if a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n"); + printf("chgrp [group] [file1 file2...]\n\t[-H if a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n"); return 0; } } diff --git a/src/coreutils/chmod/chmod.c b/src/coreutils/chmod/chmod.c index d75fc6f..2103001 100644 --- a/src/coreutils/chmod/chmod.c +++ b/src/coreutils/chmod/chmod.c @@ -12,6 +12,7 @@ unsigned int r_flag; char *f_flag = "chmod"; unsigned int H_flag; +unsigned int v_flag; int change(const char *file, void *p) { char *mode_arg = (char *)p; @@ -28,6 +29,9 @@ int change(const char *file, void *p) { return 1; } + if (v_flag) + printf("chmod: %s: changed mode to %d\n", file, mode ); + return 0; } @@ -47,7 +51,7 @@ int main(int argc, char **argv) { } int opt; - while ((opt = getopt(argc, argv, "RfH")) != -1) { + while ((opt = getopt(argc, argv, "RfHv")) != -1) { switch (opt) { case 'R': r_flag = 1; @@ -61,8 +65,12 @@ int main(int argc, char **argv) { H_flag = 1; break; + case 'v': + v_flag = 1; + break; + default: - printf("chmod [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n"); + printf("chmod [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n"); return 0; } } diff --git a/src/coreutils/chown/chown.c b/src/coreutils/chown/chown.c index 86d3266..037960c 100644 --- a/src/coreutils/chown/chown.c +++ b/src/coreutils/chown/chown.c @@ -14,19 +14,24 @@ unsigned int r_flag; char *f_flag = "chown"; unsigned int H_flag; +unsigned int v_flag; int (*chown_func)(const char *pathname, uid_t owner, gid_t group); long gid; long uid; -int change(const char *file, void *p) { - UNUSED(p); - if (chown_func(file, uid, gid)) { +int change(const char *path, void *p) { + char *name = (char *)p; + + if (chown_func(path, uid, gid)) { if (f_flag) - fprintf(stderr, "chown: unable to chown %s: %s\n", file, strerror(errno)); + fprintf(stderr, "chown: unable to chown %s: %s\n", path, strerror(errno)); return 1; } + if (v_flag) + printf("chown: %s: changed to %s\n", path, name); + return 0; } @@ -74,7 +79,7 @@ int main(int argc, char **argv) { chown_func = lchown; int opt; - while ((opt = getopt(argc, argv, "RfH")) != -1) { + while ((opt = getopt(argc, argv, "RfHv")) != -1) { switch (opt) { case 'R': r_flag = 1; @@ -89,8 +94,12 @@ int main(int argc, char **argv) { chown_func = chown; break; + case 'v': + v_flag = 1; + break; + default: - printf("chown USER[:[GRP]] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n"); + printf("chown USER[:[GRP]] [file1 file2...]\n\t[-H If a command line argument is a symbolic link]\n\t[-R Recursive] [-f Silent]\n\t[-v Verbose]\n"); return 0; } } @@ -110,12 +119,12 @@ int main(int argc, char **argv) { int ret = 0; for (int i = 1; i < argc; i++) { if (r_flag) { - if (mu_recurse(f_flag, H_flag, argv[i], NULL, change, change)) + if (mu_recurse(f_flag, H_flag, argv[i], argv[0], change, change)) ret = 1; } else - change(argv[i], NULL); + change(argv[i], argv[0]); } return ret;