diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-29 18:15:52 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-29 18:15:52 +0000 |
commit | c6ce8733dda7e6f9146e0a040048aebea0c2e589 (patch) | |
tree | fb5fd16229f7c9f34423c4f27ed47cc19e7434df /util-linux/ipcrm.c | |
parent | a35c9e91ba53073ff797d1d68d0d4e1836d934f0 (diff) | |
download | busybox-w32-c6ce8733dda7e6f9146e0a040048aebea0c2e589.tar.gz busybox-w32-c6ce8733dda7e6f9146e0a040048aebea0c2e589.tar.bz2 busybox-w32-c6ce8733dda7e6f9146e0a040048aebea0c2e589.zip |
cut 0.5k off mkfs.minix
assorted strtoul fixes (that's what brought me into minix)...
Diffstat (limited to 'util-linux/ipcrm.c')
-rw-r--r-- | util-linux/ipcrm.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/util-linux/ipcrm.c b/util-linux/ipcrm.c index 8ea9627c1..507e58fe3 100644 --- a/util-linux/ipcrm.c +++ b/util-linux/ipcrm.c | |||
@@ -39,19 +39,16 @@ typedef enum type_id { | |||
39 | 39 | ||
40 | static int remove_ids(type_id type, int argc, char **argv) | 40 | static int remove_ids(type_id type, int argc, char **argv) |
41 | { | 41 | { |
42 | int id; | 42 | unsigned long id; |
43 | int ret = 0; /* silence gcc */ | 43 | int ret = 0; /* silence gcc */ |
44 | char *end; | ||
45 | int nb_errors = 0; | 44 | int nb_errors = 0; |
46 | union semun arg; | 45 | union semun arg; |
47 | 46 | ||
48 | arg.val = 0; | 47 | arg.val = 0; |
49 | 48 | ||
50 | while (argc) { | 49 | while (argc) { |
51 | 50 | id = bb_strtoul(argv[0], NULL, 10); | |
52 | id = strtoul(argv[0], &end, 10); | 51 | if (errno || id > INT_MAX) { |
53 | |||
54 | if (*end != 0) { | ||
55 | bb_error_msg("invalid id: %s", argv[0]); | 52 | bb_error_msg("invalid id: %s", argv[0]); |
56 | nb_errors++; | 53 | nb_errors++; |
57 | } else { | 54 | } else { |
@@ -91,11 +88,13 @@ int ipcrm_main(int argc, char **argv) | |||
91 | type_id what = 0; /* silence gcc */ | 88 | type_id what = 0; /* silence gcc */ |
92 | char w; | 89 | char w; |
93 | 90 | ||
94 | if ((((w=argv[1][0]) == 'm' && argv[1][1] == 's' && argv[1][2] == 'g') | 91 | w=argv[1][0]; |
95 | || (argv[1][0] == 's' | 92 | if ( ((w == 'm' && argv[1][1] == 's' && argv[1][2] == 'g') |
96 | && ((w=argv[1][1]) == 'h' || w == 'e') | 93 | || (argv[1][0] == 's' |
97 | && argv[1][2] == 'm')) | 94 | && ((w=argv[1][1]) == 'h' || w == 'e') |
98 | && argv[1][3] == '\0') { | 95 | && argv[1][2] == 'm') |
96 | ) && argv[1][3] == '\0' | ||
97 | ) { | ||
99 | 98 | ||
100 | if (argc < 3) | 99 | if (argc < 3) |
101 | bb_show_usage(); | 100 | bb_show_usage(); |
@@ -140,7 +139,7 @@ int ipcrm_main(int argc, char **argv) | |||
140 | 139 | ||
141 | if (iskey) { | 140 | if (iskey) { |
142 | /* keys are in hex or decimal */ | 141 | /* keys are in hex or decimal */ |
143 | key_t key = strtoul(optarg, NULL, 0); | 142 | key_t key = xstrtoul(optarg, 0); |
144 | 143 | ||
145 | if (key == IPC_PRIVATE) { | 144 | if (key == IPC_PRIVATE) { |
146 | error++; | 145 | error++; |
@@ -176,7 +175,7 @@ int ipcrm_main(int argc, char **argv) | |||
176 | } | 175 | } |
177 | } else { | 176 | } else { |
178 | /* ids are in decimal */ | 177 | /* ids are in decimal */ |
179 | id = strtoul(optarg, NULL, 10); | 178 | id = xatoul(optarg); |
180 | } | 179 | } |
181 | 180 | ||
182 | result = ((c == 'q') ? msgctl(id, IPC_RMID, NULL) : | 181 | result = ((c == 'q') ? msgctl(id, IPC_RMID, NULL) : |