GNU bug report logs - #15249
"ls -R" may exit with invalid status code

Previous Next

Package: coreutils;

Reported by: FUJIWARA Katsunori <foozy <at> lares.dti.ne.jp>

Date: Mon, 2 Sep 2013 16:20:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: FUJIWARA Katsunori <foozy <at> lares.dti.ne.jp>
To: bug-coreutils <at> gnu.org
Subject: "ls -R" may exit with invalid status code
Date: Mon, 02 Sep 2013 21:41:06 +0900
With recent "src/ls.c" implementation of coreutils, "ls -R" may exit
with invalid status code LS_FAILURE, even when it should exit with
LS_MINOR_PROBLEM, which means some failure for files/directories in
sub-directories.

Technical detail:

  "command_line_arg" argument of "gobble_file()" invocation in
  "print_dir()" is always "false", because it is invoked for
  files/directories under target directory: they never be command line
  argument.

  In the other hand, "command_line_arg" argument of
  "extract_dirs_from_files()" invocation in "print_dir()" is equal to
  "command_line_arg" of "print_dir()", even though directories under
  target one never be command line argument.

  This causes that every sub-directories in recursive listing are
  treated as command line argument, and "serious" argument of
  "file_failure()" invocation for them becomes "true" unexpectedly.

  Then, "ls -R" will exit with invalid status code LS_FAILURE, when
  some failure occur for files/directories in sub-directories.

The change below should fix this issue.

diff --git a/src/ls.c b/src/ls.c
index e341c67..08e86ce 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -2647,7 +2647,7 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
      contents listed rather than being mentioned here as files.  */

   if (recursive)
-    extract_dirs_from_files (name, command_line_arg);
+    extract_dirs_from_files (name, false);

   if (format == long_format || print_block_size)
     {

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy <at> lares.dti.ne.jp




This bug report was last modified 11 years and 268 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.