diff options
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/ipcs.c | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/util-linux/ipcs.c b/util-linux/ipcs.c index 7092ecd92..dc107eb95 100644 --- a/util-linux/ipcs.c +++ b/util-linux/ipcs.c @@ -101,8 +101,6 @@ union semun { #define TIME 4 #define PID 5 -static char format; - static void print_perms(int id, struct ipc_perm *ipcp) { struct passwd *pw; @@ -125,8 +123,7 @@ static void print_perms(int id, struct ipc_perm *ipcp) else printf(" %-10d\n", ipcp->gid); } - -static NOINLINE void do_shm(void) +static NOINLINE void do_shm(int format) { int maxid, shmid, id; struct shmid_ds shmseg; @@ -252,8 +249,7 @@ static NOINLINE void do_shm(void) } } - -static NOINLINE void do_sem(void) +static NOINLINE void do_sem(int format) { int maxid, semid, id; struct semid_ds semary; @@ -358,8 +354,7 @@ static NOINLINE void do_sem(void) } } - -static NOINLINE void do_msg(void) +static NOINLINE void do_msg(int format) { int maxid, msqid, id; struct msqid_ds msgque; @@ -466,7 +461,6 @@ static NOINLINE void do_msg(void) } } - static void print_shm(int shmid) { struct shmid_ds shmds; @@ -493,7 +487,6 @@ static void print_shm(int shmid) printf("change_time=%-26.24s\n\n", ctime(&shmds.shm_ctime)); } - static void print_msg(int msqid) { struct msqid_ds buf; @@ -570,7 +563,7 @@ static void print_sem(int semid) } //usage:#define ipcs_trivial_usage -//usage: "[[-smq] -i shmid] | [[-asmq] [-tcplu]]" +//usage: "[[-smq] -i SHMID] | [[-asmq] [-tcplu]]" //usage:#define ipcs_full_usage "\n\n" //usage: " -i Show specific resource" //usage: "\nResource specification:" @@ -588,20 +581,15 @@ static void print_sem(int semid) int ipcs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ipcs_main(int argc UNUSED_PARAM, char **argv) { - int id = 0; + int format = 0; unsigned flags = 0; unsigned opt; char *opt_i; -#define flag_print (1<<0) -#define flag_msg (1<<1) -#define flag_sem (1<<2) -#define flag_shm (1<<3) +#define flag_msg (1<<0) +#define flag_sem (1<<1) +#define flag_shm (1<<2) opt = getopt32(argv, "i:aqsmtcplu", &opt_i); - if (opt & 0x1) { // -i - id = xatoi(opt_i); - flags |= flag_print; - } if (opt & 0x2) flags |= flag_msg | flag_sem | flag_shm; // -a if (opt & 0x4) flags |= flag_msg; // -q if (opt & 0x8) flags |= flag_sem; // -s @@ -612,7 +600,10 @@ int ipcs_main(int argc UNUSED_PARAM, char **argv) if (opt & 0x100) format = LIMITS; // -l if (opt & 0x200) format = STATUS; // -u - if (flags & flag_print) { + if (opt & 1) { // -i + int id; + + id = xatoi(opt_i); if (flags & flag_shm) { print_shm(id); fflush_stdout_and_exit(EXIT_SUCCESS); @@ -633,15 +624,15 @@ int ipcs_main(int argc UNUSED_PARAM, char **argv) bb_putchar('\n'); if (flags & flag_msg) { - do_msg(); + do_msg(format); bb_putchar('\n'); } if (flags & flag_shm) { - do_shm(); + do_shm(format); bb_putchar('\n'); } if (flags & flag_sem) { - do_sem(); + do_sem(format); bb_putchar('\n'); } fflush_stdout_and_exit(EXIT_SUCCESS); |