← Commit list

ded688c6f

Denys Vlasenko
Denys Vlasenko
2009-11-04
FAILED Duration: 32s

Subject

fold: fix a corner case. By Tomas Heinrich (heinrich.tomas AT gmail.com)

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

coreutils/fold.c+7 -8
@@ -30,7 +30,7 @@ static int adjust_column(int column, char c)
column = 0;
else if (c == '\t')
column = column + 8 - column % 8;
- else /* if (isprint (c)) */
+ else /* if (isprint(c)) */
column++;
} else
column++;
@@ -38,7 +38,7 @@ static int adjust_column(int column, char c)
}
int fold_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int fold_main(int argc, char **argv)
+int fold_main(int argc UNUSED_PARAM, char **argv)
{
char *line_out = NULL;
int allocated_out = 0;
@@ -49,7 +49,7 @@ int fold_main(int argc, char **argv)
if (ENABLE_INCLUDE_SUSv2) {
/* Turn any numeric options into -w options. */
- for (i = 1; i < argc; i++) {
+ for (i = 1; argv[i]; i++) {
char const *a = argv[i];
if (*a++ == '-') {
@@ -122,11 +122,10 @@ int fold_main(int argc, char **argv)
}
goto rescan;
}
- } else {
- if (offset_out == 0) {
- line_out[offset_out++] = c;
- continue;
- }
+ }
+ 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);
testsuite/fold.tests+14 -0
@@ -0,0 +1,14 @@
+#!/bin/sh
+# Copyright 2009 by Denys Vlasenko
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+
+testing "fold -s" "fold -w 7 -s" \
+ "123456\n\t\nasdf" \
+ "" \
+ "123456\tasdf" \
+
+exit $FAILCOUNT