diff --git a/bin/.gitignore b/bin/.gitignore old mode 100755 new mode 100644 diff --git a/build.sh b/build.sh index 79d3412..496c897 100755 --- a/build.sh +++ b/build.sh @@ -1,36 +1,6 @@ #!/bin/sh -if [ -z $PROJECT_DIR ]; then - PROJECT_DIR=$(pwd) -fi -if [ -z $CFLAGS ]; then - CFLAGS="-pedantic -s -Os -Wall -Wextra -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_BSD_SOURCE" -fi - -if [ -z $CC ]; then - CC=cc -fi - -if [ -z $projects ]; then - projects="editors sysutils-linux init console-tools coreutils findutils networking loginutils procps" -fi - -#Compile -for project in $projects; do - echo "Chdir" $project - - for p in src/$project/*; do - echo " * Makeing" $p - - for i in $p; do - cd $PROJECT_DIR/$i - echo " * Compile" $i - chmod -v +x build.sh - env CC=$CC CFLAGS="$CFLAGS -I$PROJECT_DIR -I$PROJECT_DIR/include/libmu" OUTPUT="$PROJECT_DIR"/bin/ ./build.sh - cd $PROJECT_DIR - done - echo -ne "\n" - done +for i in $(ls src); do + echo "CC $i" + cc -s -Os -Wextra -Wall -pedantic -I. -Iinclude src/$i -o bin/$(basename $i .c) done - -chmod -vR a+x bin/ diff --git a/config.h b/config.h index 1a04884..379ef0e 100644 --- a/config.h +++ b/config.h @@ -2,7 +2,7 @@ #define _CONFIG_H /* (cat tee wc xargs rev split cp) text buffer */ -#define BUF_SIZE 1024 * 1024 +#define BUF_SIZE 512 * 512 #ifdef _SHRED_C /* source of random (shred) */ diff --git a/include/libmu/duration.h b/include/duration.h similarity index 100% rename from include/libmu/duration.h rename to include/duration.h diff --git a/include/libmu/get_stat.h b/include/get_stat.h similarity index 100% rename from include/libmu/get_stat.h rename to include/get_stat.h diff --git a/include/libmu/human.h b/include/human.h similarity index 100% rename from include/libmu/human.h rename to include/human.h diff --git a/include/libmu/make_path.h b/include/make_path.h similarity index 100% rename from include/libmu/make_path.h rename to include/make_path.h diff --git a/include/libmu/mode_to_str.h b/include/mode_to_str.h similarity index 100% rename from include/libmu/mode_to_str.h rename to include/mode_to_str.h diff --git a/include/libmu/mu_strlen.h b/include/mu_strlen.h similarity index 100% rename from include/libmu/mu_strlen.h rename to include/mu_strlen.h diff --git a/include/libmu/parse_mode.h b/include/parse_mode.h similarity index 100% rename from include/libmu/parse_mode.h rename to include/parse_mode.h diff --git a/include/libmu/parse_mount.h b/include/parse_mount.h similarity index 100% rename from include/libmu/parse_mount.h rename to include/parse_mount.h diff --git a/include/libmu/proc_parser.h b/include/proc_parser.h similarity index 95% rename from include/libmu/proc_parser.h rename to include/proc_parser.h index e39f59d..eeeac30 100644 --- a/include/libmu/proc_parser.h +++ b/include/proc_parser.h @@ -14,6 +14,7 @@ struct mu_proc { /* from status */ + char prog[PATH_MAX + 1]; uid_t uid; gid_t gid; @@ -82,7 +83,10 @@ int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_ val++; /* Write values */ - if (!strncmp(token, "Uid", 3)) + if (!strncmp(token, "Name", 4)) + strcpy(proc_s->prog, val); + + else if (!strncmp(token, "Uid", 3)) proc_s->uid = strtoul(val, 0L, 10); else if (!strncmp(token, "Gid", 3)) diff --git a/include/libmu/pw_check.h b/include/pw_check.h similarity index 100% rename from include/libmu/pw_check.h rename to include/pw_check.h diff --git a/include/libmu/recurse.h b/include/recurse.h similarity index 99% rename from include/libmu/recurse.h rename to include/recurse.h index 0c8a0df..177b178 100644 --- a/include/libmu/recurse.h +++ b/include/recurse.h @@ -8,7 +8,6 @@ #include "get_stat.h" int mu_recurse(const char *restrict prog_name, int link_flag, const char *restrict path, void *restrict arg, int (*file_act)(const char *path, void *p), int (*dir_act)(const char *path, void *p)) { - struct stat sb; if (mu_get_stats(prog_name, link_flag, path, &sb)) return 1; diff --git a/include/libmu/unused.h b/include/unused.h similarity index 100% rename from include/libmu/unused.h rename to include/unused.h diff --git a/src/coreutils/bdname/bdname.c b/src/bdname.c similarity index 100% rename from src/coreutils/bdname/bdname.c rename to src/bdname.c diff --git a/src/coreutils/cat/cat.c b/src/cat.c similarity index 100% rename from src/coreutils/cat/cat.c rename to src/cat.c diff --git a/src/coreutils/chgrp/chgrp.c b/src/chgrp.c similarity index 100% rename from src/coreutils/chgrp/chgrp.c rename to src/chgrp.c diff --git a/src/coreutils/chmod/chmod.c b/src/chmod.c similarity index 100% rename from src/coreutils/chmod/chmod.c rename to src/chmod.c diff --git a/src/coreutils/chown/chown.c b/src/chown.c similarity index 100% rename from src/coreutils/chown/chown.c rename to src/chown.c diff --git a/src/coreutils/chroot/chroot.c b/src/chroot.c similarity index 100% rename from src/coreutils/chroot/chroot.c rename to src/chroot.c diff --git a/src/console-tools/clear/clear.c b/src/clear.c similarity index 100% rename from src/console-tools/clear/clear.c rename to src/clear.c diff --git a/src/coreutils/cmp/cmp.c b/src/cmp.c similarity index 80% rename from src/coreutils/cmp/cmp.c rename to src/cmp.c index 9489365..2696e97 100644 --- a/src/coreutils/cmp/cmp.c +++ b/src/cmp.c @@ -5,7 +5,7 @@ #include char s_flag; -int compare(FILE *fp1, FILE *fp2) { +int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) { if (fp1 == fp2) return 0; @@ -18,7 +18,17 @@ int compare(FILE *fp1, FILE *fp2) { ch1 = getc(fp1); ch2 = getc(fp2); - if (ch1 != ch2) { + if (ch1 == EOF) { + printf("EOF on %s\n", s1); + return 1; + } + + else if (ch2 == EOF) { + printf("EOF on %s\n", s2); + return 1; + } + + else if (ch1 != ch2) { if (!s_flag) printf("files differ at byte %zu and line %zu\n", byte, lines); @@ -52,7 +62,7 @@ FILE *file_open(const char *path) { FILE *fp = fopen(path, "r"); if (fp == NULL) { fprintf(stderr, "cmp: %s\n", strerror(errno)); - exit(1); + return NULL; } return fp; @@ -82,6 +92,9 @@ int main(int argc, char **argv) { FILE *fp1 = NULL; FILE *fp2 = stdin; + char *s1 = "-"; + char *s2 = "-"; + switch (argc) { case 4: skip2 = parse_int(argv[3]); @@ -92,11 +105,21 @@ int main(int argc, char **argv) { /* fallthrough */ case 2: + s2 = argv[1]; fp2 = file_open(argv[1]); + if (fp2 == NULL) + exit(1); + /* fallthrough */ case 1: + s1 = argv[0]; fp1 = file_open(argv[0]); + if (fp1 == NULL) { + fclose(fp2); + exit(1); + } + break; default: @@ -118,7 +141,7 @@ int main(int argc, char **argv) { return 1; } - int ret = compare(fp1, fp2); + int ret = compare(fp1, fp2, s1, s2); fclose(fp1); fclose(fp2); diff --git a/src/console-tools/clear/build.sh b/src/console-tools/clear/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/console-tools/clear/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/console-tools/reset/build.sh b/src/console-tools/reset/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/console-tools/reset/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/bdname/build.sh b/src/coreutils/bdname/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/bdname/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/cat/build.sh b/src/coreutils/cat/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/cat/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/chgrp/build.sh b/src/coreutils/chgrp/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/chgrp/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/chmod/build.sh b/src/coreutils/chmod/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/chmod/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/chown/build.sh b/src/coreutils/chown/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/chown/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/chroot/build.sh b/src/coreutils/chroot/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/chroot/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/cmp/build.sh b/src/coreutils/cmp/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/cmp/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/cp/build.sh b/src/coreutils/cp/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/cp/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/date/build.sh b/src/coreutils/date/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/date/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/dd/build.sh b/src/coreutils/dd/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/dd/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/df/build.sh b/src/coreutils/df/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/df/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/du/build.sh b/src/coreutils/du/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/du/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/echo/build.sh b/src/coreutils/echo/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/echo/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/env/build.sh b/src/coreutils/env/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/env/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/false/build.sh b/src/coreutils/false/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/false/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/head/build.sh b/src/coreutils/head/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/head/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/id/build.sh b/src/coreutils/id/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/id/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/ln/build.sh b/src/coreutils/ln/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/ln/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/ls/build.sh b/src/coreutils/ls/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/ls/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/mkdir/build.sh b/src/coreutils/mkdir/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/mkdir/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/mknod/build.sh b/src/coreutils/mknod/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/mknod/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/mktemp/build.sh b/src/coreutils/mktemp/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/mktemp/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/mv/build.sh b/src/coreutils/mv/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/mv/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/nice/build.sh b/src/coreutils/nice/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/nice/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/nohup/build.sh b/src/coreutils/nohup/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/nohup/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/nproc/build.sh b/src/coreutils/nproc/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/nproc/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/printenv/build.sh b/src/coreutils/printenv/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/printenv/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/pwd/build.sh b/src/coreutils/pwd/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/pwd/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/readlink/build.sh b/src/coreutils/readlink/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/readlink/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/renice/build.sh b/src/coreutils/renice/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/renice/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/rm/build.sh b/src/coreutils/rm/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/rm/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/seq/build.sh b/src/coreutils/seq/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/seq/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/setsid/build.sh b/src/coreutils/setsid/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/setsid/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/shred/build.sh b/src/coreutils/shred/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/shred/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/sleep/build.sh b/src/coreutils/sleep/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/sleep/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/split/build.sh b/src/coreutils/split/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/split/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/sync/build.sh b/src/coreutils/sync/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/sync/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/tee/build.sh b/src/coreutils/tee/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/tee/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/time/build.sh b/src/coreutils/time/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/time/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/touch/build.sh b/src/coreutils/touch/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/touch/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/true/build.sh b/src/coreutils/true/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/true/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/tty/build.sh b/src/coreutils/tty/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/tty/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/uname/build.sh b/src/coreutils/uname/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/uname/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/wc/build.sh b/src/coreutils/wc/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/wc/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/whoami/build.sh b/src/coreutils/whoami/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/coreutils/whoami/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/cp/cp.c b/src/cp.c similarity index 100% rename from src/coreutils/cp/cp.c rename to src/cp.c diff --git a/src/loginutils/cryptpw/cryptpw.c b/src/cryptpw.c similarity index 100% rename from src/loginutils/cryptpw/cryptpw.c rename to src/cryptpw.c diff --git a/src/coreutils/date/date.c b/src/date.c similarity index 100% rename from src/coreutils/date/date.c rename to src/date.c diff --git a/src/coreutils/dd/dd.c b/src/dd.c similarity index 100% rename from src/coreutils/dd/dd.c rename to src/dd.c diff --git a/src/coreutils/df/df.c b/src/df.c similarity index 100% rename from src/coreutils/df/df.c rename to src/df.c diff --git a/src/sysutils-linux/dmesg/dmesg.c b/src/dmesg.c similarity index 100% rename from src/sysutils-linux/dmesg/dmesg.c rename to src/dmesg.c diff --git a/src/coreutils/du/du.c b/src/du.c similarity index 100% rename from src/coreutils/du/du.c rename to src/du.c diff --git a/src/coreutils/echo/echo.c b/src/echo.c similarity index 100% rename from src/coreutils/echo/echo.c rename to src/echo.c diff --git a/src/editors/que/build.sh b/src/editors/que/build.sh deleted file mode 100755 index 343d4bf..0000000 --- a/src/editors/que/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo *.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/env/env.c b/src/env.c similarity index 100% rename from src/coreutils/env/env.c rename to src/env.c diff --git a/src/coreutils/false/false.c b/src/false.c similarity index 100% rename from src/coreutils/false/false.c rename to src/false.c diff --git a/src/findutils/grep/build.sh b/src/findutils/grep/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/findutils/grep/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/findutils/xargs/build.sh b/src/findutils/xargs/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/findutils/xargs/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/findutils/grep/grep.c b/src/grep.c similarity index 100% rename from src/findutils/grep/grep.c rename to src/grep.c diff --git a/src/coreutils/head/head.c b/src/head.c similarity index 100% rename from src/coreutils/head/head.c rename to src/head.c diff --git a/src/networking/hostname/hostname.c b/src/hostname.c similarity index 100% rename from src/networking/hostname/hostname.c rename to src/hostname.c diff --git a/src/coreutils/id/id.c b/src/id.c similarity index 100% rename from src/coreutils/id/id.c rename to src/id.c diff --git a/src/init/init/init.c b/src/init.c similarity index 100% rename from src/init/init/init.c rename to src/init.c diff --git a/src/init/init/build.sh b/src/init/init/build.sh deleted file mode 100755 index 3789ff3..0000000 --- a/src/init/init/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC -cp reboot $OUTPUT/reboot -cp poweroff $OUTPUT/poweroff diff --git a/src/init/init/poweroff b/src/init/init/poweroff deleted file mode 100644 index 9784dcb..0000000 --- a/src/init/init/poweroff +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -kill -s USR1 1 diff --git a/src/init/init/reboot b/src/init/init/reboot deleted file mode 100644 index 3612dd2..0000000 --- a/src/init/init/reboot +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -kill -s USR2 1 diff --git a/src/procps/kill/kill.c b/src/kill.c similarity index 65% rename from src/procps/kill/kill.c rename to src/kill.c index fbce6f5..ff98060 100644 --- a/src/procps/kill/kill.c +++ b/src/kill.c @@ -5,6 +5,7 @@ #include #include #include +#include "proc_parser.h" typedef struct { const char *name; @@ -58,11 +59,12 @@ int my_kill(pid_t pid, int signal) { } int main(int argc, char **argv) { - unsigned int a_flag = 0; + char a_flag = 0; + char n_flag = 0; int signal = SIGTERM; int opt; - while ((opt = getopt(argc, argv, "s:la")) != -1) { + while ((opt = getopt(argc, argv, "s:lan")) != -1) { switch (opt) { case 'l': for (size_t i = 0; i < sizeof(signals) / sizeof(signals[0]); i++) @@ -78,8 +80,12 @@ int main(int argc, char **argv) { a_flag = 1; break; + case 'n': + n_flag = 1; + break; + default: - printf("kill [lsa] [pid1 pid2...]\n\t-s SIG\n\t-l List all signals\n\t-a Kill all process\n"); + printf("kill [lsan] [pid1 pid2/str1...]\n\t-s SIG\n\t-l List all signals\n\t-a Kill all process\n\t-n STR kill processes by name\n"); return 0; } } @@ -87,9 +93,14 @@ int main(int argc, char **argv) { argv += optind; argc -= optind; + if ((n_flag || !a_flag) && argc == 0) { + fprintf(stderr, "kill: missing operands\n"); + return 1; + } + int ret = 0; - if (a_flag) { + if (a_flag || n_flag) { DIR *dp = opendir("/proc"); if (dp == NULL) { fprintf(stderr, "kill: /proc: %s\n", strerror(errno)); @@ -100,24 +111,38 @@ int main(int argc, char **argv) { struct dirent *ep; while ((ep = readdir(dp)) != NULL) { - pid_t pid = atoi(ep->d_name); - if (pid == 0 || pid == my_pid) + pid_t pid = strtoul(ep->d_name, 0L, 10); + if (pid == 0) continue; - if (my_kill(pid, signal)) - ret = 1; + if (n_flag) { + struct mu_proc proc; + if (mu_proc_parser("kill", pid, &proc)) + ret = 1; + + for (int i = 0; i < argc; i++) { + if (!strcmp(proc.prog, argv[i])) + if (my_kill(pid, signal)) + ret = 1; + } + } + + else if (a_flag) { + if (pid == my_pid) + continue; + + if (my_kill(pid, signal)) + ret = 1; + } } closedir(dp); } - else { - for (int i = 0; i < argc; i++) { - pid_t pid = atoi(argv[i]); - if (my_kill(pid, signal)) + for (int i = 0; i < argc; i++) + if (my_kill(strtoul(argv[i], 0L, 10), signal)) ret = 1; - } } return ret; diff --git a/src/coreutils/ln/ln.c b/src/ln.c similarity index 100% rename from src/coreutils/ln/ln.c rename to src/ln.c diff --git a/src/loginutils/login/login.c b/src/login.c similarity index 100% rename from src/loginutils/login/login.c rename to src/login.c diff --git a/src/loginutils/cryptpw/build.sh b/src/loginutils/cryptpw/build.sh deleted file mode 100755 index 7bb1991..0000000 --- a/src/loginutils/cryptpw/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC -lcrypt diff --git a/src/loginutils/login/build.sh b/src/loginutils/login/build.sh deleted file mode 100755 index 7bb1991..0000000 --- a/src/loginutils/login/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC -lcrypt diff --git a/src/loginutils/su/build.sh b/src/loginutils/su/build.sh deleted file mode 100755 index 7bb1991..0000000 --- a/src/loginutils/su/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC -lcrypt diff --git a/src/coreutils/ls/ls.c b/src/ls.c similarity index 100% rename from src/coreutils/ls/ls.c rename to src/ls.c diff --git a/src/miscutils/spark/build.sh b/src/miscutils/spark/build.sh deleted file mode 100644 index 0ea3f65..0000000 --- a/src/miscutils/spark/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) -lm | xargs $CC diff --git a/src/coreutils/mkdir/mkdir.c b/src/mkdir.c similarity index 100% rename from src/coreutils/mkdir/mkdir.c rename to src/mkdir.c diff --git a/src/coreutils/mknod/mknod.c b/src/mknod.c similarity index 100% rename from src/coreutils/mknod/mknod.c rename to src/mknod.c diff --git a/src/coreutils/mktemp/mktemp.c b/src/mktemp.c similarity index 100% rename from src/coreutils/mktemp/mktemp.c rename to src/mktemp.c diff --git a/src/sysutils-linux/mount/mount.c b/src/mount.c similarity index 100% rename from src/sysutils-linux/mount/mount.c rename to src/mount.c diff --git a/src/coreutils/mv/mv.c b/src/mv.c similarity index 100% rename from src/coreutils/mv/mv.c rename to src/mv.c diff --git a/src/networking/hostname/build.sh b/src/networking/hostname/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/networking/hostname/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/nice/nice.c b/src/nice.c similarity index 100% rename from src/coreutils/nice/nice.c rename to src/nice.c diff --git a/src/coreutils/nohup/nohup.c b/src/nohup.c similarity index 100% rename from src/coreutils/nohup/nohup.c rename to src/nohup.c diff --git a/src/coreutils/nproc/nproc.c b/src/nproc.c similarity index 100% rename from src/coreutils/nproc/nproc.c rename to src/nproc.c diff --git a/src/sysutils-linux/pivot_root/pivot_root.c b/src/pivot_root.c similarity index 100% rename from src/sysutils-linux/pivot_root/pivot_root.c rename to src/pivot_root.c diff --git a/src/coreutils/printenv/printenv.c b/src/printenv.c similarity index 100% rename from src/coreutils/printenv/printenv.c rename to src/printenv.c diff --git a/src/procps/kill/build.sh b/src/procps/kill/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/procps/kill/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/procps/ps/build.sh b/src/procps/ps/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/procps/ps/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/procps/uptime/build.sh b/src/procps/uptime/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/procps/uptime/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/procps/ps/ps.c b/src/ps.c similarity index 100% rename from src/procps/ps/ps.c rename to src/ps.c diff --git a/src/coreutils/pwd/pwd.c b/src/pwd.c similarity index 100% rename from src/coreutils/pwd/pwd.c rename to src/pwd.c diff --git a/src/editors/que/que.c b/src/que.c similarity index 100% rename from src/editors/que/que.c rename to src/que.c diff --git a/src/coreutils/readlink/readlink.c b/src/readlink.c similarity index 100% rename from src/coreutils/readlink/readlink.c rename to src/readlink.c diff --git a/src/coreutils/renice/renice.c b/src/renice.c similarity index 100% rename from src/coreutils/renice/renice.c rename to src/renice.c diff --git a/src/console-tools/reset/reset.c b/src/reset.c similarity index 100% rename from src/console-tools/reset/reset.c rename to src/reset.c diff --git a/src/coreutils/rm/rm.c b/src/rm.c similarity index 100% rename from src/coreutils/rm/rm.c rename to src/rm.c diff --git a/src/coreutils/seq/seq.c b/src/seq.c similarity index 100% rename from src/coreutils/seq/seq.c rename to src/seq.c diff --git a/src/coreutils/setsid/setsid.c b/src/setsid.c similarity index 100% rename from src/coreutils/setsid/setsid.c rename to src/setsid.c diff --git a/src/coreutils/shred/shred.c b/src/shred.c similarity index 100% rename from src/coreutils/shred/shred.c rename to src/shred.c diff --git a/src/coreutils/sleep/sleep.c b/src/sleep.c similarity index 100% rename from src/coreutils/sleep/sleep.c rename to src/sleep.c diff --git a/src/miscutils/spark/spark.c b/src/spark.c similarity index 100% rename from src/miscutils/spark/spark.c rename to src/spark.c diff --git a/src/coreutils/split/split.c b/src/split.c similarity index 100% rename from src/coreutils/split/split.c rename to src/split.c diff --git a/src/loginutils/su/su.c b/src/su.c similarity index 100% rename from src/loginutils/su/su.c rename to src/su.c diff --git a/src/coreutils/sync/sync.c b/src/sync.c similarity index 100% rename from src/coreutils/sync/sync.c rename to src/sync.c diff --git a/src/sysutils-linux/dmesg/build.sh b/src/sysutils-linux/dmesg/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/sysutils-linux/dmesg/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/sysutils-linux/mount/build.sh b/src/sysutils-linux/mount/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/sysutils-linux/mount/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/sysutils-linux/pivot_root/build.sh b/src/sysutils-linux/pivot_root/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/sysutils-linux/pivot_root/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/sysutils-linux/umount/build.sh b/src/sysutils-linux/umount/build.sh deleted file mode 100755 index 6d8974b..0000000 --- a/src/sysutils-linux/umount/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -project_dir=$(pwd) -echo ./*.c $CFLAGS -o $OUTPUT$(basename $project_dir) | xargs $CC diff --git a/src/coreutils/tee/tee.c b/src/tee.c similarity index 100% rename from src/coreutils/tee/tee.c rename to src/tee.c diff --git a/src/coreutils/time/time.c b/src/time.c similarity index 100% rename from src/coreutils/time/time.c rename to src/time.c diff --git a/src/coreutils/touch/touch.c b/src/touch.c similarity index 100% rename from src/coreutils/touch/touch.c rename to src/touch.c diff --git a/src/coreutils/true/true.c b/src/true.c similarity index 100% rename from src/coreutils/true/true.c rename to src/true.c diff --git a/src/coreutils/tty/tty.c b/src/tty.c similarity index 100% rename from src/coreutils/tty/tty.c rename to src/tty.c diff --git a/src/sysutils-linux/umount/umount.c b/src/umount.c similarity index 100% rename from src/sysutils-linux/umount/umount.c rename to src/umount.c diff --git a/src/coreutils/uname/uname.c b/src/uname.c similarity index 100% rename from src/coreutils/uname/uname.c rename to src/uname.c diff --git a/src/procps/uptime/uptime.c b/src/uptime.c similarity index 100% rename from src/procps/uptime/uptime.c rename to src/uptime.c diff --git a/src/coreutils/wc/wc.c b/src/wc.c similarity index 100% rename from src/coreutils/wc/wc.c rename to src/wc.c diff --git a/src/coreutils/whoami/whoami.c b/src/whoami.c similarity index 100% rename from src/coreutils/whoami/whoami.c rename to src/whoami.c diff --git a/src/findutils/xargs/xargs.c b/src/xargs.c similarity index 100% rename from src/findutils/xargs/xargs.c rename to src/xargs.c