From 5a29ac490ea7a5e0f69aa90ee08ed2357e868baf Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 2 Jul 2024 19:48:16 +0000 Subject: [PATCH] fixed --- TODO | 6 ++-- config.h | 4 +-- configs/fstab | 8 ++--- configs/rc.poweroff | 2 ++ include/libmu/pw_check.h | 3 +- src/coreutils/bdname/bdname.c | 2 +- src/coreutils/cat/cat.c | 2 +- src/coreutils/chgrp/chgrp.c | 2 +- src/coreutils/chmod/chmod.c | 2 +- src/coreutils/chroot/chroot.c | 2 +- src/coreutils/cmp/cmp.c | 2 +- src/coreutils/date/date.c | 63 +++++++++++++++++------------------ src/init/init/init.c | 3 ++ 13 files changed, 51 insertions(+), 50 deletions(-) diff --git a/TODO b/TODO index 27dd23c..e3a87da 100644 --- a/TODO +++ b/TODO @@ -16,8 +16,6 @@ sha* md5 Other: - watch - ps sysctl ping ncat @@ -31,10 +29,10 @@ Other: swapon swapoff hexdump + sed Loginutils: - userctl - groupctl + usersctl getty Modutils: diff --git a/config.h b/config.h index 5ba573f..1a04884 100644 --- a/config.h +++ b/config.h @@ -5,7 +5,7 @@ #define BUF_SIZE 1024 * 1024 #ifdef _SHRED_C - /* Random source (shred) */ + /* source of random (shred) */ #define RAND_SOURCE "/dev/urandom" #endif @@ -16,7 +16,7 @@ #ifdef _PW_CHECK_H /* Pw_check. Salt for crypt() */ - char MU_SALT_ENC[] = {'s', 'a', 'l', 't'}; + int MU_SALT_ENC[] = {'s', 'a', 'l', 't'}; char MU_SALT_BUF[sizeof(MU_SALT_ENC) + 1]; #endif diff --git a/configs/fstab b/configs/fstab index 207f03a..97ccff7 100644 --- a/configs/fstab +++ b/configs/fstab @@ -3,7 +3,7 @@ #/dev/sda1 /boot ext4 rw 0 0 #/dev/disk/by-uuid/disk-uuid-12dfg /usr f2fs 0 0 -proc /proc proc nosuid,noexec,nodev 0 0 -sysfs /sys sysfs nosuid,noexec,nodev 0 0 -devtmpfs /dev devtmpfs gid=5,mode=0620 0 0 -tmpfs /tmp tmpfs nosuid,noexec,nodev,mode=0777 0 0 +proc /proc proc nosuid,noexec,nodev 0 0 +sysfs /sys sysfs nosuid,noexec,nodev 0 0 +devtmpfs /dev devtmpfs gid=5,mode=0620 0 0 +tmpfs /tmp tmpfs nosuid,noexec,nodev,mode=0777 0 0 diff --git a/configs/rc.poweroff b/configs/rc.poweroff index ce8e6f6..3d6b2b3 100644 --- a/configs/rc.poweroff +++ b/configs/rc.poweroff @@ -1,4 +1,6 @@ #!/bin/sh +#FIXME!!! + echo "[*] Umounting..." umount -a diff --git a/include/libmu/pw_check.h b/include/libmu/pw_check.h index 7a6654f..486d9a8 100644 --- a/include/libmu/pw_check.h +++ b/include/libmu/pw_check.h @@ -11,12 +11,11 @@ void dec_salt(void) { size_t i; for (i = 0; i < sizeof(MU_SALT_ENC) / sizeof(int); i++) - MU_SALT_BUF[i] = MU_SALT_ENC[i]; + MU_SALT_BUF[i] = (char)MU_SALT_ENC[i]; MU_SALT_BUF[i + 1] = '\0'; } -/* Using not only there */ char *enc_password(const char *prog_name, const char *pass, const char *salt) { if (salt == NULL) dec_salt(); diff --git a/src/coreutils/bdname/bdname.c b/src/coreutils/bdname/bdname.c index dd8f390..9ccbd5f 100644 --- a/src/coreutils/bdname/bdname.c +++ b/src/coreutils/bdname/bdname.c @@ -32,7 +32,7 @@ int main(int argc, char **argv) { break; default: - printf("bdname [sd] [str]\n\t-s SFX Set suffix\n\t-d Use dirname instead of basename\n"); + puts("bdname [sd] [str]\n\t-s SFX Set suffix\n\t-d Use dirname instead of basename"); return 0; } } diff --git a/src/coreutils/cat/cat.c b/src/coreutils/cat/cat.c index 2c58ae4..1aba966 100644 --- a/src/coreutils/cat/cat.c +++ b/src/coreutils/cat/cat.c @@ -33,7 +33,7 @@ int cat(const char *path) { int main(int argc, char **argv) { int opt; while ((opt = getopt(argc, argv, "")) != -1) { - printf("cat [file1 file2...]\n"); + puts("cat [file1 file2...]"); return 0; } diff --git a/src/coreutils/chgrp/chgrp.c b/src/coreutils/chgrp/chgrp.c index 674321f..36e68c5 100644 --- a/src/coreutils/chgrp/chgrp.c +++ b/src/coreutils/chgrp/chgrp.c @@ -56,7 +56,7 @@ int main(int argc, char **argv) { break; default: - printf("chgrp [RfHv] [group] [file1 file2...]\n\t-H Symbolic link\n\t-R Recursive\n\t-f Silent\n\t-v Verbose\n"); + puts("chgrp [RfHv] [group] [file1 file2...]\n\t-H Symbolic link\n\t-R Recursive\n\t-f Silent\n\t-v Verbose"); return 0; } } diff --git a/src/coreutils/chmod/chmod.c b/src/coreutils/chmod/chmod.c index 39a02e3..37c051b 100644 --- a/src/coreutils/chmod/chmod.c +++ b/src/coreutils/chmod/chmod.c @@ -71,7 +71,7 @@ int main(int argc, char **argv) { break; default: - printf("chmod [RfHv] [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t-H Symbolic link\n\t-R Recursive\n\t-f Silent\n\t-v Verbose\n"); + puts("chmod [RfHv] [ugoa]{+|-}[rwxXst] / [0 - 777] [file1 file2...]\n\t-H Symbolic link\n\t-R Recursive\n\t-f Silent\n\t-v Verbose"); return 0; } } diff --git a/src/coreutils/chroot/chroot.c b/src/coreutils/chroot/chroot.c index f88d2bf..585904a 100644 --- a/src/coreutils/chroot/chroot.c +++ b/src/coreutils/chroot/chroot.c @@ -6,7 +6,7 @@ int main(const int argc, char **argv) { if (argc < 3 || !strcmp(argv[argc - 1], "--help")) { - printf("chroot [dir] [command] [arg arg2...]\n"); + puts("chroot [dir] [command] [arg arg2...]"); return 0; } diff --git a/src/coreutils/cmp/cmp.c b/src/coreutils/cmp/cmp.c index 48b006e..9489365 100644 --- a/src/coreutils/cmp/cmp.c +++ b/src/coreutils/cmp/cmp.c @@ -68,7 +68,7 @@ int main(int argc, char **argv) { break; default: - printf("cmp [s] [file1] [file2] [skip1] [skip2]\n\t-s Silent\n"); + puts("cmp [s] [file1] [file2] [skip1] [skip2]\n\t-s Silent"); return 0; } } diff --git a/src/coreutils/date/date.c b/src/coreutils/date/date.c index 08d2370..8fa9593 100644 --- a/src/coreutils/date/date.c +++ b/src/coreutils/date/date.c @@ -1,41 +1,50 @@ +#define _XOPEN_SOURCE #include #include #include #include #include #include -#include -#include "get_stat.h" const char *fmts[] = { "%R", "%T", - "%m.%d-%R", - "%m.%d-%T", - "%Y.%m.%d-%R", - "%Y.%m.%d-%T", - "%Y-%m-%d %R %z", - "%Y-%m-%d %T %z", - "%T %d-%m-%Y", - "%H %d-%m-%Y", - "%Y-%m-%d %H", - "%Y-%m-%d", - "%d-%m-%Y" + "%d-%m", + "%d-%m %H", + "%d-%m %R", + "%d-%m %T", + "%d-%m-%Y", + "%d-%m-%Y %H", + "%d-%m-%Y %R", + "%d-%m-%Y %T" }; time_t parse_date(char *str) { time_t local = time(NULL); struct tm *tm = localtime(&local); + char flag = 0; for (size_t i = 0; i < sizeof(fmts) / sizeof(char *); i++) { char *res = strptime(str, fmts[i], tm); - if (res && *res == '\0') + if (res && *res == '\0') { + flag = 1; break; + } + } + + if (flag == 0) { + fprintf(stderr, "date: parsing: invalid format\n"); + exit(1); } time_t rt = mktime(tm); - if (rt == -1) { - fprintf(stderr, "date: %s\n", strerror(errno)); + if (rt < 0) { + if (rt == -1) + fprintf(stderr, "date: parsing: %s\n", strerror(errno)); + + else + fprintf(stderr, "date: parsing: invalid date\n"); + exit(1); } @@ -45,22 +54,17 @@ time_t parse_date(char *str) { int main(int argc, char **argv) { time_t t = time(NULL); char *fmt = "%a %b %e %H:%M:%S %Z %Y"; - char *r_flag = 0; /* For -s flag */ struct timespec ts; int opt; - while ((opt = getopt(argc, argv, "s:d:r:u")) != -1) { + while ((opt = getopt(argc, argv, "s:d:u")) != -1) { switch (opt) { - case 'r': - r_flag = optarg; - break; - case 's': ts.tv_sec = parse_date(optarg); if (clock_settime(CLOCK_REALTIME, &ts) < 0) { - fprintf(stderr, "date: %s\n", strerror(errno)); + fprintf(stderr, "date: settime: %s\n", strerror(errno)); return 1; } @@ -79,7 +83,10 @@ int main(int argc, char **argv) { break; default: - printf("date [rsdu] [+\"fmt\"]\n\t-s DATE Set new date\n\t-d DATE Print new date\n\t-u Work in UTC\n\t-r FILE Display last modification time of FILE\n"); + puts("date [rsdu] [+\"fmt\"]\n\t-s TIME Set new date\n\t-d TIME Print new date\n\t-u Work in UTC\n\nRecognized TIME formats:"); + for (size_t i = 0; i < sizeof(fmts) / sizeof(char *); i++) + puts(fmts[i]); + return 0; } } @@ -91,14 +98,6 @@ int main(int argc, char **argv) { if (argv[0][0] == '+') fmt = argv[0] + 1; - struct stat sb; - if (r_flag) { - if (mu_get_stat("date", r_flag, &sb)) - return 1; - - t = sb.st_mtime; - } - struct tm *tm = localtime(&t); char buf[256]; diff --git a/src/init/init/init.c b/src/init/init/init.c index ac4ff31..3a0c44e 100644 --- a/src/init/init/init.c +++ b/src/init/init/init.c @@ -46,6 +46,9 @@ int main(void) { sigaddset(&set, SIGUSR1); sigaddset(&set, SIGUSR2); + signal(SIGTERM, SIG_IGN); + signal(SIGINT, SIG_IGN); + /* Start main service */ sigprocmask(SIG_BLOCK, &set, NULL); execute(INIT_START);