remove bb_printf and the like

This commit is contained in:
Denis Vlasenko 2006-10-26 23:21:47 +00:00
parent 670a6626ca
commit f0ed376eda
48 changed files with 315 additions and 314 deletions

View File

@ -46,5 +46,5 @@ int basename_main(int argc, char **argv)
puts(s); puts(s);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -139,7 +139,7 @@ int cal_main(int argc, char **argv)
day_array(month, year, dp); day_array(month, year, dp);
len = sprintf(lineout, "%s %d", month_names[month - 1], year); len = sprintf(lineout, "%s %d", month_names[month - 1], year);
bb_printf("%*s%s\n%s\n", printf("%*s%s\n%s\n",
((7*julian + WEEK_LEN) - len) / 2, "", ((7*julian + WEEK_LEN) - len) / 2, "",
lineout, day_headings); lineout, day_headings);
for (row = 0; row < 6; row++) { for (row = 0; row < 6; row++) {
@ -170,9 +170,9 @@ int cal_main(int argc, char **argv)
center(month_names[month + 1], week_len, HEAD_SEP); center(month_names[month + 1], week_len, HEAD_SEP);
} }
center(month_names[month + 2 - julian], week_len, 0); center(month_names[month + 2 - julian], week_len, 0);
bb_printf("\n%s%*s%s", day_headings, HEAD_SEP, "", day_headings); printf("\n%s%*s%s", day_headings, HEAD_SEP, "", day_headings);
if (!julian) { if (!julian) {
bb_printf("%*s%s", HEAD_SEP, "", day_headings); printf("%*s%s", HEAD_SEP, "", day_headings);
} }
putchar('\n'); putchar('\n');
for (row = 0; row < (6*7); row += 7) { for (row = 0; row < (6*7); row += 7) {
@ -186,7 +186,7 @@ int cal_main(int argc, char **argv)
} }
} }
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }
/* /*
@ -281,7 +281,7 @@ static void center(char *str, int len, int separate)
{ {
int n = strlen(str); int n = strlen(str);
len -= n; len -= n;
bb_printf("%*s%*s", (len/2) + n, str, (len/2) + (len % 2) + separate, ""); printf("%*s%*s", (len/2) + n, str, (len/2) + (len % 2) + separate, "");
} }
static void blank_string(char *buf, size_t buflen) static void blank_string(char *buf, size_t buflen)

View File

@ -42,10 +42,10 @@ int catv_main(int argc, char **argv)
if (c > 126 && (flags & CATV_OPT_v)) { if (c > 126 && (flags & CATV_OPT_v)) {
if (c == 127) { if (c == 127) {
bb_printf("^?"); printf("^?");
continue; continue;
} else { } else {
bb_printf("M-"); printf("M-");
c -= 128; c -= 128;
} }
} }
@ -54,7 +54,7 @@ int catv_main(int argc, char **argv)
if (flags & CATV_OPT_e) if (flags & CATV_OPT_e)
putchar('$'); putchar('$');
} else if (flags & (c==9 ? CATV_OPT_t : CATV_OPT_v)) { } else if (flags & (c==9 ? CATV_OPT_t : CATV_OPT_v)) {
bb_printf("^%c", c+'@'); printf("^%c", c+'@');
continue; continue;
} }
} }
@ -65,5 +65,5 @@ int catv_main(int argc, char **argv)
close(fd); close(fd);
} while (*++argv); } while (*++argv);
return retval; fflush_stdout_and_exit(retval);
} }

View File

@ -41,13 +41,13 @@ int cksum_main(int argc, char **argv)
crc ^= 0xffffffffL; crc ^= 0xffffffffL;
if (inp_stdin) { if (inp_stdin) {
bb_printf("%" PRIu32 " %li\n", crc, filesize); printf("%" PRIu32 " %li\n", crc, filesize);
break; break;
} }
bb_printf("%" PRIu32 " %li %s\n", crc, filesize, *argv); printf("%" PRIu32 " %li %s\n", crc, filesize, *argv);
fclose(fp); fclose(fp);
} while (*(argv + 1)); } while (*(argv + 1));
return EXIT_SUCCESS; fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -96,7 +96,7 @@ int cmp_main(int argc, char **argv)
c1 = c2; c1 = c2;
} }
if (c1 == EOF) { if (c1 == EOF) {
xferror(fp1, filename1); die_if_ferror(fp1, filename1);
fmt = fmt_eof; /* Well, no error, so it must really be EOF. */ fmt = fmt_eof; /* Well, no error, so it must really be EOF. */
outfile = stderr; outfile = stderr;
/* There may have been output to stdout (option -l), so /* There may have been output to stdout (option -l), so
@ -107,7 +107,7 @@ int cmp_main(int argc, char **argv)
if (opt & CMP_OPT_l) { if (opt & CMP_OPT_l) {
line_pos = c1; /* line_pos is unused in the -l case. */ line_pos = c1; /* line_pos is unused in the -l case. */
} }
bb_fprintf(outfile, fmt, filename1, filename2, char_pos, line_pos, c2); fprintf(outfile, fmt, filename1, filename2, char_pos, line_pos, c2);
if (opt) { /* This must be -l since not -s. */ if (opt) { /* This must be -l since not -s. */
/* If we encountered an EOF, /* If we encountered an EOF,
* the while check will catch it. */ * the while check will catch it. */
@ -121,8 +121,8 @@ int cmp_main(int argc, char **argv)
} }
} while (c1 != EOF); } while (c1 != EOF);
xferror(fp1, filename1); die_if_ferror(fp1, filename1);
xferror(fp2, filename2); die_if_ferror(fp2, filename2);
bb_fflush_stdout_and_exit(retval); fflush_stdout_and_exit(retval);
} }

View File

@ -29,7 +29,7 @@ static off_t out_full, out_part, in_full, in_part;
static void dd_output_status(int ATTRIBUTE_UNUSED cur_signal) static void dd_output_status(int ATTRIBUTE_UNUSED cur_signal)
{ {
bb_fprintf(stderr, OFF_FMT"+"OFF_FMT" records in\n" fprintf(stderr, OFF_FMT"+"OFF_FMT" records in\n"
OFF_FMT"+"OFF_FMT" records out\n", OFF_FMT"+"OFF_FMT" records out\n",
in_full, in_part, in_full, in_part,
out_full, out_part); out_full, out_part);

View File

@ -51,25 +51,26 @@ int df_main(int argc, char **argv)
#ifdef CONFIG_FEATURE_HUMAN_READABLE #ifdef CONFIG_FEATURE_HUMAN_READABLE
opt_complementary = "h-km:k-hm:m-hk"; opt_complementary = "h-km:k-hm:m-hk";
opt = getopt32(argc, argv, "hmk"); opt = getopt32(argc, argv, "hmk");
if(opt & 1) { if (opt & 1) {
df_disp_hr = 0; df_disp_hr = 0;
disp_units_hdr = " Size"; disp_units_hdr = " Size";
} }
if(opt & 2) { if (opt & 2) {
df_disp_hr = MEGABYTE; df_disp_hr = MEGABYTE;
disp_units_hdr = "1M-blocks"; disp_units_hdr = "1M-blocks";
} }
#else #else
opt = getopt32(argc, argv, "k"); opt = getopt32(argc, argv, "k");
#endif #endif
bb_printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n", printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n",
"", disp_units_hdr); "", disp_units_hdr);
mount_table = NULL; mount_table = NULL;
argv += optind; argv += optind;
if (optind >= argc) { if (optind >= argc) {
if (!(mount_table = setmntent(bb_path_mtab_file, "r"))) { mount_table = setmntent(bb_path_mtab_file, "r");
if (!mount_table) {
bb_perror_msg_and_die(bb_path_mtab_file); bb_perror_msg_and_die(bb_path_mtab_file);
} }
} }
@ -79,16 +80,19 @@ int df_main(int argc, char **argv)
const char *mount_point; const char *mount_point;
if (mount_table) { if (mount_table) {
if (!(mount_entry = getmntent(mount_table))) { mount_entry = getmntent(mount_table);
if (!mount_entry) {
endmntent(mount_table); endmntent(mount_table);
break; break;
} }
} else { } else {
if (!(mount_point = *argv++)) { mount_point = *argv++;
if (!mount_point) {
break; break;
} }
if (!(mount_entry = find_mount_point(mount_point, bb_path_mtab_file))) { mount_entry = find_mount_point(mount_point, bb_path_mtab_file);
bb_error_msg("%s: can't find mount point.", mount_point); if (!mount_entry) {
bb_error_msg("%s: can't find mount point", mount_point);
SET_ERROR: SET_ERROR:
status = EXIT_FAILURE; status = EXIT_FAILURE;
continue; continue;
@ -108,8 +112,8 @@ int df_main(int argc, char **argv)
blocks_percent_used = 0; blocks_percent_used = 0;
if (blocks_used + s.f_bavail) { if (blocks_used + s.f_bavail) {
blocks_percent_used = (((long long) blocks_used) * 100 blocks_percent_used = (((long long) blocks_used) * 100
+ (blocks_used + s.f_bavail)/2 + (blocks_used + s.f_bavail)/2
) / (blocks_used + s.f_bavail); ) / (blocks_used + s.f_bavail);
} }
if (strcmp(device, "rootfs") == 0) { if (strcmp(device, "rootfs") == 0) {
@ -117,24 +121,25 @@ int df_main(int argc, char **argv)
} else if (strcmp(device, "/dev/root") == 0) { } else if (strcmp(device, "/dev/root") == 0) {
/* Adjusts device to be the real root device, /* Adjusts device to be the real root device,
* or leaves device alone if it can't find it */ * or leaves device alone if it can't find it */
if ((device = find_block_device("/")) == NULL) { device = find_block_device("/");
if (!device) {
goto SET_ERROR; goto SET_ERROR;
} }
} }
#ifdef CONFIG_FEATURE_HUMAN_READABLE #ifdef CONFIG_FEATURE_HUMAN_READABLE
bb_printf("%-20s %9s ", device, printf("%-20s %9s ", device,
make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr));
bb_printf("%9s ", printf("%9s ",
make_human_readable_str( (s.f_blocks - s.f_bfree), make_human_readable_str( (s.f_blocks - s.f_bfree),
s.f_bsize, df_disp_hr)); s.f_bsize, df_disp_hr));
bb_printf("%9s %3ld%% %s\n", printf("%9s %3ld%% %s\n",
make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr), make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr),
blocks_percent_used, mount_point); blocks_percent_used, mount_point);
#else #else
bb_printf("%-20s %9ld %9ld %9ld %3ld%% %s\n", printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
device, device,
kscale(s.f_blocks, s.f_bsize), kscale(s.f_blocks, s.f_bsize),
kscale(s.f_blocks-s.f_bfree, s.f_bsize), kscale(s.f_blocks-s.f_bfree, s.f_bsize),
@ -145,5 +150,5 @@ int df_main(int argc, char **argv)
} while (1); } while (1);
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -22,5 +22,5 @@ int dirname_main(int argc, char **argv)
puts(dirname(argv[1])); puts(dirname(argv[1]));
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -56,14 +56,14 @@ static void print(long size, const char * const filename)
{ {
/* TODO - May not want to defer error checking here. */ /* TODO - May not want to defer error checking here. */
#ifdef CONFIG_FEATURE_HUMAN_READABLE #ifdef CONFIG_FEATURE_HUMAN_READABLE
bb_printf("%s\t%s\n", make_human_readable_str(size, 512, disp_hr), printf("%s\t%s\n", make_human_readable_str(size, 512, disp_hr),
filename); filename);
#else #else
if (disp_k) { if (disp_k) {
size++; size++;
size >>= 1; size >>= 1;
} }
bb_printf("%ld\t%s\n", size, filename); printf("%ld\t%s\n", size, filename);
#endif #endif
} }
@ -246,5 +246,5 @@ int du_main(int argc, char **argv)
print(total, "total"); print(total, "total");
} }
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -115,7 +115,7 @@ just_echo:
int echo_main(int argc, char** argv) int echo_main(int argc, char** argv)
{ {
(void)bb_echo(argc, argv); (void)bb_echo(argc, argv);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }
/*- /*-

View File

@ -90,7 +90,7 @@ int env_main(int argc, char** argv)
puts(*ep); puts(*ep);
} }
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }
/* /*

View File

@ -87,11 +87,11 @@ int expr_main(int argc, char **argv)
bb_error_msg_and_die("syntax error"); bb_error_msg_and_die("syntax error");
if (v->type == integer) if (v->type == integer)
bb_printf("%" PF_REZ "d\n", PF_REZ_TYPE v->u.i); printf("%" PF_REZ "d\n", PF_REZ_TYPE v->u.i);
else else
puts(v->u.s); puts(v->u.s);
exit(null(v)); fflush_stdout_and_exit(null(v));
} }
/* Return a VALUE for I. */ /* Return a VALUE for I. */

View File

@ -150,5 +150,5 @@ rescan:
} }
} while (*++argv); } while (*++argv);
bb_fflush_stdout_and_exit(errs); fflush_stdout_and_exit(errs);
} }

View File

@ -112,12 +112,13 @@ int head_main(int argc, char **argv)
#endif #endif
do { do {
if ((fp = bb_wfopen_input(*argv)) != NULL) { fp = bb_wfopen_input(*argv);
if (fp) {
if (fp == stdin) { if (fp == stdin) {
*argv = (char *) bb_msg_standard_input; *argv = (char *) bb_msg_standard_input;
} }
if (header_threshhold) { if (header_threshhold) {
bb_printf(fmt, *argv); printf(fmt, *argv);
} }
i = count; i = count;
while (i && ((c = getc(fp)) != EOF)) { while (i && ((c = getc(fp)) != EOF)) {
@ -130,10 +131,10 @@ int head_main(int argc, char **argv)
bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */ bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */
retval = EXIT_FAILURE; retval = EXIT_FAILURE;
} }
xferror_stdout(); die_if_ferror_stdout();
} }
fmt = header_fmt_str; fmt = header_fmt_str;
} while (*++argv); } while (*++argv);
bb_fflush_stdout_and_exit(retval); fflush_stdout_and_exit(retval);
} }

View File

@ -19,7 +19,7 @@ int hostid_main(int argc, char ATTRIBUTE_UNUSED **argv)
bb_show_usage(); bb_show_usage();
} }
bb_printf("%lx\n", gethostid()); printf("%lx\n", gethostid());
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -35,7 +35,7 @@ static short printf_full(unsigned int id, const char *arg, const char prefix)
fmt = "%cid=%u(%s)"; fmt = "%cid=%u(%s)";
status = EXIT_SUCCESS; status = EXIT_SUCCESS;
} }
bb_printf(fmt, prefix, id, arg); printf(fmt, prefix, id, arg);
return status; return status;
} }
@ -74,10 +74,10 @@ int id_main(int argc, char **argv)
/* bb_getpwuid and bb_getgrgid exit on failure so puts cannot segfault */ /* bb_getpwuid and bb_getgrgid exit on failure so puts cannot segfault */
puts((flags & JUST_USER) ? bb_getpwuid(NULL, uid, -1 ) : bb_getgrgid(NULL, gid, -1 )); puts((flags & JUST_USER) ? bb_getpwuid(NULL, uid, -1 ) : bb_getgrgid(NULL, gid, -1 ));
} else { } else {
bb_printf("%u\n", (flags & JUST_USER) ? uid : gid); printf("%u\n", (flags & JUST_USER) ? uid : gid);
} }
/* exit */ /* exit */
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }
/* Print full info like GNU id */ /* Print full info like GNU id */
@ -96,16 +96,16 @@ int id_main(int argc, char **argv)
getcon(&mysid); getcon(&mysid);
context[0] = '\0'; context[0] = '\0';
if (mysid) { if (mysid) {
len = strlen(mysid)+1; len = strlen(mysid)+1;
safe_strncpy(context, mysid, len); safe_strncpy(context, mysid, len);
freecon(mysid); freecon(mysid);
} else { } else {
safe_strncpy(context, "unknown", 8); safe_strncpy(context, "unknown", 8);
} }
bb_printf(" context=%s", context); printf(" context=%s", context);
} }
#endif #endif
putchar('\n'); putchar('\n');
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -35,7 +35,7 @@ int logname_main(int argc, char ATTRIBUTE_UNUSED **argv)
if ((p = getlogin()) != NULL) { if ((p = getlogin()) != NULL) {
puts(p); puts(p);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }
bb_perror_msg_and_die("getlogin"); bb_perror_msg_and_die("getlogin");

View File

@ -17,8 +17,8 @@ int nice_main(int argc, char **argv)
old_priority = getpriority(PRIO_PROCESS, 0); old_priority = getpriority(PRIO_PROCESS, 0);
if (!*++argv) { /* No args, so (GNU) output current nice value. */ if (!*++argv) { /* No args, so (GNU) output current nice value. */
bb_printf("%d\n", old_priority); printf("%d\n", old_priority);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }
adjustment = 10; /* Set default adjustment. */ adjustment = 10; /* Set default adjustment. */

View File

@ -37,5 +37,5 @@ int printenv_main(int argc, char **argv)
} }
} }
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }

View File

@ -17,7 +17,7 @@ int pwd_main(int argc, char **argv)
if ((buf = xgetcwd(NULL)) != NULL) { if ((buf = xgetcwd(NULL)) != NULL) {
puts(buf); puts(buf);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }
return EXIT_FAILURE; return EXIT_FAILURE;

View File

@ -44,5 +44,5 @@ int realpath_main(int argc, char **argv)
RELEASE_CONFIG_BUFFER(resolved_path); RELEASE_CONFIG_BUFFER(resolved_path);
#endif #endif
bb_fflush_stdout_and_exit(retval); fflush_stdout_and_exit(retval);
} }

View File

@ -318,5 +318,5 @@ int sort_main(int argc, char **argv)
/* Print it */ /* Print it */
if(!outfile) outfile=stdout; if(!outfile) outfile=stdout;
for(i=0;i<linecount;i++) fprintf(outfile,"%s\n",lines[i]); for(i=0;i<linecount;i++) fprintf(outfile,"%s\n",lines[i]);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -85,7 +85,7 @@ int tee_main(int argc, char **argv)
* output files. Since we know that the first entry in the output * output files. Since we know that the first entry in the output
* file table is stdout, we can save one "if ferror" test by * file table is stdout, we can save one "if ferror" test by
* setting the first entry to stdin and checking stdout error * setting the first entry to stdin and checking stdout error
* status with bb_fflush_stdout_and_exit()... although fflush()ing * status with fflush_stdout_and_exit()... although fflush()ing
* is unnecessary here. */ * is unnecessary here. */
p = files; p = files;
@ -93,8 +93,8 @@ int tee_main(int argc, char **argv)
do { /* Now check for (input and) output errors. */ do { /* Now check for (input and) output errors. */
/* Checking ferror should be sufficient, but we may want to fclose. /* Checking ferror should be sufficient, but we may want to fclose.
* If we do, remember not to close stdin! */ * If we do, remember not to close stdin! */
xferror(*p, filenames[(int)(p - files)]); die_if_ferror(*p, filenames[(int)(p - files)]);
} while (*++p); } while (*++p);
bb_fflush_stdout_and_exit(retval); fflush_stdout_and_exit(retval);
} }

View File

@ -41,5 +41,5 @@ int tty_main(int argc, char **argv)
puts(s); puts(s);
} }
bb_fflush_stdout_and_exit(retval); fflush_stdout_and_exit(retval);
} }

View File

@ -91,10 +91,10 @@ int uname_main(int argc, char **argv)
strcpy(uname_info.processor, "unknown"); strcpy(uname_info.processor, "unknown");
delta=utsname_offset; delta = utsname_offset;
do { do {
if (toprint & 1) { if (toprint & 1) {
bb_printf(((char *)(&uname_info)) + *delta); printf(((char *)(&uname_info)) + *delta);
if (toprint > 1) { if (toprint > 1) {
putchar(' '); putchar(' ');
} }
@ -103,5 +103,5 @@ int uname_main(int argc, char **argv)
} while (toprint >>= 1); } while (toprint >>= 1);
putchar('\n'); putchar('\n');
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -37,7 +37,7 @@ int uniq_main(int argc, char **argv)
while ((opt = getopt(argc, argv, uniq_opts)) > 0) { while ((opt = getopt(argc, argv, uniq_opts)) > 0) {
if ((opt == 'f') || (opt == 's')) { if ((opt == 'f') || (opt == 's')) {
int t = xatoul(optarg); unsigned long t = xatoul(optarg);
if (opt == 'f') { if (opt == 'f') {
skip_fields = t; skip_fields = t;
} else { } else {
@ -71,13 +71,13 @@ int uniq_main(int argc, char **argv)
/* gnu uniq ignores newlines */ /* gnu uniq ignores newlines */
while ((s1 = xmalloc_getline(in)) != NULL) { while ((s1 = xmalloc_getline(in)) != NULL) {
e1 = s1; e1 = s1;
for (i=skip_fields ; i ; i--) { for (i = skip_fields; i; i--) {
e1 = skip_whitespace(e1); e1 = skip_whitespace(e1);
while (*e1 && !isspace(*e1)) { while (*e1 && !isspace(*e1)) {
++e1; ++e1;
} }
} }
for (i = skip_chars ; *e1 && i ; i--) { for (i = skip_chars; *e1 && i; i--) {
++e1; ++e1;
} }
@ -90,14 +90,14 @@ int uniq_main(int argc, char **argv)
if (s0) { if (s0) {
if (!(uniq_flags & (2 << !!dups))) { if (!(uniq_flags & (2 << !!dups))) {
bb_fprintf(out, "\0%d " + (uniq_flags & 1), dups + 1); fprintf(out, "\0%d " + (uniq_flags & 1), dups + 1);
bb_fprintf(out, "%s\n", s0); fprintf(out, "%s\n", s0);
} }
free((void *)s0); free((void *)s0);
} }
} while (s1); } while (s1);
xferror(in, input_filename); die_if_ferror(in, input_filename);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -47,12 +47,12 @@ int uuencode_main(int argc, char **argv)
bb_show_usage(); bb_show_usage();
} }
bb_printf("begin%s %o %s", tbl == bb_uuenc_tbl_std ? "" : "-base64", mode, argv[argc - 1]); printf("begin%s %o %s", tbl == bb_uuenc_tbl_std ? "" : "-base64", mode, argv[argc - 1]);
while ((size = fread(src_buf, 1, src_buf_size, src_stream)) > 0) { while ((size = fread(src_buf, 1, src_buf_size, src_stream)) > 0) {
if (size != src_buf_size) { if (size != src_buf_size) {
/* write_size is always 60 until the last line */ /* write_size is always 60 until the last line */
write_size=(4 * ((size + 2) / 3)); write_size = (4 * ((size + 2) / 3));
/* pad with 0s so we can just encode extra bits */ /* pad with 0s so we can just encode extra bits */
memset(&src_buf[size], 0, src_buf_size - size); memset(&src_buf[size], 0, src_buf_size - size);
} }
@ -67,9 +67,9 @@ int uuencode_main(int argc, char **argv)
bb_perror_msg_and_die(bb_msg_write_error); bb_perror_msg_and_die(bb_msg_write_error);
} }
} }
bb_printf(tbl == bb_uuenc_tbl_std ? "\n`\nend\n" : "\n====\n"); printf(tbl == bb_uuenc_tbl_std ? "\n`\nend\n" : "\n====\n");
xferror(src_stream, "source"); /* TODO - Fix this! */ die_if_ferror(src_stream, "source"); /* TODO - Fix this! */
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -182,12 +182,12 @@ int wc_main(int argc, char **argv)
u = 0; u = 0;
do { do {
if (print_type & (1 << u)) { if (print_type & (1 << u)) {
bb_printf(s, pcounts[u]); printf(s, pcounts[u]);
s = " %9"COUNT_FMT; /* Ok... restore the leading space. */ s = " %9"COUNT_FMT; /* Ok... restore the leading space. */
} }
totals[u] += pcounts[u]; totals[u] += pcounts[u];
} while (++u < 4); } while (++u < 4);
bb_printf(fname_fmt, arg); printf(fname_fmt, arg);
} }
/* If more than one file was processed, we want the totals. To save some /* If more than one file was processed, we want the totals. To save some
@ -202,5 +202,5 @@ int wc_main(int argc, char **argv)
goto OUTPUT; goto OUTPUT;
} }
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -21,5 +21,5 @@ int whoami_main(int argc, char **argv)
puts(bb_getpwuid(NULL, geteuid(), -1)); puts(bb_getpwuid(NULL, geteuid(), -1));
/* exits on error */ /* exits on error */
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -14,8 +14,6 @@
* Size reductions and removed redundant applet name prefix from error messages. * Size reductions and removed redundant applet name prefix from error messages.
*/ */
#include <stdio.h>
#include <stdlib.h>
#include "busybox.h" #include "busybox.h"
int yes_main(int argc, char **argv) int yes_main(int argc, char **argv)
@ -33,7 +31,7 @@ int yes_main(int argc, char **argv)
do { do {
fmt = fmt_str + 1; fmt = fmt_str + 1;
do { do {
bb_printf(fmt, *argv); printf(fmt, *argv);
fmt = fmt_str; fmt = fmt_str;
} while (*++argv); } while (*++argv);
argv = first_arg; argv = first_arg;

View File

@ -47,5 +47,5 @@ int readlink_main(int argc, char **argv)
if (ENABLE_FEATURE_CLEAN_UP && buf != bb_common_bufsiz1) if (ENABLE_FEATURE_CLEAN_UP && buf != bb_common_bufsiz1)
free(buf); free(buf);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -39,5 +39,5 @@ int which_main(int argc, char **argv)
status = EXIT_FAILURE; status = EXIT_FAILURE;
} }
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -177,9 +177,9 @@ static void mke2fs_error_msg_and_die(int retval, const char *fmt, ...)
if (retval) { if (retval) {
va_start(ap, fmt); va_start(ap, fmt);
bb_fprintf(stderr,"\nCould not "); fprintf(stderr,"\nCould not ");
bb_vfprintf(stderr, fmt, ap); vfprintf(stderr, fmt, ap);
bb_fprintf(stderr, "\n"); fprintf(stderr, "\n");
va_end(ap); va_end(ap);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@ -192,7 +192,7 @@ static void mke2fs_verbose(const char *fmt, ...)
if (!quiet) { if (!quiet) {
va_start(ap, fmt); va_start(ap, fmt);
bb_vfprintf(stdout, fmt, ap); vfprintf(stdout, fmt, ap);
fflush(stdout); fflush(stdout);
va_end(ap); va_end(ap);
} }
@ -210,9 +210,9 @@ static void mke2fs_warning_msg(int retval, char *fmt, ... )
if (retval) { if (retval) {
va_start(ap, fmt); va_start(ap, fmt);
bb_fprintf(stderr,"\nWarning: "); fprintf(stderr,"\nWarning: ");
bb_vfprintf(stderr, fmt, ap); vfprintf(stderr, fmt, ap);
bb_fprintf(stderr, "\n"); fprintf(stderr, "\n");
va_end(ap); va_end(ap);
} }
} }

View File

@ -227,7 +227,7 @@ extern int recursive_action(const char *fileName, int recurse,
int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData), int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData),
void* userData); void* userData);
extern int bb_parse_mode( const char* s, mode_t* theMode); extern int bb_parse_mode(const char* s, mode_t* theMode);
extern unsigned int tty_baud_to_value(speed_t speed); extern unsigned int tty_baud_to_value(speed_t speed);
extern speed_t tty_value_to_baud(unsigned int value); extern speed_t tty_value_to_baud(unsigned int value);
@ -253,7 +253,7 @@ extern FILE *bb_wfopen_input(const char *filename);
extern FILE *xfopen(const char *path, const char *mode); extern FILE *xfopen(const char *path, const char *mode);
extern int bb_fclose_nonstdin(FILE *f); extern int bb_fclose_nonstdin(FILE *f);
extern void bb_fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN; extern void fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN;
extern void xstat(char *filename, struct stat *buf); extern void xstat(char *filename, struct stat *buf);
extern int xsocket(int domain, int type, int protocol); extern int xsocket(int domain, int type, int protocol);
@ -278,17 +278,8 @@ extern const struct option *applet_long_options;
extern uint32_t option_mask32; extern uint32_t option_mask32;
extern uint32_t getopt32(int argc, char **argv, const char *applet_opts, ...); extern uint32_t getopt32(int argc, char **argv, const char *applet_opts, ...);
extern int bb_vfprintf(FILE * __restrict stream, const char * __restrict format, extern void die_if_ferror(FILE *fp, const char *fn);
va_list arg) __attribute__ ((format (printf, 2, 0))); extern void die_if_ferror_stdout(void);
extern int bb_vprintf(const char * __restrict format, va_list arg)
__attribute__ ((format (printf, 1, 0)));
extern int bb_fprintf(FILE * __restrict stream, const char * __restrict format, ...)
__attribute__ ((format (printf, 2, 3)));
extern int bb_printf(const char * __restrict format, ...)
__attribute__ ((format (printf, 1, 2)));
extern void xferror(FILE *fp, const char *fn);
extern void xferror_stdout(void);
extern void xfflush_stdout(void); extern void xfflush_stdout(void);
extern void bb_warn_ignoring_args(int n); extern void bb_warn_ignoring_args(int n);

View File

@ -54,7 +54,6 @@ lib-$(CONFIG_DEVFSD) += xregcomp.o
lib-y += messages.o lib-y += messages.o
lib-y += xfuncs.o lib-y += xfuncs.o
lib-y += printf.o
lib-y += xatol.o lib-y += xatol.o
lib-y += safe_strtol.o lib-y += safe_strtol.o
lib-y += bb_pwd.o lib-y += bb_pwd.o

View File

@ -11,11 +11,9 @@
* in an error state. * in an error state.
*/ */
#include <stdio.h> #include "libbb.h"
#include <stdlib.h>
#include <libbb.h>
void bb_fflush_stdout_and_exit(int retval) void fflush_stdout_and_exit(int retval)
{ {
if (fflush(stdout)) { if (fflush(stdout)) {
retval = xfunc_error_retval; retval = xfunc_error_retval;

View File

@ -143,7 +143,7 @@ const char *opt_complementary
while (my_b) { dosomething_with(my_b->data); my_b = my_b->link; } while (my_b) { dosomething_with(my_b->data); my_b = my_b->link; }
if (my_b) // but llist is stored if -b is specified if (my_b) // but llist is stored if -b is specified
free_llist(my_b); free_llist(my_b);
if (verbose_level) bb_printf("verbose level is %d\n", verbose_level); if (verbose_level) printf("verbose level is %d\n", verbose_level);
Special characters: Special characters:

View File

@ -130,7 +130,7 @@ off_t xlseek(int fd, off_t offset, int whence)
} }
// Die with supplied error message if this FILE * has ferror set. // Die with supplied error message if this FILE * has ferror set.
void xferror(FILE *fp, const char *fn) void die_if_ferror(FILE *fp, const char *fn)
{ {
if (ferror(fp)) { if (ferror(fp)) {
bb_error_msg_and_die("%s", fn); bb_error_msg_and_die("%s", fn);
@ -138,9 +138,9 @@ void xferror(FILE *fp, const char *fn)
} }
// Die with an error message if stdout has ferror set. // Die with an error message if stdout has ferror set.
void xferror_stdout(void) void die_if_ferror_stdout(void)
{ {
xferror(stdout, bb_msg_standard_output); die_if_ferror(stdout, bb_msg_standard_output);
} }
// Die with an error message if we have trouble flushing stdout. // Die with an error message if we have trouble flushing stdout.

View File

@ -264,7 +264,7 @@ int crond_main(int ac, char **av)
} }
} }
} }
bb_fflush_stdout_and_exit(EXIT_SUCCESS); /* not reached */ return 0; /* not reached */
} }
static int ChangeUser(const char *user) static int ChangeUser(const char *user)
@ -278,7 +278,7 @@ static int ChangeUser(const char *user)
pas = getpwnam(user); pas = getpwnam(user);
if (pas == 0) { if (pas == 0) {
crondlog("\011failed to get uid for %s", user); crondlog("\011failed to get uid for %s", user);
return (-1); return -1;
} }
setenv("USER", pas->pw_name, 1); setenv("USER", pas->pw_name, 1);
setenv("HOME", pas->pw_dir, 1); setenv("HOME", pas->pw_dir, 1);
@ -290,16 +290,16 @@ static int ChangeUser(const char *user)
err_msg = change_identity_e2str(pas); err_msg = change_identity_e2str(pas);
if (err_msg) { if (err_msg) {
crondlog("\011%s for user %s", err_msg, user); crondlog("\011%s for user %s", err_msg, user);
return (-1); return -1;
} }
if (chdir(pas->pw_dir) < 0) { if (chdir(pas->pw_dir) < 0) {
crondlog("\011chdir failed: %s: %m", pas->pw_dir); crondlog("\011chdir failed: %s: %m", pas->pw_dir);
if (chdir(TMPDIR) < 0) { if (chdir(TMPDIR) < 0) {
crondlog("\011chdir failed: %s: %m", TMPDIR); crondlog("\011chdir failed: %s: %m", TMPDIR);
return (-1); return -1;
} }
} }
return (pas->pw_uid); return pas->pw_uid;
} }
static void startlogger(void) static void startlogger(void)
@ -377,7 +377,7 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
int n2 = -1; int n2 = -1;
if (base == NULL) { if (base == NULL) {
return (NULL); return NULL;
} }
while (*ptr != ' ' && *ptr != '\t' && *ptr != '\n') { while (*ptr != ' ' && *ptr != '\t' && *ptr != '\n') {
@ -420,7 +420,7 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
if (skip == 0) { if (skip == 0) {
crondlog("\111failed user %s parsing %s\n", user, base); crondlog("\111failed user %s parsing %s\n", user, base);
return (NULL); return NULL;
} }
if (*ptr == '-' && n2 < 0) { if (*ptr == '-' && n2 < 0) {
++ptr; ++ptr;
@ -460,7 +460,7 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
if (failsafe == 0) { if (failsafe == 0) {
crondlog("\111failed user %s parsing %s\n", user, base); crondlog("\111failed user %s parsing %s\n", user, base);
return (NULL); return NULL;
} }
} }
if (*ptr != ',') { if (*ptr != ',') {
@ -473,7 +473,7 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
if (*ptr != ' ' && *ptr != '\t' && *ptr != '\n') { if (*ptr != ' ' && *ptr != '\t' && *ptr != '\n') {
crondlog("\111failed user %s parsing %s\n", user, base); crondlog("\111failed user %s parsing %s\n", user, base);
return (NULL); return NULL;
} }
while (*ptr == ' ' || *ptr == '\t' || *ptr == '\n') { while (*ptr == ' ' || *ptr == '\t' || *ptr == '\n') {
@ -490,7 +490,7 @@ static char *ParseField(char *user, char *ary, int modvalue, int off,
} }
#endif #endif
return (ptr); return ptr;
} }
static void FixDayDow(CronLine * line) static void FixDayDow(CronLine * line)
@ -777,7 +777,7 @@ static int TestJobs(time_t t1, time_t t2)
} }
} }
} }
return (nJobs); return nJobs;
} }
static void RunJobs(void) static void RunJobs(void)
@ -843,7 +843,7 @@ static int CheckJobs(void)
} }
nStillRunning += file->cf_Running; nStillRunning += file->cf_Running;
} }
return (nStillRunning); return nStillRunning;
} }

View File

@ -491,9 +491,9 @@ int devfsd_main (int argc, char **argv)
if ( print_version || (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev) ) if ( print_version || (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev) )
{ {
bb_printf( "%s v%s\nDaemon %s:\t%d\nKernel-side %s:\t%d\n", printf( "%s v%s\nDaemon %s:\t%d\nKernel-side %s:\t%d\n",
applet_name,DEVFSD_VERSION,bb_msg_proto_rev, applet_name,DEVFSD_VERSION,bb_msg_proto_rev,
DEVFSD_PROTOCOL_REVISION_DAEMON,bb_msg_proto_rev, proto_rev); DEVFSD_PROTOCOL_REVISION_DAEMON,bb_msg_proto_rev, proto_rev);
if (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev) if (DEVFSD_PROTOCOL_REVISION_DAEMON != proto_rev)
bb_error_msg_and_die( "%s mismatch!",bb_msg_proto_rev); bb_error_msg_and_die( "%s mismatch!",bb_msg_proto_rev);
exit(EXIT_SUCCESS); /* -v */ exit(EXIT_SUCCESS); /* -v */
@ -509,7 +509,7 @@ int devfsd_main (int argc, char **argv)
if (sigaction (SIGHUP, &new_action, NULL) != 0 || sigaction (SIGUSR1, &new_action, NULL) != 0 ) if (sigaction (SIGHUP, &new_action, NULL) != 0 || sigaction (SIGUSR1, &new_action, NULL) != 0 )
devfsd_error_msg_and_die( "sigaction"); devfsd_error_msg_and_die( "sigaction");
bb_printf("%s v%s started for %s\n",applet_name, DEVFSD_VERSION, mount_point); printf("%s v%s started for %s\n",applet_name, DEVFSD_VERSION, mount_point);
/* Set umask so that mknod(2), open(2) and mkdir(2) have complete control over permissions */ /* Set umask so that mknod(2), open(2) and mkdir(2) have complete control over permissions */
umask (0); umask (0);

View File

@ -87,5 +87,5 @@ int last_main(int argc, char **argv)
ctime(&t_tmp) + 4); ctime(&t_tmp) + 4);
} }
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -76,7 +76,7 @@ static int num_files = 1;
static int past_eof; static int past_eof;
/* Command line options */ /* Command line options */
static unsigned long flags; static unsigned flags;
#define FLAG_E 1 #define FLAG_E 1
#define FLAG_M (1<<1) #define FLAG_M (1<<1)
#define FLAG_m (1<<2) #define FLAG_m (1<<2)
@ -185,12 +185,12 @@ static void clear_line(void)
/* This adds line numbers to every line, as the -N flag necessitates */ /* This adds line numbers to every line, as the -N flag necessitates */
static void add_linenumbers(void) static void add_linenumbers(void)
{ {
char current_line[256];
int i; int i;
for (i = 0; i <= num_flines; i++) { for (i = 0; i <= num_flines; i++) {
safe_strncpy(current_line, flines[i], 256); char *new = xasprintf("%5d %s", i + 1, flines[i]);
flines[i] = xasprintf("%5d %s", i + 1, current_line); free(flines[i]);
flines[i] = new;
} }
} }
@ -206,7 +206,7 @@ static void data_readlines(void)
strcpy(current_line, ""); strcpy(current_line, "");
fgets(current_line, 256, fp); fgets(current_line, 256, fp);
if (fp != stdin) if (fp != stdin)
xferror(fp, filename); die_if_ferror(fp, filename);
flines = xrealloc(flines, (i+1) * sizeof(char *)); flines = xrealloc(flines, (i+1) * sizeof(char *));
flines[i] = xstrdup(current_line); flines[i] = xstrdup(current_line);
} }
@ -243,13 +243,18 @@ static void m_status_print(void)
if (!past_eof) { if (!past_eof) {
if (!line_pos) { if (!line_pos) {
if (num_files > 1) if (num_files > 1)
printf("%s%s %s%i%s%i%s%i-%i/%i ", HIGHLIGHT, filename, "(file ", current_file, " of ", num_files, ") lines ", line_pos + 1, line_pos + height - 1, num_flines + 1); printf("%s%s %s%i%s%i%s%i-%i/%i ", HIGHLIGHT,
filename, "(file ", current_file, " of ", num_files, ") lines ",
line_pos + 1, line_pos + height - 1, num_flines + 1);
else { else {
printf("%s%s lines %i-%i/%i ", HIGHLIGHT, filename, line_pos + 1, line_pos + height - 1, num_flines + 1); printf("%s%s lines %i-%i/%i ", HIGHLIGHT,
filename, line_pos + 1, line_pos + height - 1,
num_flines + 1);
} }
} }
else { else {
printf("%s %s lines %i-%i/%i ", HIGHLIGHT, filename, line_pos + 1, line_pos + height - 1, num_flines + 1); printf("%s %s lines %i-%i/%i ", HIGHLIGHT, filename,
line_pos + 1, line_pos + height - 1, num_flines + 1);
} }
if (line_pos == num_flines - height + 2) { if (line_pos == num_flines - height + 2) {
@ -263,7 +268,8 @@ static void m_status_print(void)
} }
} }
else { else {
printf("%s%s lines %i-%i/%i (END) ", HIGHLIGHT, filename, line_pos + 1, num_flines + 1, num_flines + 1); printf("%s%s lines %i-%i/%i (END) ", HIGHLIGHT, filename,
line_pos + 1, num_flines + 1, num_flines + 1);
if ((num_files > 1) && (current_file != num_files)) if ((num_files > 1) && (current_file != num_files))
printf("- Next: %s", files[current_file]); printf("- Next: %s", files[current_file]);
printf("%s", NORMAL); printf("%s", NORMAL);
@ -300,7 +306,8 @@ static void status_print(void)
if (!line_pos) { if (!line_pos) {
printf("%s%s %s", HIGHLIGHT, filename, NORMAL); printf("%s%s %s", HIGHLIGHT, filename, NORMAL);
if (num_files > 1) if (num_files > 1)
printf("%s%s%i%s%i%s%s", HIGHLIGHT, "(file ", current_file, " of ", num_files, ")", NORMAL); printf("%s%s%i%s%i%s%s", HIGHLIGHT, "(file ",
current_file, " of ", num_files, ")", NORMAL);
} }
else if (line_pos == num_flines - height + 2) { else if (line_pos == num_flines - height + 2) {
printf("%s%s %s", HIGHLIGHT, "(END)", NORMAL); printf("%s%s %s", HIGHLIGHT, "(END)", NORMAL);
@ -602,7 +609,7 @@ static char *process_regex_on_line(char *line, regex_t *pattern, int action)
insert_highlights if action = 1, or has the escape sequences insert_highlights if action = 1, or has the escape sequences
removed if action = 0, and then the line is returned. */ removed if action = 0, and then the line is returned. */
int match_status; int match_status;
char *line2 = (char *) xmalloc((sizeof(char) * (strlen(line) + 1)) + 64); char *line2 = xmalloc((sizeof(char) * (strlen(line) + 1)) + 64);
char *growline = ""; char *growline = "";
regmatch_t match_structs; regmatch_t match_structs;
@ -616,10 +623,16 @@ static char *process_regex_on_line(char *line, regex_t *pattern, int action)
match_found = 1; match_found = 1;
if (action) { if (action) {
growline = xasprintf("%s%.*s%s%.*s%s", growline, match_structs.rm_so, line2, HIGHLIGHT, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so, NORMAL); growline = xasprintf("%s%.*s%s%.*s%s", growline,
match_structs.rm_so, line2, HIGHLIGHT,
match_structs.rm_eo - match_structs.rm_so,
line2 + match_structs.rm_so, NORMAL);
} }
else { else {
growline = xasprintf("%s%.*s%.*s", growline, match_structs.rm_so - 4, line2, match_structs.rm_eo - match_structs.rm_so, line2 + match_structs.rm_so); growline = xasprintf("%s%.*s%.*s", growline,
match_structs.rm_so - 4, line2,
match_structs.rm_eo - match_structs.rm_so,
line2 + match_structs.rm_so);
} }
line2 += match_structs.rm_eo; line2 += match_structs.rm_eo;

View File

@ -13,6 +13,8 @@
int mountpoint_main(int argc, char **argv) int mountpoint_main(int argc, char **argv)
{ {
struct stat st;
char *arg;
int opt = getopt32(argc, argv, "qdx"); int opt = getopt32(argc, argv, "qdx");
#define OPT_q (1) #define OPT_q (1)
#define OPT_d (2) #define OPT_d (2)
@ -20,47 +22,44 @@ int mountpoint_main(int argc, char **argv)
if (optind != argc - 1) if (optind != argc - 1)
bb_show_usage(); bb_show_usage();
{
char *arg = argv[optind];
struct stat st;
if ( (opt & OPT_x && stat(arg, &st) == 0) || (lstat(arg, &st) == 0) ) { arg = argv[optind];
if (opt & OPT_x) {
if (S_ISBLK(st.st_mode))
{
bb_printf("%u:%u\n", major(st.st_rdev),
minor(st.st_rdev));
return EXIT_SUCCESS;
} else {
if (opt & OPT_q)
putchar('\n');
else
bb_error_msg("%s: not a block device", arg);
}
return EXIT_FAILURE;
} else
if (S_ISDIR(st.st_mode)) {
dev_t st_dev = st.st_dev;
ino_t st_ino = st.st_ino;
char *p = xasprintf("%s/..", arg);
if (stat(p, &st) == 0) { if ( (opt & OPT_x && stat(arg, &st) == 0) || (lstat(arg, &st) == 0) ) {
short ret = (st_dev != st.st_dev) || if (opt & OPT_x) {
(st_dev == st.st_dev && st_ino == st.st_ino); if (S_ISBLK(st.st_mode)) {
if (opt & OPT_d) printf("%u:%u\n", major(st.st_rdev),
bb_printf("%u:%u\n", major(st_dev), minor(st_dev)); minor(st.st_rdev));
else if (!(opt & OPT_q)) return EXIT_SUCCESS;
bb_printf("%s is %sa mountpoint\n", arg, ret?"":"not ");
return !ret;
}
} else { } else {
if (!(opt & OPT_q)) if (opt & OPT_q)
bb_error_msg("%s: not a directory", arg); putchar('\n');
return EXIT_FAILURE; else
bb_error_msg("%s: not a block device", arg);
} }
return EXIT_FAILURE;
} else
if (S_ISDIR(st.st_mode)) {
dev_t st_dev = st.st_dev;
ino_t st_ino = st.st_ino;
char *p = xasprintf("%s/..", arg);
if (stat(p, &st) == 0) {
int ret = (st_dev != st.st_dev) ||
(st_dev == st.st_dev && st_ino == st.st_ino);
if (opt & OPT_d)
printf("%u:%u\n", major(st_dev), minor(st_dev));
else if (!(opt & OPT_q))
printf("%s is %sa mountpoint\n", arg, ret?"":"not ");
return !ret;
}
} else {
if (!(opt & OPT_q))
bb_error_msg("%s: not a directory", arg);
return EXIT_FAILURE;
} }
if (!(opt & OPT_q))
bb_perror_msg("%s", arg);
return EXIT_FAILURE;
} }
if (!(opt & OPT_q))
bb_perror_msg("%s", arg);
return EXIT_FAILURE;
} }

View File

@ -286,5 +286,5 @@ int rx_main(int argc, char **argv)
if (n < 0) if (n < 0)
bb_error_msg_and_die("\nreceive failed:\n %s", error_buf); bb_error_msg_and_die("\nreceive failed:\n %s", error_buf);
bb_fflush_stdout_and_exit(EXIT_SUCCESS); fflush_stdout_and_exit(EXIT_SUCCESS);
} }

View File

@ -84,5 +84,5 @@ PIPE:
if (ENABLE_FEATURE_CLEAN_UP) if (ENABLE_FEATURE_CLEAN_UP)
free(string); free(string);
bb_fflush_stdout_and_exit(status); fflush_stdout_and_exit(status);
} }

View File

@ -491,7 +491,7 @@ void displayroutes(int noresolve, int netstatfmt)
FILE *fp = xfopen("/proc/net/route", "r"); FILE *fp = xfopen("/proc/net/route", "r");
bb_printf("Kernel IP routing table\n" printf("Kernel IP routing table\n"
"Destination Gateway Genmask" "Destination Gateway Genmask"
" Flags %s Iface\n", " Flags %s Iface\n",
netstatfmt ? " MSS Window irtt" : "Metric Ref Use"); netstatfmt ? " MSS Window irtt" : "Metric Ref Use");
@ -534,11 +534,11 @@ void displayroutes(int noresolve, int netstatfmt)
(noresolve | 0x4000), m); /* Host instead of net. */ (noresolve | 0x4000), m); /* Host instead of net. */
mask.s_addr = m; mask.s_addr = m;
bb_printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), flags); printf("%-16s%-16s%-16s%-6s", sdest, sgw, inet_ntoa(mask), flags);
if (netstatfmt) { if (netstatfmt) {
bb_printf("%5d %-5d %6d %s\n", mtu, win, ir, devname); printf("%5d %-5d %6d %s\n", mtu, win, ir, devname);
} else { } else {
bb_printf("%-6d %-2d %7d %s\n", metric, ref, use, devname); printf("%-6d %-2d %7d %s\n", metric, ref, use, devname);
} }
} }
} }
@ -561,7 +561,7 @@ static void INET6_displayroutes(int noresolve)
FILE *fp = xfopen("/proc/net/ipv6_route", "r"); FILE *fp = xfopen("/proc/net/ipv6_route", "r");
bb_printf("Kernel IPv6 routing table\n%-44s%-40s" printf("Kernel IPv6 routing table\n%-44s%-40s"
"Flags Metric Ref Use Iface\n", "Flags Metric Ref Use Iface\n",
"Destination", "Next Hop"); "Destination", "Next Hop");
@ -622,7 +622,7 @@ static void INET6_displayroutes(int noresolve)
r += 40; r += 40;
} else { /* 2nd pass */ } else { /* 2nd pass */
/* Print the info. */ /* Print the info. */
bb_printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n", printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n",
addr6, naddr6, flags, metric, refcnt, use, iface); addr6, naddr6, flags, metric, refcnt, use, iface);
break; break;
} }
@ -650,15 +650,13 @@ int route_main(int argc, char **argv)
unsigned opt; unsigned opt;
int what; int what;
char *family; char *family;
char **p;
/* First, remap '-net' and '-host' to avoid getopt problems. */ /* First, remap '-net' and '-host' to avoid getopt problems. */
{ p = argv;
char **p = argv; while (*++p) {
if ((strcmp(*p, "-net") == 0) || (strcmp(*p, "-host") == 0)) {
while (*++p) { p[0][0] = '#';
if ((strcmp(*p, "-net") == 0) || (strcmp(*p, "-host") == 0)) {
p[0][0] = '#';
}
} }
} }
@ -685,8 +683,7 @@ int route_main(int argc, char **argv)
#endif #endif
displayroutes(noresolve, opt & ROUTE_OPT_e); displayroutes(noresolve, opt & ROUTE_OPT_e);
xferror_stdout(); fflush_stdout_and_exit(EXIT_SUCCESS);
bb_fflush_stdout_and_exit(EXIT_SUCCESS);
} }
/* Check verb. At the moment, must be add, del, or delete. */ /* Check verb. At the moment, must be add, del, or delete. */

View File

@ -108,8 +108,8 @@ int ipcrm_main(int argc, char **argv)
what = SEM; what = SEM;
if (remove_ids(what, argc-2, &argv[2])) if (remove_ids(what, argc-2, &argv[2]))
bb_fflush_stdout_and_exit(1); fflush_stdout_and_exit(1);
bb_printf("resource(s) deleted\n"); printf("resource(s) deleted\n");
return 0; return 0;
} }
} }

View File

@ -103,25 +103,25 @@ static void print_perms(int id, struct ipc_perm *ipcp)
struct passwd *pw; struct passwd *pw;
struct group *gr; struct group *gr;
bb_printf("%-10d %-10o", id, ipcp->mode & 0777); printf("%-10d %-10o", id, ipcp->mode & 0777);
if ((pw = getpwuid(ipcp->cuid))) if ((pw = getpwuid(ipcp->cuid)))
bb_printf(" %-10s", pw->pw_name); printf(" %-10s", pw->pw_name);
else else
bb_printf(" %-10d", ipcp->cuid); printf(" %-10d", ipcp->cuid);
if ((gr = getgrgid(ipcp->cgid))) if ((gr = getgrgid(ipcp->cgid)))
bb_printf(" %-10s", gr->gr_name); printf(" %-10s", gr->gr_name);
else else
bb_printf(" %-10d", ipcp->cgid); printf(" %-10d", ipcp->cgid);
if ((pw = getpwuid(ipcp->uid))) if ((pw = getpwuid(ipcp->uid)))
bb_printf(" %-10s", pw->pw_name); printf(" %-10s", pw->pw_name);
else else
bb_printf(" %-10d", ipcp->uid); printf(" %-10d", ipcp->uid);
if ((gr = getgrgid(ipcp->gid))) if ((gr = getgrgid(ipcp->gid)))
bb_printf(" %-10s\n", gr->gr_name); printf(" %-10s\n", gr->gr_name);
else else
bb_printf(" %-10d\n", ipcp->gid); printf(" %-10d\n", ipcp->gid);
} }
@ -136,18 +136,18 @@ static void do_shm(void)
maxid = shmctl(0, SHM_INFO, (struct shmid_ds *) (void *) &shm_info); maxid = shmctl(0, SHM_INFO, (struct shmid_ds *) (void *) &shm_info);
if (maxid < 0) { if (maxid < 0) {
bb_printf("kernel not configured for %s\n", "shared memory"); printf("kernel not configured for %s\n", "shared memory");
return; return;
} }
switch (format) { switch (format) {
case LIMITS: case LIMITS:
bb_printf("------ Shared Memory %s --------\n", "Limits"); printf("------ Shared Memory %s --------\n", "Limits");
if ((shmctl(0, IPC_INFO, (struct shmid_ds *) (void *) &shminfo)) < 0) if ((shmctl(0, IPC_INFO, (struct shmid_ds *) (void *) &shminfo)) < 0)
return; return;
/* glibc 2.1.3 and all earlier libc's have ints as fields /* glibc 2.1.3 and all earlier libc's have ints as fields
of struct shminfo; glibc 2.1.91 has unsigned long; ach */ of struct shminfo; glibc 2.1.91 has unsigned long; ach */
bb_printf("max number of segments = %lu\n" printf("max number of segments = %lu\n"
"max seg size (kbytes) = %lu\n" "max seg size (kbytes) = %lu\n"
"max total shared memory (pages) = %lu\n" "max total shared memory (pages) = %lu\n"
"min seg size (bytes) = %lu\n", "min seg size (bytes) = %lu\n",
@ -158,8 +158,8 @@ static void do_shm(void)
return; return;
case STATUS: case STATUS:
bb_printf("------ Shared Memory %s --------\n", "Status"); printf("------ Shared Memory %s --------\n", "Status");
bb_printf( "segments allocated %d\n" printf( "segments allocated %d\n"
"pages allocated %ld\n" "pages allocated %ld\n"
"pages resident %ld\n" "pages resident %ld\n"
"pages swapped %ld\n" "pages swapped %ld\n"
@ -172,26 +172,26 @@ static void do_shm(void)
return; return;
case CREATOR: case CREATOR:
bb_printf("------ Shared Memory %s --------\n", "Segment Creators/Owners"); printf("------ Shared Memory %s --------\n", "Segment Creators/Owners");
bb_printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n",
"shmid", "perms", "cuid", "cgid", "uid", "gid"); "shmid", "perms", "cuid", "cgid", "uid", "gid");
break; break;
case TIME: case TIME:
bb_printf("------ Shared Memory %s --------\n", "Attach/Detach/Change Times"); printf("------ Shared Memory %s --------\n", "Attach/Detach/Change Times");
bb_printf( "%-10s %-10s %-20s %-20s %-20s\n", printf( "%-10s %-10s %-20s %-20s %-20s\n",
"shmid", "owner", "attached", "detached", "changed"); "shmid", "owner", "attached", "detached", "changed");
break; break;
case PID: case PID:
bb_printf("------ Shared Memory %s --------\n", "Creator/Last-op"); printf("------ Shared Memory %s --------\n", "Creator/Last-op");
bb_printf( "%-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s\n",
"shmid", "owner", "cpid", "lpid"); "shmid", "owner", "cpid", "lpid");
break; break;
default: default:
bb_printf("------ Shared Memory %s --------\n", "Segments"); printf("------ Shared Memory %s --------\n", "Segments");
bb_printf( "%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n", printf( "%-10s %-10s %-10s %-10s %-10s %-10s %-12s\n",
"key", "shmid", "owner", "perms", "bytes", "nattch", "key", "shmid", "owner", "perms", "bytes", "nattch",
"status"); "status");
break; break;
@ -209,32 +209,32 @@ static void do_shm(void)
switch (format) { switch (format) {
case TIME: case TIME:
if (pw) if (pw)
bb_printf("%-10d %-10.10s", shmid, pw->pw_name); printf("%-10d %-10.10s", shmid, pw->pw_name);
else else
bb_printf("%-10d %-10d", shmid, ipcp->uid); printf("%-10d %-10d", shmid, ipcp->uid);
/* ctime uses static buffer: use separate calls */ /* ctime uses static buffer: use separate calls */
bb_printf(" %-20.16s", shmseg.shm_atime printf(" %-20.16s", shmseg.shm_atime
? ctime(&shmseg.shm_atime) + 4 : "Not set"); ? ctime(&shmseg.shm_atime) + 4 : "Not set");
bb_printf(" %-20.16s", shmseg.shm_dtime printf(" %-20.16s", shmseg.shm_dtime
? ctime(&shmseg.shm_dtime) + 4 : "Not set"); ? ctime(&shmseg.shm_dtime) + 4 : "Not set");
bb_printf(" %-20.16s\n", shmseg.shm_ctime printf(" %-20.16s\n", shmseg.shm_ctime
? ctime(&shmseg.shm_ctime) + 4 : "Not set"); ? ctime(&shmseg.shm_ctime) + 4 : "Not set");
break; break;
case PID: case PID:
if (pw) if (pw)
bb_printf("%-10d %-10.10s", shmid, pw->pw_name); printf("%-10d %-10.10s", shmid, pw->pw_name);
else else
bb_printf("%-10d %-10d", shmid, ipcp->uid); printf("%-10d %-10d", shmid, ipcp->uid);
bb_printf(" %-10d %-10d\n", shmseg.shm_cpid, shmseg.shm_lpid); printf(" %-10d %-10d\n", shmseg.shm_cpid, shmseg.shm_lpid);
break; break;
default: default:
bb_printf("0x%08x ", ipcp->KEY); printf("0x%08x ", ipcp->KEY);
if (pw) if (pw)
bb_printf("%-10d %-10.10s", shmid, pw->pw_name); printf("%-10d %-10.10s", shmid, pw->pw_name);
else else
bb_printf("%-10d %-10d", shmid, ipcp->uid); printf("%-10d %-10d", shmid, ipcp->uid);
bb_printf(" %-10o %-10lu %-10ld %-6s %-6s\n", ipcp->mode & 0777, printf(" %-10o %-10lu %-10ld %-6s %-6s\n", ipcp->mode & 0777,
/* /*
* earlier: int, Austin has size_t * earlier: int, Austin has size_t
*/ */
@ -264,17 +264,17 @@ static void do_sem(void)
arg.array = (ushort *) (void *) &seminfo; arg.array = (ushort *) (void *) &seminfo;
maxid = semctl(0, 0, SEM_INFO, arg); maxid = semctl(0, 0, SEM_INFO, arg);
if (maxid < 0) { if (maxid < 0) {
bb_printf("kernel not configured for %s\n", "semaphores"); printf("kernel not configured for %s\n", "semaphores");
return; return;
} }
switch (format) { switch (format) {
case LIMITS: case LIMITS:
bb_printf("------ Semaphore %s --------\n", "Limits"); printf("------ Semaphore %s --------\n", "Limits");
arg.array = (ushort *) (void *) &seminfo; /* damn union */ arg.array = (ushort *) (void *) &seminfo; /* damn union */
if ((semctl(0, 0, IPC_INFO, arg)) < 0) if ((semctl(0, 0, IPC_INFO, arg)) < 0)
return; return;
bb_printf("max number of arrays = %d\n" printf("max number of arrays = %d\n"
"max semaphores per array = %d\n" "max semaphores per array = %d\n"
"max semaphores system wide = %d\n" "max semaphores system wide = %d\n"
"max ops per semop call = %d\n" "max ops per semop call = %d\n"
@ -285,21 +285,21 @@ static void do_sem(void)
return; return;
case STATUS: case STATUS:
bb_printf("------ Semaphore %s --------\n", "Status"); printf("------ Semaphore %s --------\n", "Status");
bb_printf( "used arrays = %d\n" printf( "used arrays = %d\n"
"allocated semaphores = %d\n", "allocated semaphores = %d\n",
seminfo.semusz, seminfo.semaem); seminfo.semusz, seminfo.semaem);
return; return;
case CREATOR: case CREATOR:
bb_printf("------ Semaphore %s --------\n", "Arrays Creators/Owners"); printf("------ Semaphore %s --------\n", "Arrays Creators/Owners");
bb_printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n",
"semid", "perms", "cuid", "cgid", "uid", "gid"); "semid", "perms", "cuid", "cgid", "uid", "gid");
break; break;
case TIME: case TIME:
bb_printf("------ Shared Memory %s --------\n", "Operation/Change Times"); printf("------ Shared Memory %s --------\n", "Operation/Change Times");
bb_printf( "%-8s %-10s %-26.24s %-26.24s\n", printf( "%-8s %-10s %-26.24s %-26.24s\n",
"shmid", "owner", "last-op", "last-changed"); "shmid", "owner", "last-op", "last-changed");
break; break;
@ -307,8 +307,8 @@ static void do_sem(void)
break; break;
default: default:
bb_printf("------ Semaphore %s --------\n", "Arrays"); printf("------ Semaphore %s --------\n", "Arrays");
bb_printf( "%-10s %-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s %-10s\n",
"key", "semid", "owner", "perms", "nsems"); "key", "semid", "owner", "perms", "nsems");
break; break;
} }
@ -326,25 +326,25 @@ static void do_sem(void)
switch (format) { switch (format) {
case TIME: case TIME:
if (pw) if (pw)
bb_printf("%-8d %-10.10s", semid, pw->pw_name); printf("%-8d %-10.10s", semid, pw->pw_name);
else else
bb_printf("%-8d %-10d", semid, ipcp->uid); printf("%-8d %-10d", semid, ipcp->uid);
/* ctime uses static buffer: use separate calls */ /* ctime uses static buffer: use separate calls */
bb_printf(" %-26.24s", semary.sem_otime printf(" %-26.24s", semary.sem_otime
? ctime(&semary.sem_otime) : "Not set"); ? ctime(&semary.sem_otime) : "Not set");
bb_printf(" %-26.24s\n", semary.sem_ctime printf(" %-26.24s\n", semary.sem_ctime
? ctime(&semary.sem_ctime) : "Not set"); ? ctime(&semary.sem_ctime) : "Not set");
break; break;
case PID: case PID:
break; break;
default: default:
bb_printf("0x%08x ", ipcp->KEY); printf("0x%08x ", ipcp->KEY);
if (pw) if (pw)
bb_printf("%-10d %-10.9s", semid, pw->pw_name); printf("%-10d %-10.9s", semid, pw->pw_name);
else else
bb_printf("%-10d %-9d", semid, ipcp->uid); printf("%-10d %-9d", semid, ipcp->uid);
bb_printf(" %-10o %-10ld\n", ipcp->mode & 0777, printf(" %-10o %-10ld\n", ipcp->mode & 0777,
/* /*
* glibc-2.1.3 and earlier has unsigned short; * glibc-2.1.3 and earlier has unsigned short;
* glibc-2.1.91 has variation between * glibc-2.1.91 has variation between
@ -368,7 +368,7 @@ static void do_msg(void)
maxid = msgctl(0, MSG_INFO, (struct msqid_ds *) (void *) &msginfo); maxid = msgctl(0, MSG_INFO, (struct msqid_ds *) (void *) &msginfo);
if (maxid < 0) { if (maxid < 0) {
bb_printf("kernel not configured for %s\n", "message queues"); printf("kernel not configured for %s\n", "message queues");
return; return;
} }
@ -376,42 +376,42 @@ static void do_msg(void)
case LIMITS: case LIMITS:
if ((msgctl(0, IPC_INFO, (struct msqid_ds *) (void *) &msginfo)) < 0) if ((msgctl(0, IPC_INFO, (struct msqid_ds *) (void *) &msginfo)) < 0)
return; return;
bb_printf("------ Message%s --------\n", "s: Limits"); printf("------ Message%s --------\n", "s: Limits");
bb_printf( "max queues system wide = %d\n" printf( "max queues system wide = %d\n"
"max size of message (bytes) = %d\n" "max size of message (bytes) = %d\n"
"default max size of queue (bytes) = %d\n", "default max size of queue (bytes) = %d\n",
msginfo.msgmni, msginfo.msgmax, msginfo.msgmnb); msginfo.msgmni, msginfo.msgmax, msginfo.msgmnb);
return; return;
case STATUS: case STATUS:
bb_printf("------ Message%s --------\n", "s: Status"); printf("------ Message%s --------\n", "s: Status");
bb_printf( "allocated queues = %d\n" printf( "allocated queues = %d\n"
"used headers = %d\n" "used headers = %d\n"
"used space = %d bytes\n", "used space = %d bytes\n",
msginfo.msgpool, msginfo.msgmap, msginfo.msgtql); msginfo.msgpool, msginfo.msgmap, msginfo.msgtql);
return; return;
case CREATOR: case CREATOR:
bb_printf("------ Message%s --------\n", " Queues: Creators/Owners"); printf("------ Message%s --------\n", " Queues: Creators/Owners");
bb_printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s %-10s %-10s\n",
"msqid", "perms", "cuid", "cgid", "uid", "gid"); "msqid", "perms", "cuid", "cgid", "uid", "gid");
break; break;
case TIME: case TIME:
bb_printf("------ Message%s --------\n", " Queues Send/Recv/Change Times"); printf("------ Message%s --------\n", " Queues Send/Recv/Change Times");
bb_printf( "%-8s %-10s %-20s %-20s %-20s\n", printf( "%-8s %-10s %-20s %-20s %-20s\n",
"msqid", "owner", "send", "recv", "change"); "msqid", "owner", "send", "recv", "change");
break; break;
case PID: case PID:
bb_printf("------ Message%s --------\n", " Queues PIDs"); printf("------ Message%s --------\n", " Queues PIDs");
bb_printf( "%-10s %-10s %-10s %-10s\n", printf( "%-10s %-10s %-10s %-10s\n",
"msqid", "owner", "lspid", "lrpid"); "msqid", "owner", "lspid", "lrpid");
break; break;
default: default:
bb_printf("------ Message%s --------\n", " Queues"); printf("------ Message%s --------\n", " Queues");
bb_printf( "%-10s %-10s %-10s %-10s %-12s %-12s\n", printf( "%-10s %-10s %-10s %-10s %-12s %-12s\n",
"key", "msqid", "owner", "perms", "used-bytes", "messages"); "key", "msqid", "owner", "perms", "used-bytes", "messages");
break; break;
} }
@ -428,31 +428,31 @@ static void do_msg(void)
switch (format) { switch (format) {
case TIME: case TIME:
if (pw) if (pw)
bb_printf("%-8d %-10.10s", msqid, pw->pw_name); printf("%-8d %-10.10s", msqid, pw->pw_name);
else else
bb_printf("%-8d %-10d", msqid, ipcp->uid); printf("%-8d %-10d", msqid, ipcp->uid);
bb_printf(" %-20.16s", msgque.msg_stime printf(" %-20.16s", msgque.msg_stime
? ctime(&msgque.msg_stime) + 4 : "Not set"); ? ctime(&msgque.msg_stime) + 4 : "Not set");
bb_printf(" %-20.16s", msgque.msg_rtime printf(" %-20.16s", msgque.msg_rtime
? ctime(&msgque.msg_rtime) + 4 : "Not set"); ? ctime(&msgque.msg_rtime) + 4 : "Not set");
bb_printf(" %-20.16s\n", msgque.msg_ctime printf(" %-20.16s\n", msgque.msg_ctime
? ctime(&msgque.msg_ctime) + 4 : "Not set"); ? ctime(&msgque.msg_ctime) + 4 : "Not set");
break; break;
case PID: case PID:
if (pw) if (pw)
bb_printf("%-8d %-10.10s", msqid, pw->pw_name); printf("%-8d %-10.10s", msqid, pw->pw_name);
else else
bb_printf("%-8d %-10d", msqid, ipcp->uid); printf("%-8d %-10d", msqid, ipcp->uid);
bb_printf(" %5d %5d\n", msgque.msg_lspid, msgque.msg_lrpid); printf(" %5d %5d\n", msgque.msg_lspid, msgque.msg_lrpid);
break; break;
default: default:
bb_printf("0x%08x ", ipcp->KEY); printf("0x%08x ", ipcp->KEY);
if (pw) if (pw)
bb_printf("%-10d %-10.10s", msqid, pw->pw_name); printf("%-10d %-10.10s", msqid, pw->pw_name);
else else
bb_printf("%-10d %-10d", msqid, ipcp->uid); printf("%-10d %-10d", msqid, ipcp->uid);
bb_printf(" %-10o %-12ld %-12ld\n", ipcp->mode & 0777, printf(" %-10o %-12ld %-12ld\n", ipcp->mode & 0777,
/* /*
* glibc-2.1.3 and earlier has unsigned short; * glibc-2.1.3 and earlier has unsigned short;
* glibc-2.1.91 has variation between * glibc-2.1.91 has variation between
@ -476,7 +476,7 @@ static void print_shm(int shmid)
return; return;
} }
bb_printf("\nShared memory Segment shmid=%d\n" printf("\nShared memory Segment shmid=%d\n"
"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n" "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\n"
"mode=%#o\taccess_perms=%#o\n" "mode=%#o\taccess_perms=%#o\n"
"bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n", "bytes=%ld\tlpid=%d\tcpid=%d\tnattch=%ld\n",
@ -485,11 +485,11 @@ static void print_shm(int shmid)
ipcp->mode, ipcp->mode & 0777, ipcp->mode, ipcp->mode & 0777,
(long) shmds.shm_segsz, shmds.shm_lpid, shmds.shm_cpid, (long) shmds.shm_segsz, shmds.shm_lpid, shmds.shm_cpid,
(long) shmds.shm_nattch); (long) shmds.shm_nattch);
bb_printf("att_time=%-26.24s\n", printf("att_time=%-26.24s\n",
shmds.shm_atime ? ctime(&shmds.shm_atime) : "Not set"); shmds.shm_atime ? ctime(&shmds.shm_atime) : "Not set");
bb_printf("det_time=%-26.24s\n", printf("det_time=%-26.24s\n",
shmds.shm_dtime ? ctime(&shmds.shm_dtime) : "Not set"); shmds.shm_dtime ? ctime(&shmds.shm_dtime) : "Not set");
bb_printf("change_time=%-26.24s\n\n", ctime(&shmds.shm_ctime)); printf("change_time=%-26.24s\n\n", ctime(&shmds.shm_ctime));
} }
@ -503,7 +503,7 @@ static void print_msg(int msqid)
return; return;
} }
bb_printf("\nMessage Queue msqid=%d\n" printf("\nMessage Queue msqid=%d\n"
"uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n" "uid=%d\tgid=%d\tcuid=%d\tcgid=%d\tmode=%#o\n"
"cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n", "cbytes=%ld\tqbytes=%ld\tqnum=%ld\tlspid=%d\tlrpid=%d\n",
msqid, ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid, ipcp->mode, msqid, ipcp->uid, ipcp->gid, ipcp->cuid, ipcp->cgid, ipcp->mode,
@ -516,11 +516,11 @@ static void print_msg(int msqid)
(long) buf.msg_cbytes, (long) buf.msg_qbytes, (long) buf.msg_cbytes, (long) buf.msg_qbytes,
(long) buf.msg_qnum, buf.msg_lspid, buf.msg_lrpid); (long) buf.msg_qnum, buf.msg_lspid, buf.msg_lrpid);
bb_printf("send_time=%-26.24s\n", printf("send_time=%-26.24s\n",
buf.msg_stime ? ctime(&buf.msg_stime) : "Not set"); buf.msg_stime ? ctime(&buf.msg_stime) : "Not set");
bb_printf("rcv_time=%-26.24s\n", printf("rcv_time=%-26.24s\n",
buf.msg_rtime ? ctime(&buf.msg_rtime) : "Not set"); buf.msg_rtime ? ctime(&buf.msg_rtime) : "Not set");
bb_printf("change_time=%-26.24s\n\n", printf("change_time=%-26.24s\n\n",
buf.msg_ctime ? ctime(&buf.msg_ctime) : "Not set"); buf.msg_ctime ? ctime(&buf.msg_ctime) : "Not set");
} }
@ -537,7 +537,7 @@ static void print_sem(int semid)
return; return;
} }
bb_printf("\nSemaphore Array semid=%d\n" printf("\nSemaphore Array semid=%d\n"
"uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n" "uid=%d\t gid=%d\t cuid=%d\t cgid=%d\n"
"mode=%#o, access_perms=%#o\n" "mode=%#o, access_perms=%#o\n"
"nsems = %ld\n" "nsems = %ld\n"
@ -547,7 +547,7 @@ static void print_sem(int semid)
ipcp->mode, ipcp->mode & 0777, ipcp->mode, ipcp->mode & 0777,
(long) semds.sem_nsems, (long) semds.sem_nsems,
semds.sem_otime ? ctime(&semds.sem_otime) : "Not set"); semds.sem_otime ? ctime(&semds.sem_otime) : "Not set");
bb_printf("ctime = %-26.24s\n" printf("ctime = %-26.24s\n"
"%-10s %-10s %-10s %-10s %-10s\n", "%-10s %-10s %-10s %-10s %-10s\n",
ctime(&semds.sem_ctime), ctime(&semds.sem_ctime),
"semnum", "value", "ncount", "zcount", "pid"); "semnum", "value", "ncount", "zcount", "pid");
@ -563,9 +563,9 @@ static void print_sem(int semid)
if (val < 0 || ncnt < 0 || zcnt < 0 || pid < 0) { if (val < 0 || ncnt < 0 || zcnt < 0 || pid < 0) {
bb_perror_msg_and_die("semctl"); bb_perror_msg_and_die("semctl");
} }
bb_printf("%-10d %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid); printf("%-10d %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid);
} }
bb_printf("\n"); puts("");
} }
int ipcs_main(int argc, char **argv) int ipcs_main(int argc, char **argv)
@ -597,34 +597,34 @@ int ipcs_main(int argc, char **argv)
if (flags & flag_print) { if (flags & flag_print) {
if (flags & flag_shm) { if (flags & flag_shm) {
print_shm(id); print_shm(id);
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }
if (flags & flag_sem) { if (flags & flag_sem) {
print_sem(id); print_sem(id);
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }
if (flags & flag_msg) { if (flags & flag_msg) {
print_msg(id); print_msg(id);
bb_fflush_stdout_and_exit(0); fflush_stdout_and_exit(0);
} }
bb_show_usage(); bb_show_usage();
} }
if (!(flags & (flag_shm | flag_msg | flag_sem))) if (!(flags & (flag_shm | flag_msg | flag_sem)))
flags |= flag_msg | flag_shm | flag_sem; flags |= flag_msg | flag_shm | flag_sem;
bb_printf("\n"); puts("");
if (flags & flag_shm) { if (flags & flag_shm) {
do_shm(); do_shm();
bb_printf("\n"); puts("");
} }
if (flags & flag_sem) { if (flags & flag_sem) {
do_sem(); do_sem();
bb_printf("\n"); puts("");
} }
if (flags & flag_msg) { if (flags & flag_msg) {
do_msg(); do_msg();
bb_printf("\n"); puts("");
} }
return EXIT_SUCCESS; fflush_stdout_and_exit(0);
} }