aboutsummaryrefslogtreecommitdiff
path: root/util-linux/ipcrm.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-11-29 18:15:52 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-11-29 18:15:52 +0000
commitc6ce8733dda7e6f9146e0a040048aebea0c2e589 (patch)
treefb5fd16229f7c9f34423c4f27ed47cc19e7434df /util-linux/ipcrm.c
parenta35c9e91ba53073ff797d1d68d0d4e1836d934f0 (diff)
downloadbusybox-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.c25
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
40static int remove_ids(type_id type, int argc, char **argv) 40static 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) :