diff -urp coreutils-6.9-orig/src/echo.c coreutils-6.9/src/echo.c --- coreutils-6.9-orig/src/echo.c +++ coreutils-6.9/src/echo.c @@ -163,6 +163,10 @@ main (int argc, char **argv) { case 'e': case 'E': case 'n': break; + case '-': + /* end of short options(allows to print -n,-e or -E) */ + argc--; + argv++; default: goto just_echo; } diff -urp coreutils-6.9-orig/lib/long-options.c coreutils-6.9/lib/long-options.c --- coreutils-6.9-orig/lib/long-options.c +++ coreutils-6.9/lib/long-options.c @@ -57,8 +57,7 @@ parse_long_options (int argc, /* Don't print an error message for unrecognized options. */ opterr = 0; - if (argc == 2 - && (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1) + while ((c = getopt_long (argc, argv, "+", long_options, NULL)) != -1) { switch (c) {