build system: -fno-builtin-printf
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 7 Oct 2015 20:42:45 +0000 (22:42 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 7 Oct 2015 20:42:45 +0000 (22:42 +0200)
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>
24 files changed:
Makefile.flags
coreutils/uniq.c
coreutils/who.c
editors/diff.c
editors/ed.c
loginutils/add-remove-shell.c
mailutils/mail.c
mailutils/sendmail.c
miscutils/hdparm.c
miscutils/i2c_tools.c
networking/arping.c
networking/brctl.c
printutils/lpd.c
procps/iostat.c
procps/powertop.c
shell/ash.c
shell/hush.c
shell/shell_common.c
util-linux/fdformat.c
util-linux/fdisk.c
util-linux/fdisk_gpt.c
util-linux/fsck_minix.c
util-linux/getopt.c
util-linux/ipcrm.c

index 2bc83d1d90143a6a5bf24ef917f6a027513b16a3..b6cd32e42327c818bebedc85801a937fcae19891 100644 (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):
 CFLAGS += $(call cc-option,-fno-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
 # be fixed..
index 9208d34ec487040bf3a7c40394f910cfe618367e..e0133998a51b8db015b76466aa8385caf635e610 100644 (file)
@@ -112,7 +112,7 @@ int uniq_main(int argc UNUSED_PARAM, char **argv)
                                        /* %7lu matches GNU coreutils 6.9 */
                                        printf("%7lu ", dups + 1);
                                }
-                               printf("%s\n", old_line);
+                               puts(old_line);
                        }
                        free(old_line);
                }
index 8337212c9d1d0f360137eeb2ca5e7cd6e07f8580..f694d0c603fc7c25b29b566b311afeb4eca331ed 100644 (file)
@@ -81,7 +81,7 @@ int who_main(int argc UNUSED_PARAM, char **argv)
        opt_complementary = "=0";
        opt = getopt32(argv, do_users ? "" : "aH");
        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();
        while ((ut = getutxent()) != NULL) {
index e0adcee590a3b0ae47f28cfaf6680537a78ef42a..a892cfdf223615e381de247d9bceb41c4aef3694 100644 (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++) {
                        int c = fgetc(ft->ft_fp);
                        if (c == EOF) {
-                               printf("\n\\ No newline at end of file\n");
+                               puts("\n\\ No newline at end of file");
                                return;
                        }
                        ft->ft_pos++;
@@ -692,7 +692,7 @@ static bool diff(FILE* fp[2], char *file[2])
                                        continue;
                                printf(",%d", (a < b) ? b - a + 1 : 0);
                        }
-                       printf(" @@\n");
+                       puts(" @@");
                        /*
                         * Output changes in "unified" diff format--the old and new lines
                         * are printed together.
index f0e5e4d5dd14e3ff6bc0a0df2de601e0d91caa04..a4c41909937ba732e8d2a3508d8d7423c9a7f7d4 100644 (file)
@@ -206,7 +206,7 @@ static void doCommands(void)
                                if (fileName)
                                        printf("\"%s\"\n", fileName);
                                else
-                                       printf("No file name\n");
+                                       puts("No file name");
                                break;
                        }
                        free(fileName);
index e492b6e5a86ee8875394924ffbcf2e98b2124603..9419ff5e70fe94fbf1a162d0cb44b160592f7548 100644 (file)
@@ -100,7 +100,7 @@ int add_remove_shell_main(int argc UNUSED_PARAM, char **argv)
                                cpp++;
                        }
                        /* copy shell name from old to new file */
-                       printf("%s\n", line);
+                       puts(line);
  next_line:
                        free(line);
                }
@@ -112,7 +112,7 @@ int add_remove_shell_main(int argc UNUSED_PARAM, char **argv)
                char **cpp = argv;
                while (*cpp) {
                        if (*cpp != dont_add)
-                               printf("%s\n", *cpp);
+                               puts(*cpp);
                        cpp++;
                }
        }
index 199f644077c9f86c08f687ec9e10f01bf28b554d..a7e43c0d12f2f8f3cfbfd823e4f888b33f8b3dcf 100644 (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
                bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64);
                if (fname) {
-                       printf("%s\n", eol);
+                       puts(eol);
                } else {
                        src_buf += size;
                        len -= size;
index 9455b4e7a284de1b168c520e3627b55f3d83cf4f..4355e4dc5f7cfa3a484626c67fd6bab608db1829 100644 (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
                        // whether it is single or not character on the line
                        if ('.' == s[0] /*&& '\0' == s[1] */)
-                               printf(".");
+                               bb_putchar('.');
                        // dump read line
                        send_r_n(s);
                        free(s);
index f0e9c9d757f40f9535e200970065ea5d6a7defe8..9c486e7aa24899a43bff22c105d56168b9d54819 100644 (file)
@@ -763,9 +763,9 @@ static void identify(uint16_t *val)
        ) {
                like_std = 5;
                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))
-                       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 */
@@ -875,7 +875,7 @@ static void identify(uint16_t *val)
        if (min_std == 0xffff)
                min_std = like_std > 4 ? like_std - 3 : 1;
 
-       printf("Configuration:\n");
+       puts("Configuration:");
        /* more info from the general configuration word */
        if ((eqpt != CDROM) && (like_std == 1)) {
                jj = val[GEN_CONFIG] >> 1;
@@ -909,7 +909,7 @@ static void identify(uint16_t *val)
                mm = 0;
                bbbig = 0;
                if ((ll > 0x00FBFC10) && (!val[LCYLS]))
-                       printf("\tCHS addressing not supported\n");
+                       puts("\tCHS addressing not supported");
                else {
                        jj = val[WHATS_VALID] & OK_W54_58;
                        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_OFF) ? "" :"not");
        } else
-               printf("no IORDY\n");
+               puts("no IORDY");
 
        if ((like_std == 1) && 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: ");
                if ((like_std < 3) && !(val[SECTOR_XFER_MAX] & SECTOR_XFER))
-                       printf("not supported\n");
+                       puts("not supported");
                else {
                        printf("Max = %u\tCurrent = ", val[SECTOR_XFER_MAX] & SECTOR_XFER);
                        if (val[SECTOR_XFER_CUR] & MULTIPLE_SETTING_VALID)
                                printf("%u\n", val[SECTOR_XFER_CUR] & SECTOR_XFER);
                        else
-                               printf("?\n");
+                               puts("?");
                }
                if ((like_std > 3) && (val[CMDS_SUPP_1] & 0x0008)) {
                        /* We print out elsewhere whether the APM feature is enabled or
@@ -1040,7 +1040,7 @@ static void identify(uint16_t *val)
        } else {
                /* ATAPI */
                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]) {
                        printf("\tOverlap support:");
@@ -1056,7 +1056,7 @@ static void identify(uint16_t *val)
        /* DMA stuff. Check that only one DMA mode is selected. */
        printf("\tDMA: ");
        if (!(val[CAPAB_0] & DMA_SUP))
-               printf("not supported\n");
+               puts("not supported");
        else {
                if (val[DMA_MODE] && !val[SINGLE_DMA] && !val[MULTI_DMA])
                        printf(" sdma%u\n", (val[DMA_MODE] & MODE) >> 8);
@@ -1079,7 +1079,7 @@ static void identify(uint16_t *val)
                bb_putchar('\n');
 
                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)
                 && (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) {
-               printf("Commands/features:\n"
-                       "\tEnabled\tSupported:\n");
+               puts("Commands/features:\n"
+                       "\tEnabled\tSupported:");
                jj = val[CMDS_SUPP_0];
                kk = val[CMDS_EN_0];
                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)
         && (val[SECU_STATUS] || val[ERASE_TIME] || val[ENH_ERASE_TIME])
        ) {
-               printf("Security:\n");
+               puts("Security:");
                if (val[PSWD_CODE] && (val[PSWD_CODE] != NOVAL_1))
                        printf("\tMaster password revision code = %u\n", val[PSWD_CODE]);
                jj = val[SECU_STATUS];
@@ -1366,7 +1366,7 @@ static NOINLINE void dump_identity(const struct hd_driveid *id)
                }
        }
 #endif /* __NEW_HD_DRIVE_ID */
-       printf("\n\n * current active mode\n\n");
+       puts("\n\n * current active mode\n");
 }
 #endif
 
@@ -1507,7 +1507,7 @@ static void bus_state_value(unsigned value)
        else if (value == BUSSTATE_OFF)
                on_off(0);
        else if (value == BUSSTATE_TRISTATE)
-               printf(" (tristate)\n");
+               puts(" (tristate)");
        else
                printf(" (unknown: %u)\n", value);
 }
@@ -1531,7 +1531,7 @@ static void interpret_standby(uint8_t standby)
                printf("vendor-specific");
        if (standby == 254)
                printf("reserved");
-       printf(")\n");
+       puts(")");
 }
 
 static const uint8_t xfermode_val[] ALIGN1 = {
@@ -1582,7 +1582,7 @@ static void interpret_xfermode(unsigned xfermode)
                printf("UltraDMA mode%u", xfermode - 64);
        else
                printf("unknown");
-       printf(")\n");
+       puts(")");
 }
 #endif /* HDIO_DRIVE_CMD */
 
@@ -1633,7 +1633,7 @@ static void process_dev(char *devname)
                if (noisy_piomode) {
                        printf(" attempting to ");
                        if (piomode == 255)
-                               printf("auto-tune PIO mode\n");
+                               puts("auto-tune PIO mode");
                        else if (piomode < 100)
                                printf("set PIO mode to %d\n", piomode);
                        else if (piomode < 200)
@@ -1762,7 +1762,7 @@ static void process_dev(char *devname)
 #ifndef WIN_STANDBYNOW2
 #define WIN_STANDBYNOW2 0x94
 #endif
-               printf(" issuing standby command\n");
+               puts(" issuing standby command");
                args[0] = WIN_STANDBYNOW1;
                ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_STANDBYNOW2);
        }
@@ -1773,13 +1773,13 @@ static void process_dev(char *devname)
 #ifndef WIN_SLEEPNOW2
 #define WIN_SLEEPNOW2 0x99
 #endif
-               printf(" issuing sleep command\n");
+               puts(" issuing sleep command");
                args[0] = WIN_SLEEPNOW1;
                ioctl_alt_or_warn(HDIO_DRIVE_CMD, args, WIN_SLEEPNOW2);
        }
        if (set_seagate) {
                args[0] = 0xfb;
-               printf(" disabling Seagate auto powersaving mode\n");
+               puts(" disabling Seagate auto powersaving mode");
                ioctl_or_warn(fd, HDIO_DRIVE_CMD, &args);
        }
        if (getset_standby == IS_SET) {
@@ -1815,17 +1815,17 @@ static void process_dev(char *devname)
                if (!ioctl_or_warn(fd, HDIO_GET_32BIT, &parm)) {
                        printf(" IO_support\t=%3ld (", parm);
                        if (parm == 0)
-                               printf("default 16-bit)\n");
+                               puts("default 16-bit)");
                        else if (parm == 2)
-                               printf("16-bit)\n");
+                               puts("16-bit)");
                        else if (parm == 1)
-                               printf("32-bit)\n");
+                               puts("32-bit)");
                        else if (parm == 3)
-                               printf("32-bit w/sync)\n");
+                               puts("32-bit w/sync)");
                        else if (parm == 8)
-                               printf("Request-Queue-Bypass)\n");
+                               puts("Request-Queue-Bypass)");
                        else
-                               printf("\?\?\?)\n");
+                               puts("\?\?\?)");
                }
        }
        if (getset_unmask) {
@@ -1837,7 +1837,7 @@ static void process_dev(char *devname)
                if (!ioctl_or_warn(fd, HDIO_GET_DMA, &parm)) {
                        printf(fmt, "using_dma", parm);
                        if (parm == 8)
-                               printf(" (DMA-Assisted-PIO)\n");
+                               puts(" (DMA-Assisted-PIO)");
                        else
                                on_off(parm != 0);
                }
@@ -1921,7 +1921,7 @@ static void process_dev(char *devname)
                                id.multsect_valid &= ~1;
                        dump_identity(&id);
                } 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 */
                        bb_perror_msg("HDIO_GET_IDENTITY");
                else
index 4b26b7bdc24c1f665ceec849e77d753d5eed23cd..292ff88ddb61a8e5614d9499b80609842c6b960a 100644 (file)
@@ -701,7 +701,7 @@ int i2cset_main(int argc, char **argv)
        }
 
        if (status < 0) {
-               printf("Warning - readback failed\n");
+               puts("Warning - readback failed");
        } else
        if (status != val) {
                printf("Warning - data mismatch - wrote "
@@ -756,8 +756,8 @@ static void dump_data(int bus_fd, int mode, unsigned first,
 {
        int i, j, res;
 
-       printf("     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f"
-              "    0123456789abcdef\n");
+       puts("     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f"
+            "    0123456789abcdef");
 
        for (i = 0; i < I2CDUMP_NUM_REGS; i += 0x10) {
                if (mode == I2C_SMBUS_BLOCK_DATA && i >= blen)
@@ -826,22 +826,22 @@ static void dump_data(int bus_fd, int mode, unsigned first,
                                break;
                        /* Skip unwanted registers */
                        if (i+j < first || i+j > last) {
-                               printf(" ");
+                               bb_putchar(' ');
                                continue;
                        }
 
                        res = block[i+j];
                        if (res < 0) {
-                               printf("X");
+                               bb_putchar('X');
                        } else if (res == 0x00 || res == 0xff) {
-                               printf(".");
+                               bb_putchar('.');
                        } else if (res < 32 || res >= 127) {
-                               printf("?");
+                               bb_putchar('?');
                        } 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;
 
        /* 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) {
                if (i/8 < first/8)
                        continue;
@@ -871,7 +871,7 @@ static void dump_word_data(int bus_fd, unsigned first, unsigned last)
                        else
                                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))
                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) {
                printf("%02x: ", i);
                for(j = 0; j < 16; j++) {
@@ -1325,7 +1325,7 @@ int i2cdetect_main(int argc UNUSED_PARAM, char **argv)
                        else
                                printf("%02x ", i+j);
                }
-               printf("\n");
+               bb_putchar('\n');
        }
 
        return 0;
index ce7fa299cdc571c178d503488aaa183557496644..ef205e5e64b678010a891574b1ba1c854bb13dfb 100644 (file)
@@ -249,7 +249,7 @@ static void recv_pack(unsigned char *buf, int len, struct sockaddr_ll *FROM)
                        unsigned diff = MONOTONIC_US() - last;
                        printf(" %u.%03ums\n", diff / 1000, diff % 1000);
                } else {
-                       printf(" UNSOLICITED?\n");
+                       puts(" UNSOLICITED?");
                }
                fflush_all();
        }
index 8043d600b4609a0cb9acf92beed6c87ec538deb7..c01a86998c71e56c0d9a7a14cad2245bd1ce2c26 100644 (file)
@@ -217,7 +217,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv)
                        arm_ioctl(args, BRCTL_GET_BRIDGES,
                                                (unsigned long) bridx, MAX_PORTS);
                        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++) {
                                char ifname[IFNAMSIZ];
                                int j, tabs;
@@ -236,7 +236,7 @@ int brctl_main(int argc UNUSED_PARAM, char **argv)
                                /* print bridge id */
                                x = (unsigned char *) &bi.bridge_id;
                                for (j = 0; j < 8; j++) {
-                                       printf("%.2x", x[j]);
+                                       printf("%02x", x[j]);
                                        if (j == 1)
                                                bb_putchar('.');
                                }
index eaf42c08b63717e4a777231cf0490cbcacdc042d..c98bbb347e05b126f9cd06762286c9222c84cec0 100644 (file)
@@ -200,7 +200,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
                if (2 != s[0] && 3 != s[0])
                        goto unsupported_cmd;
                if (spooling & (1 << (s[0]-1))) {
-                       printf("Duplicated subcommand\n");
+                       puts("Duplicated subcommand");
                        goto err_exit;
                }
                // get filename
@@ -208,7 +208,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
                fname = strchr(s, ' ');
                if (!fname) {
 // bad_fname:
-                       printf("No or bad filename\n");
+                       puts("No or bad filename");
                        goto err_exit;
                }
                *fname++ = '\0';
@@ -219,13 +219,13 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
                // get length
                expected_len = bb_strtou(s + 1, NULL, 10);
                if (errno || expected_len < 0) {
-                       printf("Bad length\n");
+                       puts("Bad length");
                        goto err_exit;
                }
                if (2 == s[0] && expected_len > 16 * 1024) {
                        // SECURITY:
                        // 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;
                }
 
index 8d272c87cbdddd34f8df031bd14a9aa65822511b..c290c594b8ada48c8a1a5e7189da390fcb6c8001 100644 (file)
@@ -142,7 +142,7 @@ static void print_timestamp(void)
        /* %x: date representation for the current locale */
        /* %X: time representation for the current locale */
        strftime(buf, sizeof(buf), "%x %X", &G.tmtime);
-       printf("%s\n", buf);
+       puts(buf);
 }
 
 static cputime_t get_smp_uptime(void)
index 1de5d329ea6492d38a538e65ceb0c1e3931852f9..18418100f62352ad4c1115fc414ff1a2a0011da2 100644 (file)
@@ -704,7 +704,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
        /* Get number of CPUs */
        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
        tcgetattr(0, (void *)&G.init_settings);
index b835415b59bf43cc832177d8b539c92d7db1d91d..7d20b8860a4cef13f0506ff9aa62f49d421f898c 100644 (file)
@@ -9681,7 +9681,7 @@ preadfd(void)
                        }
 # if ENABLE_ASH_IDLE_TIMEOUT
                        else if (errno == EAGAIN && timeout > 0) {
-                               printf("\007timed out waiting for input: auto-logout\n");
+                               puts("\007timed out waiting for input: auto-logout");
                                exitshell();
                        }
 # endif
index bccd9c1e9c1fce0cd864c4eeaa304751d87f787c..f085ed3ebdbf0e301b071e2618ce785bfadbbd87 100644 (file)
@@ -6794,7 +6794,7 @@ static int checkjobs(struct pipe *fg_pipe)
                                                int sig = WTERMSIG(status);
                                                if (i == fg_pipe->num_cmds-1)
                                                        /* 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: MIPS has 128 sigs (1..128), what if sig==128 here?
                                                 * Maybe we need to use sig | 128? */
index 2b6f7dc92687a55277d88dbc7cb4652ad4a38dba..8c9607c8c2525ed414f2653146b68290b02a7d66 100644 (file)
@@ -380,7 +380,7 @@ static void printlim(unsigned opts, const struct rlimit *limit,
                val = limit->rlim_cur;
 
        if (val == RLIM_INFINITY)
-               printf("unlimited\n");
+               puts("unlimited");
        else {
                val >>= l->factor_shift;
                printf("%llu\n", (long long) val);
index 6f49cec8fbf73519831d044a71942ee34e67d389..6ef6445e6da11ceb575beaf5accaf87e671f8170 100644 (file)
@@ -93,7 +93,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
        }
 
        xioctl(fd, FDFMTEND, NULL);
-       printf("done\n");
+       puts("Done");
 
        /* VERIFY */
        if (verify) {
@@ -126,7 +126,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv)
 
                if (ENABLE_FEATURE_CLEAN_UP) free(data);
 
-               printf("done\n");
+               puts("Done");
        }
 
        if (ENABLE_FEATURE_CLEAN_UP) close(fd);
index 7fe70fb72a4b1aa36bc677cb0a429534d85891c3..f49ce95a4d2cf73adbf5eef794cd6e2de789bae5 100644 (file)
@@ -1102,11 +1102,11 @@ warn_geometry(void)
                printf(" sectors");
        if (!g_cylinders)
                printf(" cylinders");
-       printf(
 #if ENABLE_FEATURE_FDISK_WRITABLE
-               " (settable in the extra functions menu)"
+       puts(" (settable in the extra functions menu)");
+#else
+       bb_putchar('\n');
 #endif
-               "\n");
        return 1;
 }
 
@@ -1150,7 +1150,7 @@ read_extended(int ext)
 
        p = pex->part_table;
        if (!get_start_sect(p)) {
-               printf("Bad offset in primary extended partition\n");
+               puts("Bad offset in primary extended partition");
                return;
        }
 
@@ -1450,8 +1450,8 @@ static int get_boot(void)
                        current_label_type = LABEL_OSF;
                        return 0;
                }
-               printf("This disk has both DOS and BSD magic.\n"
-                        "Give the 'b' command to go to BSD mode.\n");
+               puts("This disk has both DOS and BSD magic.\n"
+                    "Give the 'b' command to go to BSD mode.");
        }
 #endif
 
@@ -1461,9 +1461,9 @@ static int get_boot(void)
 #else
        if (!valid_part_table_flag(MBRbuffer)) {
                if (what == OPEN_MAIN) {
-                       printf("Device contains neither a valid DOS "
-                                 "partition table, nor Sun, SGI, OSF or GPT "
-                                 "disklabel\n");
+                       puts("Device contains neither a valid DOS "
+                            "partition table, nor Sun, SGI, OSF or GPT "
+                            "disklabel");
 #ifdef __sparc__
                        IF_FEATURE_SUN_LABEL(create_sunlabel();)
 #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)
                        break;
-               printf("Value is out of range\n");
+               puts("Value is out of range");
        }
        return value;
 }
@@ -1641,7 +1641,7 @@ get_existing_partition(int warn, unsigned max)
                printf("Selected partition %u\n", pno+1);
                return pno;
        }
-       printf("No partition is defined yet!\n");
+       puts("No partition is defined yet!");
        return -1;
 
  not_unique:
@@ -1668,7 +1668,7 @@ get_nonexisting_partition(int warn, unsigned max)
                printf("Selected partition %u\n", pno+1);
                return pno;
        }
-       printf("All primary partitions have been defined already!\n");
+       puts("All primary partitions have been defined already!");
        return -1;
 
  not_unique:
@@ -1703,10 +1703,10 @@ toggle_dos_compatibility_flag(void)
        dos_compatible_flag = 1 - dos_compatible_flag;
        if (dos_compatible_flag) {
                sector_offset = g_sectors;
-               printf("DOS Compatibility flag is set\n");
+               printf("DOS Compatibility flag is %sset\n", "");
        } else {
                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());
 
                if (!sys && !LABEL_IS_SGI && !LABEL_IS_SUN) {
-                       printf("Type 0 means free space to many systems\n"
-                                  "(but not to Linux). Having partitions of\n"
-                                  "type 0 is probably unwise.\n");
+                       puts("Type 0 means free space to many systems\n"
+                               "(but not to Linux). Having partitions of\n"
+                               "type 0 is probably unwise.");
                        /* break; */
                }
 
                if (!LABEL_IS_SUN && !LABEL_IS_SGI) {
                        if (IS_EXTENDED(sys) != IS_EXTENDED(p->sys_ind)) {
-                               printf("You cannot change a partition into"
-                                          " an extended one or vice versa\n");
+                               puts("You cannot change a partition into"
+                                       " an extended one or vice versa");
                                break;
                        }
                }
@@ -1830,10 +1830,10 @@ change_sysid(void)
                if (sys < 256) {
 #if ENABLE_FEATURE_SUN_LABEL
                        if (LABEL_IS_SUN && i == 2 && sys != SUN_WHOLE_DISK)
-                               printf("Consider leaving partition 3 "
-                                          "as Whole disk (5),\n"
-                                          "as SunOS/Solaris expects it and "
-                                          "even Linux likes it\n\n");
+                               puts("Consider leaving partition 3 "
+                                       "as Whole disk (5),\n"
+                                       "as SunOS/Solaris expects it and "
+                                       "even Linux likes it\n");
 #endif
 #if ENABLE_FEATURE_SGI_LABEL
                        if (LABEL_IS_SGI &&
@@ -1842,10 +1842,10 @@ change_sysid(void)
                                        (i == 8 && sys != 0)
                                )
                        ) {
-                               printf("Consider leaving partition 9 "
-                                          "as volume header (0),\nand "
-                                          "partition 11 as entire volume (6)"
-                                          "as IRIX expects it\n\n");
+                               puts("Consider leaving partition 9 "
+                                       "as volume header (0),\nand "
+                                       "partition 11 as entire volume (6)"
+                                       "as IRIX expects it\n");
                        }
 #endif
                        if (sys == origsys)
@@ -2067,7 +2067,7 @@ fix_partition_table_order(void)
        int i,k;
 
        if (!wrong_p_order(NULL)) {
-               printf("Ordering is already correct\n\n");
+               puts("Ordering is already correct\n");
                return;
        }
 
@@ -2095,7 +2095,7 @@ fix_partition_table_order(void)
        if (i)
                fix_chain_of_logicals();
 
-       printf("Done.\n");
+       puts("Done");
 }
 #endif
 
@@ -2178,7 +2178,7 @@ list_table(int xtra)
         * if this is a sgi, sun or aix labeled disk... */
        if (LABEL_IS_DOS && wrong_p_order(NULL)) {
                /* 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",
                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++) {
                pe = &ptes[i];
                p = (extend ? pe->ext_pointer : pe->part_table);
@@ -2419,7 +2419,7 @@ add_partition(int n, int sys)
                        limit = first[i] - 1;
        }
        if (start > limit) {
-               printf("No free sectors available\n");
+               puts("No free sectors available");
                if (n > 4)
                        g_partitions--;
                return;
@@ -2490,9 +2490,9 @@ new_partition(void)
                return;
        }
        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"
-"table first (use 'o'). This will destroy the present disk contents.\n");
+"table first (use 'o'). This will destroy the present disk contents.");
                return;
        }
 
@@ -2500,7 +2500,7 @@ new_partition(void)
                free_primary += !ptes[i].part_table->sys_ind;
 
        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;
        }
 
@@ -2508,8 +2508,8 @@ new_partition(void)
                if (extended_offset)
                        add_logical();
                else
-                       printf("You must delete some partition and add "
-                                "an extended partition first\n");
+                       puts("You must delete some partition and add "
+                                "an extended partition first");
        } else {
                char c, line[80];
                snprintf(line, sizeof(line),
@@ -2547,7 +2547,7 @@ reread_partition_table(int leave)
 {
        int i;
 
-       printf("Calling ioctl() to re-read partition table\n");
+       puts("Calling ioctl() to re-read partition table");
        sync();
        /* Users with slow external USB disks on a 320MHz ARM system (year 2011)
         * 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");
 #if 0
        if (dos_changed)
-               printf(
+               puts(
                "\nWARNING: If you have created or modified any DOS 6.x\n"
                "partitions, please see the fdisk manual page for additional\n"
-               "information\n");
+               "information");
 #endif
 
        if (leave) {
@@ -2589,7 +2589,7 @@ write_table(void)
                }
        }
        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();
        }
        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);
 }
 #endif /* FEATURE_FDISK_WRITABLE */
@@ -2744,8 +2744,8 @@ xselect(void)
                        user_sectors = g_sectors = read_int(1, g_sectors, 63, 0, "Number of sectors");
                        if (dos_compatible_flag) {
                                sector_offset = g_sectors;
-                               printf("Warning: setting sector offset for DOS "
-                                       "compatiblity\n");
+                               puts("Warning: setting sector offset for DOS "
+                                       "compatiblity");
                        }
                        update_units();
                        break;
@@ -3024,7 +3024,7 @@ int fdisk_main(int argc UNUSED_PARAM, char **argv)
                                        sgi_get_bootfile());
                                if (read_maybe_empty("Please enter the name of the "
                                                "new boot file: ") == '\n')
-                                       printf("Boot file unchanged\n");
+                                       puts("Boot file unchanged");
                                else
                                        sgi_set_bootfile(line_ptr);
                        }
@@ -3106,8 +3106,8 @@ int fdisk_main(int argc UNUSED_PARAM, char **argv)
 #if ENABLE_FEATURE_FDISK_ADVANCED
                case 'x':
                        if (LABEL_IS_SGI) {
-                               printf("\n\tSorry, no experts menu for SGI "
-                                       "partition tables available\n\n");
+                               puts("\n\tSorry, no experts menu for SGI "
+                                       "partition tables available\n");
                        } else
                                xselect();
                        break;
index 5786d5f7d753d6e1e414e84a58cca306dcf5b5aa..715e227ca2ad350dd5db16fabd48ceb2638c9f45 100644 (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->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++) {
                gpt_partition *p = gpt_part(i);
                if (p->lba_start) {
@@ -119,7 +119,7 @@ gpt_list_table(int xtra UNUSED_PARAM)
                                numstr6,
                                0x0700 /* FIXME */);
                        gpt_print_wide(p->name, 18);
-                       printf("\n");
+                       bb_putchar('\n');
                }
        }
 }
index 33767a1afe8f8939e237e8a3f0e426a8caeea3b3..d2f3524b46e95e48dd09f3b90d97e1373e60312a 100644 (file)
@@ -371,9 +371,9 @@ static int ask(const char *string, int def)
                }
        }
        if (def)
-               printf("y\n");
+               puts("y");
        else {
-               printf("n\n");
+               puts("n");
                errors_uncorrected = 1;
        }
        return def;
@@ -405,7 +405,7 @@ static void check_mount(void)
                if (isatty(0) && isatty(1))
                        cont = ask("Do you really want to continue", 0);
                if (!cont) {
-                       printf("Check aborted\n");
+                       puts("Check aborted");
                        exit(EXIT_SUCCESS);
                }
        }
@@ -470,8 +470,8 @@ static void write_block(unsigned nr, void *addr)
        if (!nr)
                return;
        if (nr < FIRSTZONE || nr >= ZONES) {
-               printf("Internal error: trying to write bad block\n"
-                          "Write request ignored\n");
+               puts("Internal error: trying to write bad block\n"
+                       "Write request ignored");
                errors_uncorrected = 1;
                return;
        }
@@ -659,7 +659,7 @@ static void read_tables(void)
        if (INODE_BUFFER_SIZE != read(dev_fd, inode_buffer, INODE_BUFFER_SIZE))
                die("can't read inodes");
        if (NORM_FIRSTZONE != FIRSTZONE) {
-               printf("warning: firstzone!=norm_firstzone\n");
+               puts("warning: firstzone!=norm_firstzone");
                errors_uncorrected = 1;
        }
        get_dirsize();
@@ -713,7 +713,7 @@ static void get_inode_common(unsigned nr, uint16_t i_mode)
        } else
                links++;
        if (!++inode_count[nr]) {
-               printf("Warning: inode count too big\n");
+               puts("Warning: inode count too big");
                inode_count[nr]--;
                errors_uncorrected = 1;
        }
@@ -1299,7 +1299,7 @@ int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
        }
        if (changed) {
                write_tables();
-               printf("FILE SYSTEM HAS BEEN CHANGED\n");
+               puts("FILE SYSTEM HAS BEEN CHANGED");
                sync();
        } else if (OPT_repair)
                write_superblock();
index 58df1c823c0217e45136dfe15a187712c280ccc6..b9dadf13c136e181ff4960d4a7bef6504de969d4 100644 (file)
@@ -378,7 +378,7 @@ int getopt_main(int argc, char **argv)
                if (compatible) {
                        /* For some reason, the original getopt gave no error
                         * when there were no arguments. */
-                       printf(" --\n");
+                       puts(" --");
                        return 0;
                }
                bb_error_msg_and_die("missing optstring argument");
index 888f70ef89abef0e92abec3aa03b241ec564046c..38d81af509f001724b55df5ad525977ef07092f0 100644 (file)
@@ -119,7 +119,7 @@ int ipcrm_main(int argc, char **argv)
 
                        if (remove_ids(what, &argv[2]))
                                fflush_stdout_and_exit(EXIT_FAILURE);
-                       printf("resource(s) deleted\n");
+                       puts("resource(s) deleted");
                        return 0;
                }
        }