From 7d0207ace26eb2fcf2c7039ae691ef3d37c5d900 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 9 Jul 2024 15:43:55 +0300 Subject: [PATCH] fixed. Support buulding in 1 binary --- build.sh | 4 +- config.h => configs/config.h | 4 +- configs/os-release | 4 -- configs/rc.init | 9 ---- configs/rc.poweroff | 14 ------- include/duration.h | 4 +- include/get_stat.h | 6 +-- include/human.h | 2 +- include/make_path.h | 2 +- include/mode_to_str.h | 2 +- include/mu_strlen.h | 2 +- include/parse_mode.h | 2 +- include/parse_mount.h | 4 +- include/proc_parser.h | 4 +- include/pw_check.h | 6 +-- include/recurse.h | 2 +- src/bdname.c | 2 +- src/cat.c | 2 +- src/chgrp.c | 10 ++--- src/chmod.c | 10 ++--- src/chown.c | 18 ++++---- src/cmp.c | 8 ++-- src/cp.c | 16 ++++---- src/date.c | 4 +- src/dd.c | 14 +++---- src/df.c | 10 ++--- src/du.c | 12 +++--- src/echo.c | 6 +-- src/grep.c | 6 +-- src/head.c | 10 ++--- src/hostname.c | 2 +- src/id.c | 18 ++++---- src/init.c | 67 ------------------------------ src/kill.c | 6 +-- src/ln.c | 8 ++-- src/login.c | 6 +-- src/ls.c | 54 ++++++++++++------------ src/mkdir.c | 10 ++--- src/mknod.c | 2 +- src/mktemp.c | 6 +-- src/mount.c | 8 ++-- src/mv.c | 4 +- src/printenv.c | 2 +- src/ps.c | 2 +- src/que.c | 80 +++++++++++++++--------------------- src/renice.c | 2 +- src/rm.c | 14 +++---- src/seq.c | 2 +- src/setsid.c | 1 + src/shred.c | 10 ++--- src/spark.c | 80 ------------------------------------ src/split.c | 2 +- src/su.c | 14 +++---- src/touch.c | 13 +++--- src/umount.c | 2 +- src/uname.c | 7 ++-- src/wc.c | 36 ++++++++-------- src/xargs.c | 28 ++++++------- 58 files changed, 251 insertions(+), 434 deletions(-) rename config.h => configs/config.h (96%) delete mode 100644 configs/os-release delete mode 100644 configs/rc.init delete mode 100644 configs/rc.poweroff delete mode 100644 src/init.c delete mode 100644 src/spark.c diff --git a/build.sh b/build.sh index 496c897..eeb9809 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,8 @@ #!/bin/sh +CFLAGS=-s -Os -Wextra -Wall -pedantic +CC=cc for i in $(ls src); do echo "CC $i" - cc -s -Os -Wextra -Wall -pedantic -I. -Iinclude src/$i -o bin/$(basename $i .c) + $CC $CFLAGS -Iconfigs -Iinclude src/$i -o bin/$(basename $i .c) done diff --git a/config.h b/configs/config.h similarity index 96% rename from config.h rename to configs/config.h index 379ef0e..5959897 100644 --- a/config.h +++ b/configs/config.h @@ -1,8 +1,8 @@ - #ifndef _CONFIG_H +#ifndef _CONFIG_H #define _CONFIG_H /* (cat tee wc xargs rev split cp) text buffer */ -#define BUF_SIZE 512 * 512 +#define BUF_SIZE 32000 #ifdef _SHRED_C /* source of random (shred) */ diff --git a/configs/os-release b/configs/os-release deleted file mode 100644 index 335acde..0000000 --- a/configs/os-release +++ /dev/null @@ -1,4 +0,0 @@ -NAME="Plain Os" -ID=plainos -VERSION_ID=0.1 -PRETTY_NAME="PlainOs/Linux 0.1 " \ No newline at end of file diff --git a/configs/rc.init b/configs/rc.init deleted file mode 100644 index ea6b926..0000000 --- a/configs/rc.init +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -echo "[*] Mounting..." -mount -a - -echo "[*] Hostname..." -hostname -c /etc/hostname - -cat /etc/motd -env TERM="linux" login diff --git a/configs/rc.poweroff b/configs/rc.poweroff deleted file mode 100644 index 3d6b2b3..0000000 --- a/configs/rc.poweroff +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -#FIXME!!! - -echo "[*] Umounting..." -umount -a - -echo "[*] Syncing..." -sync - -echo "[*] Closing processes..." -kill -a -s TERM -sleep 5 - -echo "[*] Poweroff..." diff --git a/include/duration.h b/include/duration.h index 14a491e..ac09e4d 100644 --- a/include/duration.h +++ b/include/duration.h @@ -3,7 +3,7 @@ #include -unsigned long long parse_uint(const char *str) { +static unsigned long long parse_uint(const char *str) { char *p = NULL; unsigned long long res = strtoull(str, &p, 0); @@ -32,7 +32,7 @@ unsigned long long parse_uint(const char *str) { return res; } -unsigned long long mu_parse_duration(const char *arg) { +static unsigned long long mu_parse_duration(const char *arg) { if (strchr(arg, '.')) { /* TODO */ } diff --git a/include/get_stat.h b/include/get_stat.h index da72aec..258f9fa 100644 --- a/include/get_stat.h +++ b/include/get_stat.h @@ -6,7 +6,7 @@ #include #include -int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path) { +static int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path) { if (stat(path, stat_path)) { if (prog_name != NULL) fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno)); @@ -17,7 +17,7 @@ int mu_get_stat(const char *prog_name, const char *path, struct stat *stat_path) return 0; } -int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path) { +static int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path) { if (lstat(path, stat_path)) { if (prog_name != NULL) fprintf(stderr, "%s: %s: %s\n", prog_name, path, strerror(errno)); @@ -28,7 +28,7 @@ int mu_get_lstat(const char *prog_name, const char *path, struct stat *stat_path return 0; } -int mu_get_stats(const char *prog_name, int flag, const char *path, struct stat *stat_path) { +static int mu_get_stats(const char *prog_name, int flag, const char *path, struct stat *stat_path) { if (flag) return mu_get_lstat(prog_name, path, stat_path); diff --git a/include/human.h b/include/human.h index 8b7ba5d..458358c 100644 --- a/include/human.h +++ b/include/human.h @@ -6,7 +6,7 @@ #define MU_HUMAN_BUF_SIZE 16 -char *mu_humansize(off_t n, off_t block) { +static char *mu_humansize(off_t n, off_t block) { static char mu_hs_buf[MU_HUMAN_BUF_SIZE + 1]; memset(mu_hs_buf, '\0', sizeof(mu_hs_buf)); diff --git a/include/make_path.h b/include/make_path.h index f042e73..934130b 100644 --- a/include/make_path.h +++ b/include/make_path.h @@ -5,7 +5,7 @@ #include #include -char *mu_make_path(const char *prog_name, const char *src, const char *dst) { +static char *mu_make_path(const char *prog_name, const char *src, const char *dst) { int flag = 0; if (src == NULL) { diff --git a/include/mode_to_str.h b/include/mode_to_str.h index de56f83..b34728b 100644 --- a/include/mode_to_str.h +++ b/include/mode_to_str.h @@ -4,7 +4,7 @@ #include #include -char *mu_mode_2_str(mode_t file_mode) { +static char *mu_mode_2_str(mode_t file_mode) { static char mode[11]; snprintf(mode, sizeof(mode), "----------"); diff --git a/include/mu_strlen.h b/include/mu_strlen.h index 138e81f..ee6463b 100644 --- a/include/mu_strlen.h +++ b/include/mu_strlen.h @@ -1,7 +1,7 @@ #ifndef _UTF8_STRLEN #define _UTF8_STRLEN -size_t mu_strlen(const char *s) { +static size_t mu_strlen(const char *s) { size_t i = 0; while (*s++) diff --git a/include/parse_mode.h b/include/parse_mode.h index 884e9db..19b4265 100644 --- a/include/parse_mode.h +++ b/include/parse_mode.h @@ -15,7 +15,7 @@ #define SU_PERM (S_ISUID | S_ISGID | S_ISVTX) #define FULL_PERM (WR_PERM | EX_PERM | RD_PERM) -mode_t mu_parse_mode(const char *s, mode_t cur_mode) { +static mode_t mu_parse_mode(const char *s, mode_t cur_mode) { char *p = NULL; mode_t mode = (mode_t)strtol(s, &p, 8); diff --git a/include/parse_mount.h b/include/parse_mount.h index 0f07c4d..1dbcaed 100644 --- a/include/parse_mount.h +++ b/include/parse_mount.h @@ -9,7 +9,7 @@ typedef struct { unsigned int val; } MU_MOUNT_OPTS; -MU_MOUNT_OPTS mu_options[] = { +static MU_MOUNT_OPTS mu_options[] = { {"defaults", NULL, NULL, 0}, {"ro", "rw", "Read only / Read and write", MS_RDONLY}, {"remount", NULL, "Remount a mounted filesystem", MS_REMOUNT}, @@ -20,7 +20,7 @@ MU_MOUNT_OPTS mu_options[] = { {"noatime", "atime", "Disable/enable updates to inode access times", MS_NOATIME} }; -unsigned long mu_parse_opts(char *str, char *data, const size_t data_size) { +static unsigned long mu_parse_opts(char *str, char *data, const size_t data_size) { memset(data, '\0', data_size); unsigned long opt = 0; size_t data_len = 0; diff --git a/include/proc_parser.h b/include/proc_parser.h index eeeac30..f7a028a 100644 --- a/include/proc_parser.h +++ b/include/proc_parser.h @@ -46,7 +46,7 @@ struct mu_proc { long rsslim; }; -int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) { +static int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) { proc_s->uid = -1; proc_s->gid = -1; @@ -98,7 +98,7 @@ int mu_proc_status(const char *prog_name, const pid_t pid, struct mu_proc *proc_ return 0; } -int mu_proc_stat(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) { +static int mu_proc_stat(const char *prog_name, const pid_t pid, struct mu_proc *proc_s) { char path[PATH_MAX + 1]; snprintf(path, sizeof(path), "/proc/%d/stat", pid); diff --git a/include/pw_check.h b/include/pw_check.h index 486d9a8..d33dcd2 100644 --- a/include/pw_check.h +++ b/include/pw_check.h @@ -8,7 +8,7 @@ #include #include "config.h" -void dec_salt(void) { +static void dec_salt(void) { size_t i; for (i = 0; i < sizeof(MU_SALT_ENC) / sizeof(int); i++) MU_SALT_BUF[i] = (char)MU_SALT_ENC[i]; @@ -16,7 +16,7 @@ void dec_salt(void) { MU_SALT_BUF[i + 1] = '\0'; } -char *enc_password(const char *prog_name, const char *pass, const char *salt) { +static char *enc_password(const char *prog_name, const char *pass, const char *salt) { if (salt == NULL) dec_salt(); @@ -31,7 +31,7 @@ char *enc_password(const char *prog_name, const char *pass, const char *salt) { return cpass; } -int pw_check(const char *prog_name, const struct passwd *pw, const char *pass) { +static int pw_check(const char *prog_name, const struct passwd *pw, const char *pass) { if (pw->pw_passwd[0] == '\0' && pass[0] == '\0') return 0; diff --git a/include/recurse.h b/include/recurse.h index 177b178..4b01146 100644 --- a/include/recurse.h +++ b/include/recurse.h @@ -7,7 +7,7 @@ #include "make_path.h" #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)) { +static 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/src/bdname.c b/src/bdname.c index ac1dec0..eeee9d1 100644 --- a/src/bdname.c +++ b/src/bdname.c @@ -4,7 +4,7 @@ #include #include -char *bname(char *str, const char *suffix) { +static char *bname(char *str, const char *suffix) { char *base = basename(str); if (suffix) { diff --git a/src/cat.c b/src/cat.c index 1aba966..97e3696 100644 --- a/src/cat.c +++ b/src/cat.c @@ -5,7 +5,7 @@ #include #include "config.h" -int cat(const char *path) { +static int cat(const char *path) { int fd = STDIN_FILENO; if (strcmp(path, "-")) diff --git a/src/chgrp.c b/src/chgrp.c index 36e68c5..982e594 100644 --- a/src/chgrp.c +++ b/src/chgrp.c @@ -9,12 +9,12 @@ #include "get_stat.h" #include "recurse.h" -char r_flag; -char *f_flag = "chgrp"; -char H_flag; -char v_flag; +static char r_flag; +static char *f_flag = "chgrp"; +static char H_flag; +static char v_flag; -int change(const char *path, void *p) { +static int change(const char *path, void *p) { struct group *grp = (struct group *)p; struct stat stat_path; diff --git a/src/chmod.c b/src/chmod.c index 37c051b..5b4bc72 100644 --- a/src/chmod.c +++ b/src/chmod.c @@ -10,12 +10,12 @@ #include "parse_mode.h" #include "recurse.h" -char r_flag; -char *f_flag = "chmod"; -char H_flag; -char v_flag; +static char r_flag; +static char *f_flag = "chmod"; +static char H_flag; +static char v_flag; -int change(const char *file, void *p) { +static int change(const char *file, void *p) { char *mode_arg = (char *)p; struct stat sb; diff --git a/src/chown.c b/src/chown.c index b7c8d33..6a05402 100644 --- a/src/chown.c +++ b/src/chown.c @@ -11,15 +11,15 @@ #include "recurse.h" #include "unused.h" -char r_flag; -char *f_flag = "chown"; -char H_flag; -char v_flag; -int (*chown_func)(const char *pathname, uid_t owner, gid_t group); -long gid; -long uid; +static char r_flag; +static char *f_flag = "chown"; +static char H_flag; +static char v_flag; +static int (*chown_func)(const char *pathname, uid_t owner, gid_t group); +static long gid; +static long uid; -int change(const char *path, void *p) { +static int change(const char *path, void *p) { char *name = (char *)p; if (chown_func(path, uid, gid)) { @@ -35,7 +35,7 @@ int change(const char *path, void *p) { return 0; } -void get_owner(const char *arg) { +static void get_owner(const char *arg) { char *group = strchr(arg, ':'); char g_flag = 1; diff --git a/src/cmp.c b/src/cmp.c index 2696e97..0b7a26d 100644 --- a/src/cmp.c +++ b/src/cmp.c @@ -3,9 +3,9 @@ #include #include #include -char s_flag; +static char s_flag; -int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) { +static int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) { if (fp1 == fp2) return 0; @@ -44,7 +44,7 @@ int compare(FILE *fp1, FILE *fp2, const char *s1, const char *s2) { return 0; } -long parse_int(const char *str) { +static long parse_int(const char *str) { char *ptr; long val = strtol(str, &ptr, 0); if (*ptr || val < 0) { @@ -55,7 +55,7 @@ long parse_int(const char *str) { return val; } -FILE *file_open(const char *path) { +static FILE *file_open(const char *path) { if (!strcmp(path, "-")) return stdin; diff --git a/src/cp.c b/src/cp.c index 0e6154e..8dd3a44 100644 --- a/src/cp.c +++ b/src/cp.c @@ -12,12 +12,12 @@ #include "get_stat.h" #include "config.h" -char *f_flag = "cp"; -char r_flag; -char v_flag; -char L_flag; +static char *f_flag = "cp"; +static char r_flag; +static char v_flag; +static char L_flag; -char copy_reg(int mode, const char *src, const char *dst) { +static char copy_reg(int mode, const char *src, const char *dst) { int ret = 1; int ifd = open(src, O_RDONLY); @@ -52,7 +52,7 @@ CLOSE_OFD: return ret; } -char copy_lnk(const char *src, const char *dst) { +static char copy_lnk(const char *src, const char *dst) { char path[PATH_MAX + 1]; ssize_t ret = readlink(src, path, sizeof(path)); if (ret < 0) @@ -65,7 +65,7 @@ char copy_lnk(const char *src, const char *dst) { return 0; } -char copy(struct stat st, const char *src, const char *dst) { +static char copy(struct stat st, const char *src, const char *dst) { if (v_flag) printf("Copying '%s' to '%s'\n", src, dst); @@ -83,7 +83,7 @@ char copy(struct stat st, const char *src, const char *dst) { return 0; } -int cptree(const char *src, const char *dst) { +static int cptree(const char *src, const char *dst) { struct stat src_stat; if (mu_get_stats(f_flag, !L_flag, src, &src_stat)) return 1; diff --git a/src/date.c b/src/date.c index bf9c8c8..e40c317 100644 --- a/src/date.c +++ b/src/date.c @@ -6,7 +6,7 @@ #include #include -const char *fmts[] = { +static const char *fmts[] = { "%R", "%T", "%d-%m", @@ -19,7 +19,7 @@ const char *fmts[] = { "%d-%m-%Y %T" }; -time_t parse_date(char *str) { +static time_t parse_date(char *str) { time_t local = time(NULL); struct tm *tm = localtime(&local); diff --git a/src/dd.c b/src/dd.c index 3cca523..62d2003 100644 --- a/src/dd.c +++ b/src/dd.c @@ -7,18 +7,18 @@ #include #include "human.h" -off_t infull, inpart; -off_t outfull, outpart; -off_t tbytes; +static off_t infull, inpart; +static off_t outfull, outpart; +static off_t tbytes; -void summary(void) { +static void summary(void) { fprintf(stderr, "%jd+%jd records in\n", infull, inpart); fprintf(stderr, "%jd+%jd records out\n", outfull, outpart); fprintf(stderr, "%s total bytes copied\n", mu_humansize(tbytes, 1024)); } -int openfile(int flag, char *path, int mode) { +static int openfile(int flag, char *path, int mode) { if (!strcmp(path, "-")) { if (flag) return STDOUT_FILENO; @@ -35,7 +35,7 @@ int openfile(int flag, char *path, int mode) { return fd; } -off_t strtonum(char *str) { +static off_t strtonum(char *str) { char *p = NULL; off_t res = strtoll(str, &p, 0); if (str != p) { @@ -67,7 +67,7 @@ off_t strtonum(char *str) { return res; } -int copy(int fd, void *buf, off_t len, off_t max) { +static int copy(int fd, void *buf, off_t len, off_t max) { off_t n = write(fd, buf, len); if (n < 0) { fprintf(stderr, "dd: %s\n", strerror(errno)); diff --git a/src/df.c b/src/df.c index e2b5dc5..b290aa2 100644 --- a/src/df.c +++ b/src/df.c @@ -9,12 +9,12 @@ #include "human.h" #include "config.h" -char a_flag; -char h_flag; -char *t_flag; -off_t block = 1024; +static char a_flag; +static char h_flag; +static char *t_flag; +static off_t block = 1024; -int print(const struct mntent *me) { +static int print(const struct mntent *me) { struct statvfs disk; if (!strcmp(me->mnt_fsname, "none")) diff --git a/src/du.c b/src/du.c index d060fcc..abb0441 100644 --- a/src/du.c +++ b/src/du.c @@ -9,12 +9,12 @@ #include "make_path.h" #include "human.h" -char h_flag; -char s_flag; -char c_flag; -off_t total; +static char h_flag; +static char s_flag; +static char c_flag; +static off_t total; -void print(off_t size, const char *filename) { +static void print(off_t size, const char *filename) { if (h_flag) printf("%s\t%s\n", mu_humansize(size * 512, 1024), filename); @@ -22,7 +22,7 @@ void print(off_t size, const char *filename) { printf("%jd\t%s\n", (intmax_t)size / 2, filename); } -off_t du(const char *path, int recurs_flag) { +static off_t du(const char *path, int recurs_flag) { struct stat sb; if (mu_get_lstat("du", path, &sb)) return 0; diff --git a/src/echo.c b/src/echo.c index c34eed0..114cb37 100644 --- a/src/echo.c +++ b/src/echo.c @@ -4,10 +4,10 @@ #include #include -char n_flag = 0; -char e_flag = 0; +static char n_flag = 0; +static char e_flag = 0; -void format(char *str) { +static void format(char *str) { for (size_t i = 0; i < strlen(str); i++) { unsigned int c = str[i]; if (c == '\\') { diff --git a/src/grep.c b/src/grep.c index fd118de..5e48c62 100644 --- a/src/grep.c +++ b/src/grep.c @@ -8,10 +8,10 @@ typedef struct { char *pattern; regex_t rgex; } PATTERN; -PATTERN *regexs; -size_t r_size; +static PATTERN *regexs; +static size_t r_size; -int addpattern(char *str) { +static int addpattern(char *str) { if (regexs == NULL) { regexs = malloc(sizeof(PATTERN)); if (regexs == NULL) { diff --git a/src/head.c b/src/head.c index a4082de..8ac62b8 100644 --- a/src/head.c +++ b/src/head.c @@ -8,11 +8,11 @@ #include #include "config.h" -char v_flag; -char c_flag; -char n_flag; +static char v_flag; +static char c_flag; +static char n_flag; -long parse_long(const char *str) { +static long parse_long(const char *str) { char *ptr; long ret = strtol(str, &ptr, 0); if (*ptr) { @@ -23,7 +23,7 @@ long parse_long(const char *str) { return ret; } -int print(const char *file, FILE *fp, long lines, long bytes) { +static int print(const char *file, FILE *fp, long lines, long bytes) { if (v_flag) printf(HEAD_FMT, file); diff --git a/src/hostname.c b/src/hostname.c index 5ce2f26..f454a28 100644 --- a/src/hostname.c +++ b/src/hostname.c @@ -5,7 +5,7 @@ #include #include -void readcfg(const char *cfg, char *buf, size_t len) { +static void readcfg(const char *cfg, char *buf, size_t len) { FILE *fp = fopen(cfg, "r"); if (fp == NULL) { fprintf(stderr, "hostname: %s\n", strerror(errno)); diff --git a/src/id.c b/src/id.c index 9e0a28c..123c984 100644 --- a/src/id.c +++ b/src/id.c @@ -9,13 +9,13 @@ #include #include -char g_flag; -char G_flag; -char n_flag; -char r_flag; -char u_flag; +static char g_flag; +static char G_flag; +static char n_flag; +static char r_flag; +static char u_flag; -int print_groups(const struct passwd *pwd, const char *fmt, const int flag) { +static int print_groups(const struct passwd *pwd, const char *fmt, const int flag) { gid_t groups[NGROUPS_MAX]; int ngroups = NGROUPS_MAX; if (getgrouplist(pwd->pw_name, pwd->pw_gid, groups, &ngroups) < 0) @@ -38,7 +38,7 @@ int print_groups(const struct passwd *pwd, const char *fmt, const int flag) { return 0; } -int ids(uid_t uid, struct passwd *pwd) { +static int ids(uid_t uid, struct passwd *pwd) { if (u_flag) { if (n_flag) printf("%s", pwd->pw_name); @@ -54,7 +54,7 @@ int ids(uid_t uid, struct passwd *pwd) { return 0; } -int def_ids(uid_t uid, struct passwd *pwd) { +static int def_ids(uid_t uid, struct passwd *pwd) { printf("uid=%d(%s) gid=%d", uid, pwd->pw_name, pwd->pw_gid); struct group *grp = getgrgid(pwd->pw_gid); if (grp) @@ -67,7 +67,7 @@ int def_ids(uid_t uid, struct passwd *pwd) { return 0; } -void usage(int sig) { +static void usage(int sig) { puts("id [gGurn] [user]\n\t-u User ID\n\t-g Group ID\n\t-G Supplementary group IDs\n\t-n Print names instead of numbers\n\t-r Print real ID instead of effective ID"); exit(sig); } diff --git a/src/init.c b/src/init.c deleted file mode 100644 index 3a0c44e..0000000 --- a/src/init.c +++ /dev/null @@ -1,67 +0,0 @@ -#define INIT -#include -#include -#include -#include -#include -#include -#include -#include -#include "config.h" - -void poweroff(int sig) { - printf("Syncing...\n"); - - sync(); - sleep(5); - - if (sig == SIGUSR1) - reboot(RB_POWER_OFF); - - else if (sig == SIGUSR2) - reboot(RB_AUTOBOOT); -} - -void execute(char *argv[]) { - if (fork() == 0) { - setsid(); - execvp(argv[0], argv); - - fprintf(stderr, "init: Failed to run %s\nRebooting...\n", argv[0]); - poweroff(SIGUSR2); - } -} - -int main(void) { - if (getpid() != 1) { - fprintf(stderr, "init: PID Must be 1\n"); - return 1; - } - - chdir("/"); - printf("%s\n", INIT_MSG); - - sigset_t set; - sigemptyset(&set); - 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); - - /* Sig handler */ - int sig = 0; - while (1) { - if (sigwait(&set, &sig) == 0) - if (sig == SIGUSR2 || sig == SIGUSR1) { - execute(INIT_POWEROFF); - poweroff(sig); - } - } - - return 0; -} diff --git a/src/kill.c b/src/kill.c index ff98060..0748208 100644 --- a/src/kill.c +++ b/src/kill.c @@ -12,7 +12,7 @@ typedef struct { int signal; } SIG; -SIG signals[] = { +static SIG signals[] = { {"HUP", SIGHUP}, {"INT", SIGINT}, {"QUIT", SIGQUIT}, @@ -34,7 +34,7 @@ SIG signals[] = { }; -int parse_sig(char *arg) { +static int parse_sig(char *arg) { int sig = atoi(arg); if (sig > 0 && sig <= NSIG) return sig; @@ -49,7 +49,7 @@ int parse_sig(char *arg) { return SIGTERM; } -int my_kill(pid_t pid, int signal) { +static int my_kill(pid_t pid, int signal) { if (kill(pid, signal)) { fprintf(stderr, "kill: %d: %s\n", pid, strerror(errno)); return 1; diff --git a/src/ln.c b/src/ln.c index b6aafac..b7f6c48 100644 --- a/src/ln.c +++ b/src/ln.c @@ -4,11 +4,11 @@ #include #include "make_path.h" -char s_flag; -char f_flag; -char v_flag; +static char s_flag; +static char f_flag; +static char v_flag; -int ln(const char *src, const char *dst) { +static int ln(const char *src, const char *dst) { if (f_flag) if (unlink(dst) && v_flag) fprintf(stderr, "ln: removed %s\n", dst); diff --git a/src/login.c b/src/login.c index fc27859..af849e2 100644 --- a/src/login.c +++ b/src/login.c @@ -11,7 +11,7 @@ #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL) -int hide_input(int fd, int flag) { +static int hide_input(int fd, int flag) { struct termios term; if (tcgetattr(fd, &term) < 0) return 1; @@ -28,7 +28,7 @@ int hide_input(int fd, int flag) { return 0; } -void login(const struct passwd *pw) { +static void login(const struct passwd *pw) { char *shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell; setenv("HOME", pw->pw_dir, 1); @@ -45,7 +45,7 @@ void login(const struct passwd *pw) { execlp(shell, shell, "-l", NULL); } -struct passwd *proccess_input(char *hostname) { +static struct passwd *proccess_input(char *hostname) { static char user[512]; static char psswd[512]; diff --git a/src/ls.c b/src/ls.c index 4808929..3ee8f36 100644 --- a/src/ls.c +++ b/src/ls.c @@ -20,22 +20,22 @@ #include "config.h" #include "human.h" -char O_flag; -char a_flag; -char l_flag; -char F_flag; -char c_flag; -char R_flag; -char d_flag; -char L_flag; -char h_flag; -char s_flag; -char i_flag; -char p_flag; -char nul_flag; +static char O_flag; +static char a_flag; +static char l_flag; +static char F_flag; +static char c_flag; +static char R_flag; +static char d_flag; +static char L_flag; +static char h_flag; +static char s_flag; +static char i_flag; +static char p_flag; +static char nul_flag; -int sortd(const void *p1, const void *p2); -int (*sorter)(const void *p1, const void *p2) = sortd; +static int sortd(const void *p1, const void *p2); +static int (*sorter)(const void *p1, const void *p2) = sortd; struct d_node { /* basename */ @@ -49,7 +49,7 @@ struct d_node { }; /* Work with dir */ -struct d_node *stat_file(char *filename, const int lfile) { +static struct d_node *stat_file(char *filename, const int lfile) { /* lfile its flag. 1 if passed file from list_one() */ struct d_node *file = malloc(sizeof(struct d_node)); if (file == NULL) { @@ -73,7 +73,7 @@ struct d_node *stat_file(char *filename, const int lfile) { return file; } -void dfree(struct d_node **dir, const size_t files) { +static void dfree(struct d_node **dir, const size_t files) { for (size_t i = 0; i < files; i++) { if (dir[i] != NULL && dir[i]->full_name != NULL) free(dir[i]->full_name); @@ -85,7 +85,7 @@ void dfree(struct d_node **dir, const size_t files) { free(dir); } -struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *ret) { +static struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *ret) { DIR *dp = opendir(path); if (dp == NULL) { fprintf(stderr, "ls: %s: %s\n", path, strerror(errno)); @@ -134,7 +134,7 @@ struct d_node **list(const char *path, off_t *total_size, size_t *nfiles, int *r return dn; } -char *get_date(const time_t mtime) { +static char *get_date(const time_t mtime) { static char date[100]; strftime(date, sizeof(date), "%b %d %H:%M", localtime(&mtime)); @@ -143,7 +143,7 @@ char *get_date(const time_t mtime) { } /* Print */ -int print(const struct d_node *node) { +static int print(const struct d_node *node) { char suf = ' '; char *color = ""; @@ -229,7 +229,7 @@ int print(const struct d_node *node) { return ret; } -int col_print(struct d_node **node, const size_t files, const struct winsize w) { +static int col_print(struct d_node **node, const size_t files, const struct winsize w) { /* Get max len */ size_t maxlen = 0; for (size_t i = 0; i < files; i++) { @@ -288,7 +288,7 @@ int col_print(struct d_node **node, const size_t files, const struct winsize w) return 0; } -int struct_print(struct d_node **dir, const size_t files, const struct winsize w) { +static int struct_print(struct d_node **dir, const size_t files, const struct winsize w) { int ret = 0; /* pipe print */ @@ -309,20 +309,20 @@ int struct_print(struct d_node **dir, const size_t files, const struct winsize w } /* Sort */ -int sortt(const void *p1, const void *p2) { +static int sortt(const void *p1, const void *p2) { return (*(struct d_node **)p2)->stats.st_mtime - (*(struct d_node **)p1)->stats.st_mtime; } -int sorts(const void *p1, const void *p2) { +static int sorts(const void *p1, const void *p2) { return (*(struct d_node **)p2)->stats.st_size - (*(struct d_node **)p1)->stats.st_size; } -int sortd(const void *p1, const void *p2) { +static int sortd(const void *p1, const void *p2) { return strcmp((*(struct d_node **)p1)->full_name, (*(struct d_node **)p2)->full_name); } /* Ls */ -int ls_dir(const char *dir_name, const int label, const struct winsize w) { +static int ls_dir(const char *dir_name, const int label, const struct winsize w) { if (dir_name == NULL) return 0; @@ -360,7 +360,7 @@ int ls_dir(const char *dir_name, const int label, const struct winsize w) { return ret; } -int ls_files(int argc, char **argv, const struct winsize w) { +static int ls_files(int argc, char **argv, const struct winsize w) { size_t files = 0; struct d_node **file = malloc(sizeof(struct d_node *)); if (file == NULL) { diff --git a/src/mkdir.c b/src/mkdir.c index 41edd10..b9b8a89 100644 --- a/src/mkdir.c +++ b/src/mkdir.c @@ -7,11 +7,11 @@ #include #include "parse_mode.h" -char v_flag; -char p_flag; -mode_t mode = 0777; +static char v_flag; +static char p_flag; +static mode_t mode = 0777; -int do_mkdir(const char *path) { +static int do_mkdir(const char *path) { if (mkdir(path, mode)) { if (p_flag) return 0; @@ -26,7 +26,7 @@ int do_mkdir(const char *path) { return 0; } -int do_parents(const char *path) { +static int do_parents(const char *path) { if (path[0] == '.' || path[0] == '/') return 0; diff --git a/src/mknod.c b/src/mknod.c index ad45941..387342e 100644 --- a/src/mknod.c +++ b/src/mknod.c @@ -10,7 +10,7 @@ #include #include "parse_mode.h" -long parse_long(const char *str) { +static long parse_long(const char *str) { char *ptr = NULL; long value = strtol(str, &ptr, 10); diff --git a/src/mktemp.c b/src/mktemp.c index ab23f4b..8da32ab 100644 --- a/src/mktemp.c +++ b/src/mktemp.c @@ -5,7 +5,7 @@ #include #include "make_path.h" -int make_temp_dir(char *tmp) { +static int make_temp_dir(char *tmp) { if (!mkdtemp(tmp)) { if (errno == EINVAL) fprintf(stderr, "mktemp: template does not end in exactly 'XXXXX': %s\n", tmp); @@ -19,7 +19,7 @@ int make_temp_dir(char *tmp) { return 0; } -int get_suffix(const char *str) { +static int get_suffix(const char *str) { size_t len = strlen(str); for (size_t i = len - 1; i > 0; i--) if (str[i] == 'X') @@ -28,7 +28,7 @@ int get_suffix(const char *str) { return 0; } -int make_temp_file(char *tmp) { +static int make_temp_file(char *tmp) { if (!strstr(tmp, "XXXXXX")) { fprintf(stderr, "mktemp: too few X's in template: %s\n", tmp); return 1; diff --git a/src/mount.c b/src/mount.c index df0ab5d..d4c9076 100644 --- a/src/mount.c +++ b/src/mount.c @@ -10,7 +10,7 @@ #include "parse_mount.h" #include "config.h" -int do_mount(const char *src, const char *dst, const char *fs_type, unsigned long opt, char *data) { +static int do_mount(const char *src, const char *dst, const char *fs_type, unsigned long opt, char *data) { if (mount(src, dst, fs_type, opt, data) < 0) { fprintf(stderr, "mount: %s: %s\n", src, strerror(errno)); return 1; @@ -19,7 +19,7 @@ int do_mount(const char *src, const char *dst, const char *fs_type, unsigned lon return 0; } -int parse_fstab(void) { +static int parse_fstab(void) { FILE *fp = setmntent(MOUNT_CFG, "r"); if (fp == NULL) { fprintf(stderr, "mount: %s\n", strerror(errno)); @@ -39,7 +39,7 @@ int parse_fstab(void) { return 0; } -int print_mounts(void) { +static int print_mounts(void) { FILE *fp = fopen(MOUNT_LIST, "r"); if (fp == NULL) { fprintf(stderr, "mount: %s\n", strerror(errno)); @@ -56,7 +56,7 @@ int print_mounts(void) { return 0; } -void print_opts(void) { +static void print_opts(void) { for (size_t i = 0; i < sizeof(mu_options) / sizeof(mu_options[0]); i++) { printf("\t%s", mu_options[i].opt); if (mu_options[i].notopt != NULL) diff --git a/src/mv.c b/src/mv.c index a052890..3719eae 100644 --- a/src/mv.c +++ b/src/mv.c @@ -6,9 +6,9 @@ #include #include #include "make_path.h" -char *f_flag = "mv"; +static char *f_flag = "mv"; -int move(const char *src, const char *dst) { +static int move(const char *src, const char *dst) { char *copy = strdup(src); if (!copy) return 1; diff --git a/src/printenv.c b/src/printenv.c index 17a2f71..860ccae 100644 --- a/src/printenv.c +++ b/src/printenv.c @@ -3,7 +3,7 @@ #include #include -int printvars(int len, char **names) { +static int printvars(int len, char **names) { int ret = 0; for (int i = 0; i < len; i++) { diff --git a/src/ps.c b/src/ps.c index 3d6f43b..8c6a66b 100644 --- a/src/ps.c +++ b/src/ps.c @@ -9,7 +9,7 @@ #include #include -int pscan(const char *pid) { +static int pscan(const char *pid) { char path[PATH_MAX + 1]; /* Arguments */ diff --git a/src/que.c b/src/que.c index f7e8dde..964fafb 100644 --- a/src/que.c +++ b/src/que.c @@ -1,5 +1,4 @@ /* Safe variant of kilo editor */ -/* Based on the web-tutorial and contain many edits */ #include #include @@ -14,11 +13,11 @@ #define CTRL_KEY(k) ((k) & 0x1f) #define TAB_SIZE 8 -struct termios orig_termios; -struct winsize ws; +static struct termios orig_termios; +static struct winsize ws; -char *scr_buf; -size_t scr_buf_size; +static char *scr_buf; +static size_t scr_buf_size; struct row { char *buf; @@ -28,34 +27,29 @@ struct row { size_t rlen; }; -struct row *row_s; -size_t row_size; +static struct row *row_s; +static size_t row_size; /* Cursors */ -unsigned int curx; -unsigned int cury; -unsigned int renx; +static unsigned int curx; +static unsigned int cury; +static unsigned int renx; -unsigned int rowoff; -unsigned int coloff; +static unsigned int rowoff; +static unsigned int coloff; -char *file_path; +static char *file_path; enum { FAILED_SAVE = 1, SUCCESS_SAVE, MARK }; -char status_type; -char modified_flag; - -/* for mark */ -char mark_flag; -unsigned int curx2; -unsigned int cury2; +static char status_type; +static char modified_flag; /* Cleaners */ -void bufFree(void) { +static void bufFree(void) { if (scr_buf != NULL) free(scr_buf); @@ -63,7 +57,7 @@ void bufFree(void) { scr_buf_size = 0; } -void fileBufFree(void) { +static void fileBufFree(void) { if (row_s != NULL) { if (row_size > 0) for (size_t i = 0; i < row_size; i++) { @@ -81,7 +75,7 @@ void fileBufFree(void) { row_size = 0; } -void die(int ret, char *msg) { +static void die(int ret, char *msg) { write(STDOUT_FILENO, "\033[H\033[J", 6); bufFree(); @@ -94,7 +88,7 @@ void die(int ret, char *msg) { } /* Save */ -char *buf2str(size_t *len) { +static char *buf2str(size_t *len) { size_t totalen = 0; for (size_t i = 0; i < row_size; i++) totalen += row_s[i].len + 1; @@ -117,7 +111,7 @@ char *buf2str(size_t *len) { return buf; } -void save(void) { +static void save(void) { size_t len = 0; char *buf = buf2str(&len); @@ -148,7 +142,7 @@ BAD_SAVE: } /* Funcs */ -void bufAppend(const char *str, const size_t len) { +static void bufAppend(const char *str, const size_t len) { if (len == 0) return; @@ -173,7 +167,7 @@ void bufAppend(const char *str, const size_t len) { scr_buf_size += len; } -int updateRenderStr(const unsigned int row) { +static int updateRenderStr(const unsigned int row) { int tabs = 0; for (size_t i = 0; i < row_s[row].len; i++) if (row_s[row].buf[i] == '\t') @@ -205,7 +199,7 @@ int updateRenderStr(const unsigned int row) { return 0; } -int addRow(const unsigned int at, const char *buf, const size_t len) { +static int addRow(const unsigned int at, const char *buf, const size_t len) { struct row *row_s2 = realloc(row_s, sizeof(struct row) * (row_size + 1)); if (row_s2 == NULL) return 1; @@ -230,7 +224,7 @@ int addRow(const unsigned int at, const char *buf, const size_t len) { return 0; } -void readFile(const char *path) { +static void readFile(const char *path) { row_s = malloc(sizeof(struct row)); if (row_s == NULL) die(1, "malloc in readFIle"); @@ -259,7 +253,7 @@ void readFile(const char *path) { fclose(fp); } -void insertChar(char c) { +static void insertChar(char c) { if ((size_t)cury == row_size) { if (addRow(row_size, "", 0)) { save(); @@ -290,7 +284,7 @@ void insertChar(char c) { curx++; } -void insertNewline(void) { +static void insertNewline(void) { if (curx == 0) { if (addRow(cury, "", 0)) { save(); @@ -327,7 +321,7 @@ void insertNewline(void) { curx = 0; } -void delChar(void) { +static void delChar(void) { if ((curx == 0 && cury == 0) || cury == (unsigned int)row_size) return; @@ -379,17 +373,13 @@ void delChar(void) { } } -void cmd(void) { - /* Execute internal cmds */ -} - /* Terminal */ -void DRawMode(void) { +static void DRawMode(void) { if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios) < 0) die(1, "tcsetattr"); } -void ERawMode(void) { +static void ERawMode(void) { if (tcgetattr(STDIN_FILENO, &orig_termios) < 0) die(1, "tcgetattr"); @@ -406,7 +396,7 @@ void ERawMode(void) { die(1, "tcsetattr"); } -void winsize(void) { +static void winsize(void) { if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) die(1, "ioctl"); @@ -416,7 +406,7 @@ void winsize(void) { ws.ws_row--; } -void statusBar(const char *path) { +static void statusBar(const char *path) { char info[124]; int ret = 0; @@ -437,7 +427,7 @@ void statusBar(const char *path) { } /* Keyboard */ -char readkey(void) { +static char readkey(void) { char c; int ret; @@ -451,7 +441,7 @@ char readkey(void) { return c; } -void moveCursor(char c) { +static void moveCursor(char c) { switch (c) { case 'A': if (cury != 0) @@ -527,7 +517,7 @@ void moveCursor(char c) { curx = row_s[cury].len; } -void keyboard(void) { +static void keyboard(void) { char key = readkey(); switch (key) { case '\033': @@ -542,10 +532,6 @@ void keyboard(void) { insertNewline(); break; - case CTRL_KEY('f'): - cmd(); - break; - case CTRL_KEY('q'): die(0, NULL); break; diff --git a/src/renice.c b/src/renice.c index 3cb704c..5421359 100644 --- a/src/renice.c +++ b/src/renice.c @@ -6,7 +6,7 @@ #include #include -int renice(int which, int who, int adj) { +static int renice(int which, int who, int adj) { adj += getpriority(which, who); if (setpriority(which, who, adj)) { diff --git a/src/rm.c b/src/rm.c index a0a78b5..d5c81da 100644 --- a/src/rm.c +++ b/src/rm.c @@ -10,11 +10,11 @@ #include "recurse.h" #include "unused.h" -char *f_flag = "rm"; -char r_flag; -char v_flag; +static char *f_flag = "rm"; +static char r_flag; +static char v_flag; -int verbose(const char *path) { +static int verbose(const char *path) { if (v_flag) { fprintf(stderr, "rm: remove %s? [y/n] ", path); fflush(stderr); @@ -33,12 +33,12 @@ int verbose(const char *path) { return 1; } -void handle_error(const char *path) { +static void handle_error(const char *path) { if (f_flag) fprintf(stderr, "rm: %s: %s\n", path, strerror(errno)); } -int rm(const char *path, void *p) { +static int rm(const char *path, void *p) { UNUSED(p); if (verbose(path) && remove(path) < 0) { @@ -49,7 +49,7 @@ int rm(const char *path, void *p) { return 0; } -int rmd(const char *path, void *p) { +static int rmd(const char *path, void *p) { UNUSED(p); if (verbose(path) && rmdir(path) < 0) { diff --git a/src/seq.c b/src/seq.c index 57a57d8..48456fa 100644 --- a/src/seq.c +++ b/src/seq.c @@ -4,7 +4,7 @@ #include #include -double parse_double(const char *str) { +static double parse_double(const char *str) { char *ptr; double res = strtod(str, &ptr); diff --git a/src/setsid.c b/src/setsid.c index b471b6d..7346199 100644 --- a/src/setsid.c +++ b/src/setsid.c @@ -18,4 +18,5 @@ int main(int argc, char **argv) { setsid(); execvp(argv[1], argv + 1); + return 1; } diff --git a/src/shred.c b/src/shred.c index 4ba6a2c..969e5e0 100644 --- a/src/shred.c +++ b/src/shred.c @@ -10,12 +10,12 @@ #include #include "config.h" -char f_flag; -char u_flag; -char z_flag; -int n_loops = 3; +static char f_flag; +static char u_flag; +static char z_flag; +static int n_loops = 3; -int shred(int rand_fd, int fd) { +static int shred(int rand_fd, int fd) { /* Get size */ off_t size = lseek(fd, 0, SEEK_END); diff --git a/src/spark.c b/src/spark.c deleted file mode 100644 index a2c6871..0000000 --- a/src/spark.c +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int parse_double(const char *str, double *res) { - char *ptr; - - *res = strtod(str, &ptr); - if (*ptr) - return 0; - - return 1; -} - -void print(double diff, char *str, double min) { - double val = 0; - if (!parse_double(str, &val)) - return; - - putchar('\xe2'); - putchar('\x96'); - putchar('\x81' + (int)round((val - min + 1) / diff * 7)); -} - -int main(int argc, char **argv) { - if (argc == 1) { - printf("spark: missing operands\nspark [num1] [num2]...\n"); - return 0; - } - - unsigned int r_flag = 0; - char ret = '\n'; - - double min = DBL_MAX; - double max = DBL_MIN; - - /* Remove programm name */ - argv++; - argc--; - - for (int i = 0; i < argc; i++) { - double val = 0; - if (strstr(argv[i], "r")) - r_flag = 1; - - else if (strstr(argv[i], "n")) - ret = '\r'; - - else if (parse_double(argv[i], &val)) { - if (val > max) - max = val; - - if (val < min) - min = val; - } - - else { - printf("spark [rn] [num1 num2...]\n\t-n Use \\r\n\t-r Reverse]\n"); - return 0; - } - } - - double diff = max - min + 1; - if (diff < 1) - diff = 1; - - if (r_flag) - for (int i = argc - 1; i >= 0; i--) - print(diff, argv[i], min); - - else - for (int i = 0; i < argc; i++) - print(diff, argv[i], min); - - putchar(ret); - return 0; -} diff --git a/src/split.c b/src/split.c index 119694a..225cf97 100644 --- a/src/split.c +++ b/src/split.c @@ -6,7 +6,7 @@ #include #include "config.h" -FILE *next_file(FILE *old, int x, int slen, char *prefix) { +static FILE *next_file(FILE *old, int x, int slen, char *prefix) { if (old != NULL) fclose(old); diff --git a/src/su.c b/src/su.c index 3a4030c..6a1a048 100644 --- a/src/su.c +++ b/src/su.c @@ -12,11 +12,11 @@ #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL) -char *c_flag = NULL; -char *s_flag = NULL; -char p_flag; +static char *c_flag = NULL; +static char *s_flag = NULL; +static char p_flag; -int hide_input(int fd, int flag) { +static int hide_input(int fd, int flag) { struct termios term; if (tcgetattr(fd, &term) < 0) return 1; @@ -33,7 +33,7 @@ int hide_input(int fd, int flag) { return 0; } -void su(const struct passwd *pw) { +static void su(const struct passwd *pw) { char *shell = s_flag; if (s_flag == NULL) shell = (pw->pw_shell[0] == '\0') ? "/bin/sh" : pw->pw_shell; @@ -53,7 +53,7 @@ void su(const struct passwd *pw) { execlp(shell, shell, "-l", NULL); } -int password(const struct passwd *pw) { +static int password(const struct passwd *pw) { static char psswd[512]; printf("Password: "); @@ -81,7 +81,7 @@ int password(const struct passwd *pw) { return 0; } -void endwin(int sig) { +static void endwin(int sig) { UNUSED(sig); hide_input(STDIN_FILENO, 0); diff --git a/src/touch.c b/src/touch.c index 12a170b..4bcc5ad 100644 --- a/src/touch.c +++ b/src/touch.c @@ -1,3 +1,4 @@ +#define _XOPEN_SOURCE #include #include #include @@ -7,11 +8,11 @@ #include #include -char c_flag; -char m_flag; -char a_flag; +static char c_flag; +static char m_flag; +static char a_flag; -int setdate(const char *path, const time_t date, char flag) { +static int setdate(const char *path, const time_t date, char flag) { struct utimbuf new_time; if (flag || a_flag) @@ -28,7 +29,7 @@ int setdate(const char *path, const time_t date, char flag) { return 0; } -int touch(const char *path, const time_t date) { +static int touch(const char *path, const time_t date) { if (!c_flag) { int fd = open(path, O_CREAT | O_RDONLY, 0666); @@ -55,7 +56,7 @@ int touch(const char *path, const time_t date) { return 0; } -time_t parse_date(char *str) { +static time_t parse_date(char *str) { char *fmt = NULL; switch (strlen(str)) { case 8: diff --git a/src/umount.c b/src/umount.c index d04e2fe..f312f1a 100644 --- a/src/umount.c +++ b/src/umount.c @@ -9,7 +9,7 @@ #include #include "config.h" -int parse_fstab(unsigned long flag) { +static int parse_fstab(unsigned long flag) { FILE *fp = setmntent(MOUNT_CFG, "r"); if (fp == NULL) { fprintf(stderr, "umount: %s\n", strerror(errno)); diff --git a/src/uname.c b/src/uname.c index def6db0..4df726d 100644 --- a/src/uname.c +++ b/src/uname.c @@ -40,10 +40,10 @@ enum { COUNT }; -char flags[COUNT]; -unsigned int counter = 0; +static char flags[COUNT]; +static unsigned int counter = 0; -void print(const char *msg) { +static void print(const char *msg) { if (counter > 0 && !flags[ALL]) putchar(' '); @@ -129,4 +129,5 @@ int main(int argc, char **argv) { print("unknow"); putchar('\n'); + return 0; } diff --git a/src/wc.c b/src/wc.c index f100c35..3424f4f 100644 --- a/src/wc.c +++ b/src/wc.c @@ -7,21 +7,21 @@ #include "config.h" /* cmd arguments l - lines c - bytes w - words */ -unsigned int l_flag; -unsigned int c_flag; -unsigned int w_flag; -unsigned int t_flag; +static size_t l_flag; +static size_t c_flag; +static size_t w_flag; +static size_t t_flag; -unsigned int words; -unsigned int bytes; -unsigned int lines; +static size_t words; +static size_t bytes; +static size_t lines; /* Total */ -unsigned int twords; -unsigned int tbytes; -unsigned int tlines; +static size_t twords; +static size_t tbytes; +static size_t tlines; -void count(const int fd) { +static void count(const int fd) { char buf[BUF_SIZE + 1]; off_t n = 0; @@ -45,20 +45,20 @@ void count(const int fd) { } } - tbytes += bytes; - twords += words; - tlines += lines; + tbytes += (size_t)bytes; + twords += (size_t)words; + tlines += (size_t)lines; } -void print_count(const char *path, unsigned int plines, unsigned int pwords, unsigned int pbytes) { +static void print_count(const char *path, size_t plines, size_t pwords, size_t pbytes) { if (l_flag) - printf("%7u ", plines); + printf("%7zu ", plines); if (w_flag) - printf(" %7u", pwords); + printf(" %7zu", pwords); if (c_flag) - printf(" %7u", pbytes); + printf(" %7zu", pbytes); printf(" %s\n", path); } diff --git a/src/xargs.c b/src/xargs.c index 6e0d652..ea54e08 100644 --- a/src/xargs.c +++ b/src/xargs.c @@ -12,15 +12,15 @@ #define ARG_MAX 10000 #endif -int args; -char *cmd[ARG_MAX + 1]; +static int args; +static char *cmd[ARG_MAX + 1]; -char *I_flag; -char t_flag; -char r_flag; -char nl_flag; -int n_flag; -size_t s_flag; +static char *I_flag; +static char t_flag; +static char r_flag; +static char nl_flag; +static int n_flag; +static size_t s_flag; enum { NORMAL, @@ -34,7 +34,7 @@ enum { QUOTE }; -void clear_cmd(void) { +static void clear_cmd(void) { for (int i = 0; i < args; i++) { if (cmd[i] != NULL) { free(cmd[i]); @@ -45,7 +45,7 @@ void clear_cmd(void) { args = 0; } -int Iflag_push(const char *str, char **arg) { +static int Iflag_push(const char *str, char **arg) { size_t arg_len = strlen(*arg); size_t str_len = strlen(str); size_t Iflag_len = strlen(I_flag); @@ -68,7 +68,7 @@ int Iflag_push(const char *str, char **arg) { return 0; } -int add_arg(const char *str, size_t chars, int flag) { +static int add_arg(const char *str, size_t chars, int flag) { if (args >= ARG_MAX) return ERROR; @@ -100,7 +100,7 @@ int add_arg(const char *str, size_t chars, int flag) { return NORMAL; } -int is_correct(char c) { +static int is_correct(char c) { if (nl_flag) return c == '\0'; @@ -108,7 +108,7 @@ int is_correct(char c) { return isspace(c); } -int xargs(void) { +static int xargs(void) { size_t arg_size = 0; char *arg = malloc(1); if (arg == NULL) { @@ -197,7 +197,7 @@ int xargs(void) { return ret; } -int spawn(void) { +static int spawn(void) { if (t_flag) { for (int i = 0; i < args; i++) fprintf(stderr, "%s ", cmd[i]);