- very minor tweak: save 1 byte.
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Mon, 30 Jan 2006 17:41:06 +0000 (17:41 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Mon, 30 Jan 2006 17:41:06 +0000 (17:41 -0000)
  statistics:
   text    data     bss     dec     hex filename
    867       0      12     879     36f fold.o.oorig.gcc-3.3
    843       0      12     855     357 fold.o.oorig.gcc-3.4
    780       0      12     792     318 fold.o.oorig.gcc-4.0
    761       0      12     773     305 fold.o.oorig.gcc-4.1-HEAD
    761       0      12     773     305 fold.o.oorig.gcc-4.2-HEAD
    866       0      12     878     36e fold.o.gcc-3.3
    842       0      12     854     356 fold.o.gcc-3.4
    779       0      12     791     317 fold.o.gcc-4.0
    760       0      12     772     304 fold.o.gcc-4.1-HEAD
    760       0      12     772     304 fold.o.gcc-4.2-HEAD

coreutils/fold.c

index 85b15f4d89bb6a1105ea0ac2c34523ccd107a919..f1ab1bdc027ef82e750c629411ea8d8d1fec42b5 100644 (file)
@@ -51,7 +51,6 @@ extern int fold_main(int argc, char **argv)
        int i;
        int errs = 0;
 
-
        if(!ENABLE_DEBUG_YANK_SUSv2) {
                /* Turn any numeric options into -w options.  */
                for (i = 1; i < argc; i++) {
@@ -78,80 +77,81 @@ extern int fold_main(int argc, char **argv)
 
        do {
                FILE *istream = bb_wfopen_input(*argv);
-               if (istream != NULL) {
-                       int c;
-                       int column = 0;         /* Screen column where next char will go. */
-                       int offset_out = 0;     /* Index in `line_out' for next char. */
-                       static char *line_out = NULL;
-                       static int allocated_out = 0;
-
-                       while ((c = getc(istream)) != EOF) {
-                               if (offset_out + 1 >= allocated_out) {
-                                       allocated_out += 1024;
-                                       line_out = xrealloc(line_out, allocated_out);
-                               }
+               int c;
+               int column = 0;         /* Screen column where next char will go. */
+               int offset_out = 0;     /* Index in `line_out' for next char. */
+               static char *line_out = NULL;
+               static int allocated_out = 0;
 
-                               if (c == '\n') {
-                                       line_out[offset_out++] = c;
-                                       fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
-                                       column = offset_out = 0;
-                                       continue;
-                               }
+               if (istream == NULL) {
+                       errs |= EXIT_FAILURE;
+                       continue;
+               }
+
+               while ((c = getc(istream)) != EOF) {
+                       if (offset_out + 1 >= allocated_out) {
+                               allocated_out += 1024;
+                               line_out = xrealloc(line_out, allocated_out);
+                       }
+
+                       if (c == '\n') {
+                               line_out[offset_out++] = c;
+                               fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
+                               column = offset_out = 0;
+                               continue;
+                       }
 
 rescan:
-                               column = adjust_column(column, c);
-
-                               if (column > width) {
-                                       /* This character would make the line too long.
-                                          Print the line plus a newline, and make this character
-                                          start the next line. */
-                                       if (flags & FLAG_BREAK_SPACES) {
-                                               /* Look for the last blank. */
-                                               int logical_end;
-
-                                               for (logical_end = offset_out - 1; logical_end >= 0; logical_end--) {
-                                                       if (isblank(line_out[logical_end])) {
-                                                               break;
-                                                       }
-                                               }
-                                               if (logical_end >= 0) {
-                                                       /* Found a blank.  Don't output the part after it. */
-                                                       logical_end++;
-                                                       fwrite(line_out, sizeof(char), (size_t) logical_end, stdout);
-                                                       putchar('\n');
-                                                       /* Move the remainder to the beginning of the next line.
-                                                          The areas being copied here might overlap. */
-                                                       memmove(line_out, line_out + logical_end, offset_out - logical_end);
-                                                       offset_out -= logical_end;
-                                                       for (column = i = 0; i < offset_out; i++) {
-                                                               column = adjust_column(column, line_out[i]);
-                                                       }
-                                                       goto rescan;
+                       column = adjust_column(column, c);
+
+                       if (column > width) {
+                               /* This character would make the line too long.
+                                  Print the line plus a newline, and make this character
+                                  start the next line. */
+                               if (flags & FLAG_BREAK_SPACES) {
+                                       /* Look for the last blank. */
+                                       int logical_end;
+
+                                       for (logical_end = offset_out - 1; logical_end >= 0; logical_end--) {
+                                               if (isblank(line_out[logical_end])) {
+                                                       break;
                                                }
-                                       } else {
-                                               if (offset_out == 0) {
-                                                       line_out[offset_out++] = c;
-                                                       continue;
+                                       }
+                                       if (logical_end >= 0) {
+                                               /* Found a blank.  Don't output the part after it. */
+                                               logical_end++;
+                                               fwrite(line_out, sizeof(char), (size_t) logical_end, stdout);
+                                               putchar('\n');
+                                               /* Move the remainder to the beginning of the next line.
+                                                  The areas being copied here might overlap. */
+                                               memmove(line_out, line_out + logical_end, offset_out - logical_end);
+                                               offset_out -= logical_end;
+                                               for (column = i = 0; i < offset_out; i++) {
+                                                       column = adjust_column(column, line_out[i]);
                                                }
+                                               goto rescan;
+                                       }
+                               } else {
+                                       if (offset_out == 0) {
+                                               line_out[offset_out++] = c;
+                                               continue;
                                        }
-                                       line_out[offset_out++] = '\n';
-                                       fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
-                                       column = offset_out = 0;
-                                       goto rescan;
                                }
-
-                               line_out[offset_out++] = c;
-                       }
-
-                       if (offset_out) {
+                               line_out[offset_out++] = '\n';
                                fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
+                               column = offset_out = 0;
+                               goto rescan;
                        }
 
-                       if (ferror(istream) || bb_fclose_nonstdin(istream)) {
-                               bb_perror_msg("%s", *argv);     /* Avoid multibyte problems. */
-                               errs |= EXIT_FAILURE;
-                       }
-               } else {
+                       line_out[offset_out++] = c;
+               }
+
+               if (offset_out) {
+                       fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
+               }
+
+               if (ferror(istream) || bb_fclose_nonstdin(istream)) {
+                       bb_perror_msg("%s", *argv);     /* Avoid multibyte problems. */
                        errs |= EXIT_FAILURE;
                }
        } while (*++argv);