aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-09-27 23:31:08 +0000
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-09-27 23:31:08 +0000
commit6f51fea61200dc423e34bbdefa86b7101a221a35 (patch)
treec85ed57fad4e98e833f16d5657efce53acc79895
parenta87fd79356d319d89ac18a57cd1d494e60865d1e (diff)
downloadbusybox-w32-6f51fea61200dc423e34bbdefa86b7101a221a35.tar.gz
busybox-w32-6f51fea61200dc423e34bbdefa86b7101a221a35.tar.bz2
busybox-w32-6f51fea61200dc423e34bbdefa86b7101a221a35.zip
usage.h: remove ugly tricks. We have USE_FEATURE_xxx now.
Few bugs are now exposed... git-svn-id: svn://busybox.net/trunk/busybox@16242 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--archival/ar.c3
-rw-r--r--archival/bunzip2.c9
-rw-r--r--coreutils/seq.c10
-rw-r--r--include/usage.h343
-rw-r--r--init/init.c2
5 files changed, 88 insertions, 279 deletions
diff --git a/archival/ar.c b/archival/ar.c
index 09d0cd7e4..e10bf7c47 100644
--- a/archival/ar.c
+++ b/archival/ar.c
@@ -26,7 +26,8 @@ static void header_verbose_list_ar(const file_header_t *file_header)
26 mtime[16] = ' '; 26 mtime[16] = ' ';
27 memmove(&mtime[17], &mtime[20], 4); 27 memmove(&mtime[17], &mtime[20], 4);
28 mtime[21] = '\0'; 28 mtime[21] = '\0';
29 printf("%s %d/%d%7d %s %s\n", &mode[1], file_header->uid, file_header->gid, (int) file_header->size, &mtime[4], file_header->name); 29 printf("%s %d/%d%7d %s %s\n", &mode[1], file_header->uid, file_header->gid,
30 (int) file_header->size, &mtime[4], file_header->name);
30} 31}
31 32
32#define AR_CTX_PRINT 0x01 33#define AR_CTX_PRINT 0x01
diff --git a/archival/bunzip2.c b/archival/bunzip2.c
index 9810e0290..62f28582c 100644
--- a/archival/bunzip2.c
+++ b/archival/bunzip2.c
@@ -36,7 +36,8 @@ int bunzip2_main(int argc, char **argv)
36 36
37 /* Check that the input is sane. */ 37 /* Check that the input is sane. */
38 if (isatty(src_fd) && (opt & BUNZIP2_OPT_FORCE) == 0) { 38 if (isatty(src_fd) && (opt & BUNZIP2_OPT_FORCE) == 0) {
39 bb_error_msg_and_die("Compressed data not read from terminal. Use -f to force it."); 39 bb_error_msg_and_die("Compressed data not read from terminal. "
40 "Use -f to force it.");
40 } 41 }
41 42
42 if (filename) { 43 if (filename) {
@@ -45,7 +46,7 @@ int bunzip2_main(int argc, char **argv)
45 * strlen may be less than 4 */ 46 * strlen may be less than 4 */
46 char *extension = strrchr(filename, '.'); 47 char *extension = strrchr(filename, '.');
47 if (!extension || strcmp(extension, ".bz2") != 0) { 48 if (!extension || strcmp(extension, ".bz2") != 0) {
48 bb_error_msg_and_die("Invalid extension"); 49 bb_error_msg_and_die("invalid extension");
49 } 50 }
50 xstat(filename, &stat_buf); 51 xstat(filename, &stat_buf);
51 *extension = '\0'; 52 *extension = '\0';
@@ -53,10 +54,10 @@ int bunzip2_main(int argc, char **argv)
53 stat_buf.st_mode); 54 stat_buf.st_mode);
54 } else dst_fd = STDOUT_FILENO; 55 } else dst_fd = STDOUT_FILENO;
55 status = uncompressStream(src_fd, dst_fd); 56 status = uncompressStream(src_fd, dst_fd);
56 if(filename) { 57 if (filename) {
57 if (!status) filename[strlen(filename)] = '.'; 58 if (!status) filename[strlen(filename)] = '.';
58 if (unlink(filename) < 0) { 59 if (unlink(filename) < 0) {
59 bb_error_msg_and_die("Couldn't remove %s", filename); 60 bb_error_msg_and_die("cannot remove %s", filename);
60 } 61 }
61 } 62 }
62 63
diff --git a/coreutils/seq.c b/coreutils/seq.c
index 79fafbc8b..f2b4706f2 100644
--- a/coreutils/seq.c
+++ b/coreutils/seq.c
@@ -18,11 +18,11 @@ int seq_main(int argc, char **argv)
18 first = increment = 1; 18 first = increment = 1;
19 switch (argc) { 19 switch (argc) {
20 case 4: 20 case 4:
21 increment=atof(argv[2]); 21 increment = atof(argv[2]);
22 case 3: 22 case 3:
23 first=atof(argv[1]); 23 first = atof(argv[1]);
24 case 2: 24 case 2:
25 last=atof(argv[argc -1]); 25 last = atof(argv[argc-1]);
26 break; 26 break;
27 default: 27 default:
28 bb_show_usage(); 28 bb_show_usage();
@@ -30,8 +30,8 @@ int seq_main(int argc, char **argv)
30 30
31 /* You should note that this is pos-5.0.91 semantics, -- FK. */ 31 /* You should note that this is pos-5.0.91 semantics, -- FK. */
32 for (i = first; 32 for (i = first;
33 (increment > 0 && i <= last) || (increment < 0 && i >=last); 33 (increment > 0 && i <= last) || (increment < 0 && i >=last);
34 i += increment) 34 i += increment)
35 { 35 {
36 printf("%g\n", i); 36 printf("%g\n", i);
37 } 37 }
diff --git a/include/usage.h b/include/usage.h
index 36739c712..db608003d 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -1129,18 +1129,12 @@ USE_FEATURE_DATE_ISOFMT( \
1129 "\t-u\tthe hardware clock is kept in coordinated universal time\n" \ 1129 "\t-u\tthe hardware clock is kept in coordinated universal time\n" \
1130 "\t-l\tthe hardware clock is kept in local time" 1130 "\t-l\tthe hardware clock is kept in local time"
1131 1131
1132#ifdef CONFIG_SELINUX
1133# define USAGE_SELINUX(a) a
1134#else
1135# define USAGE_SELINUX(a)
1136#endif
1137
1138#define id_trivial_usage \ 1132#define id_trivial_usage \
1139 "[OPTIONS]... [USERNAME]" 1133 "[OPTIONS]... [USERNAME]"
1140#define id_full_usage \ 1134#define id_full_usage \
1141 "Print information for USERNAME or the current user\n\n" \ 1135 "Print information for USERNAME or the current user\n\n" \
1142 "Options:\n" \ 1136 "Options:\n" \
1143 USAGE_SELINUX("\t-c\tprints only the security context\n") \ 1137 USE_SELINUX("\t-c\tprints only the security context\n") \
1144 "\t-g\tprints only the group ID\n" \ 1138 "\t-g\tprints only the group ID\n" \
1145 "\t-u\tprints only the user ID\n" \ 1139 "\t-u\tprints only the user ID\n" \
1146 "\t-n\tprint a name instead of a number\n" \ 1140 "\t-n\tprint a name instead of a number\n" \
@@ -1149,47 +1143,21 @@ USE_FEATURE_DATE_ISOFMT( \
1149 "$ id\n" \ 1143 "$ id\n" \
1150 "uid=1000(andersen) gid=1000(andersen)\n" 1144 "uid=1000(andersen) gid=1000(andersen)\n"
1151 1145
1152#ifdef CONFIG_FEATURE_IFCONFIG_SLIP
1153# define USAGE_SIOCSKEEPALIVE(a) a
1154#else
1155# define USAGE_SIOCSKEEPALIVE(a)
1156#endif
1157#ifdef CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
1158# define USAGE_IFCONFIG_MII(a) a
1159#else
1160# define USAGE_IFCONFIG_MII(a)
1161#endif
1162#ifdef CONFIG_FEATURE_IFCONFIG_HW
1163# define USAGE_IFCONFIG_HW(a) a
1164#else
1165# define USAGE_IFCONFIG_HW(a)
1166#endif
1167#ifdef CONFIG_FEATURE_IFCONFIG_STATUS
1168# define USAGE_IFCONFIG_OPT_A(a) a
1169#else
1170# define USAGE_IFCONFIG_OPT_A(a)
1171#endif
1172#ifdef CONFIG_FEATURE_IPV6
1173# define USAGE_IPV6(a) a
1174#else
1175# define USAGE_IPV6(a)
1176#endif
1177
1178#define ifconfig_trivial_usage \ 1146#define ifconfig_trivial_usage \
1179 USAGE_IFCONFIG_OPT_A("[-a]") " <interface> [<address>]" 1147 USE_FEATURE_IFCONFIG_STATUS("[-a]") " <interface> [<address>]"
1180#define ifconfig_full_usage \ 1148#define ifconfig_full_usage \
1181 "configure a network interface\n\n" \ 1149 "configure a network interface\n\n" \
1182 "Options:\n" \ 1150 "Options:\n" \
1183 USAGE_IPV6("\t[add <address>[/<prefixlen>]]\n") \ 1151 USE_FEATURE_IPV6("\t[add <address>[/<prefixlen>]]\n") \
1184 USAGE_IPV6("\t[del <address>[/<prefixlen>]]\n") \ 1152 USE_FEATURE_IPV6("\t[del <address>[/<prefixlen>]]\n") \
1185 "\t[[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \ 1153 "\t[[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \
1186 "\t[netmask <address>] [dstaddr <address>]\n" \ 1154 "\t[netmask <address>] [dstaddr <address>]\n" \
1187 USAGE_SIOCSKEEPALIVE("\t[outfill <NN>] [keepalive <NN>]\n") \ 1155 USE_FEATURE_IFCONFIG_SLIP("\t[outfill <NN>] [keepalive <NN>]\n") \
1188 "\t" USAGE_IFCONFIG_HW("[hw ether <address>] ") \ 1156 "\t" USE_FEATURE_IFCONFIG_HW("[hw ether <address>] ") \
1189 "[metric <NN>] [mtu <NN>]\n" \ 1157 "[metric <NN>] [mtu <NN>]\n" \
1190 "\t[[-]trailers] [[-]arp] [[-]allmulti]\n" \ 1158 "\t[[-]trailers] [[-]arp] [[-]allmulti]\n" \
1191 "\t[multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \ 1159 "\t[multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \
1192 USAGE_IFCONFIG_MII("\t[mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \ 1160 USE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ("\t[mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \
1193 "\t[up|down] ..." 1161 "\t[up|down] ..."
1194 1162
1195#define ifup_trivial_usage \ 1163#define ifup_trivial_usage \
@@ -1360,11 +1328,6 @@ USE_FEATURE_DATE_ISOFMT( \
1360" ::shutdown:/bin/umount -a -r\n" \ 1328" ::shutdown:/bin/umount -a -r\n" \
1361" ::shutdown:/sbin/swapoff -a\n" 1329" ::shutdown:/sbin/swapoff -a\n"
1362 1330
1363#ifdef CONFIG_FEATURE_INSMOD_LOAD_MAP
1364# define USAGE_INSMOD_MAP(a) a
1365#else
1366# define USAGE_INSMOD_MAP(a)
1367#endif
1368#define insmod_trivial_usage \ 1331#define insmod_trivial_usage \
1369 "[OPTION]... MODULE [symbol=value]..." 1332 "[OPTION]... MODULE [symbol=value]..."
1370#define insmod_full_usage \ 1333#define insmod_full_usage \
@@ -1375,7 +1338,7 @@ USE_FEATURE_DATE_ISOFMT( \
1375 "\t-v\tverbose output\n" \ 1338 "\t-v\tverbose output\n" \
1376 "\t-q\tquiet output\n" \ 1339 "\t-q\tquiet output\n" \
1377 "\t-L\tLock to prevent simultaneous loads of a module\n" \ 1340 "\t-L\tLock to prevent simultaneous loads of a module\n" \
1378 USAGE_INSMOD_MAP("\t-m\tOutput load map to stdout\n") \ 1341 USE_FEATURE_INSMOD_LOAD_MAP("\t-m\tOutput load map to stdout\n") \
1379 "\t-o NAME\tSet internal module name to NAME\n" \ 1342 "\t-o NAME\tSet internal module name to NAME\n" \
1380 "\t-x\tdo not export externs" 1343 "\t-x\tdo not export externs"
1381 1344
@@ -1411,11 +1374,6 @@ USE_FEATURE_DATE_ISOFMT( \
1411 "\t\t\t[ label STRING ] [ scope SCOPE-ID ]\n" \ 1374 "\t\t\t[ label STRING ] [ scope SCOPE-ID ]\n" \
1412 "\t\t\tSCOPE-ID := [ host | link | global | NUMBER ]" 1375 "\t\t\tSCOPE-ID := [ host | link | global | NUMBER ]"
1413 1376
1414#ifdef CONFIG_FEATURE_IPCALC_FANCY
1415# define XUSAGE_IPCALC_FANCY(a) a
1416#else
1417# define XUSAGE_IPCALC_FANCY(a)
1418#endif
1419#define ipcalc_trivial_usage \ 1377#define ipcalc_trivial_usage \
1420 "[OPTION]... <ADDRESS>[[/]<NETMASK>] [NETMASK]" 1378 "[OPTION]... <ADDRESS>[[/]<NETMASK>] [NETMASK]"
1421#define ipcalc_full_usage \ 1379#define ipcalc_full_usage \
@@ -1424,7 +1382,7 @@ USE_FEATURE_DATE_ISOFMT( \
1424 "\t-b\t--broadcast\tDisplay calculated broadcast address\n" \ 1382 "\t-b\t--broadcast\tDisplay calculated broadcast address\n" \
1425 "\t-n\t--network\tDisplay calculated network address\n" \ 1383 "\t-n\t--network\tDisplay calculated network address\n" \
1426 "\t-m\t--netmask\tDisplay default netmask for IP" \ 1384 "\t-m\t--netmask\tDisplay default netmask for IP" \
1427 XUSAGE_IPCALC_FANCY( \ 1385 USE_FEATURE_IPCALC_FANCY( \
1428 "\n\t-p\t--prefix\tDisplay the prefix for IP/NETMASK\n" \ 1386 "\n\t-p\t--prefix\tDisplay the prefix for IP/NETMASK\n" \
1429 "\t-h\t--hostname\tDisplay first resolved host name\n" \ 1387 "\t-h\t--hostname\tDisplay first resolved host name\n" \
1430 "\t-s\t--silent\tDon't ever display error messages") 1388 "\t-s\t--silent\tDon't ever display error messages")
@@ -1637,44 +1595,15 @@ USE_FEATURE_DATE_ISOFMT( \
1637 "Two arguments (losetup /dev/loop1 file.img) create a new association,\n" \ 1595 "Two arguments (losetup /dev/loop1 file.img) create a new association,\n" \
1638 "with an optional offset (-o 12345). Encryption is not yet supported.\n\n" 1596 "with an optional offset (-o 12345). Encryption is not yet supported.\n\n"
1639 1597
1640#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
1641# define USAGE_LS_TIMESTAMPS(a) a
1642#else
1643# define USAGE_LS_TIMESTAMPS(a)
1644#endif
1645#ifdef CONFIG_FEATURE_LS_FILETYPES
1646# define USAGE_LS_FILETYPES(a) a
1647#else
1648# define USAGE_LS_FILETYPES(a)
1649#endif
1650#ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
1651# define USAGE_LS_FOLLOWLINKS(a) a
1652#else
1653# define USAGE_LS_FOLLOWLINKS(a)
1654#endif
1655#ifdef CONFIG_FEATURE_LS_RECURSIVE
1656# define USAGE_LS_RECURSIVE(a) a
1657#else
1658# define USAGE_LS_RECURSIVE(a)
1659#endif
1660#ifdef CONFIG_FEATURE_LS_SORTFILES
1661# define USAGE_LS_SORTFILES(a) a
1662#else
1663# define USAGE_LS_SORTFILES(a)
1664#endif
1665#ifdef CONFIG_FEATURE_AUTOWIDTH
1666# define USAGE_AUTOWIDTH(a) a
1667#else
1668# define USAGE_AUTOWIDTH(a)
1669#endif
1670#ifdef CONFIG_FEATURE_LS_COLOR
1671 #define USAGE_LS_COLOR(a) a
1672#else
1673 #define USAGE_LS_COLOR(a)
1674#endif
1675
1676#define ls_trivial_usage \ 1598#define ls_trivial_usage \
1677 "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USE_FEATURE_HUMAN_READABLE("h") "k" USAGE_SELINUX("K") "] [filenames...]" 1599 "[-1Aa" USE_FEATURE_LS_TIMESTAMPS("c") "Cd" \
1600 USE_FEATURE_LS_TIMESTAMPS("e") USE_FEATURE_LS_FILETYPES("F") "iln" \
1601 USE_FEATURE_LS_FILETYPES("p") USE_FEATURE_LS_FOLLOWLINKS("L") \
1602 USE_FEATURE_LS_RECURSIVE("R") USE_FEATURE_LS_SORTFILES("rS") "s" \
1603 USE_FEATURE_AUTOWIDTH("T") USE_FEATURE_LS_TIMESTAMPS("tu") \
1604 USE_FEATURE_LS_SORTFILES("v") USE_FEATURE_AUTOWIDTH("w") "x" \
1605 USE_FEATURE_LS_SORTFILES("X") USE_FEATURE_HUMAN_READABLE("h") "k" \
1606 USE_SELINUX("K") "] [filenames...]"
1678#define ls_full_usage \ 1607#define ls_full_usage \
1679 "List directory contents\n\n" \ 1608 "List directory contents\n\n" \
1680 "Options:\n" \ 1609 "Options:\n" \
@@ -1682,31 +1611,31 @@ USE_FEATURE_DATE_ISOFMT( \
1682 "\t-A\tdo not list implied . and ..\n" \ 1611 "\t-A\tdo not list implied . and ..\n" \
1683 "\t-a\tdo not hide entries starting with .\n" \ 1612 "\t-a\tdo not hide entries starting with .\n" \
1684 "\t-C\tlist entries by columns\n" \ 1613 "\t-C\tlist entries by columns\n" \
1685 USAGE_LS_TIMESTAMPS("\t-c\twith -l: show ctime\n") \ 1614 USE_FEATURE_LS_TIMESTAMPS("\t-c\twith -l: show ctime\n") \
1686 USAGE_LS_COLOR("\t--color[={always,never,auto}]\tto control coloring\n") \ 1615 USE_FEATURE_LS_COLOR("\t--color[={always,never,auto}]\tto control coloring\n") \
1687 "\t-d\tlist directory entries instead of contents\n" \ 1616 "\t-d\tlist directory entries instead of contents\n" \
1688 USAGE_LS_TIMESTAMPS("\t-e\tlist both full date and full time\n") \ 1617 USE_FEATURE_LS_TIMESTAMPS("\t-e\tlist both full date and full time\n") \
1689 USAGE_LS_FILETYPES("\t-F\tappend indicator (one of */=@|) to entries\n") \ 1618 USE_FEATURE_LS_FILETYPES("\t-F\tappend indicator (one of */=@|) to entries\n") \
1690 "\t-i\tlist the i-node for each file\n" \ 1619 "\t-i\tlist the i-node for each file\n" \
1691 "\t-l\tuse a long listing format\n" \ 1620 "\t-l\tuse a long listing format\n" \
1692 "\t-n\tlist numeric UIDs and GIDs instead of names\n" \ 1621 "\t-n\tlist numeric UIDs and GIDs instead of names\n" \
1693 USAGE_LS_FILETYPES("\t-p\tappend indicator (one of /=@|) to entries\n") \ 1622 USE_FEATURE_LS_FILETYPES("\t-p\tappend indicator (one of /=@|) to entries\n") \
1694 USAGE_LS_FOLLOWLINKS("\t-L\tlist entries pointed to by symbolic links\n") \ 1623 USE_FEATURE_LS_FOLLOWLINKS("\t-L\tlist entries pointed to by symbolic links\n") \
1695 USAGE_LS_RECURSIVE("\t-R\tlist subdirectories recursively\n") \ 1624 USE_FEATURE_LS_RECURSIVE("\t-R\tlist subdirectories recursively\n") \
1696 USAGE_LS_SORTFILES("\t-r\tsort the listing in reverse order\n") \ 1625 USE_FEATURE_LS_SORTFILES("\t-r\tsort the listing in reverse order\n") \
1697 USAGE_LS_SORTFILES("\t-S\tsort the listing by file size\n") \ 1626 USE_FEATURE_LS_SORTFILES("\t-S\tsort the listing by file size\n") \
1698 "\t-s\tlist the size of each file, in blocks\n" \ 1627 "\t-s\tlist the size of each file, in blocks\n" \
1699 USAGE_AUTOWIDTH("\t-T NUM\tassume Tabstop every NUM columns\n") \ 1628 USE_FEATURE_AUTOWIDTH("\t-T NUM\tassume Tabstop every NUM columns\n") \
1700 USAGE_LS_TIMESTAMPS("\t-t\twith -l: show modification time\n") \ 1629 USE_FEATURE_LS_TIMESTAMPS("\t-t\twith -l: show modification time\n") \
1701 USAGE_LS_TIMESTAMPS("\t-u\twith -l: show access time\n") \ 1630 USE_FEATURE_LS_TIMESTAMPS("\t-u\twith -l: show access time\n") \
1702 USAGE_LS_SORTFILES("\t-v\tsort the listing by version\n") \ 1631 USE_FEATURE_LS_SORTFILES("\t-v\tsort the listing by version\n") \
1703 USAGE_AUTOWIDTH("\t-w NUM\tassume the terminal is NUM columns wide\n") \ 1632 USE_FEATURE_AUTOWIDTH("\t-w NUM\tassume the terminal is NUM columns wide\n") \
1704 "\t-x\tlist entries by lines instead of by columns\n" \ 1633 "\t-x\tlist entries by lines instead of by columns\n" \
1705 USAGE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \ 1634 USE_FEATURE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \
1706 USE_FEATURE_HUMAN_READABLE( \ 1635 USE_FEATURE_HUMAN_READABLE( \
1707 "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n") \ 1636 "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n") \
1708 USAGE_SELINUX("\t-k\tprint security context\n") \ 1637 USE_SELINUX("\t-k\tprint security context\n") \
1709 USAGE_SELINUX("\t-K\tprint security context in long format\n") 1638 USE_SELINUX("\t-K\tprint security context in long format\n")
1710 1639
1711#define lsattr_trivial_usage \ 1640#define lsattr_trivial_usage \
1712 "[-Radlv] [files...]" 1641 "[-Radlv] [files...]"
@@ -1780,20 +1709,14 @@ USE_FEATURE_DATE_ISOFMT( \
1780 "/dev/hda[0-15]\n" 1709 "/dev/hda[0-15]\n"
1781#endif 1710#endif
1782 1711
1783#ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
1784#define USAGE_MD5_SHA1_SUM_CHECK(a) a
1785#else
1786#define USAGE_MD5_SHA1_SUM_CHECK(a)
1787#endif
1788
1789#define md5sum_trivial_usage \ 1712#define md5sum_trivial_usage \
1790 "[OPTION] [FILEs...]" \ 1713 "[OPTION] [FILEs...]" \
1791 USAGE_MD5_SHA1_SUM_CHECK("\n or: md5sum [OPTION] -c [FILE]") 1714 USE_FEATURE_MD5_SHA1_SUM_CHECK("\n or: md5sum [OPTION] -c [FILE]")
1792#define md5sum_full_usage \ 1715#define md5sum_full_usage \
1793 "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums.\n\n" \ 1716 "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums.\n\n" \
1794 "Options:\n" \ 1717 "Options:\n" \
1795 "With no FILE, or when FILE is -, read standard input." \ 1718 "With no FILE, or when FILE is -, read standard input." \
1796 USAGE_MD5_SHA1_SUM_CHECK("\n\n" \ 1719 USE_FEATURE_MD5_SHA1_SUM_CHECK("\n\n" \
1797 "\t-c\tcheck MD5 sums against given list\n" \ 1720 "\t-c\tcheck MD5 sums against given list\n" \
1798 "\nThe following two options are useful only when verifying checksums:\n" \ 1721 "\nThe following two options are useful only when verifying checksums:\n" \
1799 "\t-s\tdon't output anything, status code shows success\n" \ 1722 "\t-s\tdon't output anything, status code shows success\n" \
@@ -2216,11 +2139,6 @@ USE_FEATURE_MDEV_CONFIG( \
2216#define openvt_example_usage \ 2139#define openvt_example_usage \
2217 "openvt 2 /bin/ash\n" 2140 "openvt 2 /bin/ash\n"
2218 2141
2219#ifdef CONFIG_FEATURE_SHA1_PASSWORDS
2220# define PASSWORD_ALG_TYPES(a) a
2221#else
2222# define PASSWORD_ALG_TYPES(a)
2223#endif
2224#define passwd_trivial_usage \ 2142#define passwd_trivial_usage \
2225 "[OPTION] [name]" 2143 "[OPTION] [name]"
2226#define passwd_full_usage \ 2144#define passwd_full_usage \
@@ -2229,8 +2147,8 @@ USE_FEATURE_MDEV_CONFIG( \
2229 "Options:\n" \ 2147 "Options:\n" \
2230 "\t-a\tDefine which algorithm shall be used for the password\n" \ 2148 "\t-a\tDefine which algorithm shall be used for the password\n" \
2231 "\t\t\t(Choices: des, md5" \ 2149 "\t\t\t(Choices: des, md5" \
2232 PASSWORD_ALG_TYPES(", sha1") \ 2150 USE_FEATURE_SHA1_PASSWORDS(", sha1") ")\n" \
2233 ")\n\t-d\tDelete the password for the specified user account\n" \ 2151 "\t-d\tDelete the password for the specified user account\n" \
2234 "\t-l\tLocks (disables) the specified user account\n" \ 2152 "\t-l\tLocks (disables) the specified user account\n" \
2235 "\t-u\tUnlocks (re-enables) the specified user account" 2153 "\t-u\tUnlocks (re-enables) the specified user account"
2236 2154
@@ -2368,7 +2286,7 @@ USE_FEATURE_MDEV_CONFIG( \
2368#define ps_full_usage \ 2286#define ps_full_usage \
2369 "Report process status\n" \ 2287 "Report process status\n" \
2370 USAGE_PS \ 2288 USAGE_PS \
2371 USAGE_SELINUX("\n\t-c\tshow SE Linux context") \ 2289 USE_SELINUX("\n\t-c\tshow SE Linux context") \
2372 USAGE_PS_WIDE("\n\tw\twide output") 2290 USAGE_PS_WIDE("\n\tw\twide output")
2373 2291
2374#define ps_example_usage \ 2292#define ps_example_usage \
@@ -2406,17 +2324,11 @@ USE_FEATURE_MDEV_CONFIG( \
2406 "Preloads FILE(s) in RAM cache so that subsequent reads for those" \ 2324 "Preloads FILE(s) in RAM cache so that subsequent reads for those" \
2407 "files do not block on disk I/O." 2325 "files do not block on disk I/O."
2408 2326
2409#ifdef CONFIG_FEATURE_READLINK_FOLLOW
2410#define USAGE_READLINK_FOLLOW(a) a
2411#else
2412#define USAGE_READLINK_FOLLOW(a)
2413#endif
2414
2415#define readlink_trivial_usage \ 2327#define readlink_trivial_usage \
2416 USAGE_READLINK_FOLLOW("[-f] ") "FILE" 2328 USE_FEATURE_READLINK_FOLLOW("[-f] ") "FILE"
2417#define readlink_full_usage \ 2329#define readlink_full_usage \
2418 "Displays the value of a symbolic link." \ 2330 "Displays the value of a symbolic link." \
2419 USAGE_READLINK_FOLLOW("\n\nOptions:\n" \ 2331 USE_FEATURE_READLINK_FOLLOW("\n\nOptions:\n" \
2420 "\t-f\tcanonicalize by following all symlinks") 2332 "\t-f\tcanonicalize by following all symlinks")
2421 2333
2422#define readprofile_trivial_usage \ 2334#define readprofile_trivial_usage \
@@ -2491,13 +2403,6 @@ USE_FEATURE_MDEV_CONFIG( \
2491#define rmmod_example_usage \ 2403#define rmmod_example_usage \
2492 "$ rmmod tulip\n" 2404 "$ rmmod tulip\n"
2493 2405
2494#ifdef CONFIG_FEATURE_IPV6
2495# define USAGE_ROUTE_IPV6(a) a
2496#else
2497# define USAGE_ROUTE_IPV6(a) "\t"
2498#endif
2499
2500
2501#define route_trivial_usage \ 2406#define route_trivial_usage \
2502 "[{add|del|delete}]" 2407 "[{add|del|delete}]"
2503#define route_full_usage \ 2408#define route_full_usage \
@@ -2505,7 +2410,7 @@ USE_FEATURE_MDEV_CONFIG( \
2505 "Options:\n" \ 2410 "Options:\n" \
2506 "\t-n\t\tDont resolve names\n" \ 2411 "\t-n\t\tDont resolve names\n" \
2507 "\t-e\t\tDisplay other/more information\n" \ 2412 "\t-e\t\tDisplay other/more information\n" \
2508 "\t-A inet" USAGE_ROUTE_IPV6("{6}") "\tSelect address family" 2413 "\t-A inet" USE_FEATURE_ROUTE_IPV6("{6}") "\tSelect address family"
2509 2414
2510#define rpm_trivial_usage \ 2415#define rpm_trivial_usage \
2511 "-i -q[ildc]p package.rpm" 2416 "-i -q[ildc]p package.rpm"
@@ -2630,36 +2535,28 @@ USE_FEATURE_MDEV_CONFIG( \
2630 2535
2631#define sha1sum_trivial_usage \ 2536#define sha1sum_trivial_usage \
2632 "[OPTION] [FILEs...]" \ 2537 "[OPTION] [FILEs...]" \
2633 USAGE_MD5_SHA1_SUM_CHECK("\n or: sha1sum [OPTION] -c [FILE]") 2538 USE_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha1sum [OPTION] -c [FILE]")
2634#define sha1sum_full_usage \ 2539#define sha1sum_full_usage \
2635 "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n\n" \ 2540 "Print" USE_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n\n" \
2636 "Options:\n" \ 2541 "Options:\n" \
2637 "With no FILE, or when FILE is -, read standard input." \ 2542 "With no FILE, or when FILE is -, read standard input." \
2638 USAGE_MD5_SHA1_SUM_CHECK("\n\n" \ 2543 USE_FEATURE_MD5_SHA1_SUM_CHECK("\n\n" \
2639 "\t-c\tcheck SHA1 sums against given list\n" \ 2544 "\t-c\tcheck SHA1 sums against given list\n" \
2640 "\nThe following two options are useful only when verifying checksums:\n" \ 2545 "\nThe following two options are useful only when verifying checksums:\n" \
2641 "\t-s\tdon't output anything, status code shows success\n" \ 2546 "\t-s\tdon't output anything, status code shows success\n" \
2642 "\t-w\twarn about improperly formatted SHA1 checksum lines") 2547 "\t-w\twarn about improperly formatted SHA1 checksum lines")
2643 2548
2644#ifdef CONFIG_FEATURE_FANCY_SLEEP
2645# define USAGE_FANCY_SLEEP(a) a
2646# define USAGE_NOT_FANCY_SLEEP(a)
2647#else
2648# define USAGE_FANCY_SLEEP(a)
2649# define USAGE_NOT_FANCY_SLEEP(a) a
2650#endif
2651
2652#define sleep_trivial_usage \ 2549#define sleep_trivial_usage \
2653 USAGE_FANCY_SLEEP("[") "N" USAGE_FANCY_SLEEP("]...") 2550 USE_FEATURE_FANCY_SLEEP("[") "N" USE_FEATURE_FANCY_SLEEP("]...")
2654#define sleep_full_usage \ 2551#define sleep_full_usage \
2655 USAGE_NOT_FANCY_SLEEP("Pause for N seconds.") \ 2552 SKIP_FEATURE_FANCY_SLEEP("Pause for N seconds.") \
2656 USAGE_FANCY_SLEEP( \ 2553 USE_FEATURE_FANCY_SLEEP( \
2657 "Pause for a time equal to the total of the args given, where each arg can\n" \ 2554 "Pause for a time equal to the total of the args given, where each arg can\n" \
2658 "\t\thave an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.") 2555 "\t\thave an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
2659#define sleep_example_usage \ 2556#define sleep_example_usage \
2660 "$ sleep 2\n" \ 2557 "$ sleep 2\n" \
2661 "[2 second delay results]\n" \ 2558 "[2 second delay results]\n" \
2662 USAGE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \ 2559 USE_FEATURE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \
2663 "[98528 second delay results]\n") 2560 "[98528 second delay results]\n")
2664 2561
2665#if ENABLE_FEATURE_SORT_BIG 2562#if ENABLE_FEATURE_SORT_BIG
@@ -2733,21 +2630,16 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
2733 "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" \ 2630 "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" \
2734 "\n\t-U|--chuid <username>|<uid>\tstart process with this name" 2631 "\n\t-U|--chuid <username>|<uid>\tstart process with this name"
2735 2632
2736#ifdef CONFIG_FEATURE_STAT_FORMAT
2737# define USAGE_STAT_FORMAT(a) a
2738#else
2739# define USAGE_STAT_FORMAT(a)
2740#endif
2741#define stat_trivial_usage \ 2633#define stat_trivial_usage \
2742 "[OPTION] FILE..." 2634 "[OPTION] FILE..."
2743#define stat_full_usage \ 2635#define stat_full_usage \
2744 "display file (default) or filesystem status.\n\n" \ 2636 "display file (default) or filesystem status.\n\n" \
2745 "Options:\n" \ 2637 "Options:\n" \
2746 USAGE_STAT_FORMAT("\t-c fmt\tuse the specified format\n") \ 2638 USE_FEATURE_STAT_FORMAT("\t-c fmt\tuse the specified format\n") \
2747 "\t-f\tdisplay filesystem status\n" \ 2639 "\t-f\tdisplay filesystem status\n" \
2748 "\t-L,-l\tdereference links\n" \ 2640 "\t-L,-l\tdereference links\n" \
2749 "\t-t\tdisplay info in terse form\n" \ 2641 "\t-t\tdisplay info in terse form\n" \
2750 USAGE_STAT_FORMAT( \ 2642 USE_FEATURE_STAT_FORMAT( \
2751 "\nValid format sequences for files:\n" \ 2643 "\nValid format sequences for files:\n" \
2752 " %a Access rights in octal\n" \ 2644 " %a Access rights in octal\n" \
2753 " %A Access rights in human readable form\n" \ 2645 " %A Access rights in human readable form\n" \
@@ -2862,23 +2754,6 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
2862#define sync_full_usage \ 2754#define sync_full_usage \
2863 "Write all buffered filesystem blocks to disk." 2755 "Write all buffered filesystem blocks to disk."
2864 2756
2865
2866#ifdef CONFIG_FEATURE_ROTATE_LOGFILE
2867# define USAGE_ROTATE_LOGFILE(a) a
2868#else
2869# define USAGE_ROTATE_LOGFILE(a)
2870#endif
2871#ifdef CONFIG_FEATURE_REMOTE_LOG
2872# define USAGE_REMOTE_LOG(a) a
2873#else
2874# define USAGE_REMOTE_LOG(a)
2875#endif
2876#ifdef CONFIG_FEATURE_IPC_SYSLOG
2877# define USAGE_IPC_LOG(a) a
2878#else
2879# define USAGE_IPC_LOG(a)
2880#endif
2881
2882#define sysctl_trivial_usage \ 2757#define sysctl_trivial_usage \
2883 "[OPTIONS]... [VALUE]..." 2758 "[OPTIONS]... [VALUE]..."
2884#define sysctl_full_usage \ 2759#define sysctl_full_usage \
@@ -2906,24 +2781,18 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
2906 "\t-n\t\tRun as a foreground process\n" \ 2781 "\t-n\t\tRun as a foreground process\n" \
2907 "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \ 2782 "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \
2908 "\t-S\t\tMake logging output smaller." \ 2783 "\t-S\t\tMake logging output smaller." \
2909 USAGE_ROTATE_LOGFILE( \ 2784 USE_FEATURE_ROTATE_LOGFILE( \
2910 "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \ 2785 "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \
2911 "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \ 2786 "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \
2912 USAGE_REMOTE_LOG( \ 2787 USE_FEATURE_REMOTE_LOG( \
2913 "\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \ 2788 "\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
2914 "\t-L\t\tLog locally and via network logging (default is network only)") \ 2789 "\t-L\t\tLog locally and via network logging (default is network only)") \
2915 USAGE_IPC_LOG( \ 2790 USE_FEATURE_IPC_SYSLOG( \
2916 "\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)") 2791 "\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)")
2917#define syslogd_example_usage \ 2792#define syslogd_example_usage \
2918 "$ syslogd -R masterlog:514\n" \ 2793 "$ syslogd -R masterlog:514\n" \
2919 "$ syslogd -R 192.168.1.1:601\n" 2794 "$ syslogd -R 192.168.1.1:601\n"
2920 2795
2921
2922#ifndef CONFIG_FEATURE_FANCY_TAIL
2923# define USAGE_UNSIMPLE_TAIL(a)
2924#else
2925# define USAGE_UNSIMPLE_TAIL(a) a
2926#endif
2927#define tail_trivial_usage \ 2796#define tail_trivial_usage \
2928 "[OPTION]... [FILE]..." 2797 "[OPTION]... [FILE]..."
2929#define tail_full_usage \ 2798#define tail_full_usage \
@@ -2931,10 +2800,10 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
2931 "With more than one FILE, precede each with a header giving the\n" \ 2800 "With more than one FILE, precede each with a header giving the\n" \
2932 "file name. With no FILE, or when FILE is -, read standard input.\n\n" \ 2801 "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
2933 "Options:\n" \ 2802 "Options:\n" \
2934 USAGE_UNSIMPLE_TAIL("\t-c N[kbm]\toutput the last N bytes\n") \ 2803 USE_FEATURE_FANCY_TAIL("\t-c N[kbm]\toutput the last N bytes\n") \
2935 "\t-n N[kbm]\tprint last N lines instead of last 10\n" \ 2804 "\t-n N[kbm]\tprint last N lines instead of last 10\n" \
2936 "\t-f\t\toutput data as the file grows" \ 2805 "\t-f\t\toutput data as the file grows" \
2937 USAGE_UNSIMPLE_TAIL( "\n\t-q\t\tnever output headers giving file names\n" \ 2806 USE_FEATURE_FANCY_TAIL( "\n\t-q\t\tnever output headers giving file names\n" \
2938 "\t-s SEC\t\twait SEC seconds between reads with -f\n" \ 2807 "\t-s SEC\t\twait SEC seconds between reads with -f\n" \
2939 "\t-v\t\talways output headers giving file names\n\n" \ 2808 "\t-v\t\talways output headers giving file names\n\n" \
2940 "If the first character of N (bytes or lines) is a '+', output begins with \n" \ 2809 "If the first character of N (bytes or lines) is a '+', output begins with \n" \
@@ -2944,58 +2813,29 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
2944 "$ tail -n 1 /etc/resolv.conf\n" \ 2813 "$ tail -n 1 /etc/resolv.conf\n" \
2945 "nameserver 10.0.0.1\n" 2814 "nameserver 10.0.0.1\n"
2946 2815
2947#ifdef CONFIG_FEATURE_TAR_CREATE
2948# define USAGE_TAR_CREATE(a) a
2949#else
2950# define USAGE_TAR_CREATE(a)
2951#endif
2952#ifdef CONFIG_FEATURE_TAR_EXCLUDE
2953# define USAGE_TAR_EXCLUDE(a) a
2954#else
2955# define USAGE_TAR_EXCLUDE(a)
2956#endif
2957#ifdef CONFIG_FEATURE_TAR_GZIP
2958# define USAGE_TAR_GZIP(a) a
2959#else
2960# define USAGE_TAR_GZIP(a)
2961#endif
2962#ifdef CONFIG_FEATURE_TAR_BZIP2
2963# define USAGE_TAR_BZIP2(a) a
2964#else
2965# define USAGE_TAR_BZIP2(a)
2966#endif
2967#ifdef CONFIG_FEATURE_TAR_LZMA
2968# define USAGE_TAR_LZMA(a) a
2969#else
2970# define USAGE_TAR_LZMA(a)
2971#endif
2972#ifdef CONFIG_FEATURE_TAR_COMPRESS
2973# define USAGE_TAR_COMPRESS(a) a
2974#else
2975# define USAGE_TAR_COMPRESS(a)
2976#endif
2977
2978#define tar_trivial_usage \ 2816#define tar_trivial_usage \
2979 "-[" USAGE_TAR_CREATE("c") USAGE_TAR_GZIP("z") USAGE_TAR_BZIP2("j") USAGE_TAR_LZMA("a") USAGE_TAR_COMPRESS("Z") "xtvO] " \ 2817 "-[" USE_FEATURE_TAR_CREATE("c") USE_FEATURE_TAR_GZIP("z") \
2980 USAGE_TAR_EXCLUDE("[-X FILE]") \ 2818 USE_FEATURE_TAR_BZIP2("j") USE_FEATURE_TAR_LZMA("a") \
2819 USE_FEATURE_TAR_COMPRESS("Z") "xtvO] " \
2820 USE_FEATURE_TAR_FROM("[-X FILE]") \
2981 "[-f TARFILE] [-C DIR] [FILE(s)] ..." 2821 "[-f TARFILE] [-C DIR] [FILE(s)] ..."
2982#define tar_full_usage \ 2822#define tar_full_usage \
2983 "Create, extract, or list files from a tar file.\n\n" \ 2823 "Create, extract, or list files from a tar file.\n\n" \
2984 "Options:\n" \ 2824 "Options:\n" \
2985 USAGE_TAR_CREATE("\tc\t\tcreate\n") \ 2825 USE_FEATURE_TAR_CREATE("\tc\t\tcreate\n") \
2986 "\tx\t\textract\n" \ 2826 "\tx\t\textract\n" \
2987 "\tt\t\tlist\n" \ 2827 "\tt\t\tlist\n" \
2988 "\nArchive format selection:\n" \ 2828 "\nArchive format selection:\n" \
2989 USAGE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \ 2829 USE_FEATURE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \
2990 USAGE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \ 2830 USE_FEATURE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \
2991 USAGE_TAR_LZMA("\ta\t\tFilter the archive through lzma\n") \ 2831 USE_FEATURE_TAR_LZMA("\ta\t\tFilter the archive through lzma\n") \
2992 USAGE_TAR_COMPRESS("\tZ\t\tFilter the archive through compress\n") \ 2832 USE_FEATURE_TAR_COMPRESS("\tZ\t\tFilter the archive through compress\n") \
2993 "\nFile selection:\n" \ 2833 "\nFile selection:\n" \
2994 "\tf\t\tname of TARFILE or \"-\" for stdin\n" \ 2834 "\tf\t\tname of TARFILE or \"-\" for stdin\n" \
2995 "\tO\t\textract to stdout\n" \ 2835 "\tO\t\textract to stdout\n" \
2996 USAGE_TAR_EXCLUDE( \ 2836 USE_FEATURE_TAR_FROM( \
2997 "\texclude\t\tfile to exclude\n" \ 2837 "\texclude\t\tfile to exclude\n" \
2998 "\tX\t\tfile with names to exclude\n" \ 2838 "\tX\t\tfile with names to exclude\n" \
2999 ) \ 2839 ) \
3000 "\tC\t\tchange to directory DIR before operation\n" \ 2840 "\tC\t\tchange to directory DIR before operation\n" \
3001 "\tv\t\tverbosely list files processed" 2841 "\tv\t\tverbosely list files processed"
@@ -3074,22 +2914,6 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
3074 "$ echo $?\n" \ 2914 "$ echo $?\n" \
3075 "1\n" 2915 "1\n"
3076 2916
3077#ifdef CONFIG_FEATURE_TFTP_GET
3078# define USAGE_TFTP_GET(a) a
3079#else
3080# define USAGE_TFTP_GET(a)
3081#endif
3082#ifdef CONFIG_FEATURE_TFTP_PUT
3083# define USAGE_TFTP_PUT(a) a
3084#else
3085# define USAGE_TFTP_PUT(a)
3086#endif
3087#ifdef CONFIG_FEATURE_TFTP_BLOCKSIZE
3088# define USAGE_TFTP_BS(a) a
3089#else
3090# define USAGE_TFTP_BS(a)
3091#endif
3092
3093#define tftp_trivial_usage \ 2917#define tftp_trivial_usage \
3094 "[OPTION]... HOST [PORT]" 2918 "[OPTION]... HOST [PORT]"
3095#define tftp_full_usage \ 2919#define tftp_full_usage \
@@ -3097,13 +2921,13 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
3097 "Options:\n" \ 2921 "Options:\n" \
3098 "\t-l FILE\tLocal FILE\n" \ 2922 "\t-l FILE\tLocal FILE\n" \
3099 "\t-r FILE\tRemote FILE" \ 2923 "\t-r FILE\tRemote FILE" \
3100 USAGE_TFTP_GET( \ 2924 USE_FEATURE_TFTP_GET( \
3101 "\n\t-g\tGet file" \ 2925 "\n\t-g\tGet file" \
3102 ) \ 2926 ) \
3103 USAGE_TFTP_PUT( \ 2927 USE_FEATURE_TFTP_PUT( \
3104 "\n\t-p\tPut file" \ 2928 "\n\t-p\tPut file" \
3105 ) \ 2929 ) \
3106 USAGE_TFTP_BS( \ 2930 USE_FEATURE_TFTP_BLOCKSIZE( \
3107 "\n\t-b SIZE\tTransfer blocks of SIZE octets" \ 2931 "\n\t-b SIZE\tTransfer blocks of SIZE octets" \
3108 ) 2932 )
3109#define time_trivial_usage \ 2933#define time_trivial_usage \
@@ -3440,32 +3264,15 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
3440#define whoami_full_usage \ 3264#define whoami_full_usage \
3441 "Prints the user name associated with the current effective user id." 3265 "Prints the user name associated with the current effective user id."
3442 3266
3443#ifdef CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
3444#define USAGE_XARGS_CONFIRMATION(a) a
3445#else
3446#define USAGE_XARGS_CONFIRMATION(a)
3447#endif
3448#ifdef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
3449#define USAGE_XARGS_TERMOPT(a) a
3450#else
3451#define USAGE_XARGS_TERMOPT(a)
3452#endif
3453#ifdef CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
3454#define USAGE_XARGS_ZERO_TERM(a) a
3455#else
3456#define USAGE_XARGS_ZERO_TERM(a)
3457#endif
3458
3459
3460#define xargs_trivial_usage \ 3267#define xargs_trivial_usage \
3461 "[COMMAND] [OPTIONS] [ARGS...]" 3268 "[OPTIONS] [COMMAND] [ARGS...]"
3462#define xargs_full_usage \ 3269#define xargs_full_usage \
3463 "Executes COMMAND on every item given by standard input.\n\n" \ 3270 "Executes COMMAND on every item given by standard input.\n\n" \
3464 "Options:\n" \ 3271 "Options:\n" \
3465 USAGE_XARGS_CONFIRMATION("\t-p\tPrompt the user about whether to run each command\n") \ 3272 USE_FEATURE_XARGS_SUPPORT_CONFIRMATION("\t-p\tPrompt the user about whether to run each command\n") \
3466 "\t-r\tDo not run command for empty read lines\n" \ 3273 "\t-r\tDo not run command for empty read lines\n" \
3467 USAGE_XARGS_TERMOPT("\t-x\tExit if the size is exceeded\n") \ 3274 USE_FEATURE_XARGS_SUPPORT_TERMOPT("\t-x\tExit if the size is exceeded\n") \
3468 USAGE_XARGS_ZERO_TERM("\t-0\tInput filenames are terminated by a null character\n") \ 3275 USE_FEATURE_XARGS_SUPPORT_ZERO_TERM("\t-0\tInput filenames are terminated by a null character\n") \
3469 "\t-t\tPrint the command line on stderr before executing it" 3276 "\t-t\tPrint the command line on stderr before executing it"
3470#define xargs_example_usage \ 3277#define xargs_example_usage \
3471 "$ ls | xargs gzip\n" \ 3278 "$ ls | xargs gzip\n" \
diff --git a/init/init.c b/init/init.c
index 607a1f3e0..d7d14a2d5 100644
--- a/init/init.c
+++ b/init/init.c
@@ -1125,7 +1125,7 @@ int init_main(int argc, char **argv)
1125 } 1125 }
1126 } 1126 }
1127 /* see if anyone else is waiting to be reaped */ 1127 /* see if anyone else is waiting to be reaped */
1128 wpid = waitpid (-1, NULL, WNOHANG); 1128 wpid = waitpid(-1, NULL, WNOHANG);
1129 } 1129 }
1130 } 1130 }
1131} 1131}