From 58cdca3984beb4e1019ef5ccf1dd7361f032a9a6 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 28 Mar 2010 20:01:31 +0200 Subject: [PATCH] apply post-1.16.0 fixes, bump version to 1.16.1 Signed-off-by: Denys Vlasenko --- Makefile | 2 +- TODO_config_nommu | 35 ++- applets/applet_tables.c | 6 +- coreutils/fsync.c | 3 + coreutils/md5_sha1_sum.c | 6 +- coreutils/tail.c | 3 +- coreutils/touch.c | 4 +- coreutils/wc.c | 2 + editors/diff.c | 84 +++--- include/usage.h | 374 ++++++++++++------------ miscutils/beep.c | 4 +- miscutils/fbsplash.c | 74 +++-- miscutils/microcom.c | 4 +- networking/httpd.c | 6 +- networking/telnet.c | 4 +- networking/tftp.c | 2 +- networking/udhcp/dhcpd.c | 2 +- networking/wget.c | 3 + scripts/defconfig | 56 ++-- shell/ash.c | 13 +- shell/ash_test/ash-misc/nulltick1.right | 3 + shell/ash_test/ash-misc/nulltick1.tests | 3 + shell/hush.c | 12 +- sysklogd/syslogd.c | 2 +- testsuite/cpio.tests | 5 +- util-linux/script.c | 4 +- util-linux/volume_id/linux_swap.c | 6 +- 27 files changed, 408 insertions(+), 314 deletions(-) create mode 100644 shell/ash_test/ash-misc/nulltick1.right create mode 100755 shell/ash_test/ash-misc/nulltick1.tests diff --git a/Makefile b/Makefile index 206555850..8df9584f4 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 1 PATCHLEVEL = 16 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Unnamed diff --git a/TODO_config_nommu b/TODO_config_nommu index 804fc61c9..2c8210cfe 100644 --- a/TODO_config_nommu +++ b/TODO_config_nommu @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.15.0.svn -# Fri Aug 21 00:13:18 2009 +# Busybox version: 1.16.0 +# Wed Jan 27 21:01:26 2010 # CONFIG_HAVE_DOT_CONFIG=y @@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y # CONFIG_DESKTOP=y CONFIG_EXTRA_COMPAT=y +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set CONFIG_FEATURE_BUFFERS_USE_MALLOC=y # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set @@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS="" CONFIG_NO_DEBUG_LIB=y # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set -CONFIG_INCLUDE_SUSv2=y # # Installation Options @@ -120,6 +121,7 @@ CONFIG_DPKG_DEB=y CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y CONFIG_GUNZIP=y CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y CONFIG_LZOP=y CONFIG_LZOP_COMPR_HIGH=y CONFIG_RPM2CPIO=y @@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y CONFIG_FEATURE_TAR_LONG_OPTIONS=y CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y CONFIG_UNCOMPRESS=y CONFIG_UNLZMA=y CONFIG_FEATURE_LZMA_FAST=y @@ -148,15 +151,19 @@ CONFIG_CATV=y CONFIG_CHGRP=y CONFIG_CHMOD=y CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y CONFIG_CHROOT=y CONFIG_CKSUM=y CONFIG_COMM=y CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y CONFIG_CUT=y CONFIG_DATE=y CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_FEATURE_DATE_COMPAT=y CONFIG_DD=y CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y CONFIG_FEATURE_DD_IBS_OBS=y CONFIG_DF=y CONFIG_FEATURE_DF_FANCY=y @@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y CONFIG_FEATURE_HUMAN_READABLE=y # -# Common options for md5sum, sha1sum +# Common options for md5sum, sha1sum, sha256sum, sha512sum # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y @@ -318,9 +325,8 @@ CONFIG_AWK=y CONFIG_FEATURE_AWK_LIBM=y CONFIG_CMP=y CONFIG_DIFF=y -CONFIG_FEATURE_DIFF_BINARY=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y CONFIG_FEATURE_DIFF_DIR=y -CONFIG_FEATURE_DIFF_MINIMAL=y CONFIG_ED=y CONFIG_PATCH=y CONFIG_SED=y @@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y CONFIG_FEATURE_FIND_CONTEXT=y +CONFIG_FEATURE_FIND_LINKS=y CONFIG_GREP=y CONFIG_FEATURE_GREP_EGREP_ALIAS=y CONFIG_FEATURE_GREP_FGREP_ALIAS=y @@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y # Options common to multiple modutils # # CONFIG_FEATURE_2_4_MODULES is not set +CONFIG_FEATURE_INSMOD_TRY_MMAP=y # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set @@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y CONFIG_FINDFS=y CONFIG_FREERAMDISK=y CONFIG_FSCK_MINIX=y +CONFIG_MKFS_EXT2=y CONFIG_MKFS_MINIX=y # # Minix filesystem support # CONFIG_FEATURE_MINIX2=y +CONFIG_MKFS_REISER=y CONFIG_MKFS_VFAT=y CONFIG_GETOPT=y CONFIG_FEATURE_GETOPT_LONG=y @@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y CONFIG_IPCRM=y CONFIG_IPCS=y CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y CONFIG_MDEV=y CONFIG_FEATURE_MDEV_CONF=y CONFIG_FEATURE_MDEV_RENAME=y @@ -518,6 +530,7 @@ CONFIG_MORE=y CONFIG_FEATURE_USE_TERMIOS=y CONFIG_VOLUMEID=y CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_REISERFS=y CONFIG_FEATURE_VOLUMEID_FAT=y CONFIG_FEATURE_VOLUMEID_HFS=y @@ -595,6 +608,7 @@ CONFIG_DEVMEM=y CONFIG_EJECT=y CONFIG_FEATURE_EJECT_SCSI=y CONFIG_FBSPLASH=y +CONFIG_FLASHCP=y # CONFIG_FLASH_LOCK is not set # CONFIG_FLASH_UNLOCK is not set # CONFIG_FLASH_ERASEALL is not set @@ -638,6 +652,7 @@ CONFIG_TIME=y CONFIG_TIMEOUT=y CONFIG_TTYSIZE=y CONFIG_VOLNAME=y +CONFIG_WALL=y CONFIG_WATCHDOG=y # @@ -657,6 +672,7 @@ CONFIG_ETHER_WAKE=y CONFIG_FAKEIDENTD=y CONFIG_FTPD=y CONFIG_FEATURE_FTP_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y CONFIG_FTPGET=y CONFIG_FTPPUT=y CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y @@ -722,6 +738,8 @@ CONFIG_NETSTAT=y CONFIG_FEATURE_NETSTAT_WIDE=y CONFIG_FEATURE_NETSTAT_PRG=y CONFIG_NSLOOKUP=y +CONFIG_NTPD=y +CONFIG_FEATURE_NTPD_SERVER=y CONFIG_PING=y CONFIG_PING6=y CONFIG_FEATURE_FANCY_PING=y @@ -733,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y CONFIG_FEATURE_TELNET_AUTOLOGIN=y CONFIG_TELNETD=y CONFIG_FEATURE_TELNETD_STANDALONE=y +CONFIG_FEATURE_TELNETD_INETD_WAIT=y CONFIG_TFTP=y CONFIG_TFTPD=y CONFIG_FEATURE_TFTP_GET=y CONFIG_FEATURE_TFTP_PUT=y CONFIG_FEATURE_TFTP_BLOCKSIZE=y +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y CONFIG_TFTP_DEBUG=y CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y CONFIG_FEATURE_TRACEROUTE_VERBOSE=y CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y @@ -813,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y CONFIG_FEATURE_TOP_DECIMALS=y CONFIG_FEATURE_TOP_SMP_PROCESS=y CONFIG_FEATURE_TOPMEM=y +CONFIG_FEATURE_SHOW_THREADS=y CONFIG_UPTIME=y CONFIG_WATCH=y @@ -881,6 +903,7 @@ CONFIG_HUSH_CASE=y CONFIG_HUSH_FUNCTIONS=y CONFIG_HUSH_LOCAL=y CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_RANDOM_SUPPORT=y CONFIG_LASH=y CONFIG_MSH=y CONFIG_SH_MATH_SUPPORT=y diff --git a/applets/applet_tables.c b/applets/applet_tables.c index e67f017e7..e48be4682 100644 --- a/applets/applet_tables.c +++ b/applets/applet_tables.c @@ -79,6 +79,7 @@ int main(int argc, char **argv) } printf("\n"); + printf("#ifndef SKIP_definitions\n"); printf("const char applet_names[] ALIGN1 = \"\"\n"); for (i = 0; i < NUM_APPLETS; i++) { printf("\"%s\" \"\\0\"\n", applets[i].name); @@ -120,9 +121,10 @@ int main(int argc, char **argv) printf("0x%02x,\n", v); i++; } - printf("};\n\n"); + printf("};\n"); #endif - + printf("#endif /* SKIP_definitions */\n"); + printf("\n"); printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN); return 0; diff --git a/coreutils/fsync.c b/coreutils/fsync.c index f00803c5b..53900f8d2 100644 --- a/coreutils/fsync.c +++ b/coreutils/fsync.c @@ -7,6 +7,9 @@ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ #include "libbb.h" +#ifndef O_NOATIME +# define O_NOATIME 0 +#endif /* This is a NOFORK applet. Be very careful! */ diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c index a64026d3d..3d50bb0f5 100644 --- a/coreutils/md5_sha1_sum.c +++ b/coreutils/md5_sha1_sum.c @@ -101,8 +101,10 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv) unsigned flags; /*hash_algo_t hash_algo = applet_name[3];*/ - if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) - flags = getopt32(argv, "scw"); + if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) { + /* -b "binary", -t "text" are ignored (shaNNNsum compat) */ + flags = getopt32(argv, "scwbt"); + } else optind = 1; argv += optind; //argc -= optind; diff --git a/coreutils/tail.c b/coreutils/tail.c index 0be166315..c9d86f459 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -241,7 +241,8 @@ int tail_main(int argc, char **argv) } while (nwrite); } } - xwrite(STDOUT_FILENO, buf + nread - nwrite, nwrite); + if (nwrite > 0) + xwrite(STDOUT_FILENO, buf + nread - nwrite, nwrite); } else if (count) { if (COUNT_BYTES) { taillen += nread; diff --git a/coreutils/touch.c b/coreutils/touch.c index 3f7b265bd..dceb7c1cc 100644 --- a/coreutils/touch.c +++ b/coreutils/touch.c @@ -104,7 +104,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv) } do { - if (utimes(*argv, reference_file ? timebuf : NULL) != 0) { + if (utimes(*argv, (reference_file || date_str) ? timebuf : NULL) != 0) { if (errno == ENOENT) { /* no such file */ if (opts) { /* creation is disabled, so ignore */ continue; @@ -113,7 +113,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv) fd = open(*argv, O_RDWR | O_CREAT, 0666); if (fd >= 0) { xclose(fd); - if (reference_file) + if (reference_file || date_str) utimes(*argv, timebuf); continue; } diff --git a/coreutils/wc.c b/coreutils/wc.c index 08f3c2dc4..711684225 100644 --- a/coreutils/wc.c +++ b/coreutils/wc.c @@ -88,6 +88,8 @@ int wc_main(int argc UNUSED_PARAM, char **argv) if (!argv[0]) { *--argv = (char *) bb_msg_standard_input; fname_fmt = "\n"; + } + if (!argv[1]) { /* zero or one filename? */ if (!((print_type-1) & print_type)) /* exactly one option? */ start_fmt = "%"COUNT_FMT; } diff --git a/editors/diff.c b/editors/diff.c index e4d74abca..07594e8d8 100644 --- a/editors/diff.c +++ b/editors/diff.c @@ -227,10 +227,12 @@ struct cand { static int search(const int *c, int k, int y, const struct cand *list) { + int i, j; + if (list[c[k]].y < y) /* quick look for typical case */ return k + 1; - for (int i = 0, j = k + 1;;) { + for (i = 0, j = k + 1;;) { const int l = (i + j) >> 1; if (l > i) { const int t = list[c[l]].y; @@ -265,11 +267,13 @@ static void stone(const int *a, int n, const int *b, int *J, int pref) int clistlen = 100; int k = 0; struct cand *clist = xzalloc(clistlen * sizeof(clist[0])); + struct cand cand; + struct cand *q; int *klist = xzalloc((n + 2) * sizeof(klist[0])); /*clist[0] = (struct cand){0}; - xzalloc did it */ /*klist[0] = 0; */ - for (struct cand cand = {1}; cand.x <= n; cand.x++) { + for (cand.x = 1; cand.x <= n; cand.x++) { int j = a[cand.x], oldl = 0; unsigned numtries = 0; if (j == 0) @@ -303,7 +307,7 @@ static void stone(const int *a, int n, const int *b, int *J, int pref) } while ((cand.y = b[++j]) > 0 && numtries < bound); } /* Unravel */ - for (struct cand *q = clist + klist[k]; q->y; q = clist + q->pred) + for (q = clist + klist[k]; q->y; q = clist + q->pred) J[q->x + pref] = q->y + pref; free(klist); free(clist); @@ -348,10 +352,11 @@ static void equiv(struct line *a, int n, struct line *b, int m, int *c) static void unsort(const struct line *f, int l, int *b) { + int i; int *a = xmalloc((l + 1) * sizeof(a[0])); - for (int i = 1; i <= l; i++) + for (i = 1; i <= l; i++) a[f[i].serial] = f[i].value; - for (int i = 1; i <= l; i++) + for (i = 1; i <= l; i++) b[i] = a[i]; free(a); } @@ -370,12 +375,13 @@ static int line_compar(const void *a, const void *b) static void fetch(FILE_and_pos_t *ft, const off_t *ix, int a, int b, int ch) { - for (int i = a; i <= b; i++) { + int i, j, col; + for (i = a; i <= b; i++) { seek_ft(ft, ix[i - 1]); putchar(ch); if (option_mask32 & FLAG(T)) putchar('\t'); - for (int j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) { + for (j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) { int c = fgetc(ft->ft_fp); if (c == EOF) { printf("\n\\ No newline at end of file\n"); @@ -410,19 +416,20 @@ static NOINLINE int *create_J(FILE_and_pos_t ft[2], int nlen[2], off_t *ix[2]) { int *J, slen[2], *class, *member; struct line *nfile[2], *sfile[2]; - int pref = 0, suff = 0; + int pref = 0, suff = 0, i, j, delta; /* Lines of both files are hashed, and in the process * their offsets are stored in the array ix[fileno] * where fileno == 0 points to the old file, and * fileno == 1 points to the new one. */ - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { unsigned hash; token_t tok; size_t sz = 100; nfile[i] = xmalloc((sz + 3) * sizeof(nfile[i][0])); /* ft gets here without the correct position, cant use seek_ft */ + ft[i].ft_pos = 0; fseeko(ft[i].ft_fp, 0, SEEK_SET); nlen[i] = 0; @@ -460,11 +467,11 @@ start: nlen[i]--; /* Now we copy the line offsets into ix */ ix[i] = xmalloc((nlen[i] + 2) * sizeof(ix[i][0])); - for (int j = 0; j < nlen[i] + 1; j++) + for (j = 0; j < nlen[i] + 1; j++) ix[i][j] = nfile[i][j].offset; } - /* lenght of prefix and suffix is calculated */ + /* length of prefix and suffix is calculated */ for (; pref < nlen[0] && pref < nlen[1] && nfile[0][pref + 1].value == nfile[1][pref + 1].value; pref++); @@ -475,10 +482,10 @@ start: * the result being sorted and stored in sfile[fileno], * and their sizes are stored in slen[fileno] */ - for (int j = 0; j < 2; j++) { + for (j = 0; j < 2; j++) { sfile[j] = nfile[j] + pref; slen[j] = nlen[j] - pref - suff; - for (int i = 0; i <= slen[j]; i++) + for (i = 0; i <= slen[j]; i++) sfile[j][i].serial = i; qsort(sfile[j] + 1, slen[j], sizeof(*sfile[j]), line_compar); } @@ -494,7 +501,7 @@ start: free(nfile[1]); class = xmalloc((slen[0] + 1) * sizeof(class[0])); - for (int i = 1; i <= slen[0]; i++) /* Unsorting */ + for (i = 1; i <= slen[0]; i++) /* Unsorting */ class[sfile[0][i].serial] = sfile[0][i].value; free(nfile[0]); #else @@ -512,7 +519,7 @@ start: * are initialized with 0 (no matches), so that function stone can * then assign them their right values */ - for (int i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++) + for (i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++) J[i] = i <= pref ? i : i > (nlen[0] - suff) ? (i + delta) : 0; /* Here the magic is performed */ @@ -526,14 +533,14 @@ start: * which, due to limitations intrinsic to any hashing algorithm, * are different but ended up confounded as the same */ - for (int i = 1; i <= nlen[0]; i++) { + for (i = 1; i <= nlen[0]; i++) { if (!J[i]) continue; seek_ft(&ft[0], ix[0][i - 1]); seek_ft(&ft[1], ix[1][J[i] - 1]); - for (int j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) { + for (j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) { token_t tok0 = 0, tok1 = 0; do { tok0 = read_token(&ft[0], tok0); @@ -555,13 +562,18 @@ static bool diff(FILE* fp[2], char *file[2]) { int nlen[2]; off_t *ix[2]; - FILE_and_pos_t ft[2] = { { fp[0] }, { fp[1] } }; - int *J = create_J(ft, nlen, ix); - - bool anychange = false; + FILE_and_pos_t ft[2]; typedef struct { int a, b; } vec_t[2]; vec_t *vec = NULL; - int i = 1, idx = -1; + int i = 1, j, k, idx = -1; + bool anychange = false; + int *J; + + ft[0].ft_fp = fp[0]; + ft[1].ft_fp = fp[1]; + /* note that ft[i].ft_pos is unintitalized, create_J() + * must not assume otherwise */ + J = create_J(ft, nlen, ix); do { bool nonempty = false; @@ -596,8 +608,8 @@ static bool diff(FILE* fp[2], char *file[2]) break; } - for (int j = 0; j < 2; j++) - for (int k = v[j].a; k < v[j].b; k++) + for (j = 0; j < 2; j++) + for (k = v[j].a; k < v[j].b; k++) nonempty |= (ix[j][k+1] - ix[j][k] != 1); vec = xrealloc_vector(vec, 6, ++idx); @@ -612,6 +624,7 @@ static bool diff(FILE* fp[2], char *file[2]) if (idx < 0 || ((option_mask32 & FLAG(B)) && !nonempty)) goto cont; if (!(option_mask32 & FLAG(q))) { + int lowa; vec_t span, *cvp = vec; if (!anychange) { @@ -621,7 +634,7 @@ static bool diff(FILE* fp[2], char *file[2]) } printf("@@"); - for (int j = 0; j < 2; j++) { + for (j = 0; j < 2; j++) { int a = span[j].a = MAX(1, (*cvp)[j].a - opt_U_context); int b = span[j].b = MIN(nlen[j], vec[idx][j].b + opt_U_context); @@ -635,12 +648,12 @@ static bool diff(FILE* fp[2], char *file[2]) * Output changes in "unified" diff format--the old and new lines * are printed together. */ - for (int lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) { + for (lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) { bool end = cvp > &vec[idx]; fetch(&ft[0], ix[0], lowa, end ? span[0].b : (*cvp)[0].a - 1, ' '); if (end) break; - for (int j = 0; j < 2; j++) + for (j = 0; j < 2; j++) fetch(&ft[j], ix[j], (*cvp)[j].a, (*cvp)[j].b, j ? '+' : '-'); } } @@ -660,9 +673,9 @@ static int diffreg(char *file[2]) { FILE *fp[2] = { stdin, stdin }; bool binary = false, differ = false; - int status = STATUS_SAME; + int status = STATUS_SAME, i; - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { int fd = open_or_warn_stdin(file[i]); if (fd == -1) goto out; @@ -688,7 +701,7 @@ static int diffreg(char *file[2]) const size_t sz = COMMON_BUFSIZE / 2; char *const buf0 = bb_common_bufsiz1; char *const buf1 = buf0 + sz; - int i, j; + int j, k; i = fread(buf0, 1, sz, fp[0]); j = fread(buf1, 1, sz, fp[1]); if (i != j) { @@ -697,7 +710,7 @@ static int diffreg(char *file[2]) } if (i == 0) break; - for (int k = 0; k < i; k++) { + for (k = 0; k < i; k++) { if (!buf0[k] || !buf1[k]) binary = true; if (buf0[k] != buf1[k]) @@ -771,9 +784,10 @@ static int FAST_FUNC skip_dir(const char *filename, static void diffdir(char *p[2], const char *s_start) { struct dlist list[2]; + int i; memset(&list, 0, sizeof(list)); - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { /*list[i].s = list[i].e = 0; - memset did it */ /*list[i].dl = NULL; */ @@ -815,7 +829,7 @@ static void diffdir(char *p[2], const char *s_start) else { char *fullpath[2], *path[2]; /* if -N */ - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { if (pos == 0 || i == k) { path[i] = fullpath[i] = concat_path_file(p[i], dp[i]); stat(fullpath[i], &stb[i]); @@ -883,7 +897,7 @@ static const char diff_longopts[] ALIGN1 = int diff_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int diff_main(int argc UNUSED_PARAM, char **argv) { - int gotstdin = 0; + int gotstdin = 0, i; char *file[2], *s_start = NULL; llist_t *L_arg = NULL; @@ -900,7 +914,7 @@ int diff_main(int argc UNUSED_PARAM, char **argv) while (L_arg) label[!!label[0]] = llist_pop(&L_arg); xfunc_error_retval = 2; - for (int i = 0; i < 2; i++) { + for (i = 0; i < 2; i++) { file[i] = argv[i]; /* Compat: "diff file name_which_doesnt_exist" exits with 2 */ if (LONE_DASH(file[i])) { diff --git a/include/usage.h b/include/usage.h index 44cc83422..fb983c1cd 100644 --- a/include/usage.h +++ b/include/usage.h @@ -16,7 +16,7 @@ #define NOUSAGE_STR "\b" #define acpid_trivial_usage \ - "[-d] [-c CONFDIR] [-l LOGFILE] [-e PROC_EVENT_FILE] [EVDEV_EVENT_FILE...]" + "[-d] [-c CONFDIR] [-l LOGFILE] [-e PROC_EVENT_FILE] [EVDEV_EVENT_FILE]..." #define acpid_full_usage "\n\n" \ "Listen to ACPI events and spawn specific helpers on event arrival\n" \ "\nOptions:" \ @@ -33,7 +33,7 @@ "# acpid -d /dev/input/event*\n" #define addgroup_trivial_usage \ - "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[user_name] ") "group_name" + "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[USER] ") "GROUP" #define addgroup_full_usage "\n\n" \ "Add a group " IF_FEATURE_ADDUSER_TO_GROUP("or add a user to a group") "\n" \ "\nOptions:" \ @@ -41,7 +41,7 @@ "\n -S Create a system group" \ #define adduser_trivial_usage \ - "[OPTIONS] user_name" + "[OPTIONS] USER" #define adduser_full_usage "\n\n" \ "Add a user\n" \ "\nOptions:" \ @@ -55,16 +55,16 @@ "\n -u UID User id" \ #define adjtimex_trivial_usage \ - "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]" + "[-q] [-o OFF] [-f FREQ] [-p TCONST] [-t TICK]" #define adjtimex_full_usage "\n\n" \ - "Read and optionally set system timebase parameters. See adjtimex(2).\n" \ + "Read and optionally set system timebase parameters. See adjtimex(2)\n" \ "\nOptions:" \ - "\n -q Quiet" \ - "\n -o offset Time offset, microseconds" \ - "\n -f frequency Frequency adjust, integer kernel units (65536 is 1ppm)" \ - "\n (positive values make clock run faster)" \ - "\n -t tick Microseconds per tick, usually 10000" \ - "\n -p timeconstant" \ + "\n -q Quiet" \ + "\n -o OFF Time offset, microseconds" \ + "\n -f FREQ Frequency adjust, integer kernel units (65536 is 1ppm)" \ + "\n (positive values make clock run faster)" \ + "\n -t TICK Microseconds per tick, usually 10000" \ + "\n -p TCONST" \ #define ar_trivial_usage \ "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES" @@ -78,11 +78,11 @@ "\n -v Verbose" \ #define arp_trivial_usage \ - "\n[-vn] [-H type] [-i if] -a [hostname]" \ - "\n[-v] [-i if] -d hostname [pub]" \ - "\n[-v] [-H type] [-i if] -s hostname hw_addr [temp]" \ - "\n[-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub" \ - "\n[-v] [-H type] [-i if] -Ds hostname ifa [netmask nm] pub" + "\n[-vn] [-H HWTYPE] [-i IF] -a [HOSTNAME]" \ + "\n[-v] [-i IF] -d HOSTNAME [pub]" \ + "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [temp]" \ + "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [netmask MASK] pub" \ + "\n[-v] [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub" #define arp_full_usage "\n\n" \ "Manipulate ARP cache\n" \ "\nOptions:" \ @@ -97,7 +97,7 @@ "\n -H HWTYPE Hardware address type" \ #define arping_trivial_usage \ - "[-fqbDUA] [-c count] [-w timeout] [-I dev] [-s sender] target" + "[-fqbDUA] [-c CNT] [-w TIMEOUT] [-I IFACE] [-s SRC_IP] DST_IP" #define arping_full_usage "\n\n" \ "Send ARP requests/replies\n" \ "\nOptions:" \ @@ -108,10 +108,10 @@ "\n -U Unsolicited ARP mode, update your neighbors" \ "\n -A ARP answer mode, update your neighbors" \ "\n -c N Stop after sending N ARP requests" \ - "\n -w timeout Time to wait for ARP reply, in seconds" \ - "\n -I dev Interface to use (default eth0)" \ - "\n -s sender Sender IP address" \ - "\n target Target IP address" \ + "\n -w TIMEOUT Time to wait for ARP reply, seconds" \ + "\n -I IFACE Interface to use (default eth0)" \ + "\n -s SRC_IP Sender IP address" \ + "\n DST_IP Target IP address" \ #define sh_trivial_usage NOUSAGE_STR #define sh_full_usage "" @@ -191,19 +191,19 @@ ) \ #define bunzip2_trivial_usage \ - "[OPTIONS] [FILE]" + "[OPTIONS] [FILE]..." #define bunzip2_full_usage "\n\n" \ - "Uncompress FILE (or standard input)\n" \ + "Uncompress FILEs (or stdin)\n" \ "\nOptions:" \ - "\n -c Write to standard output" \ + "\n -c Write to stdout" \ "\n -f Force" \ #define bzip2_trivial_usage \ "[OPTIONS] [FILE]..." #define bzip2_full_usage "\n\n" \ - "Compress FILEs (or standard input) with bzip2 algorithm.\n" \ + "Compress FILEs (or stdin) with bzip2 algorithm\n" \ "\nOptions:" \ - "\n -c Write to standard output" \ + "\n -c Write to stdout" \ "\n -d Decompress" \ "\n -f Force" \ "\n -1..-9 Compression level" \ @@ -214,7 +214,7 @@ #define lzop_trivial_usage \ "[-cfvd123456789CF] [FILE]..." #define lzop_full_usage "\n\n" \ - " -c Write to standard output" \ + " -c Write to stdout" \ "\n -f Force" \ "\n -v Verbose" \ "\n -d Decompress" \ @@ -231,7 +231,7 @@ #define unlzop_trivial_usage \ "[-cfvCF] [FILE]..." #define unlzop_full_usage "\n\n" \ - " -c Write to standard output" \ + " -c Write to stdout" \ "\n -f Force" \ "\n -v Verbose" \ "\n -F Don't store or verify checksum" \ @@ -242,11 +242,11 @@ "Uncompress to stdout" #define unlzma_trivial_usage \ - "[OPTIONS] [FILE]" + "[OPTIONS] [FILE]..." #define unlzma_full_usage "\n\n" \ - "Uncompress FILE (or standard input)\n" \ + "Uncompress FILE (or stdin)\n" \ "\nOptions:" \ - "\n -c Write to standard output" \ + "\n -c Write to stdout" \ "\n -f Force" \ #define lzmacat_trivial_usage \ @@ -255,7 +255,7 @@ "Uncompress to stdout" #define cal_trivial_usage \ - "[-jy] [[month] year]" + "[-jy] [[MONTH] YEAR]" #define cal_full_usage "\n\n" \ "Display a calendar\n" \ "\nOptions:" \ @@ -436,21 +436,21 @@ "\n -c BYTES Limit core file size" \ "\n -v Verbose" \ "\n -P Create new process group" \ - "\n -0 Close standard input" \ - "\n -1 Close standard output" \ - "\n -2 Close standard error" \ + "\n -0 Close stdin" \ + "\n -1 Close stdout" \ + "\n -2 Close stderr" \ #define setuidgid_trivial_usage \ - "account prog args" + "USER PROG ARGS" #define setuidgid_full_usage "\n\n" \ - "Set uid and gid to account's uid and gid, removing all supplementary\n" \ + "Set uid and gid to USER's uid and gid, removing all supplementary\n" \ "groups and run PROG" #define envuidgid_trivial_usage \ - "account prog args" + "USER PROG ARGS" #define envuidgid_full_usage "\n\n" \ - "Set $UID to account's uid and $GID to account's gid and run PROG" + "Set $UID to USER's uid and $GID to USER's gid and run PROG" #define envdir_trivial_usage \ - "dir prog args" + "DIR PROG ARGS" #define envdir_full_usage "\n\n" \ "Set various environment variables as specified by files\n" \ "in the directory dir and run PROG" @@ -477,7 +477,7 @@ "\n a SIGXCPU after N seconds" \ #define chroot_trivial_usage \ - "NEWROOT [PROG [ARGS]]" + "NEWROOT [PROG ARGS]" #define chroot_full_usage "\n\n" \ "Run PROG with root directory set to NEWROOT" #define chroot_example_usage \ @@ -527,7 +527,7 @@ "Print the config file which built busybox" #define chrt_trivial_usage \ - "[OPTIONS] [PRIO] [PID | PROG [ARGS]]" + "[OPTIONS] [PRIO] [PID | PROG ARGS]" #define chrt_full_usage "\n\n" \ "Manipulate real-time attributes of a process\n" \ "\nOptions:" \ @@ -567,7 +567,7 @@ "Extract or list files from a cpio archive" \ IF_FEATURE_CPIO_O(", or" \ "\ncreate an archive" IF_FEATURE_CPIO_P(" (-o) or copy files (-p)") \ - " using file list on standard input" \ + " using file list on stdin" \ ) \ "\n" \ "\nMain operation mode:" \ @@ -658,7 +658,7 @@ #define cut_trivial_usage \ "[OPTIONS] [FILE]..." #define cut_full_usage "\n\n" \ - "Print selected fields from each input FILE to standard output\n" \ + "Print selected fields from each input FILE to stdout\n" \ "\nOptions:" \ "\n -b LIST Output only bytes from LIST" \ "\n -c LIST Output only characters from LIST" \ @@ -721,7 +721,7 @@ "p - print top of the stack (without altering the stack),\n" \ "f - print entire stack, o - pop the value and set output radix\n" \ "(value must be 10 or 16).\n" \ - "Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16.\n" \ + "Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16\n" \ #define dc_example_usage \ "$ dc 2 2 + p\n" \ @@ -815,7 +815,7 @@ "[-Pk" \ IF_FEATURE_HUMAN_READABLE("mh") \ IF_FEATURE_DF_FANCY("ai] [-B SIZE") \ - "] [FILESYSTEM...]" + "] [FILESYSTEM]..." #define df_full_usage "\n\n" \ "Print filesystem usage statistics\n" \ "\nOptions:" \ @@ -847,7 +847,7 @@ "/dev/sda3 17381728 17107080 274648 98% /\n" #define dhcprelay_trivial_usage \ - "CLIENT_IFACE[,CLIENT_IFACE2...] SERVER_IFACE [SERVER_IP]" + "CLIENT_IFACE[,CLIENT_IFACE2]... SERVER_IFACE [SERVER_IP]" #define dhcprelay_full_usage "\n\n" \ "Relay DHCP requests between clients and server" \ @@ -893,15 +893,20 @@ "\n -s SIZE Buffer size" \ #define dnsd_trivial_usage \ - "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]" + "[-dvs] [-c CONFFILE] [-t TTL_SEC] [-p PORT] [-i ADDR]" #define dnsd_full_usage "\n\n" \ "Small static DNS server daemon\n" \ "\nOptions:" \ - "\n -c Config filename" \ - "\n -t TTL in seconds" \ - "\n -p Listening port" \ - "\n -i Listening ip (default all)" \ + "\n -c FILE Config file" \ + "\n -t SEC TTL" \ + "\n -p PORT Listen on PORT" \ + "\n -i ADDR Listen on ADDR" \ "\n -d Daemonize" \ + "\n -v Verbose" \ + "\n -s Send successful replies only. Use this if you want" \ + "\n to use /etc/resolv.conf with two nameserver lines:" \ + "\n nameserver DNSD_SERVER" \ + "\n nameserver NORNAL_DNS_SERVER" \ #define dos2unix_trivial_usage \ "[OPTIONS] [FILE]" @@ -922,7 +927,7 @@ "\n -d unix2dos" \ #define dpkg_trivial_usage \ - "[-ilCPru] [-F option] package_name" + "[-ilCPru] [-F OPT] PACKAGE" #define dpkg_full_usage "\n\n" \ "Install, remove and manage Debian packages\n" \ "\nOptions:" \ @@ -988,7 +993,7 @@ #define dumpkmap_trivial_usage \ "> keymap" #define dumpkmap_full_usage "\n\n" \ - "Print a binary keyboard translation table to standard output" + "Print a binary keyboard translation table to stdout" #define dumpkmap_example_usage \ "$ dumpkmap > keymap\n" @@ -1031,7 +1036,7 @@ */ #define echo_trivial_usage \ - IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG...]" + IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG]..." #define echo_full_usage "\n\n" \ "Print the specified ARGs to stdout" \ IF_FEATURE_FANCY_ECHO( "\n" \ @@ -1053,7 +1058,7 @@ #define eject_trivial_usage \ "[-t] [-T] [DEVICE]" #define eject_full_usage "\n\n" \ - "Eject specified DEVICE (or default /dev/cdrom)\n" \ + "Eject DEVICE or default /dev/cdrom\n" \ "\nOptions:" \ IF_FEATURE_EJECT_SCSI( \ "\n -s SCSI device" \ @@ -1065,7 +1070,7 @@ #define ed_full_usage "" #define env_trivial_usage \ - "[-iu] [-] [name=value]... [PROG [ARGS]]" + "[-iu] [-] [name=value]... [PROG ARGS]" #define env_full_usage "\n\n" \ "Print the current environment or run PROG after setting up\n" \ "the specified environment\n" \ @@ -1087,7 +1092,7 @@ #define expand_trivial_usage \ "[-i] [-t N] [FILE|-]" #define expand_full_usage "\n\n" \ - "Convert tabs to spaces, writing to standard output\n" \ + "Convert tabs to spaces, writing to stdout\n" \ "\nOptions:" \ IF_FEATURE_EXPAND_LONG_OPTIONS( \ "\n -i,--initial Don't convert tabs after non blanks" \ @@ -1101,7 +1106,7 @@ #define expr_trivial_usage \ "EXPRESSION" #define expr_full_usage "\n\n" \ - "Print the value of EXPRESSION to standard output\n" \ + "Print the value of EXPRESSION to stdout\n" \ "\n" \ "EXPRESSION may be:\n" \ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \ @@ -1216,7 +1221,7 @@ "$ findfs LABEL=MyDevice" #define find_trivial_usage \ - "[PATH...] [EXPRESSION]" + "[PATH]... [EXPRESSION]" #define find_full_usage "\n\n" \ "Search for files. The default PATH is the current directory,\n" \ "default EXPRESSION is '-print'\n" \ @@ -1256,7 +1261,7 @@ IF_FEATURE_FIND_DEPTH( \ "\n -depth Process directory name after traversing it") \ IF_FEATURE_FIND_SIZE( \ - "\n -size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))." \ + "\n -size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))" \ "\n +/-N: file size is bigger/smaller than N") \ IF_FEATURE_FIND_LINKS( \ "\n -links N Number of links is greater than (+N), less than (-N)," \ @@ -1308,10 +1313,9 @@ "\n -v Verbose" \ #define fold_trivial_usage \ - "[-bs] [-w WIDTH] [FILE]" + "[-bs] [-w WIDTH] [FILE]..." #define fold_full_usage "\n\n" \ - "Wrap input lines in each FILE (standard input by default), writing to\n" \ - "standard output\n" \ + "Wrap input lines in each FILE (or stdin), writing to stdout\n" \ "\nOptions:" \ "\n -b Count bytes rather than columns" \ "\n -s Break at spaces" \ @@ -1336,7 +1340,7 @@ "$ freeramdisk /dev/ram2\n" #define fsck_trivial_usage \ - "[-ANPRTV] [-C fd] [-t fstype] [fs-options] [filesys...]" + "[-ANPRTV] [-C FD] [-t FSTYPE] [FS_OPTS] [BLOCKDEV]..." #define fsck_full_usage "\n\n" \ "Check and repair filesystems\n" \ "\nOptions:" \ @@ -1347,10 +1351,10 @@ "\n -T Don't show title on startup" \ "\n -V Verbose" \ "\n -C n Write status information to specified filedescriptor" \ - "\n -t type List of filesystem types to check" \ + "\n -t TYPE List of filesystem types to check" \ #define fsck_minix_trivial_usage \ - "[-larvsmf] /dev/name" + "[-larvsmf] BLOCKDEV" #define fsck_minix_full_usage "\n\n" \ "Check MINIX filesystem\n" \ "\nOptions:" \ @@ -1463,7 +1467,7 @@ "#!/bin/sh\n" \ "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \ " -n 'example.busybox' -- \"$@\"`\n" \ - "if [ $? != 0 ]; then exit 1; fi\n" \ + "if [ $? != 0 ]; then exit 1; fi\n" \ "eval set -- \"$GETOPT\"\n" \ "while true; do\n" \ " case $1 in\n" \ @@ -1502,42 +1506,47 @@ "\n -H HOST Log HOST into the utmp file as the hostname" \ #define grep_trivial_usage \ - "[-HhrilLnqvso" \ + "[-HhnlLoqvsri" \ IF_DESKTOP("w") \ - "eF" \ + "F" \ IF_FEATURE_GREP_EGREP_ALIAS("E") \ - IF_FEATURE_GREP_CONTEXT("ABC") \ IF_EXTRA_COMPAT("z") \ - "] PATTERN [FILE]..." + "] [-m N] " \ + IF_FEATURE_GREP_CONTEXT("[-A/B/C N] ") \ + "PATTERN/-e PATTERN.../-f FILE [FILE]..." #define grep_full_usage "\n\n" \ - "Search for PATTERN in each FILE or standard input\n" \ - "\nOptions:" \ - "\n -H Prefix output lines with filename where match was found" \ - "\n -h Suppress the prefixing filename on output" \ - "\n -r Recurse" \ - "\n -i Ignore case distinctions" \ - "\n -l List names of files that match" \ - "\n -L List names of files that don't match" \ - "\n -n Print line number with output lines" \ + "Search for PATTERN in FILEs (or stdin)\n" \ + "\nOptions:" \ + "\n -H Add 'filename:' prefix" \ + "\n -h Do not add 'filename:' prefix" \ + "\n -n Add 'line_no:' prefix" \ + "\n -l Show only names of files that match" \ + "\n -L Show only names of files that don't match" \ + "\n -c Show only count of matching lines" \ + "\n -o Show only the matching part of line" \ "\n -q Quiet. Return 0 if PATTERN is found, 1 otherwise" \ "\n -v Select non-matching lines" \ - "\n -s Suppress file open/read error messages" \ - "\n -c Only print count of matching lines" \ - "\n -o Show only the part of a line that matches PATTERN" \ - "\n -m N Match up to N times per file" \ + "\n -s Suppress open and read errors" \ + "\n -r Recurse" \ + "\n -i Ignore case" \ IF_DESKTOP( \ - "\n -w Match whole words only") \ - "\n -F PATTERN is a set of newline-separated strings" \ + "\n -w Match whole words only" \ + ) \ + "\n -F PATTERN is a literal (not regexp)" \ IF_FEATURE_GREP_EGREP_ALIAS( \ - "\n -E PATTERN is an extended regular expression") \ - "\n -e PTRN Pattern to match" \ - "\n -f FILE Read pattern from file" \ + "\n -E PATTERN is an extended regexp" \ + ) \ + IF_EXTRA_COMPAT( \ + "\n -z Input is NUL terminated" \ + ) \ + "\n -m N Match up to N times per file" \ IF_FEATURE_GREP_CONTEXT( \ "\n -A N Print N lines of trailing context" \ "\n -B N Print N lines of leading context" \ - "\n -C N Print N lines of output context") \ - IF_EXTRA_COMPAT( \ - "\n -z Input is NUL terminated") \ + "\n -C N Same as '-A N -B N'" \ + ) \ + "\n -e PTRN Pattern to match" \ + "\n -f FILE Read pattern from file" \ #define grep_example_usage \ "$ grep root /etc/passwd\n" \ @@ -1554,9 +1563,9 @@ #define gunzip_trivial_usage \ "[OPTIONS] [FILE]..." #define gunzip_full_usage "\n\n" \ - "Uncompress FILEs (or standard input)\n" \ + "Uncompress FILEs (or stdin)\n" \ "\nOptions:" \ - "\n -c Write to standard output" \ + "\n -c Write to stdout" \ "\n -f Force" \ "\n -t Test file integrity" \ @@ -1570,9 +1579,9 @@ #define gzip_trivial_usage \ "[OPTIONS] [FILE]..." #define gzip_full_usage "\n\n" \ - "Compress FILEs (or standard input)\n" \ + "Compress FILEs (or stdin)\n" \ "\nOptions:" \ - "\n -c Write to standard output" \ + "\n -c Write to stdout" \ "\n -d Decompress" \ "\n -f Force" \ @@ -1649,7 +1658,7 @@ #define head_trivial_usage \ "[OPTIONS] [FILE]..." #define head_full_usage "\n\n" \ - "Print first 10 lines of each FILE (or standard input) to standard output.\n" \ + "Print first 10 lines of each FILE (or stdin) to stdout.\n" \ "With more than one FILE, precede each with a header giving the file name.\n" \ "\nOptions:" \ "\n -n N Print first N lines instead of first 10" \ @@ -1664,9 +1673,9 @@ "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n" #define hexdump_trivial_usage \ - "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] FILE..." + "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] [FILE]..." #define hexdump_full_usage "\n\n" \ - "Display FILEs or standard input in a user specified format\n" \ + "Display FILEs (or stdin) in a user specified format\n" \ "\nOptions:" \ "\n -b One-byte octal display" \ "\n -c One-byte character display" \ @@ -1795,7 +1804,7 @@ " [up|down] ..." #define ifenslave_trivial_usage \ - "[-cdf] master-iface " + "[-cdf] MASTER_IFACE SLAVE_IFACE..." #define ifenslave_full_usage "\n\n" \ "Configure network interfaces for parallel routing\n" \ "\nOptions:" \ @@ -1847,7 +1856,7 @@ "\n -k Kill running daemon" \ #define ifup_trivial_usage \ - "[-ain"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] ifaces..." + "[-ain"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] IFACE..." #define ifup_full_usage "\n\n" \ "Options:" \ "\n -a De/configure all interfaces automatically" \ @@ -2018,11 +2027,11 @@ " ::shutdown:/sbin/swapoff -a\n" #define inotifyd_trivial_usage \ - "PROG FILE1[:MASK] ..." + "PROG FILE1[:MASK]..." #define inotifyd_full_usage "\n\n" \ "Run PROG on filesystem changes." \ "\nWhen a filesystem event matching MASK occurs on FILEn," \ - "\nPROG [] is run." \ + "\nPROG ACTUAL_EVENTS FILEn [SUBFILE] is run." \ "\nEvents:" \ "\n a File is accessed" \ "\n c File is modified" \ @@ -2042,7 +2051,7 @@ "\n d Subfile is deleted" \ "\n" \ "\ninotifyd waits for PROG to exit." \ - "\nWhen x event happens for all FILEs, inotifyd exits" \ + "\nWhen x event happens for all FILEs, inotifyd exits." \ /* 2.6 style insmod has no options and required filename * (not module name - .ko can't be omitted) */ @@ -2068,7 +2077,7 @@ /* -v, -b, -c are ignored */ #define install_trivial_usage \ - "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [source] dest|directory" + "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST" #define install_full_usage "\n\n" \ "Copy files and set attributes\n" \ "\nOptions:" \ @@ -2247,7 +2256,7 @@ "$ kill 252\n" #define killall_trivial_usage \ - "[-l] [-q] [-SIG] process-name..." + "[-l] [-q] [-SIG] PROCESS_NAME..." #define killall_full_usage "\n\n" \ "Send a signal (default: TERM) to given processes\n" \ "\nOptions:" \ @@ -2287,8 +2296,7 @@ #define less_trivial_usage \ "[-EMNmh~I?] [FILE]..." #define less_full_usage "\n\n" \ - "View a file or list of files. The position within files can be\n" \ - "changed, and files can be manipulated in various ways.\n" \ + "View FILE (or stdin) one screenful at a time\n" \ "\nOptions:" \ "\n -E Quit once the end of a file is reached" \ "\n -M,-m Display status line with line numbers" \ @@ -2306,7 +2314,7 @@ #define linuxrc_full_usage "" #define setarch_trivial_usage \ - "personality program [args...]" + "personality PROG ARGS" #define setarch_full_usage "\n\n" \ "Personality may be:\n" \ " linux32 Set 32bit uname emulation\n" \ @@ -2334,7 +2342,7 @@ #define loadfont_trivial_usage \ "< font" #define loadfont_full_usage "\n\n" \ - "Load a console font from standard input" \ + "Load a console font from stdin" \ /* "\n -C TTY Affect TTY instead of /dev/tty" */ \ #define loadfont_example_usage \ @@ -2343,7 +2351,7 @@ #define loadkmap_trivial_usage \ "< keymap" #define loadkmap_full_usage "\n\n" \ - "Load a binary keyboard translation table from standard input\n" \ + "Load a binary keyboard translation table from stdin\n" \ /* "\n -C TTY Affect TTY instead of /dev/tty" */ \ #define loadkmap_example_usage \ @@ -2352,7 +2360,7 @@ #define logger_trivial_usage \ "[OPTIONS] [MESSAGE]" #define logger_full_usage "\n\n" \ - "Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n" \ + "Write MESSAGE (or stdin) to syslog\n" \ "\nOptions:" \ "\n -s Log to stderr as well as the system log" \ "\n -t TAG Log using the specified tag (defaults to user name)" \ @@ -2415,7 +2423,7 @@ "\n tcpsvd -E 0 515 softlimit -m 999999 lpd /var/spool ./print" \ #define lpq_trivial_usage \ - "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID...] [-fs]" + "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID]... [-fs]" #define lpq_full_usage "\n\n" \ "Options:" \ "\n -P lp service to connect to (else uses $PRINTER)" \ @@ -2764,8 +2772,8 @@ "[-L LABEL] " \ /* "[-M last-mounted-directory] [-S] [-T filesystem-type] " */ \ "BLOCKDEV [KBYTES]" -#define mkfs_ext2_full_usage "\n" \ - "\n -b BLK_SIZE Block size, bytes" \ +#define mkfs_ext2_full_usage "\n\n" \ + " -b BLK_SIZE Block size, bytes" \ /* "\n -c Check device for bad blocks" */ \ /* "\n -E opts Set extended options" */ \ /* "\n -f size Fragment size in bytes" */ \ @@ -2790,14 +2798,14 @@ /* "\n -v Verbose" */ \ #define mkfs_minix_trivial_usage \ - "[-c | -l filename] [-nXX] [-iXX] BLOCKDEV [KBYTES]" + "[-c | -l FILE] [-nXX] [-iXX] BLOCKDEV [KBYTES]" #define mkfs_minix_full_usage "\n\n" \ "Make a MINIX filesystem\n" \ "\nOptions:" \ "\n -c Check device for bad blocks" \ "\n -n [14|30] Maximum length of filenames" \ "\n -i INODES Number of inodes for the filesystem" \ - "\n -l FILENAME Read bad blocks list from FILENAME" \ + "\n -l FILE Read bad blocks list from FILE" \ "\n -v Make version 2 filesystem" \ #define mkfs_reiser_trivial_usage \ @@ -2844,7 +2852,7 @@ "$ mknod -m 644 /tmp/pipe p\n" #define mkswap_trivial_usage \ - "[OPTIONS] BLOCKDEV" /* [SIZE_IN_KB] */ + "[OPTIONS] BLOCKDEV [KBYTES]" #define mkswap_full_usage "\n\n" \ "Prepare BLOCKDEV to be used as swap partition\n" \ "\nOptions:" \ @@ -2871,10 +2879,10 @@ "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n" #define modprobe_trivial_usage \ - IF_MODPROBE_SMALL("[-qfwrsv] MODULE [symbol=value...]") \ + IF_MODPROBE_SMALL("[-qfwrsv] MODULE [symbol=value]...") \ IF_NOT_MODPROBE_SMALL("[-" \ IF_FEATURE_2_4_MODULES("k")"nqrsv" \ - IF_FEATURE_MODPROBE_BLACKLIST("b")"] MODULE [symbol=value...]") + IF_FEATURE_MODPROBE_BLACKLIST("b")"] MODULE [symbol=value]...") #define modprobe_full_usage "\n\n" \ "Options:" \ IF_MODPROBE_SMALL( \ @@ -2962,7 +2970,7 @@ #define more_trivial_usage \ "[FILE]..." #define more_full_usage "\n\n" \ - "View FILE or standard input one screenful at a time" + "View FILE (or stdin) one screenful at a time" #define more_example_usage \ "$ dmesg | more\n" @@ -3180,7 +3188,7 @@ ) #define nice_trivial_usage \ - "[-n ADJUST] [PROG [ARGS]]" + "[-n ADJUST] [PROG ARGS]" #define nice_full_usage "\n\n" \ "Run PROG with modified scheduling priority\n" \ "\nOptions:" \ @@ -3212,7 +3220,7 @@ "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'" #define nohup_trivial_usage \ - "PROG [ARGS]" + "PROG ARGS" #define nohup_full_usage "\n\n" \ "Run PROG immune to hangups, with output to a non-tty" #define nohup_example_usage \ @@ -3251,10 +3259,10 @@ "[-aBbcDdeFfHhIiLlOovXx] " IF_DESKTOP("[-t TYPE] ") "[FILE]" #define od_full_usage "\n\n" \ "Write an unambiguous representation, octal bytes by default, of FILE\n" \ - "(or standard input) to standard output." + "(or stdin) to stdout" #define openvt_trivial_usage \ - "[-c N] [-sw] [PROG [ARGS]]" + "[-c N] [-sw] [PROG ARGS]" #define openvt_full_usage "\n\n" \ "Start PROG on a new virtual terminal\n" \ "\nOptions:" \ @@ -3334,11 +3342,11 @@ #if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT) #define pidof_trivial_usage \ - "[OPTIONS] [NAME...]" + "[OPTIONS] [NAME]..." #define USAGE_PIDOF "\n\nOptions:" #else #define pidof_trivial_usage \ - "[NAME...]" + "[NAME]..." #define USAGE_PIDOF /* none */ #endif #define pidof_full_usage "\n\n" \ @@ -3473,13 +3481,13 @@ "\n -f Force power off (don't go through init)" \ #define printenv_trivial_usage \ - "[VARIABLE...]" + "[VARIABLE]..." #define printenv_full_usage "\n\n" \ - "Print all or part of environment.\n" \ - "If no environment VARIABLE specified, print them all." + "Print environment VARIABLEs.\n" \ + "If no VARIABLE specified, print all." #define printf_trivial_usage \ - "FORMAT [ARGUMENT...]" + "FORMAT [ARGUMENT]..." #define printf_full_usage "\n\n" \ "Format and print ARGUMENT(s) according to FORMAT,\n" \ "where FORMAT controls the output exactly as in C printf" @@ -3610,9 +3618,9 @@ "\n -n Disable byte order auto-detection" \ #define realpath_trivial_usage \ - "pathname..." + "FILE..." #define realpath_full_usage "\n\n" \ - "Return the absolute pathnames of given argument" + "Return the absolute pathnames of given FILE" #define reboot_trivial_usage \ "[-d DELAY] [-n] [-f]" @@ -3628,11 +3636,11 @@ #define reformime_full_usage "\n\n" \ "Parse MIME-encoded message\n" \ "\nOptions:" \ - "\n -x prefix Extract content of MIME sections to files" \ - "\n -X prog [args] Filter content of MIME sections through prog." \ + "\n -x PREFIX Extract content of MIME sections to files" \ + "\n -X PROG ARGS Filter content of MIME sections through PROG" \ "\n Must be the last option" \ "\n" \ - "\nOther options are silently ignored." \ + "\nOther options are silently ignored" \ #define renice_trivial_usage \ "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID...]" @@ -3725,7 +3733,7 @@ "\n -A inet" IF_FEATURE_IPV6("{6}") " Select address family" \ #define rpm_trivial_usage \ - "-i -q[ildc]p package.rpm" + "-i -q[ildc]p PACKAGE.rpm" #define rpm_full_usage "\n\n" \ "Manipulate RPM packages\n" \ "\nOptions:" \ @@ -3766,8 +3774,8 @@ ) #define runcon_trivial_usage \ - "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG [ARGS]\n" \ - " runcon CONTEXT PROG [ARGS]" + "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG ARGS\n" \ + " runcon CONTEXT PROG ARGS" #define runcon_full_usage "\n\n" \ "Run PROG in a different security context\n" \ "\n CONTEXT Complete security context\n" \ @@ -3813,23 +3821,23 @@ "+ shutdown -h +4m" #define runlevel_trivial_usage \ - "[utmp]" + "[FILE]" #define runlevel_full_usage "\n\n" \ "Find the current and previous system runlevel\n" \ "\n" \ - "If no utmp file exists or if no runlevel record can be found,\n" \ + "If no utmp FILE exists or if no runlevel record can be found,\n" \ "print \"unknown\"" #define runlevel_example_usage \ "$ runlevel /var/run/utmp\n" \ "N 2" #define runsv_trivial_usage \ - "dir" + "DIR" #define runsv_full_usage "\n\n" \ "Start and monitor a service and optionally an appendant log service" #define runsvdir_trivial_usage \ - "[-P] [-s SCRIPT] dir" + "[-P] [-s SCRIPT] DIR" #define runsvdir_full_usage "\n\n" \ "Start a runsv process for each subdirectory. If it exits, restart it.\n" \ "\n -P Put each runsv in a new session" \ @@ -3908,7 +3916,7 @@ "[-w] [-s SEP] [FIRST [INC]] LAST" #define seq_full_usage "\n\n" \ "Print numbers from FIRST to LAST, in steps of INC.\n" \ - "FIRST, INC default to 1\n" \ + "FIRST, INC default to 1.\n" \ "\nOptions:" \ "\n -w Pad to last with leading zeros" \ "\n -s SEP String separator" \ @@ -3949,7 +3957,7 @@ "\n -e DIR Exclude DIR" \ "\n -F Force reset of context to match file_context for customizable files" \ "\n -o FILE Save list of files with incorrect context" \ - "\n -s Take a list of files from standard input (instead of command line)" \ + "\n -s Take a list of files from stdin (instead of command line)" \ "\n -v Show changes in file labels, if type or role are changing" \ "\n -vv Show changes in file labels, if type, role, or user are changing" \ "\n -W Display warnings about entries that had no matching files" \ @@ -3971,7 +3979,7 @@ "Set entries into the kernel's scancode-to-keycode map,\n" \ "allowing unusual keyboards to generate usable keycodes.\n\n" \ "SCANCODE may be either xx or e0xx (hexadecimal),\n" \ - "and KEYCODE is given in decimal" \ + "and KEYCODE is given in decimal." \ #define setkeycodes_example_usage \ "$ setkeycodes e030 127\n" @@ -3988,7 +3996,7 @@ "Change boolean setting" #define setsid_trivial_usage \ - "PROG [ARG...]" + "PROG ARGS" #define setsid_full_usage "\n\n" \ "Run PROG in a new session. PROG will have no controlling terminal\n" \ "and will not be affected by keyboard signals (Ctrl-C etc).\n" \ @@ -4103,7 +4111,7 @@ "$ cat TODO | split -a 2 -l 2 TODO_\n" #define start_stop_daemon_trivial_usage \ - "[OPTIONS] [-S|-K] ... [-- arguments...]" + "[OPTIONS] [-S|-K] ... [-- ARGS...]" #define start_stop_daemon_full_usage "\n\n" \ "Search for matching processes, and then\n" \ "-K: stop all matching processes.\n" \ @@ -4256,7 +4264,7 @@ "\n -s SH Shell to use instead of default shell" \ #define sulogin_trivial_usage \ - "[OPTIONS] [TTY]" + "[-t N] [TTY]" #define sulogin_full_usage "\n\n" \ "Single user login\n" \ "\nOptions:" \ @@ -4271,7 +4279,7 @@ "\n -s Use System V sum algorithm (512byte blocks)" \ #define sv_trivial_usage \ - "[-v] [-w SEC] command service..." + "[-v] [-w SEC] CMD SERVICE_DIR..." #define sv_full_usage "\n\n" \ "Control services monitored by runsv supervisor.\n" \ "Commands (only first character is enough):\n" \ @@ -4289,7 +4297,7 @@ #define svlogd_trivial_usage \ "[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..." #define svlogd_full_usage "\n\n" \ - "Continuously read log data from standard input, optionally\n" \ + "Continuously read log data from stdin, optionally\n" \ "filter log messages, and write the data to one or more automatically\n" \ "rotated logs" \ @@ -4326,7 +4334,7 @@ #define fsync_trivial_usage \ "[OPTIONS] FILE..." -#define fsync_full_usage \ +#define fsync_full_usage "\n\n" \ "Write files' buffered blocks to disk\n" \ "\nOptions:" \ "\n -d Avoid syncing metadata" @@ -4354,11 +4362,11 @@ "[OPTIONS]" #define syslogd_full_usage "\n\n" \ "System logging utility.\n" \ - "Note that this version of syslogd ignores /etc/syslog.conf.\n" \ + "This version of syslogd ignores /etc/syslog.conf\n" \ "\nOptions:" \ "\n -n Run in foreground" \ "\n -O FILE Log to given file (default:/var/log/messages)" \ - "\n -l n Set local log level" \ + "\n -l N Set local log level" \ "\n -S Smaller logging output" \ IF_FEATURE_ROTATE_LOGFILE( \ "\n -s SIZE Max size (KB) before rotate (default:200KB, 0=off)" \ @@ -4385,7 +4393,7 @@ #define tail_trivial_usage \ "[OPTIONS] [FILE]..." #define tail_full_usage "\n\n" \ - "Print last 10 lines of each FILE (or standard input) to standard output.\n" \ + "Print last 10 lines of each FILE (or stdin) to stdout.\n" \ "With more than one FILE, precede each with a header giving the file name.\n" \ "\nOptions:" \ IF_FEATURE_FANCY_TAIL( \ @@ -4454,7 +4462,7 @@ "$ tar -cf /tmp/tarball.tar /usr/local\n" #define taskset_trivial_usage \ - "[-p] [MASK] [PID | PROG [ARGS]]" + "[-p] [MASK] [PID | PROG ARGS]" #define taskset_full_usage "\n\n" \ "Set or get CPU affinity\n" \ "\nOptions:" \ @@ -4474,7 +4482,7 @@ #define tee_trivial_usage \ "[OPTIONS] [FILE]..." #define tee_full_usage "\n\n" \ - "Copy standard input to each FILE, and also to standard output\n" \ + "Copy stdin to each FILE, and also to stdout\n" \ "\nOptions:" \ "\n -a Append to the given FILEs, don't overwrite" \ "\n -i Ignore interrupt signals (SIGINT)" \ @@ -4514,9 +4522,9 @@ "\n -p PORT Port to listen on" \ "\n -b ADDR[:PORT] Address to bind to" \ "\n -F Run in foreground" \ - "\n -i Run as inetd service" \ + "\n -i Inetd mode" \ IF_FEATURE_TELNETD_INETD_WAIT( \ - "\n -w SEC Run as inetd service in wait mode, linger time SEC" \ + "\n -w SEC Inetd 'wait' mode, linger time SEC" \ "\n -S Log to syslog (implied by -i or without -F and -w)" \ ) \ ) @@ -4568,11 +4576,11 @@ /* with not-implemented options: */ /* "[-hpEvv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] [-i DIR|-x CDB] [-t SEC] IP PORT PROG" */ #define tcpsvd_full_usage "\n\n" \ - "Create TCP socket, bind to IP:PORT and listen\n" \ + "Create TCP socket, bind to IP:PORT and listen\n" \ "for incoming connection. Run PROG for each connection.\n" \ "\n IP IP to listen on. '0' = all" \ "\n PORT Port to listen on" \ - "\n PROG [ARGS] Program to run" \ + "\n PROG ARGS Program to run" \ "\n -l NAME Local hostname (else looks up local hostname in DNS)" \ "\n -u USER[:GRP] Change to user/group after bind" \ "\n -c N Handle up to N connections simultaneously" \ @@ -4592,7 +4600,7 @@ "redirecting all further packets with same peer ip:port to it.\n" \ "\n IP IP to listen on. '0' = all" \ "\n PORT Port to listen on" \ - "\n PROG [ARGS] Program to run" \ + "\n PROG ARGS Program to run" \ "\n -l NAME Local hostname (else looks up local hostname in DNS)" \ "\n -u USER[:GRP] Change to user/group after bind" \ "\n -c N Handle up to N connections simultaneously" \ @@ -4633,14 +4641,14 @@ "\n -u Access files as USER" \ #define time_trivial_usage \ - "[OPTIONS] PROG [ARGS]" + "[OPTIONS] PROG ARGS" #define time_full_usage "\n\n" \ - "Run PROG. When it finishes, its resource usage is displayed.\n" \ + "Run PROG, display resource usage when it exits\n" \ "\nOptions:" \ "\n -v Verbose" \ #define timeout_trivial_usage \ - "[-t SECS] [-s SIG] PROG [ARGS]" + "[-t SECS] [-s SIG] PROG ARGS" #define timeout_full_usage "\n\n" \ "Runs PROG. Sends SIG to it if it is not gone in SECS seconds.\n" \ "Defaults: SECS: 10, SIG: TERM." \ @@ -4650,7 +4658,8 @@ #define top_full_usage "\n\n" \ "Provide a view of process activity in real time.\n" \ "Read the status of all processes from /proc each SECONDS\n" \ - "and show the status for however many processes will fit on the screen." \ + "and display a screenful of them." \ +//TODO: add options and keyboard commands #define touch_trivial_usage \ "[-c] [-d DATE] FILE [FILE]..." @@ -4670,8 +4679,7 @@ #define tr_trivial_usage \ "[-cds] STRING1 [STRING2]" #define tr_full_usage "\n\n" \ - "Translate, squeeze, and/or delete characters from\n" \ - "standard input, writing to standard output\n" \ + "Translate, squeeze, or delete characters from stdin, writing to stdout\n" \ "\nOptions:" \ "\n -c Take complement of STRING1" \ "\n -d Delete input characters coded STRING1" \ @@ -4693,7 +4701,7 @@ ) \ "\n -F Set the don't fragment bit" \ "\n -I Use ICMP ECHO instead of UDP datagrams" \ - "\n -l Display the ttl value of the returned packet" \ + "\n -l Display the TTL value of the returned packet" \ "\n -d Set SO_DEBUG options to socket" \ "\n -n Print numeric addresses" \ "\n -r Bypass routing tables, send directly to HOST" \ @@ -4701,7 +4709,7 @@ "\n -m Max time-to-live (max number of hops)" \ "\n -p Base UDP port number used in probes" \ "\n (default 33434)" \ - "\n -q Number of probes per 'ttl' (default 3)" \ + "\n -q Number of probes per TTL (default 3)" \ "\n -s IP address to use as the source address" \ "\n -t Type-of-service in probe packets (default 0)" \ "\n -w Time in seconds to wait for a response (default 3)" \ @@ -4721,7 +4729,7 @@ "\n -m Max time-to-live (max number of hops)" \ "\n -p Base UDP port number used in probes" \ "\n (default is 33434)" \ - "\n -q Number of probes per 'ttl' (default 3)" \ + "\n -q Number of probes per TTL (default 3)" \ "\n -s IP address to use as the source address" \ "\n -t Type-of-service in probe packets (default 0)" \ "\n -w Time in seconds to wait for a response (default 3)" \ @@ -4738,7 +4746,7 @@ #define tty_trivial_usage \ "" #define tty_full_usage "\n\n" \ - "Print file name of standard input's terminal" \ + "Print file name of stdin's terminal" \ IF_INCLUDE_SUSv2( "\n" \ "\nOptions:" \ "\n -s Print nothing, only return exit status" \ @@ -4750,7 +4758,7 @@ #define ttysize_trivial_usage \ "[w] [h]" #define ttysize_full_usage "\n\n" \ - "Print dimension(s) of standard input's terminal, on error return 80x25" + "Print dimension(s) of stdin's terminal, on error return 80x25" #define tunctl_trivial_usage \ "[-f device] ([-t name] | -d name)" IF_FEATURE_TUNCTL_UG(" [-u owner] [-g group] [-b]") @@ -4894,7 +4902,7 @@ "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n" #define uncompress_trivial_usage \ - "[-c] [-f] [FILE...]" + "[-c] [-f] [FILE]..." #define uncompress_full_usage "\n\n" \ "Uncompress .Z file[s]\n" \ "\nOptions:" \ @@ -4904,7 +4912,7 @@ #define unexpand_trivial_usage \ "[-f][-a][-t N] [FILE|-]" #define unexpand_full_usage "\n\n" \ - "Convert spaces to tabs, writing to standard output\n" \ + "Convert spaces to tabs, writing to stdout\n" \ "\nOptions:" \ IF_FEATURE_UNEXPAND_LONG_OPTIONS( \ "\n -a,--all Convert all blanks" \ @@ -5029,13 +5037,13 @@ #define wall_trivial_usage \ "[FILE]" #define wall_full_usage "\n\n" \ - "Write content of FILE or standard-input to all logged-in users" + "Write content of FILE or stdin to all logged-in users" #define wall_sample_usage \ "echo foo | wall\n" \ "wall ./mymessage" #define watch_trivial_usage \ - "[-n seconds] [-t] PROG [ARGS]" + "[-n SEC] [-t] PROG ARGS" #define watch_full_usage "\n\n" \ "Run PROG periodically\n" \ "\nOptions:" \ @@ -5062,8 +5070,8 @@ #define wc_trivial_usage \ "[OPTIONS] [FILE]..." #define wc_full_usage "\n\n" \ - "Print line, word, and byte counts for each FILE, and a total line if\n" \ - "more than one FILE is specified. With no FILE, read standard input.\n" \ + "Print line, word, and byte counts for each FILE (or stdin),\n" \ + "and a total line if more than one FILE is specified\n" \ "\nOptions:" \ "\n -c Print the byte counts" \ "\n -l Print the newline counts" \ @@ -5078,7 +5086,7 @@ IF_FEATURE_WGET_LONG_OPTIONS( \ "[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]\n" \ " [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \ - " [-U|--user-agent agent] url" \ + " [--no-check-certificate] [-U|--user-agent agent] url" \ ) \ IF_NOT_FEATURE_WGET_LONG_OPTIONS( \ "[-csq] [-O file] [-Y on/off] [-P DIR] [-U agent] url" \ @@ -5115,9 +5123,9 @@ "Print the user name associated with the current effective user id" #define xargs_trivial_usage \ - "[OPTIONS] [PROG [ARGS]]" + "[OPTIONS] [PROG ARGS]" #define xargs_full_usage "\n\n" \ - "Run PROG on every item given by standard input\n" \ + "Run PROG on every item given by stdin\n" \ "\nOptions:" \ IF_FEATURE_XARGS_SUPPORT_CONFIRMATION( \ "\n -p Ask user whether to run each command") \ diff --git a/miscutils/beep.c b/miscutils/beep.c index c17cbfdad..b0ee7ea25 100644 --- a/miscutils/beep.c +++ b/miscutils/beep.c @@ -79,11 +79,11 @@ int beep_main(int argc, char **argv) } while (rep) { //bb_info_msg("rep[%d] freq=%d, length=%d, delay=%d", rep, freq, length, delay); - xioctl(speaker, KIOCSOUND, (void*)(long)tickrate_div_freq); + xioctl(speaker, KIOCSOUND, (void*)(uintptr_t)tickrate_div_freq); usleep(1000 * length); ioctl(speaker, KIOCSOUND, (void*)0); if (--rep) - usleep(delay); + usleep(1000 * delay); } } diff --git a/miscutils/fbsplash.c b/miscutils/fbsplash.c index 4560bb2e9..5974006bb 100644 --- a/miscutils/fbsplash.c +++ b/miscutils/fbsplash.c @@ -84,7 +84,7 @@ static void fb_open(const char *strfb_device) // map the device in memory G.addr = mmap(NULL, G.scr_var.xres * G.scr_var.yres - * BYTES_PER_PIXEL /*(G.scr_var.bits_per_pixel / 8)*/ , + * BYTES_PER_PIXEL /*(G.scr_var.bits_per_pixel / 8)*/, PROT_WRITE, MAP_SHARED, fbfd, 0); if (G.addr == MAP_FAILED) bb_perror_msg_and_die("mmap"); @@ -121,7 +121,7 @@ static void fb_drawrectangle(void) // vertical lines ptr1 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx) * BYTES_PER_PIXEL); ptr2 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx + G.nbar_width - 1) * BYTES_PER_PIXEL); - cnt = G.nbar_height - 1 /* HUH?! G.nbar_posy + G.nbar_height - 1 - G.nbar_posy*/; + cnt = G.nbar_height - 1; do { *ptr1 = thispix; ptr1 += G.scr_var.xres; *ptr2 = thispix; ptr2 += G.scr_var.xres; @@ -216,70 +216,69 @@ static void fb_drawprogressbar(unsigned percent) */ static void fb_drawimage(void) { - char *head, *ptr; FILE *theme_file; + char *read_ptr; unsigned char *pixline; unsigned i, j, width, height, line_size; - if (LONE_DASH(G.image_filename)) + if (LONE_DASH(G.image_filename)) { theme_file = stdin; - else { + } else { int fd = open_zipped(G.image_filename); if (fd < 0) bb_simple_perror_msg_and_die(G.image_filename); theme_file = xfdopen_for_read(fd); } - head = xmalloc(256); - /* parse ppm header - * - A ppm image’s magic number is the two characters "P6". + /* Parse ppm header: + * - Magic: two characters "P6". * - Whitespace (blanks, TABs, CRs, LFs). * - A width, formatted as ASCII characters in decimal. * - Whitespace. - * - A height, again in ASCII decimal. + * - A height, ASCII decimal. * - Whitespace. - * - The maximum color value (Maxval), again in ASCII decimal. Must be - * less than 65536. + * - The maximum color value, ASCII decimal, in 0..65535 * - Newline or other single whitespace character. + * (we support newline only) * - A raster of Width * Height pixels in triplets of rgb - * in pure binary by 1 (or not implemented 2) bytes. + * in pure binary by 1 or 2 bytes. (we support only 1 byte) */ +#define concat_buf bb_common_bufsiz1 + read_ptr = concat_buf; while (1) { - if (fgets(head, 256, theme_file) == NULL - /* do not overrun the buffer */ - || strlen(bb_common_bufsiz1) >= sizeof(bb_common_bufsiz1) - 256) + int w, h, max_color_val; + int rem = concat_buf + sizeof(concat_buf) - read_ptr; + if (rem < 2 + || fgets(read_ptr, rem, theme_file) == NULL + ) { bb_error_msg_and_die("bad PPM file '%s'", G.image_filename); - - ptr = memchr(skip_whitespace(head), '#', 256); - if (ptr != NULL) - *ptr = 0; /* ignore comments */ - strcat(bb_common_bufsiz1, head); - // width, height, max_color_val - if (sscanf(bb_common_bufsiz1, "P6 %u %u %u", &width, &height, &i) == 3 - && i <= 255) + } + read_ptr = strchrnul(read_ptr, '#'); + *read_ptr = '\0'; /* ignore #comments */ + if (sscanf(concat_buf, "P6 %u %u %u", &w, &h, &max_color_val) == 3 + && max_color_val <= 255 + ) { + width = w; /* w is on stack, width may be in register */ + height = h; break; - /* If we do not find a signature throughout the whole file then - we will diagnose this via EOF on read in the head of the loop. */ + } } - if (ENABLE_FEATURE_CLEAN_UP) - free(head); - if (width != G.scr_var.xres || height != G.scr_var.yres) - bb_error_msg_and_die("PPM %dx%d does not match screen %dx%d", - width, height, G.scr_var.xres, G.scr_var.yres); line_size = width*3; + pixline = xmalloc(line_size); + if (width > G.scr_var.xres) width = G.scr_var.xres; if (height > G.scr_var.yres) height = G.scr_var.yres; - - pixline = xmalloc(line_size); for (j = 0; j < height; j++) { - unsigned char *pixel = pixline; - DATA *src = (DATA *)(G.addr + j * G.scr_fix.line_length); + unsigned char *pixel; + DATA *src; if (fread(pixline, 1, line_size, theme_file) != line_size) bb_error_msg_and_die("bad PPM file '%s'", G.image_filename); + pixel = pixline; + src = (DATA *)(G.addr + j * G.scr_fix.line_length); for (i = 0; i < width; i++) { unsigned thispix; thispix = (((unsigned)pixel[0] << 8) & 0xf800) @@ -289,8 +288,7 @@ static void fb_drawimage(void) pixel += 3; } } - if (ENABLE_FEATURE_CLEAN_UP) - free(pixline); + free(pixline); fclose(theme_file); } @@ -301,7 +299,7 @@ static void fb_drawimage(void) */ static void init(const char *cfg_filename) { - static const char const param_names[] ALIGN1 = + static const char param_names[] ALIGN1 = "BAR_WIDTH\0" "BAR_HEIGHT\0" "BAR_LEFT\0" "BAR_TOP\0" "BAR_R\0" "BAR_G\0" "BAR_B\0" @@ -312,7 +310,7 @@ static void init(const char *cfg_filename) char *token[2]; parser_t *parser = config_open2(cfg_filename, xfopen_stdin); while (config_read(parser, token, 2, 2, "#=", - (PARSE_NORMAL | PARSE_MIN_DIE) & ~(PARSE_TRIM | PARSE_COLLAPSE))) { + (PARSE_NORMAL | PARSE_MIN_DIE) & ~(PARSE_TRIM | PARSE_COLLAPSE))) { unsigned val = xatoi_u(token[1]); int i = index_in_strings(param_names, token[0]); if (i < 0) diff --git a/miscutils/microcom.c b/miscutils/microcom.c index 9a7a41d53..0fb51d2e8 100644 --- a/miscutils/microcom.c +++ b/miscutils/microcom.c @@ -119,7 +119,7 @@ int microcom_main(int argc UNUSED_PARAM, char **argv) nfd = 2; // Not safe_poll: we want to exit on signal while (!bb_got_signal && poll(pfd, nfd, timeout) > 0) { - if (nfd > 1 && (pfd[1].revents & POLLIN)) { + if (nfd > 1 && pfd[1].revents) { char c; // read from stdin -> write to device if (safe_read(STDIN_FILENO, &c, 1) < 1) { @@ -143,7 +143,7 @@ int microcom_main(int argc UNUSED_PARAM, char **argv) safe_poll(pfd, 1, delay); skip_write: ; } - if (pfd[0].revents & POLLIN) { + if (pfd[0].revents) { #define iobuf bb_common_bufsiz1 ssize_t len; // read from device -> write to stdout diff --git a/networking/httpd.c b/networking/httpd.c index 227803abf..0a8322c88 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -1167,7 +1167,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post break; } - if (pfd[TO_CGI].revents & POLLOUT) { + if (pfd[TO_CGI].revents) { /* hdr_cnt > 0 here due to the way pfd[TO_CGI].events set */ /* Have data from peer and can write to CGI */ count = safe_write(toCgi_wr, hdr_ptr, hdr_cnt); @@ -1184,7 +1184,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post } } - if (pfd[0].revents & POLLIN) { + if (pfd[0].revents) { /* post_len > 0 && hdr_cnt == 0 here */ /* We expect data, prev data portion is eaten by CGI * and there *is* data to read from the peer @@ -1202,7 +1202,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post } } - if (pfd[FROM_CGI].revents & POLLIN) { + if (pfd[FROM_CGI].revents) { /* There is something to read from CGI */ char *rbuf = iobuf; diff --git a/networking/telnet.c b/networking/telnet.c index 013d959a1..6a84e9405 100644 --- a/networking/telnet.c +++ b/networking/telnet.c @@ -618,7 +618,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv) default: #ifdef USE_POLL - if (ufds[0].revents & POLLIN) + if (ufds[0].revents) #else if (FD_ISSET(STDIN_FILENO, &rfds)) #endif @@ -631,7 +631,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv) } #ifdef USE_POLL - if (ufds[1].revents & POLLIN) + if (ufds[1].revents) #else if (FD_ISSET(netfd, &rfds)) #endif diff --git a/networking/tftp.c b/networking/tftp.c index 8d6038853..b2c3c033c 100644 --- a/networking/tftp.c +++ b/networking/tftp.c @@ -308,7 +308,7 @@ static int tftp_protocol( if (!ENABLE_TFTP || our_lsa) { /* tftpd */ /* Open file (must be after changing user) */ - local_fd = open(local_file, open_mode); + local_fd = open(local_file, open_mode, 0666); if (local_fd < 0) { error_pkt_reason = ERR_NOFILE; strcpy((char*)error_pkt_str, "can't open file"); diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c index dc5d9ffe9..7fff56b4b 100644 --- a/networking/udhcp/dhcpd.c +++ b/networking/udhcp/dhcpd.c @@ -61,7 +61,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) logmode |= LOGMODE_SYSLOG; } #if ENABLE_FEATURE_UDHCP_PORT - if (opt & 4) { /* -P */ + if (opt & 8) { /* -P */ SERVER_PORT = xatou16(str_P); CLIENT_PORT = SERVER_PORT + 1; } diff --git a/networking/wget.c b/networking/wget.c index ad1770b58..0aab3c288 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -546,6 +546,8 @@ int wget_main(int argc UNUSED_PARAM, char **argv) "passive-ftp\0" No_argument "\xff" "header\0" Required_argument "\xfe" "post-data\0" Required_argument "\xfd" + /* Ignored (we don't do ssl) */ + "no-check-certificate\0" No_argument "\xfc" ; #endif @@ -590,6 +592,7 @@ int wget_main(int argc UNUSED_PARAM, char **argv) if (use_proxy) { proxy = getenv(target.is_ftp ? "ftp_proxy" : "http_proxy"); if (proxy && proxy[0]) { + server.user = NULL; parse_url(proxy, &server); } else { use_proxy = 0; diff --git a/scripts/defconfig b/scripts/defconfig index 3a3d08260..c2f6bd40e 100644 --- a/scripts/defconfig +++ b/scripts/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.15.0.svn -# Fri Aug 21 00:14:11 2009 +# Busybox version: 1.16.1 +# Sun Mar 28 20:00:00 2010 # CONFIG_HAVE_DOT_CONFIG=y @@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y # # CONFIG_DESKTOP is not set # CONFIG_EXTRA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set CONFIG_FEATURE_BUFFERS_USE_MALLOC=y # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set @@ -22,7 +24,7 @@ CONFIG_FEATURE_VERBOSE_USAGE=y CONFIG_FEATURE_COMPRESS_USAGE=y CONFIG_FEATURE_INSTALLER=y CONFIG_LOCALE_SUPPORT=y -# CONFIG_FEATURE_ASSUME_UNICODE is not set +CONFIG_FEATURE_ASSUME_UNICODE=y # CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set CONFIG_LONG_OPTS=y CONFIG_FEATURE_DEVPTS=y @@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS="" CONFIG_NO_DEBUG_LIB=y # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set -CONFIG_INCLUDE_SUSv2=y # # Installation Options @@ -120,10 +121,11 @@ CONFIG_FEATURE_CPIO_P=y # CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set CONFIG_GUNZIP=y CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y CONFIG_LZOP=y # CONFIG_LZOP_COMPR_HIGH is not set -# CONFIG_RPM2CPIO is not set -# CONFIG_RPM is not set +CONFIG_RPM2CPIO=y +CONFIG_RPM=y CONFIG_TAR=y CONFIG_FEATURE_TAR_CREATE=y CONFIG_FEATURE_TAR_AUTODETECT=y @@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y CONFIG_FEATURE_TAR_LONG_OPTIONS=y CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y CONFIG_UNCOMPRESS=y CONFIG_UNLZMA=y CONFIG_FEATURE_LZMA_FAST=y @@ -148,15 +151,19 @@ CONFIG_CATV=y CONFIG_CHGRP=y CONFIG_CHMOD=y CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y CONFIG_CHROOT=y CONFIG_CKSUM=y CONFIG_COMM=y CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y CONFIG_CUT=y CONFIG_DATE=y CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_FEATURE_DATE_COMPAT=y CONFIG_DD=y CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y CONFIG_FEATURE_DD_IBS_OBS=y CONFIG_DF=y CONFIG_FEATURE_DF_FANCY=y @@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y CONFIG_FEATURE_HUMAN_READABLE=y # -# Common options for md5sum, sha1sum +# Common options for md5sum, sha1sum, sha256sum, sha512sum # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y @@ -318,9 +325,8 @@ CONFIG_AWK=y CONFIG_FEATURE_AWK_LIBM=y CONFIG_CMP=y CONFIG_DIFF=y -CONFIG_FEATURE_DIFF_BINARY=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y CONFIG_FEATURE_DIFF_DIR=y -CONFIG_FEATURE_DIFF_MINIMAL=y CONFIG_ED=y CONFIG_PATCH=y CONFIG_SED=y @@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y # CONFIG_FEATURE_FIND_CONTEXT is not set +CONFIG_FEATURE_FIND_LINKS=y CONFIG_GREP=y CONFIG_FEATURE_GREP_EGREP_ALIAS=y CONFIG_FEATURE_GREP_FGREP_ALIAS=y @@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y # Options common to multiple modutils # # CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set @@ -467,8 +475,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" # # Linux System Utilities # -# CONFIG_ACPID is not set -# CONFIG_FEATURE_ACPID_COMPAT is not set +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y CONFIG_BLKID=y CONFIG_DMESG=y CONFIG_FEATURE_DMESG_PRETTY=y @@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y CONFIG_FINDFS=y CONFIG_FREERAMDISK=y CONFIG_FSCK_MINIX=y +CONFIG_MKFS_EXT2=y CONFIG_MKFS_MINIX=y # # Minix filesystem support # CONFIG_FEATURE_MINIX2=y +# CONFIG_MKFS_REISER is not set CONFIG_MKFS_VFAT=y CONFIG_GETOPT=y CONFIG_FEATURE_GETOPT_LONG=y @@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y CONFIG_IPCRM=y CONFIG_IPCS=y CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y CONFIG_MDEV=y CONFIG_FEATURE_MDEV_CONF=y CONFIG_FEATURE_MDEV_RENAME=y @@ -518,6 +530,7 @@ CONFIG_MORE=y CONFIG_FEATURE_USE_TERMIOS=y CONFIG_VOLUMEID=y CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_REISERFS=y CONFIG_FEATURE_VOLUMEID_FAT=y CONFIG_FEATURE_VOLUMEID_HFS=y @@ -595,11 +608,12 @@ CONFIG_DEVMEM=y CONFIG_EJECT=y CONFIG_FEATURE_EJECT_SCSI=y CONFIG_FBSPLASH=y -# CONFIG_FLASH_LOCK is not set -# CONFIG_FLASH_UNLOCK is not set -# CONFIG_FLASH_ERASEALL is not set +CONFIG_FLASHCP=y +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASH_ERASEALL=y CONFIG_IONICE=y -# CONFIG_INOTIFYD is not set +CONFIG_INOTIFYD=y CONFIG_LAST=y # CONFIG_FEATURE_LAST_SMALL is not set CONFIG_FEATURE_LAST_FANCY=y @@ -632,8 +646,8 @@ CONFIG_RUNLEVEL=y CONFIG_RX=y CONFIG_SETSID=y CONFIG_STRINGS=y -# CONFIG_TASKSET is not set -# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_TASKSET=y +CONFIG_FEATURE_TASKSET_FANCY=y CONFIG_TIME=y CONFIG_TIMEOUT=y CONFIG_TTYSIZE=y @@ -658,6 +672,7 @@ CONFIG_ETHER_WAKE=y CONFIG_FAKEIDENTD=y CONFIG_FTPD=y CONFIG_FEATURE_FTP_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y CONFIG_FTPGET=y CONFIG_FTPPUT=y CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y @@ -723,6 +738,8 @@ CONFIG_NETSTAT=y CONFIG_FEATURE_NETSTAT_WIDE=y CONFIG_FEATURE_NETSTAT_PRG=y CONFIG_NSLOOKUP=y +CONFIG_NTPD=y +CONFIG_FEATURE_NTPD_SERVER=y CONFIG_PING=y CONFIG_PING6=y CONFIG_FEATURE_FANCY_PING=y @@ -734,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y CONFIG_FEATURE_TELNET_AUTOLOGIN=y CONFIG_TELNETD=y CONFIG_FEATURE_TELNETD_STANDALONE=y +CONFIG_FEATURE_TELNETD_INETD_WAIT=y CONFIG_TFTP=y CONFIG_TFTPD=y CONFIG_FEATURE_TFTP_GET=y CONFIG_FEATURE_TFTP_PUT=y CONFIG_FEATURE_TFTP_BLOCKSIZE=y +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y # CONFIG_TFTP_DEBUG is not set CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y CONFIG_FEATURE_TRACEROUTE_VERBOSE=y # CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set @@ -814,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y CONFIG_FEATURE_TOP_DECIMALS=y CONFIG_FEATURE_TOP_SMP_PROCESS=y CONFIG_FEATURE_TOPMEM=y +CONFIG_FEATURE_SHOW_THREADS=y CONFIG_UPTIME=y CONFIG_WATCH=y @@ -878,6 +899,7 @@ CONFIG_HUSH_CASE=y CONFIG_HUSH_FUNCTIONS=y CONFIG_HUSH_LOCAL=y CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_RANDOM_SUPPORT=y # CONFIG_LASH is not set CONFIG_MSH=y CONFIG_SH_MATH_SUPPORT=y diff --git a/shell/ash.c b/shell/ash.c index 798d15a4c..34f70ecfc 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -43,8 +43,6 @@ #endif #include "busybox.h" /* for applet_names */ -//TODO: pull in some .h and find out do we have SINGLE_APPLET_MAIN? -//#include "applet_tables.h" doesn't work #include #include #include @@ -58,12 +56,15 @@ # define CLEAR_RANDOM_T(rnd) ((void)0) #endif -#if defined SINGLE_APPLET_MAIN +#define SKIP_definitions 1 +#include "applet_tables.h" +#undef SKIP_definitions +#if NUM_APPLETS == 1 /* STANDALONE does not make sense, and won't compile */ # undef CONFIG_FEATURE_SH_STANDALONE # undef ENABLE_FEATURE_SH_STANDALONE # undef IF_FEATURE_SH_STANDALONE -# undef IF_NOT_FEATURE_SH_STANDALONE(...) +# undef IF_NOT_FEATURE_SH_STANDALONE # define ENABLE_FEATURE_SH_STANDALONE 0 # define IF_FEATURE_SH_STANDALONE(...) # define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__ @@ -4539,7 +4540,7 @@ forkchild(struct job *jp, union node *n, int mode) if (mode == FORK_NOJOB /* is it `xxx` ? */ && n && n->type == NCMD /* is it single cmd? */ /* && n->ncmd.args->type == NARG - always true? */ - && strcmp(n->ncmd.args->narg.text, "trap") == 0 + && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "trap") == 0 && n->ncmd.args->narg.next == NULL /* "trap" with no arguments */ /* && n->ncmd.args->narg.backquote == NULL - do we need to check this? */ ) { @@ -4627,7 +4628,7 @@ forkchild(struct job *jp, union node *n, int mode) } #if JOBS if (n && n->type == NCMD - && strcmp(n->ncmd.args->narg.text, "jobs") == 0 + && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "jobs") == 0 ) { TRACE(("Job hack\n")); /* "jobs": we do not want to clear job list for it, diff --git a/shell/ash_test/ash-misc/nulltick1.right b/shell/ash_test/ash-misc/nulltick1.right new file mode 100644 index 000000000..f90b8209e --- /dev/null +++ b/shell/ash_test/ash-misc/nulltick1.right @@ -0,0 +1,3 @@ +Test 1 +Test 2 +Done diff --git a/shell/ash_test/ash-misc/nulltick1.tests b/shell/ash_test/ash-misc/nulltick1.tests new file mode 100755 index 000000000..f81923de3 --- /dev/null +++ b/shell/ash_test/ash-misc/nulltick1.tests @@ -0,0 +1,3 @@ +echo Test ` ` 1 +echo Test `" should work, + * therefore we should use BB_EXECVP, not execvp */ + BB_EXECVP(argv[0], argv); bb_perror_msg("can't execute '%s'", argv[0]); _exit(127); /* bash compat */ } diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 754fa44b3..8338d6be8 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -698,7 +698,7 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv) if (!(opts & OPT_nofork)) { bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv); } - umask(0); + //umask(0); - why?? write_pidfile("/var/run/syslogd.pid"); do_syslogd(); /* return EXIT_SUCCESS; */ diff --git a/testsuite/cpio.tests b/testsuite/cpio.tests index 75f085873..e53ade925 100755 --- a/testsuite/cpio.tests +++ b/testsuite/cpio.tests @@ -7,7 +7,8 @@ # ls -ln shows date. Need to remove that, it's variable. # sed: coalesce spaces # cut: remove date -FILTER_LS="sed 's/ */ /g' | cut -d' ' -f 1-5,9-" +# grep: remove "total NNN" lines +FILTER_LS="sed 's/ */ /g' | cut -d' ' -f 1-5,9- | grep -v '^total '" # newc cpio archive of directory cpio.testdir with empty x and y hardlinks @@ -36,7 +37,6 @@ ls -ln cpio.testdir | $FILTER_LS" \ "\ 1 blocks 0 -total 0 -rw-r--r-- 2 $user $group 0 x -rw-r--r-- 2 $user $group 0 y " \ @@ -75,7 +75,6 @@ ls -ln cpio.testdir2/cpio.testdir | $FILTER_LS" \ "\ 2 blocks 0 -total 8 -rw-r--r-- 2 $user $group 0 empty -rw-r--r-- 2 $user $group 0 empty1 -rw-r--r-- 2 $user $group 2 nonempty diff --git a/util-linux/script.c b/util-linux/script.c index 37213eec8..d9a62fbfe 100644 --- a/util-linux/script.c +++ b/util-linux/script.c @@ -119,7 +119,7 @@ int script_main(int argc UNUSED_PARAM, char **argv) * for example, try "script -c true" */ break; } - if (pfd[0].revents & POLLIN) { + if (pfd[0].revents) { errno = 0; count = safe_read(pty, buf, sizeof(buf)); if (count <= 0 && errno != EAGAIN) { @@ -143,7 +143,7 @@ int script_main(int argc UNUSED_PARAM, char **argv) } } } - if (pfd[1].revents & POLLIN) { + if (pfd[1].revents) { count = safe_read(STDIN_FILENO, buf, sizeof(buf)); if (count <= 0) { /* err/eof from stdin: don't read stdin anymore */ diff --git a/util-linux/volume_id/linux_swap.c b/util-linux/volume_id/linux_swap.c index 1b5488f9e..574354611 100644 --- a/util-linux/volume_id/linux_swap.c +++ b/util-linux/volume_id/linux_swap.c @@ -52,7 +52,11 @@ int FAST_FUNC volume_id_probe_linux_swap(struct volume_id *id /*,uint64_t off*/) goto found; } - if (memcmp(buf, "SWAPSPACE2", 10) == 0) { + if (memcmp(buf, "SWAPSPACE2", 10) == 0 + || memcmp(buf, "S1SUSPEND", 9) == 0 + || memcmp(buf, "S2SUSPEND", 9) == 0 + || memcmp(buf, "ULSUSPEND", 9) == 0 + ) { sw = volume_id_get_buffer(id, off, sizeof(struct swap_header_v1_2)); if (sw == NULL) return -1; -- 2.25.1