emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#15249: closed ("ls -R" may exit with invalid statu


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#15249: closed ("ls -R" may exit with invalid status code)
Date: Tue, 03 Sep 2013 19:23:02 +0000

Your message dated Tue, 03 Sep 2013 20:22:28 +0100
with message-id <address@hidden>
and subject line Re: bug#15249: "ls -R" may exit with invalid status code
has caused the debbugs.gnu.org bug report #15249,
regarding "ls -R" may exit with invalid status code
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
15249: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15249
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: "ls -R" may exit with invalid status code Date: Mon, 02 Sep 2013 21:41:06 +0900 User-agent: Wanderlust/2.15.7 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.7 Emacs/22.3 (i386-msvc-nt6.1.7601) MULE/5.0 (SAKAKI) Meadow/3.02-dev (RINDOU) (2009-06-17 Rev.4261)
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]                             address@hidden



--- End Message ---
--- Begin Message --- Subject: Re: bug#15249: "ls -R" may exit with invalid status code Date: Tue, 03 Sep 2013 20:22:28 +0100 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2
On 09/02/2013 01:41 PM, FUJIWARA Katsunori wrote:
> 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)
>      {

This looks correct on initial inspection.
I'll look a bit more closely and apply soon.

thanks,
Pádraig.



--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]