build system: -fno-builtin-printf

Benefits are: drops reference to out-of-line putchar(), fixes a few cases
of failed string merge.

function                                             old     new   delta
i2cdump_main                                        1488    1502     +14
sha256_process_block64                               423     433     +10
sendmail_main                                       1183    1185      +2
list_table                                          1114    1116      +2
i2cdetect_main                                      1235    1237      +2
fdisk_main                                          2852    2854      +2
builtin_type                                         119     121      +2
unicode_conv_to_printable2                           325     324      -1
scan_recursive                                       380     378      -2
mkfs_minix_main                                     2687    2684      -3
buffer_fill_and_print                                178     169      -9
putchar                                              152       -    -152
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 7/4 up/down: 34/-167)          Total: -133 bytes
   text    data     bss     dec     hex filename
 937788     932   17676  956396   e97ec busybox_old
 937564     932   17676  956172   e970c busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2015-10-07 22:42:45 +02:00
parent 8c0708a329
commit d60752f8c9
24 changed files with 127 additions and 124 deletions

View File

@ -56,6 +56,9 @@ CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1
# Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary): # Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary):
CFLAGS += $(call cc-option,-fno-unwind-tables,) CFLAGS += $(call cc-option,-fno-unwind-tables,)
CFLAGS += $(call cc-option,-fno-asynchronous-unwind-tables,) CFLAGS += $(call cc-option,-fno-asynchronous-unwind-tables,)
# No automatic printf->puts,putchar conversions
# (try disabling this and comparing assembly, it's instructive)
CFLAGS += $(call cc-option,-fno-builtin-printf,)
# FIXME: These warnings are at least partially to be concerned about and should # FIXME: These warnings are at least partially to be concerned about and should
# be fixed.. # be fixed..

View File

@ -112,7 +112,7 @@ int uniq_main(int argc UNUSED_PARAM, char **argv)
/* %7lu matches GNU coreutils 6.9 */ /* %7lu matches GNU coreutils 6.9 */
printf("%7lu ", dups + 1); printf("%7lu ", dups + 1);
} }
printf("%s\n", old_line); puts(old_line);
} }
free(old_line); free(old_line);
} }

View File

@ -81,7 +81,7 @@ int who_main(int argc UNUSED_PARAM, char **argv)
opt_complementary = "=0"; opt_complementary = "=0";
opt = getopt32(argv, do_users ? "" : "aH"); opt = getopt32(argv, do_users ? "" : "aH");
if (opt & 2) // -H if (opt & 2) // -H
printf("USER\t\tTTY\t\tIDLE\tTIME\t\t HOST\n"); puts("USER\t\tTTY\t\tIDLE\tTIME\t\t HOST");
setutxent(); setutxent();
while ((ut = getutxent()) != NULL) { while ((ut = getutxent()) != NULL) {

View File

@ -433,7 +433,7 @@ static void fetch(FILE_and_pos_t *ft, const off_t *ix, int a, int b, int ch)
for (j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) { for (j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) {
int c = fgetc(ft->ft_fp); int c = fgetc(ft->ft_fp);
if (c == EOF) { if (c == EOF) {
printf("\n\\ No newline at end of file\n"); puts("\n\\ No newline at end of file");
return; return;
} }
ft->ft_pos++; ft->ft_pos++;
@ -692,7 +692,7 @@ static bool diff(FILE* fp[2], char *file[2])
continue; continue;
printf(",%d", (a < b) ? b - a + 1 : 0); printf(",%d", (a < b) ? b - a + 1 : 0);
} }
printf(" @@\n"); puts(" @@");
/* /*
* Output changes in "unified" diff format--the old and new lines * Output changes in "unified" diff format--the old and new lines
* are printed together. * are printed together.

View File

@ -206,7 +206,7 @@ static void doCommands(void)
if (fileName) if (fileName)
printf("\"%s\"\n", fileName); printf("\"%s\"\n", fileName);
else else
printf("No file name\n"); puts("No file name");
break; break;
} }
free(fileName); free(fileName);

View File

@ -100,7 +100,7 @@ int add_remove_shell_main(int argc UNUSED_PARAM, char **argv)
cpp++; cpp++;
} }
/* copy shell name from old to new file */ /* copy shell name from old to new file */
printf("%s\n", line); puts(line);
next_line: next_line:
free(line); free(line);
} }
@ -112,7 +112,7 @@ int add_remove_shell_main(int argc UNUSED_PARAM, char **argv)
char **cpp = argv; char **cpp = argv;
while (*cpp) { while (*cpp) {
if (*cpp != dont_add) if (*cpp != dont_add)
printf("%s\n", *cpp); puts(*cpp);
cpp++; cpp++;
} }
} }

View File

@ -154,7 +154,7 @@ void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol)
// encode the buffer we just read in // encode the buffer we just read in
bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64); bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64);
if (fname) { if (fname) {
printf("%s\n", eol); puts(eol);
} else { } else {
src_buf += size; src_buf += size;
len -= size; len -= size;

View File

@ -375,7 +375,7 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
// N.B. we need to escape the leading dot regardless of // N.B. we need to escape the leading dot regardless of
// whether it is single or not character on the line // whether it is single or not character on the line
if ('.' == s[0] /*&& '\0' == s[1] */) if ('.' == s[0] /*&& '\0' == s[1] */)
printf("."); bb_putchar('.');
// dump read line // dump read line
send_r_n(s); send_r_n(s);
free(s); free(s);

View File

@ -763,9 +763,9 @@ static void identify(uint16_t *val)
) { ) {
like_std = 5; like_std = 5;
if ((val[CONFIG]==STBY_NID_VAL) || (val[CONFIG]==STBY_ID_VAL)) if ((val[CONFIG]==STBY_NID_VAL) || (val[CONFIG]==STBY_ID_VAL))
printf("powers-up in standby; SET FEATURES subcmd spins-up.\n"); puts("powers-up in standby; SET FEATURES subcmd spins-up.");
if (((val[CONFIG]==STBY_NID_VAL) || (val[CONFIG]==PWRD_NID_VAL)) && (val[GEN_CONFIG] & INCOMPLETE)) if (((val[CONFIG]==STBY_NID_VAL) || (val[CONFIG]==PWRD_NID_VAL)) && (val[GEN_CONFIG] & INCOMPLETE))
printf("\n\tWARNING: ID response incomplete.\n\tFollowing data may be incorrect.\n\n"); puts("\n\tWARNING: ID response incomplete.\n\tFollowing data may be incorrect.\n");
} }
/* output the model and serial numbers and the fw revision */ /* output the model and serial numbers and the fw revision */
@ -875,7 +875,7 @@ static void identify(uint16_t *val)
if (min_std == 0xffff) if (min_std == 0xffff)
min_std = like_std > 4 ? like_std - 3 : 1; min_std = like_std > 4 ? like_std - 3 : 1;
printf("Configuration:\n"); puts("Configuration:");
/* more info from the general configuration word */ /* more info from the general configuration word */
if ((eqpt != CDROM) && (like_std == 1)) { if ((eqpt != CDROM) && (like_std == 1)) {
jj = val[GEN_CONFIG] >> 1; jj = val[GEN_CONFIG] >> 1;
@ -909,7 +909,7 @@ static void identify(uint16_t *val)
mm = 0; mm = 0;
bbbig = 0; bbbig = 0;
if ((ll > 0x00FBFC10) && (!val[LCYLS])) if ((ll > 0x00FBFC10) && (!val[LCYLS]))
printf("\tCHS addressing not supported\n"); puts("\tCHS addressing not supported");
else { else {
jj = val[WHATS_VALID] & OK_W54_58; jj = val[WHATS_VALID] & OK_W54_58;
printf("\tLogical\t\tmax\tcurrent\n" printf("\tLogical\t\tmax\tcurrent\n"
@ -980,7 +980,7 @@ static void identify(uint16_t *val)
!(val[CAPAB_0] & IORDY_SUP) ? "(may be)" : "", !(val[CAPAB_0] & IORDY_SUP) ? "(may be)" : "",
(val[CAPAB_0] & IORDY_OFF) ? "" :"not"); (val[CAPAB_0] & IORDY_OFF) ? "" :"not");
} else } else
printf("no IORDY\n"); puts("no IORDY");
if ((like_std == 1) && val[BUF_TYPE]) { if ((like_std == 1) && val[BUF_TYPE]) {
printf("\tBuffer type: %04x: %s%s\n", val[BUF_TYPE], printf("\tBuffer type: %04x: %s%s\n", val[BUF_TYPE],
@ -1012,13 +1012,13 @@ static void identify(uint16_t *val)
} }
printf("\tR/W multiple sector transfer: "); printf("\tR/W multiple sector transfer: ");
if ((like_std < 3) && !(val[SECTOR_XFER_MAX] & SECTOR_XFER)) if ((like_std < 3) && !(val[SECTOR_XFER_MAX] & SECTOR_XFER))
printf("not supported\n"); puts("not supported");
else { else {
printf("Max = %u\tCurrent = ", val[SECTOR_XFER_MAX] & SECTOR_XFER); printf("Max = %u\tCurrent = ", val[SECTOR_XFER_MAX] & SECTOR_XFER);
if (val[SECTOR_XFER_CUR] & MULTIPLE_SETTING_VALID) if (val[SECTOR_XFER_CUR] & MULTIPLE_SETTING_VALID)
printf("%u\n", val[SECTOR_XFER_CUR] & SECTOR_XFER); printf("%u\n", val[SECTOR_XFER_CUR] & SECTOR_XFER);
else else
printf("?\n"); puts("?");
} }
if ((like_std > 3) && (val[CMDS_SUPP_1] & 0x0008)) { if ((like_std > 3) && (val[CMDS_SUPP_1] & 0x0008)) {
/* We print out elsewhere whether the APM feature is enabled or /* We print out elsewhere whether the APM feature is enabled or
@ -1040,7 +1040,7 @@ static void identify(uint16_t *val)
} else { } else {
/* ATAPI */ /* ATAPI */
if (eqpt != CDROM && (val[CAPAB_0] & SWRST_REQ)) if (eqpt != CDROM && (val[CAPAB_0] & SWRST_REQ))
printf("\tATA sw reset required\n"); puts("\tATA sw reset required");
if (val[PKT_REL] || val[SVC_NBSY]) { if (val[PKT_REL] || val[SVC_NBSY]) {
printf("\tOverlap support:"); printf("\tOverlap support:");
@ -1056,7 +1056,7 @@ static void identify(uint16_t *val)
/* DMA stuff. Check that only one DMA mode is selected. */ /* DMA stuff. Check that only one DMA mode is selected. */
printf("\tDMA: "); printf("\tDMA: ");
if (!(val[CAPAB_0] & DMA_SUP)) if (!(val[CAPAB_0] & DMA_SUP))
printf("not supported\n"); puts("not supported");
else { else {
if (val[DMA_MODE] && !val[SINGLE_DMA] && !val[MULTI_DMA]) if (val[DMA_MODE] && !val[SINGLE_DMA] && !val[MULTI_DMA])
printf(" sdma%u\n", (val[DMA_MODE] & MODE) >> 8); printf(" sdma%u\n", (val[DMA_MODE] & MODE) >> 8);
@ -1079,7 +1079,7 @@ static void identify(uint16_t *val)
bb_putchar('\n'); bb_putchar('\n');
if ((dev == ATAPI_DEV) && (eqpt != CDROM) && (val[CAPAB_0] & DMA_IL_SUP)) if ((dev == ATAPI_DEV) && (eqpt != CDROM) && (val[CAPAB_0] & DMA_IL_SUP))
printf("\t\tInterleaved DMA support\n"); puts("\t\tInterleaved DMA support");
if ((val[WHATS_VALID] & OK_W64_70) if ((val[WHATS_VALID] & OK_W64_70)
&& (val[DMA_TIME_MIN] || val[DMA_TIME_NORM]) && (val[DMA_TIME_MIN] || val[DMA_TIME_NORM])
@ -1121,8 +1121,8 @@ static void identify(uint16_t *val)
} }
if ((val[CMDS_SUPP_1] & VALID) == VALID_VAL) { if ((val[CMDS_SUPP_1] & VALID) == VALID_VAL) {
printf("Commands/features:\n" puts("Commands/features:\n"
"\tEnabled\tSupported:\n"); "\tEnabled\tSupported:");
jj = val[CMDS_SUPP_0]; jj = val[CMDS_SUPP_0];
kk = val[CMDS_EN_0]; kk = val[CMDS_EN_0];
for (ii = 0; ii < NUM_CMD_FEAT_STR; ii++) { for (ii = 0; ii < NUM_CMD_FEAT_STR; ii++) {
@ -1150,7 +1150,7 @@ static void identify(uint16_t *val)
if ((eqpt != CDROM) && (like_std > 3) if ((eqpt != CDROM) && (like_std > 3)
&& (val[SECU_STATUS] || val[ERASE_TIME] || val[ENH_ERASE_TIME]) && (val[SECU_STATUS] || val[ERASE_TIME] || val[ENH_ERASE_TIME])
) { ) {
printf("Security:\n"); puts("Security:");
if (val[PSWD_CODE] && (val[PSWD_CODE] != NOVAL_1)) if (val[PSWD_CODE] && (val[PSWD_CODE] != NOVAL_1))
printf("\tMaster password revision code = %u\n", val[PSWD_CODE]); printf("\tMaster password revision code = %u\n", val[PSWD_CODE]);
jj = val[SECU_STATUS]; jj = val[SECU_STATUS];
@ -1366,7 +1366,7 @@ static NOINLINE void dump_identity(const struct hd_driveid *id)
} }
} }
#endif /* __NEW_HD_DRIVE_ID */ #endif /* __NEW_HD_DRIVE_ID */
printf("\n\n * current active mode\n\n"); puts("\n\n * current active mode\n");
} }
#endif #endif
@ -1507,7 +1507,7 @@ static void bus_state_value(unsigned value)
else if (value == BUSSTATE_OFF) else if (value == BUSSTATE_OFF)
on_off(0); on_off(0);
else if (value == BUSSTATE_TRISTATE) else if (value == BUSSTATE_TRISTATE)
printf(" (tristate)\n"); puts(" (tristate)");
else else
printf(" (unknown: %u)\n", value); printf(" (unknown: %u)\n", value);
} }
@ -1531,7 +1531,7 @@ static void interpret_standby(uint8_t standby)
printf("vendor-specific"); printf("vendor-specific");
if (standby == 254) if (standby == 254)
printf("reserved"); printf("reserved");
printf(")\n"); puts(")");
} }
static const uint8_t xfermode_val[] ALIGN1 = { static const uint8_t xfermode_val[] ALIGN1 = {
@ -1582,7 +1582,7 @@ static void interpret_xfermode(unsigned xfermode)
printf("UltraDMA mode%u", xfermode - 64); printf("UltraDMA mode%u", xfermode - 64);
else else
printf("unknown"); printf("unknown");
printf(")\n"); puts(")");
} }
#endif /* HDIO_DRIVE_CMD */ #endif /* HDIO_DRIVE_CMD */
@ -1633,7 +1633,7 @@ static void process_dev(char *devname)
if (noisy_piomode) { if (noisy_piomode) {
printf(" attempting to "); printf(" attempting to ");
if (piomode == 255) if (piomode == 255)
printf("auto-tune PIO mode\n"); puts("auto-tune PIO mode");
else if (piomode < 100) else if (piomode < 100)
printf("set PIO mode to %d\n", piomode); printf("set PIO mode to %d\n", piomode);
else if (piomode < 200) else if (piomode < 200)
@ -1762,7 +1762,7 @@ static void process_dev(char *devname)
#ifndef WIN_STANDBYNOW2 #ifndef WIN_STANDBYNOW2
#define WIN_STANDBYNOW2 0x94 #define WIN_STANDBYNOW2 0x94
#endif #endif
printf(" issuing standby command\n"); puts(" issuing standby command");
args[0] = WIN_STANDBYNOW1; args[0] = WIN_STANDBYNOW1;
ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_STANDBYNOW2); ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_STANDBYNOW2);
} }
@ -1773,13 +1773,13 @@ static void process_dev(char *devname)
#ifndef WIN_SLEEPNOW2 #ifndef WIN_SLEEPNOW2
#define WIN_SLEEPNOW2 0x99 #define WIN_SLEEPNOW2 0x99
#endif #endif
printf(" issuing sleep command\n"); puts(" issuing sleep command");
args[0] = WIN_SLEEPNOW1; args[0] = WIN_SLEEPNOW1;
ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_SLEEPNOW2); ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_SLEEPNOW2);
} }
if (set_seagate) { if (set_seagate) {
args[0] = 0xfb; args[0] = 0xfb;
printf(" disabling Seagate auto powersaving mode\n"); puts(" disabling Seagate auto powersaving mode");
ioctl_or_warn(fd, HDIO_DRIVE_CMD, &args); ioctl_or_warn(fd, HDIO_DRIVE_CMD, &args);
} }
if (getset_standby == IS_SET) { if (getset_standby == IS_SET) {
@ -1815,17 +1815,17 @@ static void process_dev(char *devname)
if (!ioctl_or_warn(fd, HDIO_GET_32BIT, &parm)) { if (!ioctl_or_warn(fd, HDIO_GET_32BIT, &parm)) {
printf(" IO_support\t=%3ld (", parm); printf(" IO_support\t=%3ld (", parm);
if (parm == 0) if (parm == 0)
printf("default 16-bit)\n"); puts("default 16-bit)");
else if (parm == 2) else if (parm == 2)
printf("16-bit)\n"); puts("16-bit)");
else if (parm == 1) else if (parm == 1)
printf("32-bit)\n"); puts("32-bit)");
else if (parm == 3) else if (parm == 3)
printf("32-bit w/sync)\n"); puts("32-bit w/sync)");
else if (parm == 8) else if (parm == 8)
printf("Request-Queue-Bypass)\n"); puts("Request-Queue-Bypass)");
else else
printf("\?\?\?)\n"); puts("\?\?\?)");
} }
} }
if (getset_unmask) { if (getset_unmask) {
@ -1837,7 +1837,7 @@ static void process_dev(char *devname)
if (!ioctl_or_warn(fd, HDIO_GET_DMA, &parm)) { if (!ioctl_or_warn(fd, HDIO_GET_DMA, &parm)) {
printf(fmt, "using_dma", parm); printf(fmt, "using_dma", parm);
if (parm == 8) if (parm == 8)
printf(" (DMA-Assisted-PIO)\n"); puts(" (DMA-Assisted-PIO)");
else else
on_off(parm != 0); on_off(parm != 0);
} }
@ -1921,7 +1921,7 @@ static void process_dev(char *devname)
id.multsect_valid &= ~1; id.multsect_valid &= ~1;
dump_identity(&id); dump_identity(&id);
} else if (errno == -ENOMSG) } else if (errno == -ENOMSG)
printf(" no identification info available\n"); puts(" no identification info available");
else if (ENABLE_IOCTL_HEX2STR_ERROR) /* To be coherent with ioctl_or_warn */ else if (ENABLE_IOCTL_HEX2STR_ERROR) /* To be coherent with ioctl_or_warn */
bb_perror_msg("HDIO_GET_IDENTITY"); bb_perror_msg("HDIO_GET_IDENTITY");
else else

View File

@ -701,7 +701,7 @@ int i2cset_main(int argc, char **argv)
} }
if (status < 0) { if (status < 0) {
printf("Warning - readback failed\n"); puts("Warning - readback failed");
} else } else
if (status != val) { if (status != val) {
printf("Warning - data mismatch - wrote " printf("Warning - data mismatch - wrote "
@ -756,8 +756,8 @@ static void dump_data(int bus_fd, int mode, unsigned first,
{ {
int i, j, res; int i, j, res;
printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f" puts(" 0 1 2 3 4 5 6 7 8 9 a b c d e f"
" 0123456789abcdef\n"); " 0123456789abcdef");
for (i = 0; i < I2CDUMP_NUM_REGS; i += 0x10) { for (i = 0; i < I2CDUMP_NUM_REGS; i += 0x10) {
if (mode == I2C_SMBUS_BLOCK_DATA && i >= blen) if (mode == I2C_SMBUS_BLOCK_DATA && i >= blen)
@ -826,22 +826,22 @@ static void dump_data(int bus_fd, int mode, unsigned first,
break; break;
/* Skip unwanted registers */ /* Skip unwanted registers */
if (i+j < first || i+j > last) { if (i+j < first || i+j > last) {
printf(" "); bb_putchar(' ');
continue; continue;
} }
res = block[i+j]; res = block[i+j];
if (res < 0) { if (res < 0) {
printf("X"); bb_putchar('X');
} else if (res == 0x00 || res == 0xff) { } else if (res == 0x00 || res == 0xff) {
printf("."); bb_putchar('.');
} else if (res < 32 || res >= 127) { } else if (res < 32 || res >= 127) {
printf("?"); bb_putchar('?');
} else { } else {
printf("%c", res); bb_putchar(res);
} }
} }
printf("\n"); bb_putchar('\n');
} }
} }
@ -850,7 +850,7 @@ static void dump_word_data(int bus_fd, unsigned first, unsigned last)
int i, j, rv; int i, j, rv;
/* Word data. */ /* Word data. */
printf(" 0,8 1,9 2,a 3,b 4,c 5,d 6,e 7,f\n"); puts(" 0,8 1,9 2,a 3,b 4,c 5,d 6,e 7,f");
for (i = 0; i < 256; i += 8) { for (i = 0; i < 256; i += 8) {
if (i/8 < first/8) if (i/8 < first/8)
continue; continue;
@ -871,7 +871,7 @@ static void dump_word_data(int bus_fd, unsigned first, unsigned last)
else else
printf("%04x ", rv & 0xffff); printf("%04x ", rv & 0xffff);
} }
printf("\n"); bb_putchar('\n');
} }
} }
@ -1267,7 +1267,7 @@ int i2cdetect_main(int argc UNUSED_PARAM, char **argv)
if (!(opts & opt_y)) if (!(opts & opt_y))
confirm_action(-1, -1, -1, 0); confirm_action(-1, -1, -1, 0);
printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f\n"); puts(" 0 1 2 3 4 5 6 7 8 9 a b c d e f");
for (i = 0; i < 128; i += 16) { for (i = 0; i < 128; i += 16) {
printf("%02x: ", i); printf("%02x: ", i);
for(j = 0; j < 16; j++) { for(j = 0; j < 16; j++) {
@ -1325,7 +1325,7 @@ int i2cdetect_main(int argc UNUSED_PARAM, char **argv)
else else
printf("%02x ", i+j); printf("%02x ", i+j);
} }
printf("\n"); bb_putchar('\n');
} }
return 0; return 0;

View File

@ -249,7 +249,7 @@ static void recv_pack(unsigned char *buf, int len, struct sockaddr_ll *FROM)
unsigned diff = MONOTONIC_US() - last; unsigned diff = MONOTONIC_US() - last;
printf(" %u.%03ums\n", diff / 1000, diff % 1000); printf(" %u.%03ums\n", diff / 1000, diff % 1000);
} else { } else {
printf(" UNSOLICITED?\n"); puts(" UNSOLICITED?");
} }
fflush_all(); fflush_all();
} }

View File

@ -217,7 +217,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv)
arm_ioctl(args, BRCTL_GET_BRIDGES, arm_ioctl(args, BRCTL_GET_BRIDGES,
(unsigned long) bridx, MAX_PORTS); (unsigned long) bridx, MAX_PORTS);
num = xioctl(fd, SIOCGIFBR, args); num = xioctl(fd, SIOCGIFBR, args);
printf("bridge name\tbridge id\t\tSTP enabled\tinterfaces\n"); puts("bridge name\tbridge id\t\tSTP enabled\tinterfaces");
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
char ifname[IFNAMSIZ]; char ifname[IFNAMSIZ];
int j, tabs; int j, tabs;
@ -236,7 +236,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv)
/* print bridge id */ /* print bridge id */
x = (unsigned char *) &bi.bridge_id; x = (unsigned char *) &bi.bridge_id;
for (j = 0; j < 8; j++) { for (j = 0; j < 8; j++) {
printf("%.2x", x[j]); printf("%02x", x[j]);
if (j == 1) if (j == 1)
bb_putchar('.'); bb_putchar('.');
} }

View File

@ -200,7 +200,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
if (2 != s[0] && 3 != s[0]) if (2 != s[0] && 3 != s[0])
goto unsupported_cmd; goto unsupported_cmd;
if (spooling & (1 << (s[0]-1))) { if (spooling & (1 << (s[0]-1))) {
printf("Duplicated subcommand\n"); puts("Duplicated subcommand");
goto err_exit; goto err_exit;
} }
// get filename // get filename
@ -208,7 +208,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
fname = strchr(s, ' '); fname = strchr(s, ' ');
if (!fname) { if (!fname) {
// bad_fname: // bad_fname:
printf("No or bad filename\n"); puts("No or bad filename");
goto err_exit; goto err_exit;
} }
*fname++ = '\0'; *fname++ = '\0';
@ -219,13 +219,13 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
// get length // get length
expected_len = bb_strtou(s + 1, NULL, 10); expected_len = bb_strtou(s + 1, NULL, 10);
if (errno || expected_len < 0) { if (errno || expected_len < 0) {
printf("Bad length\n"); puts("Bad length");
goto err_exit; goto err_exit;
} }
if (2 == s[0] && expected_len > 16 * 1024) { if (2 == s[0] && expected_len > 16 * 1024) {
// SECURITY: // SECURITY:
// ctrlfile can't be big (we want to read it back later!) // ctrlfile can't be big (we want to read it back later!)
printf("File is too big\n"); puts("File is too big");
goto err_exit; goto err_exit;
} }

View File

@ -142,7 +142,7 @@ static void print_timestamp(void)
/* %x: date representation for the current locale */ /* %x: date representation for the current locale */
/* %X: time representation for the current locale */ /* %X: time representation for the current locale */
strftime(buf, sizeof(buf), "%x %X", &G.tmtime); strftime(buf, sizeof(buf), "%x %X", &G.tmtime);
printf("%s\n", buf); puts(buf);
} }
static cputime_t get_smp_uptime(void) static cputime_t get_smp_uptime(void)

View File

@ -704,7 +704,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
/* Get number of CPUs */ /* Get number of CPUs */
G.total_cpus = get_cpu_count(); G.total_cpus = get_cpu_count();
printf("Collecting data for "DEFAULT_SLEEP_STR" seconds\n"); puts("Collecting data for "DEFAULT_SLEEP_STR" seconds");
#if ENABLE_FEATURE_USE_TERMIOS #if ENABLE_FEATURE_USE_TERMIOS
tcgetattr(0, (void *)&G.init_settings); tcgetattr(0, (void *)&G.init_settings);

View File

@ -9681,7 +9681,7 @@ preadfd(void)
} }
# if ENABLE_ASH_IDLE_TIMEOUT # if ENABLE_ASH_IDLE_TIMEOUT
else if (errno == EAGAIN && timeout > 0) { else if (errno == EAGAIN && timeout > 0) {
printf("\007timed out waiting for input: auto-logout\n"); puts("\007timed out waiting for input: auto-logout");
exitshell(); exitshell();
} }
# endif # endif

View File

@ -6794,7 +6794,7 @@ static int checkjobs(struct pipe *fg_pipe)
int sig = WTERMSIG(status); int sig = WTERMSIG(status);
if (i == fg_pipe->num_cmds-1) if (i == fg_pipe->num_cmds-1)
/* TODO: use strsignal() instead for bash compat? but that's bloat... */ /* TODO: use strsignal() instead for bash compat? but that's bloat... */
printf("%s\n", sig == SIGINT || sig == SIGPIPE ? "" : get_signame(sig)); puts(sig == SIGINT || sig == SIGPIPE ? "" : get_signame(sig));
/* TODO: if (WCOREDUMP(status)) + " (core dumped)"; */ /* TODO: if (WCOREDUMP(status)) + " (core dumped)"; */
/* TODO: MIPS has 128 sigs (1..128), what if sig==128 here? /* TODO: MIPS has 128 sigs (1..128), what if sig==128 here?
* Maybe we need to use sig | 128? */ * Maybe we need to use sig | 128? */

View File

@ -380,7 +380,7 @@ static void printlim(unsigned opts, const struct rlimit *limit,
val = limit->rlim_cur; val = limit->rlim_cur;
if (val == RLIM_INFINITY) if (val == RLIM_INFINITY)
printf("unlimited\n"); puts("unlimited");
else { else {
val >>= l->factor_shift; val >>= l->factor_shift;
printf("%llu\n", (long long) val); printf("%llu\n", (long long) val);

View File

@ -93,7 +93,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
} }
xioctl(fd, FDFMTEND, NULL); xioctl(fd, FDFMTEND, NULL);
printf("done\n"); puts("Done");
/* VERIFY */ /* VERIFY */
if (verify) { if (verify) {
@ -126,7 +126,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
if (ENABLE_FEATURE_CLEAN_UP) free(data); if (ENABLE_FEATURE_CLEAN_UP) free(data);
printf("done\n"); puts("Done");
} }
if (ENABLE_FEATURE_CLEAN_UP) close(fd); if (ENABLE_FEATURE_CLEAN_UP) close(fd);

View File

@ -1102,11 +1102,11 @@ warn_geometry(void)
printf(" sectors"); printf(" sectors");
if (!g_cylinders) if (!g_cylinders)
printf(" cylinders"); printf(" cylinders");
printf(
#if ENABLE_FEATURE_FDISK_WRITABLE #if ENABLE_FEATURE_FDISK_WRITABLE
" (settable in the extra functions menu)" puts(" (settable in the extra functions menu)");
#else
bb_putchar('\n');
#endif #endif
"\n");
return 1; return 1;
} }
@ -1150,7 +1150,7 @@ read_extended(int ext)
p = pex->part_table; p = pex->part_table;
if (!get_start_sect(p)) { if (!get_start_sect(p)) {
printf("Bad offset in primary extended partition\n"); puts("Bad offset in primary extended partition");
return; return;
} }
@ -1450,8 +1450,8 @@ static int get_boot(void)
current_label_type = LABEL_OSF; current_label_type = LABEL_OSF;
return 0; return 0;
} }
printf("This disk has both DOS and BSD magic.\n" puts("This disk has both DOS and BSD magic.\n"
"Give the 'b' command to go to BSD mode.\n"); "Give the 'b' command to go to BSD mode.");
} }
#endif #endif
@ -1461,9 +1461,9 @@ static int get_boot(void)
#else #else
if (!valid_part_table_flag(MBRbuffer)) { if (!valid_part_table_flag(MBRbuffer)) {
if (what == OPEN_MAIN) { if (what == OPEN_MAIN) {
printf("Device contains neither a valid DOS " puts("Device contains neither a valid DOS "
"partition table, nor Sun, SGI, OSF or GPT " "partition table, nor Sun, SGI, OSF or GPT "
"disklabel\n"); "disklabel");
#ifdef __sparc__ #ifdef __sparc__
IF_FEATURE_SUN_LABEL(create_sunlabel();) IF_FEATURE_SUN_LABEL(create_sunlabel();)
#else #else
@ -1596,7 +1596,7 @@ read_int(sector_t low, sector_t dflt, sector_t high, sector_t base, const char *
} }
if (value >= low && value <= high) if (value >= low && value <= high)
break; break;
printf("Value is out of range\n"); puts("Value is out of range");
} }
return value; return value;
} }
@ -1641,7 +1641,7 @@ get_existing_partition(int warn, unsigned max)
printf("Selected partition %u\n", pno+1); printf("Selected partition %u\n", pno+1);
return pno; return pno;
} }
printf("No partition is defined yet!\n"); puts("No partition is defined yet!");
return -1; return -1;
not_unique: not_unique:
@ -1668,7 +1668,7 @@ get_nonexisting_partition(int warn, unsigned max)
printf("Selected partition %u\n", pno+1); printf("Selected partition %u\n", pno+1);
return pno; return pno;
} }
printf("All primary partitions have been defined already!\n"); puts("All primary partitions have been defined already!");
return -1; return -1;
not_unique: not_unique:
@ -1703,10 +1703,10 @@ toggle_dos_compatibility_flag(void)
dos_compatible_flag = 1 - dos_compatible_flag; dos_compatible_flag = 1 - dos_compatible_flag;
if (dos_compatible_flag) { if (dos_compatible_flag) {
sector_offset = g_sectors; sector_offset = g_sectors;
printf("DOS Compatibility flag is set\n"); printf("DOS Compatibility flag is %sset\n", "");
} else { } else {
sector_offset = 1; sector_offset = 1;
printf("DOS Compatibility flag is not set\n"); printf("DOS Compatibility flag is %sset\n", "not ");
} }
} }
@ -1813,16 +1813,16 @@ change_sysid(void)
sys = read_hex(get_sys_types()); sys = read_hex(get_sys_types());
if (!sys && !LABEL_IS_SGI && !LABEL_IS_SUN) { if (!sys && !LABEL_IS_SGI && !LABEL_IS_SUN) {
printf("Type 0 means free space to many systems\n" puts("Type 0 means free space to many systems\n"
"(but not to Linux). Having partitions of\n" "(but not to Linux). Having partitions of\n"
"type 0 is probably unwise.\n"); "type 0 is probably unwise.");
/* break; */ /* break; */
} }
if (!LABEL_IS_SUN && !LABEL_IS_SGI) { if (!LABEL_IS_SUN && !LABEL_IS_SGI) {
if (IS_EXTENDED(sys) != IS_EXTENDED(p->sys_ind)) { if (IS_EXTENDED(sys) != IS_EXTENDED(p->sys_ind)) {
printf("You cannot change a partition into" puts("You cannot change a partition into"
" an extended one or vice versa\n"); " an extended one or vice versa");
break; break;
} }
} }
@ -1830,10 +1830,10 @@ change_sysid(void)
if (sys < 256) { if (sys < 256) {
#if ENABLE_FEATURE_SUN_LABEL #if ENABLE_FEATURE_SUN_LABEL
if (LABEL_IS_SUN && i == 2 && sys != SUN_WHOLE_DISK) if (LABEL_IS_SUN && i == 2 && sys != SUN_WHOLE_DISK)
printf("Consider leaving partition 3 " puts("Consider leaving partition 3 "
"as Whole disk (5),\n" "as Whole disk (5),\n"
"as SunOS/Solaris expects it and " "as SunOS/Solaris expects it and "
"even Linux likes it\n\n"); "even Linux likes it\n");
#endif #endif
#if ENABLE_FEATURE_SGI_LABEL #if ENABLE_FEATURE_SGI_LABEL
if (LABEL_IS_SGI && if (LABEL_IS_SGI &&
@ -1842,10 +1842,10 @@ change_sysid(void)
(i == 8 && sys != 0) (i == 8 && sys != 0)
) )
) { ) {
printf("Consider leaving partition 9 " puts("Consider leaving partition 9 "
"as volume header (0),\nand " "as volume header (0),\nand "
"partition 11 as entire volume (6)" "partition 11 as entire volume (6)"
"as IRIX expects it\n\n"); "as IRIX expects it\n");
} }
#endif #endif
if (sys == origsys) if (sys == origsys)
@ -2067,7 +2067,7 @@ fix_partition_table_order(void)
int i,k; int i,k;
if (!wrong_p_order(NULL)) { if (!wrong_p_order(NULL)) {
printf("Ordering is already correct\n\n"); puts("Ordering is already correct\n");
return; return;
} }
@ -2095,7 +2095,7 @@ fix_partition_table_order(void)
if (i) if (i)
fix_chain_of_logicals(); fix_chain_of_logicals();
printf("Done.\n"); puts("Done");
} }
#endif #endif
@ -2178,7 +2178,7 @@ list_table(int xtra)
* if this is a sgi, sun or aix labeled disk... */ * if this is a sgi, sun or aix labeled disk... */
if (LABEL_IS_DOS && wrong_p_order(NULL)) { if (LABEL_IS_DOS && wrong_p_order(NULL)) {
/* FIXME */ /* FIXME */
printf("\nPartition table entries are not in disk order\n"); puts("\nPartition table entries are not in disk order");
} }
} }
@ -2192,7 +2192,7 @@ x_list_table(int extend)
printf("\nDisk %s: %u heads, %u sectors, %u cylinders\n\n", printf("\nDisk %s: %u heads, %u sectors, %u cylinders\n\n",
disk_device, g_heads, g_sectors, g_cylinders); disk_device, g_heads, g_sectors, g_cylinders);
printf("Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID\n"); puts("Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID");
for (i = 0; i < g_partitions; i++) { for (i = 0; i < g_partitions; i++) {
pe = &ptes[i]; pe = &ptes[i];
p = (extend ? pe->ext_pointer : pe->part_table); p = (extend ? pe->ext_pointer : pe->part_table);
@ -2419,7 +2419,7 @@ add_partition(int n, int sys)
limit = first[i] - 1; limit = first[i] - 1;
} }
if (start > limit) { if (start > limit) {
printf("No free sectors available\n"); puts("No free sectors available");
if (n > 4) if (n > 4)
g_partitions--; g_partitions--;
return; return;
@ -2490,9 +2490,9 @@ new_partition(void)
return; return;
} }
if (LABEL_IS_AIX) { if (LABEL_IS_AIX) {
printf("Sorry - this fdisk cannot handle AIX disk labels.\n" puts("Sorry - this fdisk cannot handle AIX disk labels.\n"
"If you want to add DOS-type partitions, create a new empty DOS partition\n" "If you want to add DOS-type partitions, create a new empty DOS partition\n"
"table first (use 'o'). This will destroy the present disk contents.\n"); "table first (use 'o'). This will destroy the present disk contents.");
return; return;
} }
@ -2500,7 +2500,7 @@ new_partition(void)
free_primary += !ptes[i].part_table->sys_ind; free_primary += !ptes[i].part_table->sys_ind;
if (!free_primary && g_partitions >= MAXIMUM_PARTS) { if (!free_primary && g_partitions >= MAXIMUM_PARTS) {
printf("The maximum number of partitions has been created\n"); puts("The maximum number of partitions has been created");
return; return;
} }
@ -2508,8 +2508,8 @@ new_partition(void)
if (extended_offset) if (extended_offset)
add_logical(); add_logical();
else else
printf("You must delete some partition and add " puts("You must delete some partition and add "
"an extended partition first\n"); "an extended partition first");
} else { } else {
char c, line[80]; char c, line[80];
snprintf(line, sizeof(line), snprintf(line, sizeof(line),
@ -2547,7 +2547,7 @@ reread_partition_table(int leave)
{ {
int i; int i;
printf("Calling ioctl() to re-read partition table\n"); puts("Calling ioctl() to re-read partition table");
sync(); sync();
/* Users with slow external USB disks on a 320MHz ARM system (year 2011) /* Users with slow external USB disks on a 320MHz ARM system (year 2011)
* report that sleep is needed, otherwise BLKRRPART may fail with -EIO: * report that sleep is needed, otherwise BLKRRPART may fail with -EIO:
@ -2558,10 +2558,10 @@ reread_partition_table(int leave)
"failed, kernel still uses old table"); "failed, kernel still uses old table");
#if 0 #if 0
if (dos_changed) if (dos_changed)
printf( puts(
"\nWARNING: If you have created or modified any DOS 6.x\n" "\nWARNING: If you have created or modified any DOS 6.x\n"
"partitions, please see the fdisk manual page for additional\n" "partitions, please see the fdisk manual page for additional\n"
"information\n"); "information");
#endif #endif
if (leave) { if (leave) {
@ -2589,7 +2589,7 @@ write_table(void)
} }
} }
else if (LABEL_IS_SGI) { else if (LABEL_IS_SGI) {
/* no test on change? the printf below might be mistaken */ /* no test on change? the "altered" msg below might be mistaken */
sgi_write_table(); sgi_write_table();
} }
else if (LABEL_IS_SUN) { else if (LABEL_IS_SUN) {
@ -2601,7 +2601,7 @@ write_table(void)
} }
} }
printf("The partition table has been altered.\n"); puts("The partition table has been altered.");
reread_partition_table(1); reread_partition_table(1);
} }
#endif /* FEATURE_FDISK_WRITABLE */ #endif /* FEATURE_FDISK_WRITABLE */
@ -2744,8 +2744,8 @@ xselect(void)
user_sectors = g_sectors = read_int(1, g_sectors, 63, 0, "Number of sectors"); user_sectors = g_sectors = read_int(1, g_sectors, 63, 0, "Number of sectors");
if (dos_compatible_flag) { if (dos_compatible_flag) {
sector_offset = g_sectors; sector_offset = g_sectors;
printf("Warning: setting sector offset for DOS " puts("Warning: setting sector offset for DOS "
"compatiblity\n"); "compatiblity");
} }
update_units(); update_units();
break; break;
@ -3024,7 +3024,7 @@ int fdisk_main(int argc UNUSED_PARAM, char **argv)
sgi_get_bootfile()); sgi_get_bootfile());
if (read_maybe_empty("Please enter the name of the " if (read_maybe_empty("Please enter the name of the "
"new boot file: ") == '\n') "new boot file: ") == '\n')
printf("Boot file unchanged\n"); puts("Boot file unchanged");
else else
sgi_set_bootfile(line_ptr); sgi_set_bootfile(line_ptr);
} }
@ -3106,8 +3106,8 @@ int fdisk_main(int argc UNUSED_PARAM, char **argv)
#if ENABLE_FEATURE_FDISK_ADVANCED #if ENABLE_FEATURE_FDISK_ADVANCED
case 'x': case 'x':
if (LABEL_IS_SGI) { if (LABEL_IS_SGI) {
printf("\n\tSorry, no experts menu for SGI " puts("\n\tSorry, no experts menu for SGI "
"partition tables available\n\n"); "partition tables available\n");
} else } else
xselect(); xselect();
break; break;

View File

@ -106,7 +106,7 @@ gpt_list_table(int xtra UNUSED_PARAM)
(unsigned long long)SWAP_LE64(gpt_hdr->first_usable_lba), (unsigned long long)SWAP_LE64(gpt_hdr->first_usable_lba),
(unsigned long long)SWAP_LE64(gpt_hdr->last_usable_lba)); (unsigned long long)SWAP_LE64(gpt_hdr->last_usable_lba));
printf("Number Start (sector) End (sector) Size Code Name\n"); puts("Number Start (sector) End (sector) Size Code Name");
for (i = 0; i < n_parts; i++) { for (i = 0; i < n_parts; i++) {
gpt_partition *p = gpt_part(i); gpt_partition *p = gpt_part(i);
if (p->lba_start) { if (p->lba_start) {
@ -119,7 +119,7 @@ gpt_list_table(int xtra UNUSED_PARAM)
numstr6, numstr6,
0x0700 /* FIXME */); 0x0700 /* FIXME */);
gpt_print_wide(p->name, 18); gpt_print_wide(p->name, 18);
printf("\n"); bb_putchar('\n');
} }
} }
} }

View File

@ -371,9 +371,9 @@ static int ask(const char *string, int def)
} }
} }
if (def) if (def)
printf("y\n"); puts("y");
else { else {
printf("n\n"); puts("n");
errors_uncorrected = 1; errors_uncorrected = 1;
} }
return def; return def;
@ -405,7 +405,7 @@ static void check_mount(void)
if (isatty(0) && isatty(1)) if (isatty(0) && isatty(1))
cont = ask("Do you really want to continue", 0); cont = ask("Do you really want to continue", 0);
if (!cont) { if (!cont) {
printf("Check aborted\n"); puts("Check aborted");
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
} }
@ -470,8 +470,8 @@ static void write_block(unsigned nr, void *addr)
if (!nr) if (!nr)
return; return;
if (nr < FIRSTZONE || nr >= ZONES) { if (nr < FIRSTZONE || nr >= ZONES) {
printf("Internal error: trying to write bad block\n" puts("Internal error: trying to write bad block\n"
"Write request ignored\n"); "Write request ignored");
errors_uncorrected = 1; errors_uncorrected = 1;
return; return;
} }
@ -659,7 +659,7 @@ static void read_tables(void)
if (INODE_BUFFER_SIZE != read(dev_fd, inode_buffer, INODE_BUFFER_SIZE)) if (INODE_BUFFER_SIZE != read(dev_fd, inode_buffer, INODE_BUFFER_SIZE))
die("can't read inodes"); die("can't read inodes");
if (NORM_FIRSTZONE != FIRSTZONE) { if (NORM_FIRSTZONE != FIRSTZONE) {
printf("warning: firstzone!=norm_firstzone\n"); puts("warning: firstzone!=norm_firstzone");
errors_uncorrected = 1; errors_uncorrected = 1;
} }
get_dirsize(); get_dirsize();
@ -713,7 +713,7 @@ static void get_inode_common(unsigned nr, uint16_t i_mode)
} else } else
links++; links++;
if (!++inode_count[nr]) { if (!++inode_count[nr]) {
printf("Warning: inode count too big\n"); puts("Warning: inode count too big");
inode_count[nr]--; inode_count[nr]--;
errors_uncorrected = 1; errors_uncorrected = 1;
} }
@ -1299,7 +1299,7 @@ int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
} }
if (changed) { if (changed) {
write_tables(); write_tables();
printf("FILE SYSTEM HAS BEEN CHANGED\n"); puts("FILE SYSTEM HAS BEEN CHANGED");
sync(); sync();
} else if (OPT_repair) } else if (OPT_repair)
write_superblock(); write_superblock();

View File

@ -378,7 +378,7 @@ int getopt_main(int argc, char **argv)
if (compatible) { if (compatible) {
/* For some reason, the original getopt gave no error /* For some reason, the original getopt gave no error
* when there were no arguments. */ * when there were no arguments. */
printf(" --\n"); puts(" --");
return 0; return 0;
} }
bb_error_msg_and_die("missing optstring argument"); bb_error_msg_and_die("missing optstring argument");

View File

@ -119,7 +119,7 @@ int ipcrm_main(int argc, char **argv)
if (remove_ids(what, &argv[2])) if (remove_ids(what, &argv[2]))
fflush_stdout_and_exit(EXIT_FAILURE); fflush_stdout_and_exit(EXIT_FAILURE);
printf("resource(s) deleted\n"); puts("resource(s) deleted");
return 0; return 0;
} }
} }