- very minor tweak: save 1 byte. 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
No binary (build failed)
—
(log yok)
| @@ -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); | |