diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-27 23:31:08 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-27 23:31:08 +0000 |
commit | ce97960a6e7da4d9fc7a003c9138aec5e4e55a96 (patch) | |
tree | c85ed57fad4e98e833f16d5657efce53acc79895 | |
parent | c16bd212e341598452b7885d9e4ac2064f417673 (diff) | |
download | busybox-w32-ce97960a6e7da4d9fc7a003c9138aec5e4e55a96.tar.gz busybox-w32-ce97960a6e7da4d9fc7a003c9138aec5e4e55a96.tar.bz2 busybox-w32-ce97960a6e7da4d9fc7a003c9138aec5e4e55a96.zip |
usage.h: remove ugly tricks. We have USE_FEATURE_xxx now.
Few bugs are now exposed...
-rw-r--r-- | archival/ar.c | 3 | ||||
-rw-r--r-- | archival/bunzip2.c | 9 | ||||
-rw-r--r-- | coreutils/seq.c | 10 | ||||
-rw-r--r-- | include/usage.h | 343 | ||||
-rw-r--r-- | init/init.c | 2 |
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 | } |