diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-17 08:42:43 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-17 08:42:43 +0000 |
| commit | cdf62770af9e8bf7d5bb2344ddef8acb3216cfe2 (patch) | |
| tree | f3c72eba4318ead484dfb36c6e21d55f443c5f6b | |
| parent | 107fe7c081c2e0ab96628b431d9d812cdf9c82b2 (diff) | |
| download | busybox-w32-cdf62770af9e8bf7d5bb2344ddef8acb3216cfe2.tar.gz busybox-w32-cdf62770af9e8bf7d5bb2344ddef8acb3216cfe2.tar.bz2 busybox-w32-cdf62770af9e8bf7d5bb2344ddef8acb3216cfe2.zip | |
dos2unix: tiny shrink
login,su: fix setup_environment() so that it works as intended
(parameter names were a bit misleading)
fdisk: shrink
help text: shrink
function old new delta
login_main 1658 1701 +43
setup_environment 206 203 -3
dos_compatible_flag 4 1 -3
dos2unix_main 383 375 -8
get_boot 1724 1702 -22
fdisk_main 2949 2889 -60
packed_usage 24250 23948 -302
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/6 up/down: 43/-398) Total: -355 bytes
text data bss dec hex filename
798768 661 7428 806857 c4fc9 busybox_old
798327 658 7428 806413 c4e0d busybox_unstripped
| -rw-r--r-- | coreutils/dos2unix.c | 15 | ||||
| -rw-r--r-- | include/libbb.h | 6 | ||||
| -rw-r--r-- | include/usage.h | 277 | ||||
| -rw-r--r-- | libbb/setup_environment.c | 8 | ||||
| -rw-r--r-- | loginutils/login.c | 20 | ||||
| -rw-r--r-- | loginutils/su.c | 2 | ||||
| -rw-r--r-- | procps/pgrep.c | 3 | ||||
| -rw-r--r-- | util-linux/fdisk.c | 79 |
8 files changed, 203 insertions, 207 deletions
diff --git a/coreutils/dos2unix.c b/coreutils/dos2unix.c index 7776133f4..2db7e11a1 100644 --- a/coreutils/dos2unix.c +++ b/coreutils/dos2unix.c | |||
| @@ -24,19 +24,19 @@ static void convert(char *fn, int conv_type) | |||
| 24 | { | 24 | { |
| 25 | FILE *in, *out; | 25 | FILE *in, *out; |
| 26 | int i; | 26 | int i; |
| 27 | #define name_buf bb_common_bufsiz1 | 27 | char *name_buf = name_buf; /* for compiler */ |
| 28 | 28 | ||
| 29 | in = stdin; | 29 | in = stdin; |
| 30 | out = stdout; | 30 | out = stdout; |
| 31 | if (fn != NULL) { | 31 | if (fn != NULL) { |
| 32 | in = xfopen(fn, "rw"); | 32 | in = xfopen(fn, "r"); |
| 33 | /* | 33 | /* |
| 34 | The file is then created with mode read/write and | 34 | The file is then created with mode read/write and |
| 35 | permissions 0666 for glibc 2.0.6 and earlier or | 35 | permissions 0666 for glibc 2.0.6 and earlier or |
| 36 | 0600 for glibc 2.0.7 and later. | 36 | 0600 for glibc 2.0.7 and later. |
| 37 | */ | 37 | */ |
| 38 | snprintf(name_buf, sizeof(name_buf), "%sXXXXXX", fn); | 38 | name_buf = xasprintf("%sXXXXXX", fn); |
| 39 | i = mkstemp(&name_buf[0]); | 39 | i = mkstemp(name_buf); |
| 40 | if (i == -1 | 40 | if (i == -1 |
| 41 | || fchmod(i, 0600) == -1 | 41 | || fchmod(i, 0600) == -1 |
| 42 | || !(out = fdopen(i, "w+")) | 42 | || !(out = fdopen(i, "w+")) |
| @@ -48,12 +48,9 @@ static void convert(char *fn, int conv_type) | |||
| 48 | while ((i = fgetc(in)) != EOF) { | 48 | while ((i = fgetc(in)) != EOF) { |
| 49 | if (i == '\r') | 49 | if (i == '\r') |
| 50 | continue; | 50 | continue; |
| 51 | if (i == '\n') { | 51 | if (i == '\n') |
| 52 | if (conv_type == CT_UNIX2DOS) | 52 | if (conv_type == CT_UNIX2DOS) |
| 53 | fputc('\r', out); | 53 | fputc('\r', out); |
| 54 | fputc('\n', out); | ||
| 55 | continue; | ||
| 56 | } | ||
| 57 | fputc(i, out); | 54 | fputc(i, out); |
| 58 | } | 55 | } |
| 59 | 56 | ||
| @@ -62,7 +59,9 @@ static void convert(char *fn, int conv_type) | |||
| 62 | unlink(name_buf); | 59 | unlink(name_buf); |
| 63 | bb_perror_nomsg_and_die(); | 60 | bb_perror_nomsg_and_die(); |
| 64 | } | 61 | } |
| 62 | // TODO: destroys symlinks. See how passwd handles this | ||
| 65 | xrename(name_buf, fn); | 63 | xrename(name_buf, fn); |
| 64 | free(name_buf); | ||
| 66 | } | 65 | } |
| 67 | } | 66 | } |
| 68 | 67 | ||
diff --git a/include/libbb.h b/include/libbb.h index 73638a145..09deba671 100644 --- a/include/libbb.h +++ b/include/libbb.h | |||
| @@ -941,20 +941,20 @@ extern void selinux_or_die(void); | |||
| 941 | extern int restricted_shell(const char *shell); | 941 | extern int restricted_shell(const char *shell); |
| 942 | 942 | ||
| 943 | /* setup_environment: | 943 | /* setup_environment: |
| 944 | * if loginshell = 1: cd(pw->pw_dir), clear environment, then set | 944 | * if clear_env = 1: cd(pw->pw_dir), clear environment, then set |
| 945 | * TERM=(old value) | 945 | * TERM=(old value) |
| 946 | * USER=pw->pw_name, LOGNAME=pw->pw_name | 946 | * USER=pw->pw_name, LOGNAME=pw->pw_name |
| 947 | * PATH=bb_default_[root_]path | 947 | * PATH=bb_default_[root_]path |
| 948 | * HOME=pw->pw_dir | 948 | * HOME=pw->pw_dir |
| 949 | * SHELL=shell | 949 | * SHELL=shell |
| 950 | * else if changeenv = 1: | 950 | * else if change_env = 1: |
| 951 | * if not root (if pw->pw_uid != 0): | 951 | * if not root (if pw->pw_uid != 0): |
| 952 | * USER=pw->pw_name, LOGNAME=pw->pw_name | 952 | * USER=pw->pw_name, LOGNAME=pw->pw_name |
| 953 | * HOME=pw->pw_dir | 953 | * HOME=pw->pw_dir |
| 954 | * SHELL=shell | 954 | * SHELL=shell |
| 955 | * else does nothing | 955 | * else does nothing |
| 956 | */ | 956 | */ |
| 957 | extern void setup_environment(const char *shell, int loginshell, int changeenv, const struct passwd *pw); | 957 | extern void setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw); |
| 958 | extern int correct_password(const struct passwd *pw); | 958 | extern int correct_password(const struct passwd *pw); |
| 959 | /* Returns a ptr to static storage */ | 959 | /* Returns a ptr to static storage */ |
| 960 | extern char *pw_encrypt(const char *clear, const char *salt); | 960 | extern char *pw_encrypt(const char *clear, const char *salt); |
diff --git a/include/usage.h b/include/usage.h index 76beb176f..fdf96d256 100644 --- a/include/usage.h +++ b/include/usage.h | |||
| @@ -6,6 +6,8 @@ | |||
| 6 | * 2. Do not use \t in messages, use real tab character. | 6 | * 2. Do not use \t in messages, use real tab character. |
| 7 | * 3. Start each source line with message as follows: | 7 | * 3. Start each source line with message as follows: |
| 8 | * |<7 spaces>"text with tabs".... | 8 | * |<7 spaces>"text with tabs".... |
| 9 | * or | ||
| 10 | * |<5 spaces>"\ntext with tabs".... | ||
| 9 | */ | 11 | */ |
| 10 | 12 | ||
| 11 | #ifndef __BB_USAGE_H__ | 13 | #ifndef __BB_USAGE_H__ |
| @@ -14,14 +16,14 @@ | |||
| 14 | #define addgroup_trivial_usage \ | 16 | #define addgroup_trivial_usage \ |
| 15 | "[-g GID]"USE_FEATURE_ADDUSER_TO_GROUP(" [user_name]")" group_name" | 17 | "[-g GID]"USE_FEATURE_ADDUSER_TO_GROUP(" [user_name]")" group_name" |
| 16 | #define addgroup_full_usage \ | 18 | #define addgroup_full_usage \ |
| 17 | "Add a group to the system"USE_FEATURE_ADDUSER_TO_GROUP(" or add an user to a group") \ | 19 | "Add a group"USE_FEATURE_ADDUSER_TO_GROUP(" or add an user to a group") \ |
| 18 | "\n\nOptions:\n" \ | 20 | "\n\nOptions:\n" \ |
| 19 | " -g GID Group id" | 21 | " -g GID Group id" |
| 20 | 22 | ||
| 21 | #define adduser_trivial_usage \ | 23 | #define adduser_trivial_usage \ |
| 22 | "[OPTIONS] user_name" | 24 | "[OPTIONS] user_name" |
| 23 | #define adduser_full_usage \ | 25 | #define adduser_full_usage \ |
| 24 | "Add a user to the system" \ | 26 | "Add an user" \ |
| 25 | "\n\nOptions:\n" \ | 27 | "\n\nOptions:\n" \ |
| 26 | " -h DIR Home directory\n" \ | 28 | " -h DIR Home directory\n" \ |
| 27 | " -g GECOS GECOS field\n" \ | 29 | " -g GECOS GECOS field\n" \ |
| @@ -63,17 +65,17 @@ | |||
| 63 | "[-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub\n" \ | 65 | "[-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub\n" \ |
| 64 | "[-v] [-H type] [-i if] -Ds hostname ifa [netmask nm] pub\n" | 66 | "[-v] [-H type] [-i if] -Ds hostname ifa [netmask nm] pub\n" |
| 65 | #define arp_full_usage \ | 67 | #define arp_full_usage \ |
| 66 | "Manipulate the system ARP cache" \ | 68 | "Manipulate ARP cache" \ |
| 67 | "\n\nOptions:" \ | 69 | "\n\nOptions:" \ |
| 68 | "\n -a Display (all) hosts" \ | 70 | "\n -a Display (all) hosts" \ |
| 69 | "\n -s Set a new ARP entry" \ | 71 | "\n -s Set new ARP entry" \ |
| 70 | "\n -d Delete a specified entry" \ | 72 | "\n -d Delete a specified entry" \ |
| 71 | "\n -v Verbose" \ | 73 | "\n -v Verbose" \ |
| 72 | "\n -n Don't resolve names" \ | 74 | "\n -n Don't resolve names" \ |
| 73 | "\n -i if Network interface (e.g. eth0)" \ | 75 | "\n -i IF Network interface" \ |
| 74 | "\n -D Read <hwaddr> from given device" \ | 76 | "\n -D Read <hwaddr> from given device" \ |
| 75 | "\n -A, -p Protocol family" \ | 77 | "\n -A, -p AF Protocol family" \ |
| 76 | "\n -H hwtype Hardware address type" | 78 | "\n -H HWTYPE Hardware address type" |
| 77 | 79 | ||
| 78 | #define arping_trivial_usage \ | 80 | #define arping_trivial_usage \ |
| 79 | "[-fqbDUA] [-c count] [-w timeout] [-I dev] [-s sender] target" | 81 | "[-fqbDUA] [-c count] [-w timeout] [-I dev] [-s sender] target" |
| @@ -96,7 +98,7 @@ | |||
| 96 | "[FILE]...\n" \ | 98 | "[FILE]...\n" \ |
| 97 | "or: ash -c command [args]..." | 99 | "or: ash -c command [args]..." |
| 98 | #define ash_full_usage \ | 100 | #define ash_full_usage \ |
| 99 | "The ash shell (command interpreter)" | 101 | "The ash shell" |
| 100 | 102 | ||
| 101 | #define awk_trivial_usage \ | 103 | #define awk_trivial_usage \ |
| 102 | "[OPTION]... [program-text] [FILE...]" | 104 | "[OPTION]... [program-text] [FILE...]" |
| @@ -124,38 +126,38 @@ | |||
| 124 | #define brctl_full_usage \ | 126 | #define brctl_full_usage \ |
| 125 | "Manage ethernet bridges." \ | 127 | "Manage ethernet bridges." \ |
| 126 | "\n\nCommands:\n" \ | 128 | "\n\nCommands:\n" \ |
| 127 | " addbr <bridge> Create <bridge>\n" \ | 129 | " addbr BRIDGE Create BRIDGE\n" \ |
| 128 | " delbr <bridge> Delete <bridge>\n" \ | 130 | " delbr BRIDGE Delete BRIDGE\n" \ |
| 129 | " addif <bridge> <iface> Add <iface> to <bridge>\n" \ | 131 | " addif BRIDGE IFACE Add IFACE to BRIDGE\n" \ |
| 130 | " delif <bridge> <iface> Delete <iface> from <bridge>" \ | 132 | " delif BRIDGE IFACE Delete IFACE from BRIDGE" \ |
| 131 | USE_FEATURE_BRCTL_FANCY("\n" \ | 133 | USE_FEATURE_BRCTL_FANCY("\n" \ |
| 132 | " setageing <bridge <time> set ageing time\n" \ | 134 | " setageing BRIDGE TIME Set ageing time\n" \ |
| 133 | " setfd <bridge <time> set bridge forward delay\n" \ | 135 | " setfd BRIDGE TIME Set bridge forward delay\n" \ |
| 134 | " sethello <bridge <time> set hello time\n" \ | 136 | " sethello BRIDGE TIME Set hello time\n" \ |
| 135 | " setmaxage <bridge <time> set max message age\n" \ | 137 | " setmaxage BRIDGE TIME Set max message age\n" \ |
| 136 | " setpathcost <bridge <cost> set path cost\n" \ | 138 | " setpathcost BRIDGE COST Set path cost\n" \ |
| 137 | " setportprio <bridge <prio> set port priority\n" \ | 139 | " setportprio BRIDGE PRIO Set port priority\n" \ |
| 138 | " setbridgeprio <bridge <prio> set bridge priority\n" \ | 140 | " setbridgeprio BRIDGE PRIO Set bridge priority\n" \ |
| 139 | " stp <bridge> [1|0] turn stp on/off\n" \ | 141 | " stp BRIDGE [1|0] STP on/off\n" \ |
| 140 | ) | 142 | ) |
| 141 | #define bunzip2_trivial_usage \ | 143 | #define bunzip2_trivial_usage \ |
| 142 | "[OPTION]... [FILE]" | 144 | "[OPTION]... [FILE]" |
| 143 | #define bunzip2_full_usage \ | 145 | #define bunzip2_full_usage \ |
| 144 | "Uncompress FILE (or standard input if FILE is '-' or omitted)" \ | 146 | "Uncompress FILE (or standard input if FILE is '-' or omitted)" \ |
| 145 | "\n\nOptions:\n" \ | 147 | "\n\nOptions:\n" \ |
| 146 | " -c Write output to standard output\n" \ | 148 | " -c Write to standard output\n" \ |
| 147 | " -f Force" | 149 | " -f Force" |
| 148 | 150 | ||
| 149 | #define bzip2_trivial_usage \ | 151 | #define bzip2_trivial_usage \ |
| 150 | "[OPTION]... [FILE]..." | 152 | "[OPTION]... [FILE]..." |
| 151 | #define bzip2_full_usage \ | 153 | #define bzip2_full_usage \ |
| 152 | "Compress FILE(s) with bzip2 algorithm.\n" \ | 154 | "Compress FILE(s) with bzip2 algorithm.\n" \ |
| 153 | "When FILE is '-' or unspecified, reads standard input. Implies -c." \ | 155 | "When FILE is '-' or unspecified, reads standard input. Implies -c.\n" \ |
| 154 | "\n\nOptions:" \ | 156 | "\nOptions:" \ |
| 155 | "\n -c Write output to standard output instead of FILE.bz2" \ | 157 | "\n -c Write to standard output" \ |
| 156 | "\n -d Decompress" \ | 158 | "\n -d Decompress" \ |
| 157 | "\n -f Force" \ | 159 | "\n -f Force" \ |
| 158 | "\n -1..-9 Compression level" | 160 | "\n -1..-9 Compression level" |
| 159 | 161 | ||
| 160 | #define busybox_notes_usage \ | 162 | #define busybox_notes_usage \ |
| 161 | "Hello world!\n" | 163 | "Hello world!\n" |
| @@ -170,7 +172,7 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 170 | #define unlzma_full_usage \ | 172 | #define unlzma_full_usage \ |
| 171 | "Uncompress FILE (or standard input if FILE is '-' or omitted)" \ | 173 | "Uncompress FILE (or standard input if FILE is '-' or omitted)" \ |
| 172 | "\n\nOptions:\n" \ | 174 | "\n\nOptions:\n" \ |
| 173 | " -c Write output to standard output\n" \ | 175 | " -c Write to standard output\n" \ |
| 174 | " -f Force" | 176 | " -f Force" |
| 175 | 177 | ||
| 176 | #define lzmacat_trivial_usage \ | 178 | #define lzmacat_trivial_usage \ |
| @@ -742,7 +744,7 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 742 | #define dnsd_trivial_usage \ | 744 | #define dnsd_trivial_usage \ |
| 743 | "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]" | 745 | "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]" |
| 744 | #define dnsd_full_usage \ | 746 | #define dnsd_full_usage \ |
| 745 | "Small and static DNS server daemon" \ | 747 | "Small static DNS server daemon" \ |
| 746 | "\n\nOptions:\n" \ | 748 | "\n\nOptions:\n" \ |
| 747 | " -c Config filename\n" \ | 749 | " -c Config filename\n" \ |
| 748 | " -t TTL in seconds\n" \ | 750 | " -t TTL in seconds\n" \ |
| @@ -753,12 +755,11 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 753 | #define dos2unix_trivial_usage \ | 755 | #define dos2unix_trivial_usage \ |
| 754 | "[option] [FILE]" | 756 | "[option] [FILE]" |
| 755 | #define dos2unix_full_usage \ | 757 | #define dos2unix_full_usage \ |
| 756 | "Convert FILE from dos format to unix format. When no option\n" \ | 758 | "Convert FILE from dos to unix format.\n" \ |
| 757 | "is given, the input is converted to the opposite output format.\n" \ | 759 | "When no file is given, use stdin/stdout.\n" \ |
| 758 | "When no file is given, use stdin for input and stdout for output." \ | 760 | "\nOptions:\n" \ |
| 759 | "\n\nOptions:\n" \ | 761 | "\n -u dos2unix" \ |
| 760 | " -u Output will be in UNIX format\n" \ | 762 | "\n -d unix2dos" |
| 761 | " -d Output will be in DOS format" | ||
| 762 | 763 | ||
| 763 | #define dpkg_trivial_usage \ | 764 | #define dpkg_trivial_usage \ |
| 764 | "[-ilCPru] [-F option] package_name" | 765 | "[-ilCPru] [-F option] package_name" |
| @@ -795,19 +796,19 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 795 | SKIP_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \ | 796 | SKIP_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \ |
| 796 | " bytes." \ | 797 | " bytes." \ |
| 797 | "\n\nOptions:\n" \ | 798 | "\n\nOptions:\n" \ |
| 798 | " -a Show sizes of files in addition to directories\n" \ | 799 | " -a Show file sizes too\n" \ |
| 799 | " -H Follow symlinks that are FILE command line args\n" \ | 800 | " -H Follow symlinks on command line\n" \ |
| 800 | " -L Follow all symlinks encountered\n" \ | 801 | " -L Follow all symlinks\n" \ |
| 801 | " -d N Limit output to directories (and files with -a) of depth < N\n" \ | 802 | " -d N Limit output to directories (and files with -a) of depth < N\n" \ |
| 802 | " -c Output a grand total\n" \ | 803 | " -c Show grand total\n" \ |
| 803 | " -l Count sizes many times if hard linked\n" \ | 804 | " -l Count sizes many times if hard linked\n" \ |
| 804 | " -s Display only a total for each argument\n" \ | 805 | " -s Display only a total for each argument\n" \ |
| 805 | " -x Skip directories on different filesystems\n" \ | 806 | " -x Skip directories on different filesystems\n" \ |
| 806 | USE_FEATURE_HUMAN_READABLE( \ | 807 | USE_FEATURE_HUMAN_READABLE( \ |
| 807 | " -h Print sizes in human readable format (e.g., 1K 243M 2G )\n" \ | 808 | " -h Sizes in human readable format (e.g., 1K 243M 2G )\n" \ |
| 808 | " -m Print sizes in megabytes\n" \ | 809 | " -m Sizes in megabytes\n" \ |
| 809 | ) \ | 810 | ) \ |
| 810 | " -k Print sizes in kilobytes" \ | 811 | " -k Sizes in kilobytes" \ |
| 811 | USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("(default)") | 812 | USE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("(default)") |
| 812 | #define du_example_usage \ | 813 | #define du_example_usage \ |
| 813 | "$ du\n" \ | 814 | "$ du\n" \ |
| @@ -1012,19 +1013,27 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1012 | "\n\nOptions:\n" \ | 1013 | "\n\nOptions:\n" \ |
| 1013 | " -n Don't verify after format" | 1014 | " -n Don't verify after format" |
| 1014 | 1015 | ||
| 1016 | /* Looks like someone forgot to add this to config system */ | ||
| 1017 | #ifndef ENABLE_FEATURE_FDISK_BLKSIZE | ||
| 1018 | # define ENABLE_FEATURE_FDISK_BLKSIZE 0 | ||
| 1019 | # define USE_FEATURE_FDISK_BLKSIZE(a) | ||
| 1020 | #endif | ||
| 1021 | |||
| 1015 | #define fdisk_trivial_usage \ | 1022 | #define fdisk_trivial_usage \ |
| 1016 | "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK" | 1023 | "[-ul" USE_FEATURE_FDISK_BLKSIZE("s") "] " \ |
| 1024 | "[-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK" | ||
| 1017 | #define fdisk_full_usage \ | 1025 | #define fdisk_full_usage \ |
| 1018 | "Change partition table" \ | 1026 | "Change partition table\n" \ |
| 1019 | "\n\nOptions:\n" \ | 1027 | "\nOptions:\n" \ |
| 1020 | " -l List partition table(s)\n" \ | 1028 | "\n -u Start and End are in sectors (instead of cylinders)" \ |
| 1021 | " -u Give Start and End in sector (instead of cylinder) units\n" \ | 1029 | "\n -l Show partition table for each DISK, then exit" \ |
| 1022 | " -s PARTITION Give partition size(s) in blocks\n" \ | 1030 | USE_FEATURE_FDISK_BLKSIZE( \ |
| 1023 | " -b 2048 (for certain MO disks) use 2048-byte sectors\n" \ | 1031 | "\n -s Show partition sizes in kb for each DISK, then exit" \ |
| 1024 | " -C CYLINDERS Set the number of cylinders\n" \ | 1032 | ) \ |
| 1025 | " -H HEADS Set the number of heads\n" \ | 1033 | "\n -b 2048 (for certain MO disks) use 2048-byte sectors" \ |
| 1026 | " -S SECTORS Set the number of sectors\n" \ | 1034 | "\n -C CYLINDERS Set number of cylinders/heads/sectors" \ |
| 1027 | " -v Give fdisk version" | 1035 | "\n -H HEADS\n" \ |
| 1036 | "\n -S SECTORS" \ | ||
| 1028 | 1037 | ||
| 1029 | #define fetchmail_trivial_usage \ | 1038 | #define fetchmail_trivial_usage \ |
| 1030 | "[-w timeout] [-U user] -P password [-X] [-t] [-z] server[:port] maildir [prog]" | 1039 | "[-w timeout] [-U user] -P password [-X] [-t] [-z] server[:port] maildir [prog]" |
| @@ -1032,25 +1041,25 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1032 | "Fetch content of remote mailbox to local Maildir." \ | 1041 | "Fetch content of remote mailbox to local Maildir." \ |
| 1033 | "\n\nOptions:\n" \ | 1042 | "\n\nOptions:\n" \ |
| 1034 | " -w timeout Set timeout on network operations\n" \ | 1043 | " -w timeout Set timeout on network operations\n" \ |
| 1035 | " -U username Authenticate with specified username\n" \ | 1044 | " -U username Authenticate with specified username/password\n" \ |
| 1036 | " -P password Authenticate with specified password\n" \ | 1045 | " -P password\n" \ |
| 1037 | " -X Use openssl connection helper for secured servers\n" \ | 1046 | " -X Use openssl connection helper for secured servers\n" \ |
| 1038 | " -t Get only headers\n" \ | 1047 | " -t Get only headers\n" \ |
| 1039 | " -z Delete messages on server\n" \ | 1048 | " -z Delete messages on server\n" \ |
| 1040 | " prog Run prog <message file> on message delivery" | 1049 | " prog Run prog <message_file> on message delivery" |
| 1041 | 1050 | ||
| 1042 | #define findfs_trivial_usage \ | 1051 | #define findfs_trivial_usage \ |
| 1043 | "LABEL=label or UUID=uuid" | 1052 | "LABEL=label or UUID=uuid" |
| 1044 | #define findfs_full_usage \ | 1053 | #define findfs_full_usage \ |
| 1045 | "Finds a filesystem device based on a label or UUID." | 1054 | "Find a filesystem device based on a label or UUID." |
| 1046 | #define findfs_example_usage \ | 1055 | #define findfs_example_usage \ |
| 1047 | "$ findfs LABEL=MyDevice" | 1056 | "$ findfs LABEL=MyDevice" |
| 1048 | 1057 | ||
| 1049 | #define find_trivial_usage \ | 1058 | #define find_trivial_usage \ |
| 1050 | "[PATH...] [EXPRESSION]" | 1059 | "[PATH...] [EXPRESSION]" |
| 1051 | #define find_full_usage \ | 1060 | #define find_full_usage \ |
| 1052 | "Search for files in a directory hierarchy. The default PATH is\n" \ | 1061 | "Search for files. The default PATH is the current directory,\n" \ |
| 1053 | "the current directory, default EXPRESSION is '-print'\n" \ | 1062 | "default EXPRESSION is '-print'\n" \ |
| 1054 | "\nEXPRESSION may consist of:" \ | 1063 | "\nEXPRESSION may consist of:" \ |
| 1055 | "\n -follow Dereference symlinks" \ | 1064 | "\n -follow Dereference symlinks" \ |
| 1056 | USE_FEATURE_FIND_XDEV( \ | 1065 | USE_FEATURE_FIND_XDEV( \ |
| @@ -1202,15 +1211,15 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1202 | ) | 1211 | ) |
| 1203 | 1212 | ||
| 1204 | #define fuser_trivial_usage \ | 1213 | #define fuser_trivial_usage \ |
| 1205 | "[options] file OR port/proto" | 1214 | "[options] FILE or PORT/PROTO" |
| 1206 | #define fuser_full_usage \ | 1215 | #define fuser_full_usage \ |
| 1207 | "Options:\n" \ | 1216 | "Options:\n" \ |
| 1208 | " -m Show all processes on the same mounted fs\n" \ | 1217 | " -m Show all processes on the same mounted fs\n" \ |
| 1209 | " -k Kill all processes that match\n" \ | ||
| 1210 | " -s Don't print or kill anything\n" \ | 1218 | " -s Don't print or kill anything\n" \ |
| 1211 | " -4 When using port/proto only search IPv4 space\n" \ | 1219 | " -4 Search only IPv4 space\n" \ |
| 1212 | " -6 When using port/proto only search IPv6 space\n" \ | 1220 | " -6 Search only IPv6 space\n" \ |
| 1213 | " -SIGNAL When used with -k, this signal will be used to kill" | 1221 | " -k Kill all processes that match\n" \ |
| 1222 | " -SIGNAL Signal to send (default: TERM)" | ||
| 1214 | 1223 | ||
| 1215 | #define getenforce_trivial_usage | 1224 | #define getenforce_trivial_usage |
| 1216 | #define getenforce_full_usage | 1225 | #define getenforce_full_usage |
| @@ -1274,7 +1283,7 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1274 | "\n\nOptions:\n" \ | 1283 | "\n\nOptions:\n" \ |
| 1275 | " -h Enable hardware (RTS/CTS) flow control\n" \ | 1284 | " -h Enable hardware (RTS/CTS) flow control\n" \ |
| 1276 | " -i Do not display /etc/issue before running login\n" \ | 1285 | " -i Do not display /etc/issue before running login\n" \ |
| 1277 | " -L Local line, so do not do carrier detect\n" \ | 1286 | " -L Local line, do not do carrier detect\n" \ |
| 1278 | " -m Get baud rate from modem's CONNECT status message\n" \ | 1287 | " -m Get baud rate from modem's CONNECT status message\n" \ |
| 1279 | " -w Wait for a CR or LF before sending /etc/issue\n" \ | 1288 | " -w Wait for a CR or LF before sending /etc/issue\n" \ |
| 1280 | " -n Do not prompt the user for a login name\n" \ | 1289 | " -n Do not prompt the user for a login name\n" \ |
| @@ -1330,9 +1339,9 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1330 | #define gunzip_full_usage \ | 1339 | #define gunzip_full_usage \ |
| 1331 | "Uncompress FILE (or standard input if FILE is '-')" \ | 1340 | "Uncompress FILE (or standard input if FILE is '-')" \ |
| 1332 | "\n\nOptions:\n" \ | 1341 | "\n\nOptions:\n" \ |
| 1333 | " -c Write output to standard output\n" \ | 1342 | " -c Write to standard output\n" \ |
| 1334 | " -f Force\n" \ | 1343 | " -f Force\n" \ |
| 1335 | " -t Test compressed file integrity" | 1344 | " -t Test file integrity" |
| 1336 | #define gunzip_example_usage \ | 1345 | #define gunzip_example_usage \ |
| 1337 | "$ ls -la /tmp/BusyBox*\n" \ | 1346 | "$ ls -la /tmp/BusyBox*\n" \ |
| 1338 | "-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \ | 1347 | "-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \ |
| @@ -1346,7 +1355,7 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1346 | "Compress FILE(s) with maximum compression.\n" \ | 1355 | "Compress FILE(s) with maximum compression.\n" \ |
| 1347 | "When FILE is '-' or unspecified, reads standard input. Implies -c." \ | 1356 | "When FILE is '-' or unspecified, reads standard input. Implies -c." \ |
| 1348 | "\n\nOptions:\n" \ | 1357 | "\n\nOptions:\n" \ |
| 1349 | " -c Write output to standard output instead of FILE.gz\n" \ | 1358 | " -c Write to standard output\n" \ |
| 1350 | " -d Decompress\n" \ | 1359 | " -d Decompress\n" \ |
| 1351 | " -f Force" | 1360 | " -f Force" |
| 1352 | #define gzip_example_usage \ | 1361 | #define gzip_example_usage \ |
| @@ -1521,12 +1530,12 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1521 | #define hwclock_full_usage \ | 1530 | #define hwclock_full_usage \ |
| 1522 | "Query and set a hardware clock (RTC)" \ | 1531 | "Query and set a hardware clock (RTC)" \ |
| 1523 | "\n\nOptions:\n" \ | 1532 | "\n\nOptions:\n" \ |
| 1524 | " -r Read hardware clock and print result\n" \ | 1533 | " -r Show time from hardware clock\n" \ |
| 1525 | " -s Set the system time from the hardware clock\n" \ | 1534 | " -s Set system time from hardware clock\n" \ |
| 1526 | " -w Set the hardware clock to the system time\n" \ | 1535 | " -w Set hardware clock to system time\n" \ |
| 1527 | " -u The hardware clock is kept in coordinated universal time\n" \ | 1536 | " -u Hardware clock is in UTC\n" \ |
| 1528 | " -l The hardware clock is kept in local time\n" \ | 1537 | " -l Hardware clock is in local time\n" \ |
| 1529 | " -f FILE Use the specified clock (e.g. /dev/rtc2)" | 1538 | " -f FILE Use specified device (e.g. /dev/rtc2)" |
| 1530 | 1539 | ||
| 1531 | #define id_trivial_usage \ | 1540 | #define id_trivial_usage \ |
| 1532 | "[OPTIONS]... [USERNAME]" | 1541 | "[OPTIONS]... [USERNAME]" |
| @@ -1974,17 +1983,16 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 1974 | "5\n" | 1983 | "5\n" |
| 1975 | 1984 | ||
| 1976 | #define less_trivial_usage \ | 1985 | #define less_trivial_usage \ |
| 1977 | "[-EMNmh~?] FILE1 FILE2..." | 1986 | "[-EMNmh~?] [FILE...]" |
| 1978 | #define less_full_usage \ | 1987 | #define less_full_usage \ |
| 1979 | "View a file or list of files. The position within files can be\n" \ | 1988 | "View a file or list of files. The position within files can be\n" \ |
| 1980 | "changed, and files can be manipulated in various ways." \ | 1989 | "changed, and files can be manipulated in various ways." \ |
| 1981 | "\n\nOptions:\n" \ | 1990 | "\n\nOptions:\n" \ |
| 1982 | " -E Quit once the end of a file is reached\n" \ | 1991 | " -E Quit once the end of a file is reached\n" \ |
| 1983 | " -M,-m Display a status line containing the current line numbers\n" \ | 1992 | " -M,-m Display a status line containing the line numbers\n" \ |
| 1984 | " and the percentage through the file\n" \ | 1993 | " and percentage through the file\n" \ |
| 1985 | " -N Prefix line numbers to each line\n" \ | 1994 | " -N Prefix line numbers to each line\n" \ |
| 1986 | " -~ Suppress ~s displayed when input past the end of the file is\n" \ | 1995 | " -~ Suppress ~s displayed past the end of the file" \ |
| 1987 | " reached" | ||
| 1988 | 1996 | ||
| 1989 | #define setarch_trivial_usage \ | 1997 | #define setarch_trivial_usage \ |
| 1990 | "personality program [args...]" | 1998 | "personality program [args...]" |
| @@ -2034,18 +2042,18 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 2034 | "\n\nOptions:\n" \ | 2042 | "\n\nOptions:\n" \ |
| 2035 | " -s Log to stderr as well as the system log\n" \ | 2043 | " -s Log to stderr as well as the system log\n" \ |
| 2036 | " -t TAG Log using the specified tag (defaults to user name)\n" \ | 2044 | " -t TAG Log using the specified tag (defaults to user name)\n" \ |
| 2037 | " -p PRIO Enter the message with the specified priority.\n" \ | 2045 | " -p PRIO Priority (numeric or facility.level pair)" |
| 2038 | " This may be numerical or a 'facility.level' pair." | 2046 | |
| 2039 | #define logger_example_usage \ | 2047 | #define logger_example_usage \ |
| 2040 | "$ logger \"hello\"\n" | 2048 | "$ logger \"hello\"\n" |
| 2041 | 2049 | ||
| 2042 | #define login_trivial_usage \ | 2050 | #define login_trivial_usage \ |
| 2043 | "[OPTION]... [username] [ENV=VAR...]" | 2051 | "[-p] [-h HOST] [[-f] USER]" |
| 2044 | #define login_full_usage \ | 2052 | #define login_full_usage \ |
| 2045 | "Begin a new session on the system" \ | 2053 | "Begin a new session on the system" \ |
| 2046 | "\n\nOptions:\n" \ | 2054 | "\n\nOptions:\n" \ |
| 2047 | " -f Do not authenticate (user already authenticated)\n" \ | 2055 | " -f Do not authenticate (user already authenticated)\n" \ |
| 2048 | " -h Name of the remote host for this login\n" \ | 2056 | " -h Name of the remote host\n" \ |
| 2049 | " -p Preserve environment" | 2057 | " -p Preserve environment" |
| 2050 | 2058 | ||
| 2051 | #define logname_trivial_usage \ | 2059 | #define logname_trivial_usage \ |
| @@ -2059,9 +2067,9 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 2059 | #define logread_trivial_usage \ | 2067 | #define logread_trivial_usage \ |
| 2060 | "[OPTION]..." | 2068 | "[OPTION]..." |
| 2061 | #define logread_full_usage \ | 2069 | #define logread_full_usage \ |
| 2062 | "Show the messages from syslogd (using circular buffer)" \ | 2070 | "Show messages in syslogd's circular buffer" \ |
| 2063 | "\n\nOptions:\n" \ | 2071 | "\n\nOptions:\n" \ |
| 2064 | " -f Output data as the log grows" | 2072 | " -f Output data as log grows" |
| 2065 | 2073 | ||
| 2066 | #define losetup_trivial_usage \ | 2074 | #define losetup_trivial_usage \ |
| 2067 | "[-o OFS] LOOPDEV FILE - associate loop devices\n" \ | 2075 | "[-o OFS] LOOPDEV FILE - associate loop devices\n" \ |
| @@ -2384,7 +2392,7 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 2384 | " -n [14|30] Maximum length of filenames\n" \ | 2392 | " -n [14|30] Maximum length of filenames\n" \ |
| 2385 | " -i INODES Number of inodes for the filesystem\n" \ | 2393 | " -i INODES Number of inodes for the filesystem\n" \ |
| 2386 | " -l FILENAME Read bad blocks list from FILENAME\n" \ | 2394 | " -l FILENAME Read bad blocks list from FILENAME\n" \ |
| 2387 | " -v Make a Minix version 2 filesystem" | 2395 | " -v Make version 2 filesystem" |
| 2388 | 2396 | ||
| 2389 | #define mknod_trivial_usage \ | 2397 | #define mknod_trivial_usage \ |
| 2390 | "[OPTIONS] NAME TYPE MAJOR MINOR" | 2398 | "[OPTIONS] NAME TYPE MAJOR MINOR" |
| @@ -2809,30 +2817,28 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 2809 | "\n\nOptions:\n" \ | 2817 | "\n\nOptions:\n" \ |
| 2810 | " -l Show command name too\n" \ | 2818 | " -l Show command name too\n" \ |
| 2811 | " -f Match against entire command line\n" \ | 2819 | " -f Match against entire command line\n" \ |
| 2812 | " -n Signal the newest process only\n" \ | 2820 | " -n Show the newest process only\n" \ |
| 2813 | " -o Signal the oldest process only\n" \ | 2821 | " -o Show the oldest process only\n" \ |
| 2814 | " -v Negate the matching\n" \ | 2822 | " -v Negate the matching\n" \ |
| 2815 | " -x Match whole name (not substring)" | 2823 | " -x Match whole name (not substring)" |
| 2816 | 2824 | ||
| 2817 | #if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT) | 2825 | #if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT) |
| 2818 | #define USAGE_PIDOF "Options:" | 2826 | #define pidof_trivial_usage \ |
| 2827 | "[OPTION] [NAME...]" | ||
| 2828 | #define USAGE_PIDOF "\n\nOptions:" | ||
| 2819 | #else | 2829 | #else |
| 2820 | #define USAGE_PIDOF "\nThis version of pidof accepts no options." | ||
| 2821 | #endif | ||
| 2822 | |||
| 2823 | #define pidof_trivial_usage \ | 2830 | #define pidof_trivial_usage \ |
| 2824 | "process-name [OPTION] [process-name...]" | 2831 | "[NAME...]" |
| 2825 | 2832 | #define USAGE_PIDOF /* none */ | |
| 2833 | #endif | ||
| 2826 | #define pidof_full_usage \ | 2834 | #define pidof_full_usage \ |
| 2827 | "List the PIDs of all processes with names that match the\n" \ | 2835 | "List PIDs of all processes with names that match NAMEs" \ |
| 2828 | "names on the command line\n" \ | ||
| 2829 | USAGE_PIDOF \ | 2836 | USAGE_PIDOF \ |
| 2830 | USE_FEATURE_PIDOF_SINGLE( \ | 2837 | USE_FEATURE_PIDOF_SINGLE( \ |
| 2831 | "\n -s Display only a single PID") \ | 2838 | "\n -s Show only one PID") \ |
| 2832 | USE_FEATURE_PIDOF_OMIT( \ | 2839 | USE_FEATURE_PIDOF_OMIT( \ |
| 2833 | "\n -o PID Omit given pid") \ | 2840 | "\n -o PID Omit given pid" \ |
| 2834 | USE_FEATURE_PIDOF_OMIT( \ | 2841 | "\n Use %PPID to omit pid of pidof's parent") |
| 2835 | "\n Use %PPID to omit the parent pid of pidof itself") | ||
| 2836 | #define pidof_example_usage \ | 2842 | #define pidof_example_usage \ |
| 2837 | "$ pidof init\n" \ | 2843 | "$ pidof init\n" \ |
| 2838 | "1\n" \ | 2844 | "1\n" \ |
| @@ -3090,12 +3096,12 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 3090 | #define rm_trivial_usage \ | 3096 | #define rm_trivial_usage \ |
| 3091 | "[OPTION]... FILE..." | 3097 | "[OPTION]... FILE..." |
| 3092 | #define rm_full_usage \ | 3098 | #define rm_full_usage \ |
| 3093 | "Remove (unlink) the FILE(s). You may use '--' to\n" \ | 3099 | "Remove (unlink) the FILE(s). Use '--' to\n" \ |
| 3094 | "indicate that all following arguments are non-options." \ | 3100 | "indicate that all following arguments are non-options." \ |
| 3095 | "\n\nOptions:\n" \ | 3101 | "\n\nOptions:\n" \ |
| 3096 | " -i Always prompt before removing each destination\n" \ | 3102 | " -i Always prompt before removing\n" \ |
| 3097 | " -f Remove existing destinations, never prompt\n" \ | 3103 | " -f Never prompt\n" \ |
| 3098 | " -r,-R Remove the contents of directories recursively" | 3104 | " -r,-R Remove directories recursively" |
| 3099 | #define rm_example_usage \ | 3105 | #define rm_example_usage \ |
| 3100 | "$ rm -rf /tmp/foo\n" | 3106 | "$ rm -rf /tmp/foo\n" |
| 3101 | 3107 | ||
| @@ -3189,12 +3195,14 @@ USE_FEATURE_BRCTL_FANCY("\n" \ | |||
| 3189 | #define run_parts_trivial_usage \ | 3195 | #define run_parts_trivial_usage \ |
| 3190 | "[-t] "USE_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY" | 3196 | "[-t] "USE_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY" |
| 3191 | #define run_parts_full_usage \ | 3197 | #define run_parts_full_usage \ |
| 3192 | "Run a bunch of scripts in a directory" \ | 3198 | "Run a bunch of scripts in a directory\n" \ |
| 3193 | "\n\nOptions:\n" \ | 3199 | "\nOptions:" \ |
| 3194 | " -t Prints what would be run, but does not actually run anything\n" \ | 3200 | "\n -t Print what would be run, but don't actually run anything" \ |
| 3195 | " -a ARG Pass ARG as an argument for every program invoked\n" \ | 3201 | "\n -a ARG Pass ARG as argument for every program" \ |
| 3196 | " -u MASK Set the umask to MASK before executing every program" \ | 3202 | "\n -u MASK Set the umask to MASK before running every program" \ |
| 3197 | USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when they are not executable") | 3203 | USE_FEATURE_RUN_PARTS_FANCY( \ |
| 3204 | "\n -l Print names of all matching files even if they are not executable" \ | ||
| 3205 | ) | ||
| 3198 | 3206 | ||
| 3199 | #define run_parts_example_usage \ | 3207 | #define run_parts_example_usage \ |
| 3200 | "$ run-parts -a start /etc/init.d\n" \ | 3208 | "$ run-parts -a start /etc/init.d\n" \ |
| @@ -3251,7 +3259,7 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3251 | #define sed_full_usage \ | 3259 | #define sed_full_usage \ |
| 3252 | "Options:\n" \ | 3260 | "Options:\n" \ |
| 3253 | " -e script Add the script to the commands to be executed\n" \ | 3261 | " -e script Add the script to the commands to be executed\n" \ |
| 3254 | " -f scriptfile Add script-file contents to the\n" \ | 3262 | " -f scriptfile Add scriptfile contents to the\n" \ |
| 3255 | " commands to be executed\n" \ | 3263 | " commands to be executed\n" \ |
| 3256 | " -i Edit files in-place\n" \ | 3264 | " -i Edit files in-place\n" \ |
| 3257 | " -n Suppress automatic printing of pattern space\n" \ | 3265 | " -n Suppress automatic printing of pattern space\n" \ |
| @@ -3276,9 +3284,9 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3276 | "Send an email with optional attachments." \ | 3284 | "Send an email with optional attachments." \ |
| 3277 | "\n\nOptions:\n" \ | 3285 | "\n\nOptions:\n" \ |
| 3278 | " -w timeout Set timeout on network operations\n" \ | 3286 | " -w timeout Set timeout on network operations\n" \ |
| 3279 | " -U username Authenticate with specified username\n" \ | 3287 | " -U username Authenticate with specified username/password\n" \ |
| 3280 | " -P password Authenticate with specified password\n" \ | 3288 | " -P password\n" \ |
| 3281 | " -t address Recipient(s). May be multiple\n" \ | 3289 | " -t address Recipient(s). May be repeated\n" \ |
| 3282 | " -X Use openssl connection helper for secured servers\n" \ | 3290 | " -X Use openssl connection helper for secured servers\n" \ |
| 3283 | " -n Request delivery notification to sender\n" \ | 3291 | " -n Request delivery notification to sender\n" \ |
| 3284 | " -s subject Subject\n" \ | 3292 | " -s subject Subject\n" \ |
| @@ -3813,19 +3821,15 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3813 | #define telnet_trivial_usage \ | 3821 | #define telnet_trivial_usage \ |
| 3814 | "[-a] [-l USER] HOST [PORT]" | 3822 | "[-a] [-l USER] HOST [PORT]" |
| 3815 | #define telnet_full_usage \ | 3823 | #define telnet_full_usage \ |
| 3816 | "Connect to remote telnet server" \ | 3824 | "Connect to telnet server\n" \ |
| 3817 | "\n\nOptions:\n" \ | 3825 | "\nOptions:" \ |
| 3818 | " -a Attempt an automatic login with the USER variable\n" \ | 3826 | "\n -a Attempt an automatic login with USER variable" \ |
| 3819 | " -l USER Attempt an automatic login with the USER argument\n" \ | 3827 | "\n -l USER Attempt an automatic login with USER argument" |
| 3820 | " HOST The official name, alias or the IP address of the\n" \ | ||
| 3821 | " remote host\n" \ | ||
| 3822 | " PORT The remote port number to connect to. If it is not\n" \ | ||
| 3823 | " specified, the default telnet (23) port is used." | ||
| 3824 | #else | 3828 | #else |
| 3825 | #define telnet_trivial_usage \ | 3829 | #define telnet_trivial_usage \ |
| 3826 | "HOST [PORT]" | 3830 | "HOST [PORT]" |
| 3827 | #define telnet_full_usage \ | 3831 | #define telnet_full_usage \ |
| 3828 | "Connect to remote telnet server" | 3832 | "Connect to telnet server" |
| 3829 | #endif | 3833 | #endif |
| 3830 | 3834 | ||
| 3831 | #define telnetd_trivial_usage \ | 3835 | #define telnetd_trivial_usage \ |
| @@ -3869,9 +3873,8 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3869 | /* with not-implemented options: */ | 3873 | /* with not-implemented options: */ |
| 3870 | /* "[-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] [-i dir|-x cdb] [-t sec] ip port prog..." */ | 3874 | /* "[-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] [-i dir|-x cdb] [-t sec] ip port prog..." */ |
| 3871 | #define tcpsvd_full_usage \ | 3875 | #define tcpsvd_full_usage \ |
| 3872 | "Creates TCP socket, binds it to ip:port and listens on it\n" \ | 3876 | "Create TCP socket, bind it to ip:port and listen\n" \ |
| 3873 | "for incoming connections. For each connection it runs prog." \ | 3877 | "for incoming connection. Run PROG for each connection.\n" \ |
| 3874 | "\n" \ | ||
| 3875 | "\nip IP to listen on. '0' = all" \ | 3878 | "\nip IP to listen on. '0' = all" \ |
| 3876 | "\nport Port to listen on" \ | 3879 | "\nport Port to listen on" \ |
| 3877 | "\nprog [arg] Program to run" \ | 3880 | "\nprog [arg] Program to run" \ |
| @@ -3889,10 +3892,9 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3889 | #define udpsvd_trivial_usage \ | 3892 | #define udpsvd_trivial_usage \ |
| 3890 | "[-hEv] [-c n] [-u user] [-l name] ip port prog" | 3893 | "[-hEv] [-c n] [-u user] [-l name] ip port prog" |
| 3891 | #define udpsvd_full_usage \ | 3894 | #define udpsvd_full_usage \ |
| 3892 | "Creates UDP socket, binds it to ip:port and listens on it\n" \ | 3895 | "Create UDP socket, bind it to ip:port and wait\n" \ |
| 3893 | "for incoming packets. For each packet it runs prog\n" \ | 3896 | "for incoming packets. Run PROG for each packet,\n" \ |
| 3894 | "(redirecting all further packets with same peer ip:port to it)." \ | 3897 | "redirecting all further packets with same peer ip:port to it\n" \ |
| 3895 | "\n" \ | ||
| 3896 | "\nip IP to listen on. '0' = all" \ | 3898 | "\nip IP to listen on. '0' = all" \ |
| 3897 | "\nport Port to listen on" \ | 3899 | "\nport Port to listen on" \ |
| 3898 | "\nprog [arg] Program to run" \ | 3900 | "\nprog [arg] Program to run" \ |
| @@ -3928,10 +3930,10 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 3928 | " -v Verbose" | 3930 | " -v Verbose" |
| 3929 | 3931 | ||
| 3930 | #define top_trivial_usage \ | 3932 | #define top_trivial_usage \ |
| 3931 | "[-b] [-n count] [-d seconds]" | 3933 | "[-b] [-n COUNT] [-d SECONDS]" |
| 3932 | #define top_full_usage \ | 3934 | #define top_full_usage \ |
| 3933 | "Provide a view of process activity in real time.\n" \ | 3935 | "Provide a view of process activity in real time.\n" \ |
| 3934 | "Read the status of all processes from /proc each <seconds>\n" \ | 3936 | "Read the status of all processes from /proc each SECONDS\n" \ |
| 3935 | "and show the status for however many processes will fit on the screen." | 3937 | "and show the status for however many processes will fit on the screen." |
| 3936 | 3938 | ||
| 3937 | #define touch_trivial_usage \ | 3939 | #define touch_trivial_usage \ |
| @@ -4164,12 +4166,11 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when | |||
| 4164 | #define unix2dos_trivial_usage \ | 4166 | #define unix2dos_trivial_usage \ |
| 4165 | "[option] [FILE]" | 4167 | "[option] [FILE]" |
| 4166 | #define unix2dos_full_usage \ | 4168 | #define unix2dos_full_usage \ |
| 4167 | "Convert FILE from unix format to dos format. When no option\n" \ | 4169 | "Convert FILE from unix to dos format.\n" \ |
| 4168 | "is given, the input is converted to the opposite output format.\n" \ | 4170 | "When no file is given, use stdin/stdout.\n" \ |
| 4169 | "When no file is given, use stdin/stdout." \ | 4171 | "\nOptions:\n" \ |
| 4170 | "\n\nOptions:\n" \ | 4172 | "\n -u dos2unix" \ |
| 4171 | " -u Output will be in UNIX format\n" \ | 4173 | "\n -d unix2dos" |
| 4172 | " -d Output will be in DOS format" | ||
| 4173 | 4174 | ||
| 4174 | #define unzip_trivial_usage \ | 4175 | #define unzip_trivial_usage \ |
| 4175 | "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]" | 4176 | "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]" |
diff --git a/libbb/setup_environment.c b/libbb/setup_environment.c index 19a2c6db5..6e3575cf9 100644 --- a/libbb/setup_environment.c +++ b/libbb/setup_environment.c | |||
| @@ -30,16 +30,16 @@ | |||
| 30 | 30 | ||
| 31 | #include "libbb.h" | 31 | #include "libbb.h" |
| 32 | 32 | ||
| 33 | void setup_environment(const char *shell, int loginshell, int changeenv, const struct passwd *pw) | 33 | void setup_environment(const char *shell, int clear_env, int change_env, const struct passwd *pw) |
| 34 | { | 34 | { |
| 35 | if (loginshell) { | 35 | if (clear_env) { |
| 36 | const char *term; | 36 | const char *term; |
| 37 | 37 | ||
| 38 | /* Change the current working directory to be the home directory | 38 | /* Change the current working directory to be the home directory |
| 39 | * of the user */ | 39 | * of the user */ |
| 40 | if (chdir(pw->pw_dir)) { | 40 | if (chdir(pw->pw_dir)) { |
| 41 | xchdir("/"); | 41 | xchdir("/"); |
| 42 | fputs("warning: cannot change to home directory\n", stderr); | 42 | bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir); |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH. | 45 | /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH. |
| @@ -56,7 +56,7 @@ void setup_environment(const char *shell, int loginshell, int changeenv, const s | |||
| 56 | //xsetenv("HOME", pw->pw_dir); | 56 | //xsetenv("HOME", pw->pw_dir); |
| 57 | //xsetenv("SHELL", shell); | 57 | //xsetenv("SHELL", shell); |
| 58 | } | 58 | } |
| 59 | else if (changeenv) { | 59 | else if (change_env) { |
| 60 | /* Set HOME, SHELL, and if not becoming a super-user, | 60 | /* Set HOME, SHELL, and if not becoming a super-user, |
| 61 | USER and LOGNAME. */ | 61 | USER and LOGNAME. */ |
| 62 | if (pw->pw_uid) { | 62 | if (pw->pw_uid) { |
diff --git a/loginutils/login.c b/loginutils/login.c index bc437bb6b..a3caa0fca 100644 --- a/loginutils/login.c +++ b/loginutils/login.c | |||
| @@ -237,8 +237,8 @@ int login_main(int argc, char **argv) | |||
| 237 | unsigned opt; | 237 | unsigned opt; |
| 238 | int count = 0; | 238 | int count = 0; |
| 239 | struct passwd *pw; | 239 | struct passwd *pw; |
| 240 | char *opt_host = NULL; | 240 | char *opt_host = opt_host; /* for compiler */ |
| 241 | char *opt_user = NULL; | 241 | char *opt_user = opt_user; /* for compiler */ |
| 242 | char full_tty[TTYNAME_SIZE]; | 242 | char full_tty[TTYNAME_SIZE]; |
| 243 | USE_SELINUX(security_context_t user_sid = NULL;) | 243 | USE_SELINUX(security_context_t user_sid = NULL;) |
| 244 | USE_FEATURE_UTMP(struct utmp utent;) | 244 | USE_FEATURE_UTMP(struct utmp utent;) |
| @@ -287,7 +287,7 @@ int login_main(int argc, char **argv) | |||
| 287 | 287 | ||
| 288 | read_or_build_utent(&utent, !amroot); | 288 | read_or_build_utent(&utent, !amroot); |
| 289 | 289 | ||
| 290 | if (opt_host) { | 290 | if (opt & LOGIN_OPT_h) { |
| 291 | USE_FEATURE_UTMP( | 291 | USE_FEATURE_UTMP( |
| 292 | safe_strncpy(utent.ut_host, opt_host, sizeof(utent.ut_host)); | 292 | safe_strncpy(utent.ut_host, opt_host, sizeof(utent.ut_host)); |
| 293 | ) | 293 | ) |
| @@ -450,9 +450,12 @@ int login_main(int argc, char **argv) | |||
| 450 | xsetenv("LOGIN_UID", utoa(pw->pw_uid)); | 450 | xsetenv("LOGIN_UID", utoa(pw->pw_uid)); |
| 451 | xsetenv("LOGIN_GID", utoa(pw->pw_gid)); | 451 | xsetenv("LOGIN_GID", utoa(pw->pw_gid)); |
| 452 | xsetenv("LOGIN_SHELL", pw->pw_shell); | 452 | xsetenv("LOGIN_SHELL", pw->pw_shell); |
| 453 | xspawn(t_argv); /* NOMMU-friendly */ | 453 | spawn_and_wait(t_argv); /* NOMMU-friendly */ |
| 454 | /* All variables are unset by setup_environment */ | 454 | unsetenv("LOGIN_TTY" ); |
| 455 | wait(NULL); | 455 | unsetenv("LOGIN_USER" ); |
| 456 | unsetenv("LOGIN_UID" ); | ||
| 457 | unsetenv("LOGIN_GID" ); | ||
| 458 | unsetenv("LOGIN_SHELL"); | ||
| 456 | } | 459 | } |
| 457 | } | 460 | } |
| 458 | 461 | ||
| @@ -460,9 +463,8 @@ int login_main(int argc, char **argv) | |||
| 460 | tmp = pw->pw_shell; | 463 | tmp = pw->pw_shell; |
| 461 | if (!tmp || !*tmp) | 464 | if (!tmp || !*tmp) |
| 462 | tmp = DEFAULT_SHELL; | 465 | tmp = DEFAULT_SHELL; |
| 463 | /* setup_environment params: shell, loginshell, changeenv, pw */ | 466 | /* setup_environment params: shell, clear_env, change_env, pw */ |
| 464 | setup_environment(tmp, 1, !(opt & LOGIN_OPT_p), pw); | 467 | setup_environment(tmp, !(opt & LOGIN_OPT_p), 1, pw); |
| 465 | /* FIXME: login shell = 1 -> 3rd parameter is ignored! */ | ||
| 466 | 468 | ||
| 467 | motd(); | 469 | motd(); |
| 468 | 470 | ||
diff --git a/loginutils/su.c b/loginutils/su.c index 8c55170ca..afb9843f8 100644 --- a/loginutils/su.c +++ b/loginutils/su.c | |||
| @@ -93,7 +93,7 @@ int su_main(int argc, char **argv) | |||
| 93 | opt_shell = pw->pw_shell; | 93 | opt_shell = pw->pw_shell; |
| 94 | 94 | ||
| 95 | change_identity(pw); | 95 | change_identity(pw); |
| 96 | /* setup_environment params: shell, loginshell, changeenv, pw */ | 96 | /* setup_environment params: shell, clear_env, change_env, pw */ |
| 97 | setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_mp), pw); | 97 | setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_mp), pw); |
| 98 | USE_SELINUX(set_current_security_context(NULL);) | 98 | USE_SELINUX(set_current_security_context(NULL);) |
| 99 | 99 | ||
diff --git a/procps/pgrep.c b/procps/pgrep.c index 2ebcca1c0..e4dfacb54 100644 --- a/procps/pgrep.c +++ b/procps/pgrep.c | |||
| @@ -72,8 +72,9 @@ int pgrep_main(int argc, char **argv) | |||
| 72 | first_arg = argv[first_arg_idx]; | 72 | first_arg = argv[first_arg_idx]; |
| 73 | if (!first_arg) | 73 | if (!first_arg) |
| 74 | break; | 74 | break; |
| 75 | /* not "-<small_letter>..."? */ | ||
| 75 | if (first_arg[0] != '-' || first_arg[1] < 'a' || first_arg[1] > 'z') { | 76 | if (first_arg[0] != '-' || first_arg[1] < 'a' || first_arg[1] > 'z') { |
| 76 | argv[first_arg_idx] = NULL; | 77 | argv[first_arg_idx] = NULL; /* terminate argv here */ |
| 77 | break; | 78 | break; |
| 78 | } | 79 | } |
| 79 | first_arg_idx++; | 80 | first_arg_idx++; |
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c index 827ea21f3..a75b4f817 100644 --- a/util-linux/fdisk.c +++ b/util-linux/fdisk.c | |||
| @@ -318,6 +318,23 @@ struct globals { | |||
| 318 | } while (0) | 318 | } while (0) |
| 319 | 319 | ||
| 320 | 320 | ||
| 321 | /* TODO: move to libbb? */ | ||
| 322 | static ullong bb_BLKGETSIZE_sectors(void) | ||
| 323 | { | ||
| 324 | uint64_t v64; | ||
| 325 | unsigned long longsectors; | ||
| 326 | |||
| 327 | if (ioctl(fd, BLKGETSIZE64, &v64) == 0) { | ||
| 328 | /* got bytes, convert to 512 byte sectors */ | ||
| 329 | return (v64 >> 9); | ||
| 330 | } | ||
| 331 | /* Needs temp of type long */ | ||
| 332 | if (ioctl(fd, BLKGETSIZE, &longsectors)) | ||
| 333 | longsectors = 0; | ||
| 334 | return longsectors; | ||
| 335 | } | ||
| 336 | |||
| 337 | |||
| 321 | #define IS_EXTENDED(i) \ | 338 | #define IS_EXTENDED(i) \ |
| 322 | ((i) == EXTENDED || (i) == WIN98_EXTENDED || (i) == LINUX_EXTENDED) | 339 | ((i) == EXTENDED || (i) == WIN98_EXTENDED || (i) == LINUX_EXTENDED) |
| 323 | 340 | ||
| @@ -624,12 +641,12 @@ get_nr_sects(const struct partition *p) | |||
| 624 | /* normally O_RDWR, -l option gives O_RDONLY */ | 641 | /* normally O_RDWR, -l option gives O_RDONLY */ |
| 625 | static int type_open = O_RDWR; | 642 | static int type_open = O_RDWR; |
| 626 | 643 | ||
| 627 | static int ext_index; /* the prime extended partition */ | 644 | static int ext_index; /* the prime extended partition */ |
| 628 | static smallint listing; /* no aborts for fdisk -l */ | 645 | static smallint listing; /* no aborts for fdisk -l */ |
| 629 | static int dos_compatible_flag = ~0; | 646 | static smallint dos_compatible_flag = 1; |
| 630 | #if ENABLE_FEATURE_FDISK_WRITABLE | 647 | #if ENABLE_FEATURE_FDISK_WRITABLE |
| 631 | //static int dos_changed; | 648 | //static int dos_changed; |
| 632 | static smallint nowarn; /* no warnings for fdisk -l/-s */ | 649 | static smallint nowarn; /* no warnings for fdisk -l/-s */ |
| 633 | #endif | 650 | #endif |
| 634 | 651 | ||
| 635 | static unsigned user_cylinders, user_heads, user_sectors; | 652 | static unsigned user_cylinders, user_heads, user_sectors; |
| @@ -1184,7 +1201,6 @@ static void | |||
| 1184 | get_geometry(void) | 1201 | get_geometry(void) |
| 1185 | { | 1202 | { |
| 1186 | int sec_fac; | 1203 | int sec_fac; |
| 1187 | uint64_t v64; | ||
| 1188 | 1204 | ||
| 1189 | get_sectorsize(); | 1205 | get_sectorsize(); |
| 1190 | sec_fac = sector_size / 512; | 1206 | sec_fac = sector_size / 512; |
| @@ -1204,15 +1220,7 @@ get_geometry(void) | |||
| 1204 | g_sectors = user_sectors ? user_sectors : | 1220 | g_sectors = user_sectors ? user_sectors : |
| 1205 | pt_sectors ? pt_sectors : | 1221 | pt_sectors ? pt_sectors : |
| 1206 | kern_sectors ? kern_sectors : 63; | 1222 | kern_sectors ? kern_sectors : 63; |
| 1207 | if (ioctl(fd, BLKGETSIZE64, &v64) == 0) { | 1223 | total_number_of_sectors = bb_BLKGETSIZE_sectors(); |
| 1208 | /* got bytes, convert to 512 byte sectors */ | ||
| 1209 | total_number_of_sectors = (v64 >> 9); | ||
| 1210 | } else { | ||
| 1211 | unsigned long longsectors; /* need temp of type long */ | ||
| 1212 | if (ioctl(fd, BLKGETSIZE, &longsectors)) | ||
| 1213 | longsectors = 0; | ||
| 1214 | total_number_of_sectors = longsectors; | ||
| 1215 | } | ||
| 1216 | 1224 | ||
| 1217 | sector_offset = 1; | 1225 | sector_offset = 1; |
| 1218 | if (dos_compatible_flag) | 1226 | if (dos_compatible_flag) |
| @@ -1576,7 +1584,7 @@ toggle_active(int i) | |||
| 1576 | static void | 1584 | static void |
| 1577 | toggle_dos_compatibility_flag(void) | 1585 | toggle_dos_compatibility_flag(void) |
| 1578 | { | 1586 | { |
| 1579 | dos_compatible_flag = ~dos_compatible_flag; | 1587 | dos_compatible_flag = 1 - dos_compatible_flag; |
| 1580 | if (dos_compatible_flag) { | 1588 | if (dos_compatible_flag) { |
| 1581 | sector_offset = g_sectors; | 1589 | sector_offset = g_sectors; |
| 1582 | printf("DOS Compatibility flag is set\n"); | 1590 | printf("DOS Compatibility flag is set\n"); |
| @@ -2732,7 +2740,8 @@ tryprocpt(void) | |||
| 2732 | if (sscanf(line, " %d %d %d %[^\n ]", | 2740 | if (sscanf(line, " %d %d %d %[^\n ]", |
| 2733 | &ma, &mi, &sz, ptname) != 4) | 2741 | &ma, &mi, &sz, ptname) != 4) |
| 2734 | continue; | 2742 | continue; |
| 2735 | for (s = ptname; *s; s++); | 2743 | for (s = ptname; *s; s++) |
| 2744 | continue; | ||
| 2736 | if (isdigit(s[-1])) | 2745 | if (isdigit(s[-1])) |
| 2737 | continue; | 2746 | continue; |
| 2738 | sprintf(devname, "/dev/%s", ptname); | 2747 | sprintf(devname, "/dev/%s", ptname); |
| @@ -2798,28 +2807,19 @@ int fdisk_main(int argc, char **argv) | |||
| 2798 | if (opt & OPT_u) | 2807 | if (opt & OPT_u) |
| 2799 | display_in_cyl_units = 0; // -u | 2808 | display_in_cyl_units = 0; // -u |
| 2800 | 2809 | ||
| 2801 | if (user_set_sector_size && argc != 1) | ||
| 2802 | printf("Warning: the -b (set sector size) option should" | ||
| 2803 | " be used with one specified device\n"); | ||
| 2804 | |||
| 2805 | #if ENABLE_FEATURE_FDISK_WRITABLE | 2810 | #if ENABLE_FEATURE_FDISK_WRITABLE |
| 2806 | if (opt & OPT_l) { | 2811 | if (opt & OPT_l) { |
| 2807 | nowarn = 1; | 2812 | nowarn = 1; |
| 2808 | #endif | 2813 | #endif |
| 2809 | type_open = O_RDONLY; | 2814 | type_open = O_RDONLY; |
| 2810 | if (argc > 0) { | 2815 | if (*argv) { |
| 2811 | int k; | ||
| 2812 | #if defined(__GNUC__) | ||
| 2813 | /* avoid gcc warning: | ||
| 2814 | variable `k' might be clobbered by `longjmp' */ | ||
| 2815 | (void)&k; | ||
| 2816 | #endif | ||
| 2817 | listing = 1; | 2816 | listing = 1; |
| 2818 | for (k = 0; k < argc; k++) | 2817 | do { |
| 2819 | trydev(argv[k], 1); | 2818 | trydev(*argv, 1); |
| 2819 | } while (*++argv); | ||
| 2820 | } else { | 2820 | } else { |
| 2821 | /* we no longer have default device names */ | 2821 | /* we don't have device names, */ |
| 2822 | /* but, we can use /proc/partitions instead */ | 2822 | /* use /proc/partitions instead */ |
| 2823 | tryprocpt(); | 2823 | tryprocpt(); |
| 2824 | } | 2824 | } |
| 2825 | return 0; | 2825 | return 0; |
| @@ -2829,27 +2829,20 @@ int fdisk_main(int argc, char **argv) | |||
| 2829 | 2829 | ||
| 2830 | #if ENABLE_FEATURE_FDISK_BLKSIZE | 2830 | #if ENABLE_FEATURE_FDISK_BLKSIZE |
| 2831 | if (opt & OPT_s) { | 2831 | if (opt & OPT_s) { |
| 2832 | long size; | ||
| 2833 | int j; | 2832 | int j; |
| 2834 | 2833 | ||
| 2835 | nowarn = 1; | 2834 | nowarn = 1; |
| 2836 | type_open = O_RDONLY; | ||
| 2837 | |||
| 2838 | if (argc <= 0) | 2835 | if (argc <= 0) |
| 2839 | bb_show_usage(); | 2836 | bb_show_usage(); |
| 2840 | |||
| 2841 | for (j = 0; j < argc; j++) { | 2837 | for (j = 0; j < argc; j++) { |
| 2842 | disk_device = argv[j]; | 2838 | unsigned long long size; |
| 2843 | fd = open(disk_device, type_open); | 2839 | fd = xopen(argv[j], O_RDONLY); |
| 2844 | if (fd < 0) | 2840 | size = bb_BLKGETSIZE_sectors() / 2; |
| 2845 | fdisk_fatal(unable_to_open); | ||
| 2846 | if (ioctl(fd, BLKGETSIZE, &size)) | ||
| 2847 | fdisk_fatal(ioctl_error); | ||
| 2848 | close(fd); | 2841 | close(fd); |
| 2849 | if (argc == 1) | 2842 | if (argc == 1) |
| 2850 | printf("%ld\n", size/2); | 2843 | printf("%lld\n", size); |
| 2851 | else | 2844 | else |
| 2852 | printf("%s: %ld\n", argv[j], size/2); | 2845 | printf("%s: %lld\n", argv[j], size); |
| 2853 | } | 2846 | } |
| 2854 | return 0; | 2847 | return 0; |
| 2855 | } | 2848 | } |
