diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 17:39:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 17:39:32 +0000 |
commit | 38d9436103a7096b65aea78ac3ce13fde6ed3d6e (patch) | |
tree | e1c1508e82e507359d00d84e768707dad5d76ada /debian/patches/restore-ls-behavior-8.31.patch | |
parent | Adding upstream version 8.32. (diff) | |
download | coreutils-debian.tar.xz coreutils-debian.zip |
Adding debian version 8.32-4.debian/8.32-4debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/patches/restore-ls-behavior-8.31.patch')
-rw-r--r-- | debian/patches/restore-ls-behavior-8.31.patch | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/debian/patches/restore-ls-behavior-8.31.patch b/debian/patches/restore-ls-behavior-8.31.patch new file mode 100644 index 0000000..d889e22 --- /dev/null +++ b/debian/patches/restore-ls-behavior-8.31.patch @@ -0,0 +1,126 @@ +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu, 5 Mar 2020 17:25:29 -0800 +Subject: ls: restore 8.31 behavior on removed directories + +* NEWS: Mention this. +* src/ls.c: Do not include <sys/sycall.h> +(print_dir): Don't worry about whether the directory is removed. +* tests/ls/removed-directory.sh: Adjust to match new (i.e., old) +behavior. + +This patch is needed because coreutils 8.32 fails to build on ARM64 +with: + +src/ls.c: In function 'print_dir': +src/ls.c:3026:24: error: 'SYS_getdents' undeclared (first use in this function); did you mean 'SYS_getdents64'? + 3026 | if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 + | ^~~~~~~~~~~~ + | SYS_getdents64 + +Author: Paul Eggert <eggert@cs.ucla.edu> +Origin: upstream, https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=10fcb97bd728f09d4a027eddf8ad2900f0819b0a +Bug: https://lists.gnu.org/archive/html/bug-coreutils/2020-03/msg00005.html +Last-Updated: 2020-07-24 +Reviewed-By: Sergio Durigan Junior <sergio.durigan@canonical.com> +--- + NEWS | 4 ---- + src/ls.c | 22 ---------------------- + tests/ls/removed-directory.sh | 10 ++-------- + 3 files changed, 2 insertions(+), 34 deletions(-) + +diff --git a/NEWS b/NEWS +index 3e44c0c..3b419cb 100644 +--- a/NEWS ++++ b/NEWS +@@ -65,10 +65,6 @@ GNU coreutils NEWS -*- outline -*- + [The old behavior was introduced in sh-utils 2.0.15 ca. 1999, predating + coreutils package.] + +- ls issues an error message on a removed directory, on GNU/Linux systems. +- Previously no error and no entries were output, and so indistinguishable +- from an empty directory, with default ls options. +- + uniq no longer uses strcoll() to determine string equivalence, + and so will operate more efficiently and consistently. + +diff --git a/src/ls.c b/src/ls.c +index 24b9832..4acf5f4 100644 +--- a/src/ls.c ++++ b/src/ls.c +@@ -49,10 +49,6 @@ + # include <sys/ptem.h> + #endif + +-#ifdef __linux__ +-# include <sys/syscall.h> +-#endif +- + #include <stdio.h> + #include <assert.h> + #include <setjmp.h> +@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + struct dirent *next; + uintmax_t total_blocks = 0; + static bool first = true; +- bool found_any_entries = false; + + errno = 0; + dirp = opendir (name); +@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + next = readdir (dirp); + if (next) + { +- found_any_entries = true; + if (! file_ignored (next->d_name)) + { + enum filetype type = unknown; +@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + if (errno != EOVERFLOW) + break; + } +-#ifdef __linux__ +- else if (! found_any_entries) +- { +- /* If readdir finds no directory entries at all, not even "." or +- "..", then double check that the directory exists. */ +- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 +- && errno != EINVAL) +- { +- /* We exclude EINVAL as that pertains to buffer handling, +- and we've passed NULL as the buffer for simplicity. +- ENOENT is returned if appropriate before buffer handling. */ +- file_failure (command_line_arg, _("reading directory %s"), name); +- } +- break; +- } +-#endif + else + break; + +diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh +index e8c835d..fe8f929 100755 +--- a/tests/ls/removed-directory.sh ++++ b/tests/ls/removed-directory.sh +@@ -26,20 +26,14 @@ case $host_triplet in + *) skip_ 'non linux kernel' ;; + esac + +-LS_FAILURE=2 +- +-cat <<\EOF >exp-err || framework_failure_ +-ls: reading directory '.': No such file or directory +-EOF +- + cwd=$(pwd) + mkdir d || framework_failure_ + cd d || framework_failure_ + rmdir ../d || framework_failure_ + +-returns_ $LS_FAILURE ls >../out 2>../err || fail=1 ++ls >../out 2>../err || fail=1 + cd "$cwd" || framework_failure_ + compare /dev/null out || fail=1 +-compare exp-err err || fail=1 ++compare /dev/null err || fail=1 + + Exit $fail |