diff options
author | Rob Landley <rob@landley.net> | 2016-01-05 22:26:58 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2016-01-05 22:26:58 -0600 |
commit | d3a435e53c94ec25b4ae5fa2614f49ef8884e08a (patch) | |
tree | 12e38a4739bd1832040b7d7e3efd2e054351fbf0 /toys/other | |
parent | 8dfbf2efc89154fd74b34b5f4d8bf774dba63abf (diff) | |
download | toybox-d3a435e53c94ec25b4ae5fa2614f49ef8884e08a.tar.gz |
Add error_msg_raw() and friends, replace error_msg("%s", s) uses, enable format
checking, and fix up format checking complaints.
Added out(type, value) function to stat to avoid a zillion printf typecasts.
Diffstat (limited to 'toys/other')
-rw-r--r-- | toys/other/acpi.c | 2 | ||||
-rw-r--r-- | toys/other/blkid.c | 2 | ||||
-rw-r--r-- | toys/other/bzcat.c | 6 | ||||
-rw-r--r-- | toys/other/chroot.c | 2 | ||||
-rw-r--r-- | toys/other/dos2unix.c | 2 | ||||
-rw-r--r-- | toys/other/hexedit.c | 2 | ||||
-rw-r--r-- | toys/other/ifconfig.c | 2 | ||||
-rw-r--r-- | toys/other/inotifyd.c | 2 | ||||
-rw-r--r-- | toys/other/ionice.c | 2 | ||||
-rw-r--r-- | toys/other/losetup.c | 4 | ||||
-rw-r--r-- | toys/other/modinfo.c | 2 | ||||
-rw-r--r-- | toys/other/mountpoint.c | 2 | ||||
-rw-r--r-- | toys/other/realpath.c | 2 | ||||
-rw-r--r-- | toys/other/shred.c | 6 | ||||
-rw-r--r-- | toys/other/stat.c | 61 |
15 files changed, 53 insertions, 46 deletions
diff --git a/toys/other/acpi.c b/toys/other/acpi.c index 363cfb99..bca53814 100644 --- a/toys/other/acpi.c +++ b/toys/other/acpi.c @@ -35,7 +35,7 @@ int read_int_at(int dirfd, char *name) FILE *fil; if ((fd = openat(dirfd, name, O_RDONLY)) < 0) return -1; - if (!fscanf(fil = xfdopen(fd, "r"), "%d", &ret)) perror_exit("%s", name); + if (!fscanf(fil = xfdopen(fd, "r"), "%d", &ret)) perror_exit_raw(name); fclose(fil); return ret; diff --git a/toys/other/blkid.c b/toys/other/blkid.c index 4883b607..8aab8f74 100644 --- a/toys/other/blkid.c +++ b/toys/other/blkid.c @@ -149,7 +149,7 @@ void blkid_main(void) sprintf(device, "/dev/%.20s", name); if (-1 == (fd = open(device, O_RDONLY))) { - if (errno != ENOMEDIUM) perror_msg("%s", device); + if (errno != ENOMEDIUM) perror_msg_raw(device); } else { do_blkid(fd, device); close(fd); diff --git a/toys/other/bzcat.c b/toys/other/bzcat.c index 850c51ce..1081b5e9 100644 --- a/toys/other/bzcat.c +++ b/toys/other/bzcat.c @@ -663,7 +663,7 @@ static void do_bzcat(int fd, char *name) { char *err = bunzipStream(fd, 1); - if (err) error_exit(err); + if (err) error_exit_raw(err); } void bzcat_main(void) @@ -700,7 +700,7 @@ static void do_bunzip2(int fd, char *name) if (toys.optflags&FLAG_v) { printf("%s\n", err ? err : "ok"); toys.exitval |= !!err; - } else if (err) error_msg(err); + } else if (err) error_msg_raw(err); // can't test outfd==1 because may have been called with stdin+stdout closed if (rename) { @@ -709,7 +709,7 @@ static void do_bunzip2(int fd, char *name) tmp = 0; } else { if (dotbz) *dotbz = '.'; - if (!unlink(name)) perror_msg("%s", name); + if (!unlink(name)) perror_msg_raw(name); } (err ? delete_tempfile : replace_tempfile)(-1, outfd, &tmp); } diff --git a/toys/other/chroot.c b/toys/other/chroot.c index 4260d98f..b6ef17d6 100644 --- a/toys/other/chroot.c +++ b/toys/other/chroot.c @@ -24,7 +24,7 @@ void chroot_main(void) { char *binsh[] = {"/bin/sh", "-i", 0}; - if (chdir(*toys.optargs) || chroot(".")) perror_exit("%s", *toys.optargs); + if (chdir(*toys.optargs) || chroot(".")) perror_exit_raw(*toys.optargs); if (toys.optargs[1]) xexec(toys.optargs+1); else xexec(binsh); } diff --git a/toys/other/dos2unix.c b/toys/other/dos2unix.c index 021ba384..083a8140 100644 --- a/toys/other/dos2unix.c +++ b/toys/other/dos2unix.c @@ -42,7 +42,7 @@ static void do_dos2unix(int fd, char *name) int len, in, out; len = read(fd, toybuf+(sizeof(toybuf)/2), sizeof(toybuf)/2); - if (len<0) perror_msg("%s",name); + if (len<0) perror_msg_raw(name); if (len<1) break; for (in = out = 0; in < len; in++) { diff --git a/toys/other/hexedit.c b/toys/other/hexedit.c index b3bde2e5..c45ef1ca 100644 --- a/toys/other/hexedit.c +++ b/toys/other/hexedit.c @@ -173,7 +173,7 @@ void hexedit_main(void) // Display cursor and flush output highlight(x, y, ro ? 3 : side); - xprintf(""); + xflush(); // Wait for next key key = scan_key(keybuf, 1); diff --git a/toys/other/ifconfig.c b/toys/other/ifconfig.c index bfd9a306..1d2a41dc 100644 --- a/toys/other/ifconfig.c +++ b/toys/other/ifconfig.c @@ -110,7 +110,7 @@ static void display_ifconfig(char *name, int always, unsigned long long val[]) short flags; xstrncpy(ifre.ifr_name, name, IFNAMSIZ); - if (ioctl(TT.sockfd, SIOCGIFFLAGS, &ifre)<0) perror_exit("%s", name); + if (ioctl(TT.sockfd, SIOCGIFFLAGS, &ifre)<0) perror_exit_raw(name); flags = ifre.ifr_flags; if (!always && !(flags & IFF_UP)) return; diff --git a/toys/other/inotifyd.c b/toys/other/inotifyd.c index f2e11ca4..42d1d76e 100644 --- a/toys/other/inotifyd.c +++ b/toys/other/inotifyd.c @@ -65,7 +65,7 @@ void inotifyd_main(void) // This returns increasing numbers starting from 1, which coincidentally // is the toys.optargs position of the file. (0 is program to run.) - if (inotify_add_watch(fds.fd, path, mask) < 0) perror_exit("%s", path); + if (inotify_add_watch(fds.fd, path, mask) < 0) perror_exit_raw(path); } for (;;) { diff --git a/toys/other/ionice.c b/toys/other/ionice.c index 152a8c33..37d35456 100644 --- a/toys/other/ionice.c +++ b/toys/other/ionice.c @@ -82,7 +82,7 @@ void iorenice_main(void) if (p == -1) perror_exit("read priority"); TT.class = (p>>13)&3; p &= 7; - xprintf("Pid %d, class %s (%d), prio %d\n", + xprintf("Pid %ld, class %s (%ld), prio %d\n", TT.pid, classes[TT.class], TT.class, p); return; } diff --git a/toys/other/losetup.c b/toys/other/losetup.c index a40d9e42..4e467a9c 100644 --- a/toys/other/losetup.c +++ b/toys/other/losetup.c @@ -88,7 +88,7 @@ static void loopback_setup(char *device, char *file) if (-1 == lfd || ioctl(lfd, LOOP_GET_STATUS64, loop)) { if (errno == ENXIO && (flags & (FLAG_a|FLAG_j))) goto done; if (errno != ENXIO || !file) { - perror_msg("%s", device ? device : "-f"); + perror_msg_raw(device ? device : "-f"); goto done; } } @@ -101,7 +101,7 @@ static void loopback_setup(char *device, char *file) if (flags & (FLAG_c|FLAG_d)) { // The constant is LOOP_SET_CAPACITY if (ioctl(lfd, (flags & FLAG_c) ? 0x4C07 : LOOP_CLR_FD, 0)) { - perror_msg("%s", device); + perror_msg_raw(device); goto done; } // Associate file with this device? diff --git a/toys/other/modinfo.c b/toys/other/modinfo.c index 3a7e821f..61155b46 100644 --- a/toys/other/modinfo.c +++ b/toys/other/modinfo.c @@ -50,7 +50,7 @@ static void modinfo_file(char *full_name) } if (!buf) { - perror_msg("%s", full_name); + perror_msg_raw(full_name); return; } diff --git a/toys/other/mountpoint.c b/toys/other/mountpoint.c index 150865ca..ce1d23cd 100644 --- a/toys/other/mountpoint.c +++ b/toys/other/mountpoint.c @@ -33,7 +33,7 @@ void mountpoint_main(void) char *arg = *toys.optargs; int quiet = toys.optflags & FLAG_q; - if (lstat(arg, &st1)) perror_exit("%s", arg); + if (lstat(arg, &st1)) perror_exit_raw(arg); if (toys.optflags & FLAG_x) { if (S_ISBLK(st1.st_mode)) { diff --git a/toys/other/realpath.c b/toys/other/realpath.c index ec981082..8f75d3f2 100644 --- a/toys/other/realpath.c +++ b/toys/other/realpath.c @@ -20,7 +20,7 @@ void realpath_main(void) char **s = toys.optargs; for (s = toys.optargs; *s; s++) { - if (!realpath(*s, toybuf)) perror_msg("%s", *s); + if (!realpath(*s, toybuf)) perror_msg_raw(*s); else xputs(toybuf); } } diff --git a/toys/other/shred.c b/toys/other/shred.c index 64db5edf..5b018ea0 100644 --- a/toys/other/shred.c +++ b/toys/other/shred.c @@ -57,7 +57,7 @@ void shred_main(void) fd = open(*try, O_RDWR); } if (fd == -1) { - perror_msg("%s", *try); + perror_msg_raw(*try); continue; } @@ -84,7 +84,7 @@ void shred_main(void) if (pos < TT.offset) { if (TT.offset != lseek(fd, TT.offset, SEEK_SET)) { - perror_msg("%s", *try); + perror_msg_raw(*try); break; } pos = TT.offset; @@ -97,7 +97,7 @@ void shred_main(void) if (len-pos < throw) throw = len-pos; if (iter != TT.iterations) xread(TT.ufd, toybuf, throw); - if (throw != writeall(fd, toybuf, throw)) perror_msg("%s"); + if (throw != writeall(fd, toybuf, throw)) perror_msg_raw(*try); pos += throw; } if (toys.optflags & FLAG_u) diff --git a/toys/other/stat.c b/toys/other/stat.c index fe522b08..fb5922c6 100644 --- a/toys/other/stat.c +++ b/toys/other/stat.c @@ -2,7 +2,7 @@ * Copyright 2012 <warior.linux@gmail.com> * Copyright 2013 <anand.sinha85@gmail.com> -USE_STAT(NEWTOY(stat, "c:f", TOYFLAG_BIN)) +USE_STAT(NEWTOY(stat, "<1c:f", TOYFLAG_BIN)) config STAT bool stat @@ -55,24 +55,31 @@ static void date_stat_format(struct timespec *ts) { strftime(toybuf, sizeof(toybuf), "%Y-%m-%d %H:%M:%S", localtime(&(ts->tv_sec))); - xprintf("%s.%09d", toybuf, ts->tv_nsec); + xprintf("%s.%09ld", toybuf, ts->tv_nsec); +} + +// Force numeric output to long long instead of manually typecasting everything +static void out(char c, long long val) +{ + sprintf(toybuf, "%%ll%c", c); + printf(toybuf, val); } static void print_stat(char type) { struct stat *stat = (struct stat *)&TT.stat; - if (type == 'a') xprintf("%lo", stat->st_mode & ~S_IFMT); + if (type == 'a') out('o', stat->st_mode&~S_IFMT); else if (type == 'A') { char str[11]; mode_to_string(stat->st_mode, str); xprintf("%s", str); - } else if (type == 'b') xprintf("%llu", stat->st_blocks); - else if (type == 'B') xprintf("%lu", stat->st_blksize); - else if (type == 'd') xprintf("%ld", stat->st_dev); - else if (type == 'D') xprintf("%llx", stat->st_dev); - else if (type == 'f') xprintf("%lx", stat->st_mode); + } else if (type == 'b') out('u', stat->st_blocks); + else if (type == 'B') out('u', stat->st_blksize); + else if (type == 'd') out('d', stat->st_dev); + else if (type == 'D') out('x', stat->st_dev); + else if (type == 'f') out('x', stat->st_mode); else if (type == 'F') { char *t = "character device\0directory\0block device\0" \ "regular file\0symbolic link\0socket\0FIFO (named pipe)"; @@ -81,38 +88,38 @@ static void print_stat(char type) for (i = 1; filetype != (i*8192) && i < 7; i++) t += strlen(t)+1; if (!stat->st_size && filetype == S_IFREG) t = "regular empty file"; xprintf("%s", t); - } else if (type == 'g') xprintf("%lu", stat->st_gid); + } else if (type == 'g') out('u', stat->st_gid); else if (type == 'G') xprintf("%8s", TT.group_name->gr_name); - else if (type == 'h') xprintf("%lu", stat->st_nlink); - else if (type == 'i') xprintf("%llu", stat->st_ino); + else if (type == 'h') out('u', stat->st_nlink); + else if (type == 'i') out('u', stat->st_ino); else if (type == 'N') { xprintf("`%s'", *toys.optargs); if (S_ISLNK(stat->st_mode)) if (0<readlink(*toys.optargs, toybuf, sizeof(toybuf))) xprintf(" -> `%s'", toybuf); - } else if (type == 'o') xprintf("%lu", stat->st_blksize); - else if (type == 's') xprintf("%llu", stat->st_size); - else if (type == 'u') xprintf("%lu", stat->st_uid); + } else if (type == 'o') out('u', stat->st_blksize); + else if (type == 's') out('u', stat->st_size); + else if (type == 'u') out('u', stat->st_uid); else if (type == 'U') xprintf("%8s", TT.user_name->pw_name); else if (type == 'x') date_stat_format((void *)&stat->st_atime); - else if (type == 'X') xprintf("%llu", (long long)stat->st_atime); + else if (type == 'X') out('u', stat->st_atime); else if (type == 'y') date_stat_format((void *)&stat->st_mtime); - else if (type == 'Y') xprintf("%llu", (long long)stat->st_mtime); + else if (type == 'Y') out('u', stat->st_mtime); else if (type == 'z') date_stat_format((void *)&stat->st_ctime); - else if (type == 'Z') xprintf("%llu", (long long)stat->st_ctime); + else if (type == 'Z') out('u', stat->st_ctime); else xprintf("?"); } static void print_statfs(char type) { struct statfs *statfs = (struct statfs *)&TT.stat; - if (type == 'a') xprintf("%llu", statfs->f_bavail); - else if (type == 'b') xprintf("%llu", statfs->f_blocks); - else if (type == 'c') xprintf("%llu", statfs->f_files); - else if (type == 'd') xprintf("%llu", statfs->f_ffree); - else if (type == 'f') xprintf("%llu", statfs->f_bfree); - else if (type == 'l') xprintf("%ld", statfs->f_namelen); - else if (type == 't') xprintf("%lx", statfs->f_type); + if (type == 'a') out('u', statfs->f_bavail); + else if (type == 'b') out('u', statfs->f_blocks); + else if (type == 'c') out('u', statfs->f_files); + else if (type == 'd') out('u', statfs->f_ffree); + else if (type == 'f') out('u', statfs->f_bfree); + else if (type == 'l') out('d', statfs->f_namelen); + else if (type == 't') out('x', statfs->f_type); else if (type == 'T') { char *s = "unknown"; struct {unsigned num; char *name;} nn[] = { @@ -129,11 +136,11 @@ static void print_statfs(char type) { for (i=0; i<ARRAY_LEN(nn); i++) if (nn[i].num == statfs->f_type) s = nn[i].name; - xprintf(s); + fputs(s, stdout); } else if (type == 'i') xprintf("%08x%08x", statfs->f_fsid.__val[0], statfs->f_fsid.__val[1]); - else if (type == 's') xprintf("%d", statfs->f_frsize); - else if (type == 'S') xprintf("%d", statfs->f_bsize); + else if (type == 's') out('d', statfs->f_frsize); + else if (type == 'S') out('d', statfs->f_bsize); else xprintf("?"); } |