[hackers] [ubase] code-style: cleanup || Hiltjo Posthuma

From: <git_AT_suckless.org>
Date: Fri, 6 Feb 2015 16:16:29 +0100 (CET)

commit 7e394bd70f7ef1be7bee8f646fd0322ff3fdf33f
Author: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
Date: Fri Feb 6 15:19:33 2015 +0100

    code-style: cleanup
    
    - move main() at the bottom.
    - put global variables at the top.
    - improve usage() lines (consistent with man page).

diff --git a/df.c b/df.c
index f3a3049..3b71e53 100644
--- a/df.c
+++ b/df.c
_AT_@ -13,63 +13,6 @@ static int aflag = 0;
 static int hflag = 0;
 static int kflag = 0;
 
-static int mnt_show(const char *fsname, const char *dir);
-
-static void
-usage(void)
-{
- eprintf("usage: %s [-a]\n", argv0);
-}
-
-int
-main(int argc, char *argv[])
-{
- struct mntent *me = NULL;
- FILE *fp;
- int ret = 0;
-
- ARGBEGIN {
- case 'a':
- aflag = 1;
- break;
- case 'h':
- hflag = 1;
- kflag = 0;
- break;
- case 'k':
- kflag = 1;
- hflag = 0;
- blksize = 1024;
- break;
- case 's':
- case 'i':
- eprintf("not implemented\n");
- default:
- usage();
- } ARGEND;
-
- if (hflag)
- printf("Filesystem Size Used "
- "Avail Capacity Mounted on\n");
- else
- printf("Filesystem %ld-blocks Used "
- "Avail Capacity Mounted on\n", blksize);
-
- fp = setmntent("/proc/mounts", "r");
- if (!fp)
- eprintf("setmntent %s:", "/proc/mounts");
- while ((me = getmntent(fp)) != NULL) {
- if (aflag == 0)
- if (strcmp(me->mnt_type, "rootfs") == 0)
- continue;
- if (mnt_show(me->mnt_fsname, me->mnt_dir) < 0)
- ret = 1;
- }
- endmntent(fp);
-
- return ret;
-}
-
 #define CALC_POWER(n, power, base, i) do { \
         while (n > power) { \
                 power = power * base; \
_AT_@ -141,3 +84,58 @@ mnt_show(const char *fsname, const char *dir)
 
         return 0;
 }
+
+static void
+usage(void)
+{
+ eprintf("usage: %s [-a]\n", argv0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct mntent *me = NULL;
+ FILE *fp;
+ int ret = 0;
+
+ ARGBEGIN {
+ case 'a':
+ aflag = 1;
+ break;
+ case 'h':
+ hflag = 1;
+ kflag = 0;
+ break;
+ case 'k':
+ kflag = 1;
+ hflag = 0;
+ blksize = 1024;
+ break;
+ case 's':
+ case 'i':
+ eprintf("not implemented\n");
+ default:
+ usage();
+ } ARGEND;
+
+ if (hflag)
+ printf("Filesystem Size Used "
+ "Avail Capacity Mounted on\n");
+ else
+ printf("Filesystem %ld-blocks Used "
+ "Avail Capacity Mounted on\n", blksize);
+
+ fp = setmntent("/proc/mounts", "r");
+ if (!fp)
+ eprintf("setmntent %s:", "/proc/mounts");
+ while ((me = getmntent(fp)) != NULL) {
+ if (aflag == 0)
+ if (strcmp(me->mnt_type, "rootfs") == 0)
+ continue;
+ if (mnt_show(me->mnt_fsname, me->mnt_dir) < 0)
+ ret = 1;
+ }
+ endmntent(fp);
+
+ return ret;
+}
\ No newline at end of file
diff --git a/free.c b/free.c
index 91c2923..2537fe5 100644
--- a/free.c
+++ b/free.c
_AT_@ -6,12 +6,6 @@
 
 #include "util.h"
 
-static void
-usage(void)
-{
- eprintf("usage: %s [-bkmg]\n", argv0);
-}
-
 static unsigned int mem_unit = 1;
 static unsigned int unit_shift;
 
_AT_@ -21,6 +15,12 @@ scale(unsigned long long v)
         return (v * mem_unit) >> unit_shift;
 }
 
+static void
+usage(void)
+{
+ eprintf("usage: %s [-bkmg]\n", argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
diff --git a/getty.c b/getty.c
index 4d0efdf..cef5c4e 100644
--- a/getty.c
+++ b/getty.c
_AT_@ -15,15 +15,15 @@
 #include "config.h"
 #include "util.h"
 
+static char *tty = "/dev/tty1";
+static char *defaultterm = "linux";
+
 static void
 usage(void)
 {
         eprintf("usage: %s [tty] [term] [cmd] [args...]\n", argv0);
 }
 
-static char *tty = "/dev/tty1";
-static char *defaultterm = "linux";
-
 int
 main(int argc, char *argv[])
 {
diff --git a/hwclock.c b/hwclock.c
index 25b4ded..d63a72a 100644
--- a/hwclock.c
+++ b/hwclock.c
_AT_@ -14,64 +14,6 @@
 #include "rtc.h"
 #include "util.h"
 
-static void readrtctm(struct tm *, int);
-static void writertctm(struct tm *, int);
-static void show(char *);
-static void hctosys(char *);
-static void systohc(char *);
-
-static void
-usage(void)
-{
- eprintf("usage: %s [-rsw] [-u] [dev]\n", argv0);
-}
-
-int
-main(int argc, char *argv[])
-{
- char *dev = "/dev/rtc";
- int rflag = 0;
- int sflag = 0;
- int wflag = 0;
-
- ARGBEGIN {
- case 'r':
- rflag = 1;
- break;
- case 's':
- sflag = 1;
- break;
- case 'w':
- wflag = 1;
- break;
- case 'u':
- break;
- default:
- usage();
- } ARGEND;
-
- if (argc > 1)
- usage();
- else if (argc == 1)
- dev = argv[0];
-
- if ((rflag ^ sflag ^ wflag) == 0)
- eprintf("missing or incompatible function\n");
-
- /* Only UTC support at the moment */
- setenv("TZ", "UTC0", 1);
- tzset();
-
- if (rflag == 1)
- show(dev);
- else if (sflag == 1)
- hctosys(dev);
- else if (wflag == 1)
- systohc(dev);
-
- return 0;
-}
-
 static void
 readrtctm(struct tm *tm, int fd)
 {
_AT_@ -163,3 +105,55 @@ systohc(char *dev)
         writertctm(tm, fd);
         close(fd);
 }
+
+static void
+usage(void)
+{
+ eprintf("usage: %s [-rsw] [-u] [dev]\n", argv0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *dev = "/dev/rtc";
+ int rflag = 0;
+ int sflag = 0;
+ int wflag = 0;
+
+ ARGBEGIN {
+ case 'r':
+ rflag = 1;
+ break;
+ case 's':
+ sflag = 1;
+ break;
+ case 'w':
+ wflag = 1;
+ break;
+ case 'u':
+ break;
+ default:
+ usage();
+ } ARGEND;
+
+ if (argc > 1)
+ usage();
+ else if (argc == 1)
+ dev = argv[0];
+
+ if ((rflag ^ sflag ^ wflag) == 0)
+ eprintf("missing or incompatible function\n");
+
+ /* Only UTC support at the moment */
+ setenv("TZ", "UTC0", 1);
+ tzset();
+
+ if (rflag == 1)
+ show(dev);
+ else if (sflag == 1)
+ hctosys(dev);
+ else if (wflag == 1)
+ systohc(dev);
+
+ return 0;
+}
\ No newline at end of file
diff --git a/id.c b/id.c
index 1a45814..e03284c 100644
--- a/id.c
+++ b/id.c
_AT_@ -17,63 +17,48 @@ static void user(struct passwd *pw);
 static void userid(uid_t id);
 static void usernam(const char *nam);
 
-static void
-usage(void)
-{
- eprintf("usage: %s [-g] [-u] [-G] [user | uid]\n", argv0);
-}
-
 static int Gflag = 0;
 
-int
-main(int argc, char *argv[])
+static void
+groupid(struct passwd *pw)
 {
- ARGBEGIN {
- case 'g':
- printf("%d\n", getegid());
- return 0;
- case 'u':
- printf("%d\n", geteuid());
- return 0;
- case 'G':
- Gflag = 1;
- break;
- default:
- usage();
- } ARGEND;
+ gid_t gid, groups[NGROUPS_MAX];
+ int ngroups;
+ int i;
 
- switch (argc) {
- case 0:
- userid(getuid());
- break;
- case 1:
- /* user names can't begin [0-9] */
- if (isdigit(argv[0][0]))
- userid(estrtol(argv[0], 0));
- else
- usernam(argv[0]);
- break;
- default:
- usage();
+ ngroups = NGROUPS_MAX;
+ getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
+ for (i = 0; i < ngroups; i++) {
+ gid = groups[i];
+ printf("%u", gid);
+ if (i < ngroups - 1)
+ putchar(' ');
         }
-
- return 0;
+ putchar('\n');
 }
 
 static void
-groupid(struct passwd *pw)
+user(struct passwd *pw)
 {
+ struct group *gr;
         gid_t gid, groups[NGROUPS_MAX];
         int ngroups;
         int i;
 
+ printf("uid=%u(%s)", pw->pw_uid, pw->pw_name);
+ printf(" gid=%u", pw->pw_gid);
+ if (!(gr = getgrgid(pw->pw_gid)))
+ eprintf("getgrgid:");
+ printf("(%s)", gr->gr_name);
+
         ngroups = NGROUPS_MAX;
         getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
         for (i = 0; i < ngroups; i++) {
                 gid = groups[i];
- printf("%u", gid);
- if (i < ngroups - 1)
- putchar(' ');
+ printf("%s%u", !i ? " groups=" : ",", gid);
+ if (!(gr = getgrgid(gid)))
+ eprintf("getgrgid:");
+ printf("(%s)", gr->gr_name);
         }
         putchar('\n');
 }
_AT_@ -117,27 +102,42 @@ userid(uid_t id)
 }
 
 static void
-user(struct passwd *pw)
+usage(void)
 {
- struct group *gr;
- gid_t gid, groups[NGROUPS_MAX];
- int ngroups;
- int i;
+ eprintf("usage: %s [-g] [-u] [-G] [user | uid]\n", argv0);
+}
 
- printf("uid=%u(%s)", pw->pw_uid, pw->pw_name);
- printf(" gid=%u", pw->pw_gid);
- if (!(gr = getgrgid(pw->pw_gid)))
- eprintf("getgrgid:");
- printf("(%s)", gr->gr_name);
+int
+main(int argc, char *argv[])
+{
+ ARGBEGIN {
+ case 'g':
+ printf("%d\n", getegid());
+ return 0;
+ case 'u':
+ printf("%d\n", geteuid());
+ return 0;
+ case 'G':
+ Gflag = 1;
+ break;
+ default:
+ usage();
+ } ARGEND;
 
- ngroups = NGROUPS_MAX;
- getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
- for (i = 0; i < ngroups; i++) {
- gid = groups[i];
- printf("%s%u", !i ? " groups=" : ",", gid);
- if (!(gr = getgrgid(gid)))
- eprintf("getgrgid:");
- printf("(%s)", gr->gr_name);
+ switch (argc) {
+ case 0:
+ userid(getuid());
+ break;
+ case 1:
+ /* user names can't begin [0-9] */
+ if (isdigit(argv[0][0]))
+ userid(estrtol(argv[0], 0));
+ else
+ usernam(argv[0]);
+ break;
+ default:
+ usage();
         }
- putchar('\n');
+
+ return 0;
 }
diff --git a/killall5.c b/killall5.c
index 55e5862..e841841 100644
--- a/killall5.c
+++ b/killall5.c
_AT_@ -22,12 +22,6 @@ struct {
 #undef SIG
 };
 
-static void
-usage(void)
-{
- eprintf("usage: %s [-o pid1,pid2,..,pidN] [-s signal]\n", argv0);
-}
-
 struct pidentry {
         pid_t pid;
         TAILQ_ENTRY(pidentry) entry;
_AT_@ -35,15 +29,21 @@ struct pidentry {
 
 static TAILQ_HEAD(omitpid_head, pidentry) omitpid_head;
 
+static void
+usage(void)
+{
+ eprintf("usage: %s [-o pid1,pid2,..,pidN] [-s signal]\n", argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
         struct pidentry *pe, *tmp;
- int oflag = 0;
- char *p, *arg = NULL;
- DIR *dp;
         struct dirent *entry;
+ DIR *dp;
+ char *p, *arg = NULL;
         char *end, *v;
+ int oflag = 0;
         int sig = SIGTERM;
         pid_t pid;
         size_t i;
diff --git a/login.c b/login.c
index 31b7a26..25a59e4 100644
--- a/login.c
+++ b/login.c
_AT_@ -16,14 +16,6 @@
 #include "passwd.h"
 #include "util.h"
 
-static int dologin(struct passwd *, int);
-
-static void
-usage(void)
-{
- eprintf("usage: %s [-p] username\n", argv0);
-}
-
 /* Write utmp entry */
 static void
 writeutmp(const char *user, const char *tty)
_AT_@ -50,6 +42,31 @@ writeutmp(const char *user, const char *tty)
         }
 }
 
+static int
+dologin(struct passwd *pw, int preserve)
+{
+ char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
+
+ if (preserve == 0)
+ clearenv();
+ setenv("HOME", pw->pw_dir, 1);
+ setenv("SHELL", shell, 1);
+ setenv("USER", pw->pw_name, 1);
+ setenv("LOGNAME", pw->pw_name, 1);
+ setenv("PATH", ENV_PATH, 1);
+ if (chdir(pw->pw_dir) < 0)
+ eprintf("chdir %s:", pw->pw_dir);
+ execlp(shell, shell, "-l", NULL);
+ weprintf("execlp %s:", shell);
+ return (errno == ENOENT) ? 127 : 126;
+}
+
+static void
+usage(void)
+{
+ eprintf("usage: %s [-p] username\n", argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
_AT_@ -111,22 +128,3 @@ main(int argc, char *argv[])
 
         return dologin(pw, pflag);
 }
-
-static int
-dologin(struct passwd *pw, int preserve)
-{
- char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
-
- if (preserve == 0)
- clearenv();
- setenv("HOME", pw->pw_dir, 1);
- setenv("SHELL", shell, 1);
- setenv("USER", pw->pw_name, 1);
- setenv("LOGNAME", pw->pw_name, 1);
- setenv("PATH", ENV_PATH, 1);
- if (chdir(pw->pw_dir) < 0)
- eprintf("chdir %s:", pw->pw_dir);
- execlp(shell, shell, "-l", NULL);
- weprintf("execlp %s:", shell);
- return (errno == ENOENT) ? 127 : 126;
-}
diff --git a/mknod.c b/mknod.c
index 28355c1..8de35c7 100644
--- a/mknod.c
+++ b/mknod.c
_AT_@ -13,7 +13,7 @@
 static void
 usage(void)
 {
- eprintf("usage: mknod [-m mode] name type major minor\n");
+ eprintf("usage: %s [-m mode] name type major minor\n", argv0);
 }
 
 int
diff --git a/mount.c b/mount.c
index 9a13c57..6061758 100644
--- a/mount.c
+++ b/mount.c
_AT_@ -97,13 +97,6 @@ mounted(const char *dir)
         return 0;
 }
 
-static void
-usage(void)
-{
- eprintf("usage: %s [-BMRan] [-t fstype] [-o options] [source] [target]\n",
- argv0);
-}
-
 static int
 catfile(FILE *in, FILE *out)
 {
_AT_@ -119,6 +112,13 @@ catfile(FILE *in, FILE *out)
         return 1;
 }
 
+static void
+usage(void)
+{
+ eprintf("usage: %s [-BMRan] [-t fstype] [-o options] [source] [target]\n",
+ argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
diff --git a/passwd.c b/passwd.c
index ffcda61..c5916be 100644
--- a/passwd.c
+++ b/passwd.c
_AT_@ -18,12 +18,6 @@
 #include "text.h"
 #include "util.h"
 
-static void
-usage(void)
-{
- eprintf("usage: %s [username]\n", argv0);
-}
-
 static FILE *
 spw_get_file(const char *user)
 {
_AT_@ -133,6 +127,12 @@ cleanup:
         return r;
 }
 
+static void
+usage(void)
+{
+ eprintf("usage: %s [username]\n", argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
diff --git a/pidof.c b/pidof.c
index 314c17f..1df0a54 100644
--- a/pidof.c
+++ b/pidof.c
_AT_@ -13,12 +13,6 @@
 #include "queue.h"
 #include "util.h"
 
-static void
-usage(void)
-{
- eprintf("usage: %s [-o pid1,pid2,...pidN] [-s] [program...]\n", argv0);
-}
-
 struct pidentry {
         pid_t pid;
         TAILQ_ENTRY(pidentry) entry;
_AT_@ -26,6 +20,12 @@ struct pidentry {
 
 static TAILQ_HEAD(omitpid_head, pidentry) omitpid_head;
 
+static void
+usage(void)
+{
+ eprintf("usage: %s [-o pid1,pid2,...pidN] [-s] [program...]\n", argv0);
+}
+
 int
 main(int argc, char *argv[])
 {
diff --git a/ps.c b/ps.c
index d179fb9..eca6196 100644
--- a/ps.c
+++ b/ps.c
_AT_@ -25,14 +25,14 @@ enum {
         PS_fflag = 1 << 3
 };
 
+static int flags;
+
 static void
 usage(void)
 {
         eprintf("usage: [-aAdef] %s\n", argv0);
 }
 
-static int flags;
-
 int
 main(int argc, char *argv[])
 {
diff --git a/respawn.c b/respawn.c
index 0516912..77670f5 100644
--- a/respawn.c
+++ b/respawn.c
_AT_@ -26,7 +26,7 @@ sigterm(int sig)
 static void
 usage(void)
 {
- eprintf("usage: respawn [-l fifo] [-d N] cmd [args...]\n");
+ eprintf("usage: %s [-l fifo] [-d N] cmd [args...]\n", argv0);
 }
 
 int
diff --git a/stat.c b/stat.c
index 9d9a04c..220a659 100644
--- a/stat.c
+++ b/stat.c
_AT_@ -10,8 +10,38 @@
 
 #include "util.h"
 
-static void show_stat(const char *file, struct stat *st);
-static void show_stat_terse(const char *file, struct stat *st);
+static void
+show_stat_terse(const char *file, struct stat *st)
+{
+ printf("%s ", file);
+ printf("%lu %lu ", (unsigned long)st->st_size,
+ (unsigned long)st->st_blocks);
+ printf("%04o %u %u ", st->st_mode & 0777, st->st_uid, st->st_gid);
+ printf("%llx ", (unsigned long long)st->st_dev);
+ printf("%lu %lu ", (unsigned long)st->st_ino, (unsigned long)st->st_nlink);
+ printf("%d %d ", major(st->st_rdev), minor(st->st_rdev));
+ printf("%ld %ld %ld ", st->st_atime, st->st_mtime, st->st_ctime);
+ printf("%lu\n", (unsigned long)st->st_blksize);
+}
+
+static void
+show_stat(const char *file, struct stat *st)
+{
+ char buf[100];
+
+ printf(" File: ā€˜%sā€™\n", file);
+ printf(" Size: %lu\tBlocks: %lu\tIO Block: %lu\n", (unsigned long)st->st_size,
+ (unsigned long)st->st_blocks, (unsigned long)st->st_blksize);
+ printf("Device: %xh/%ud\tInode: %lu\tLinks %lu\n", major(st->st_dev),
+ minor(st->st_dev), (unsigned long)st->st_ino, (unsigned long)st->st_nlink);
+ printf("Access: %04o\tUid: %u\tGid: %u\n", st->st_mode & 0777, st->st_uid, st->st_gid);
+ strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_atime));
+ printf("Access: %s\n", buf);
+ strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_mtime));
+ printf("Modify: %s\n", buf);
+ strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_ctime));
+ printf("Change: %s\n", buf);
+}
 
 static void
 usage(void)
_AT_@ -56,37 +86,4 @@ main(int argc, char *argv[])
         }
 
         return ret;
-}
-
-static void
-show_stat_terse(const char *file, struct stat *st)
-{
- printf("%s ", file);
- printf("%lu %lu ", (unsigned long)st->st_size,
- (unsigned long)st->st_blocks);
- printf("%04o %u %u ", st->st_mode & 0777, st->st_uid, st->st_gid);
- printf("%llx ", (unsigned long long)st->st_dev);
- printf("%lu %lu ", (unsigned long)st->st_ino, (unsigned long)st->st_nlink);
- printf("%d %d ", major(st->st_rdev), minor(st->st_rdev));
- printf("%ld %ld %ld ", st->st_atime, st->st_mtime, st->st_ctime);
- printf("%lu\n", (unsigned long)st->st_blksize);
-}
-
-static void
-show_stat(const char *file, struct stat *st)
-{
- char buf[100];
-
- printf(" File: ā€˜%sā€™\n", file);
- printf(" Size: %lu\tBlocks: %lu\tIO Block: %lu\n", (unsigned long)st->st_size,
- (unsigned long)st->st_blocks, (unsigned long)st->st_blksize);
- printf("Device: %xh/%ud\tInode: %lu\tLinks %lu\n", major(st->st_dev),
- minor(st->st_dev), (unsigned long)st->st_ino, (unsigned long)st->st_nlink);
- printf("Access: %04o\tUid: %u\tGid: %u\n", st->st_mode & 0777, st->st_uid, st->st_gid);
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_atime));
- printf("Access: %s\n", buf);
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_mtime));
- printf("Modify: %s\n", buf);
- strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&st->st_ctime));
- printf("Change: %s\n", buf);
-}
+}
\ No newline at end of file
diff --git a/su.c b/su.c
index 45867fb..329238f 100644
--- a/su.c
+++ b/su.c
_AT_@ -15,7 +15,30 @@
 
 extern char **environ;
 
-static int dologin(struct passwd *);
+static int lflag = 0;
+static int pflag = 0;
+
+static int
+dologin(struct passwd *pw)
+{
+ char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
+ char *term = getenv("TERM");
+ clearenv();
+ setenv("HOME", pw->pw_dir, 1);
+ setenv("SHELL", shell, 1);
+ setenv("USER", pw->pw_name, 1);
+ setenv("LOGNAME", pw->pw_name, 1);
+ setenv("TERM", term ? term : "linux", 1);
+ if (strcmp(pw->pw_name, "root") == 0)
+ setenv("PATH", ENV_SUPATH, 1);
+ else
+ setenv("PATH", ENV_PATH, 1);
+ if (chdir(pw->pw_dir) < 0)
+ eprintf("chdir %s:", pw->pw_dir);
+ execlp(shell, shell, "-l", NULL);
+ weprintf("execlp %s:", shell);
+ return (errno == ENOENT) ? 127 : 126;
+}
 
 static void
 usage(void)
_AT_@ -23,9 +46,6 @@ usage(void)
         eprintf("usage: %s [-lp] [username]\n", argv0);
 }
 
-static int lflag = 0;
-static int pflag = 0;
-
 int
 main(int argc, char *argv[])
 {
_AT_@ -102,26 +122,4 @@ main(int argc, char *argv[])
                 return (errno == ENOENT) ? 127 : 126;
         }
         return 0;
-}
-
-static int
-dologin(struct passwd *pw)
-{
- char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
- char *term = getenv("TERM");
- clearenv();
- setenv("HOME", pw->pw_dir, 1);
- setenv("SHELL", shell, 1);
- setenv("USER", pw->pw_name, 1);
- setenv("LOGNAME", pw->pw_name, 1);
- setenv("TERM", term ? term : "linux", 1);
- if (strcmp(pw->pw_name, "root") == 0)
- setenv("PATH", ENV_SUPATH, 1);
- else
- setenv("PATH", ENV_PATH, 1);
- if (chdir(pw->pw_dir) < 0)
- eprintf("chdir %s:", pw->pw_dir);
- execlp(shell, shell, "-l", NULL);
- weprintf("execlp %s:", shell);
- return (errno == ENOENT) ? 127 : 126;
-}
+}
\ No newline at end of file
diff --git a/umount.c b/umount.c
index 21d9d26..7f9e174 100644
--- a/umount.c
+++ b/umount.c
_AT_@ -8,7 +8,35 @@
 
 #include "util.h"
 
-static int umountall(int);
+static int
+umountall(int flags)
+{
+ FILE *fp;
+ struct mntent *me;
+ int ret;
+ char **mntdirs = NULL;
+ int len = 0;
+
+ fp = setmntent("/proc/mounts", "r");
+ if (!fp)
+ eprintf("setmntent %s:", "/proc/mounts");
+ while ((me = getmntent(fp))) {
+ if (strcmp(me->mnt_type, "proc") == 0)
+ continue;
+ mntdirs = erealloc(mntdirs, ++len * sizeof(*mntdirs));
+ mntdirs[len - 1] = estrdup(me->mnt_dir);
+ }
+ endmntent(fp);
+ while (--len >= 0) {
+ if (umount2(mntdirs[len], flags) < 0) {
+ weprintf("umount2 %s:", mntdirs[len]);
+ ret = 1;
+ }
+ free(mntdirs[len]);
+ }
+ free(mntdirs);
+ return ret;
+}
 
 static void
 usage(void)
_AT_@ -55,34 +83,4 @@ main(int argc, char *argv[])
                 }
         }
         return ret;
-}
-
-static int
-umountall(int flags)
-{
- FILE *fp;
- struct mntent *me;
- int ret;
- char **mntdirs = NULL;
- int len = 0;
-
- fp = setmntent("/proc/mounts", "r");
- if (!fp)
- eprintf("setmntent %s:", "/proc/mounts");
- while ((me = getmntent(fp))) {
- if (strcmp(me->mnt_type, "proc") == 0)
- continue;
- mntdirs = erealloc(mntdirs, ++len * sizeof(*mntdirs));
- mntdirs[len - 1] = estrdup(me->mnt_dir);
- }
- endmntent(fp);
- while (--len >= 0) {
- if (umount2(mntdirs[len], flags) < 0) {
- weprintf("umount2 %s:", mntdirs[len]);
- ret = 1;
- }
- free(mntdirs[len]);
- }
- free(mntdirs);
- return ret;
-}
+}
\ No newline at end of file
Received on Fri Feb 06 2015 - 16:16:29 CET

This archive was generated by hypermail 2.3.0 : Fri Feb 06 2015 - 16:24:22 CET