[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15249: "ls -R" may exit with invalid status code
From: |
Pádraig Brady |
Subject: |
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.