diff options
author | Britney Fransen <brfransen@gmail.com> | 2014-11-21 22:16:21 (GMT) |
---|---|---|
committer | Britney Fransen <brfransen@gmail.com> | 2014-11-21 22:16:21 (GMT) |
commit | 059c56bddd7b549abf003a8813f1a9016591d1c7 (patch) | |
tree | 3fc71454faf9236b640f4086185f32418eb1c92f /abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch | |
parent | 53bc2cba958b00609fdfcf85f655399f00235305 (diff) | |
download | linhes_pkgbuild-059c56bddd7b549abf003a8813f1a9016591d1c7.zip linhes_pkgbuild-059c56bddd7b549abf003a8813f1a9016591d1c7.tar.gz linhes_pkgbuild-059c56bddd7b549abf003a8813f1a9016591d1c7.tar.bz2 |
coreutils: update to 8.23
Diffstat (limited to 'abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch')
-rw-r--r-- | abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch b/abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch new file mode 100644 index 0000000..1f276b4 --- /dev/null +++ b/abs/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch @@ -0,0 +1,77 @@ +From d0294ff3b90430750a631556277c75f1a555dd44 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu, 3 Apr 2014 09:48:22 -0700 +Subject: [PATCH] cp: don't reserve a device number + +* src/copy.c (copy_internal): Replace dev_t arg DEVICE with struct +stat pointer arg PARENT. All callers changed. This removes an +unwarranted assumption that dev_t values of 0 cannot occur in file +systems. See: http://bugs.gnu.org/17179 +--- + src/copy.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/src/copy.c b/src/copy.c +index 781cc1e..d471a77 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -117,7 +117,7 @@ struct dir_list + #define DEST_INFO_INITIAL_CAPACITY 61 + + static bool copy_internal (char const *src_name, char const *dst_name, +- bool new_dst, dev_t device, ++ bool new_dst, struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -621,7 +621,7 @@ copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst, + char *dst_name = file_name_concat (dst_name_in, namep, NULL); + bool first_dir_created = *first_dir_created_per_command_line_arg; + +- ok &= copy_internal (src_name, dst_name, new_dst, src_sb->st_dev, ++ ok &= copy_internal (src_name, dst_name, new_dst, src_sb, + ancestors, &non_command_line_options, false, + &first_dir_created, + &local_copy_into_self, NULL); +@@ -1725,9 +1725,8 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + /* Copy the file SRC_NAME to the file DST_NAME. The files may be of + any type. NEW_DST should be true if the file DST_NAME cannot + exist because its parent directory was just created; NEW_DST should +- be false if DST_NAME might already exist. DEVICE is the device +- number of the parent directory, or 0 if the parent of this file is +- not known. ANCESTORS points to a linked, null terminated list of ++ be false if DST_NAME might already exist. A nonnull PARENT describes the ++ parent directory. ANCESTORS points to a linked, null terminated list of + devices and inodes of parent directories of SRC_NAME. COMMAND_LINE_ARG + is true iff SRC_NAME was specified on the command line. + FIRST_DIR_CREATED_PER_COMMAND_LINE_ARG is both input and output. +@@ -1737,7 +1736,7 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + static bool + copy_internal (char const *src_name, char const *dst_name, + bool new_dst, +- dev_t device, ++ struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -2434,7 +2433,7 @@ copy_internal (char const *src_name, char const *dst_name, + } + + /* Decide whether to copy the contents of the directory. */ +- if (x->one_file_system && device != 0 && device != src_sb.st_dev) ++ if (x->one_file_system && parent && parent->st_dev != src_sb.st_dev) + { + /* Here, we are crossing a file system boundary and cp's -x option + is in effect: so don't copy the contents of this directory. */ +@@ -2827,7 +2826,7 @@ copy (char const *src_name, char const *dst_name, + top_level_dst_name = dst_name; + + bool first_dir_created_per_command_line_arg = false; +- return copy_internal (src_name, dst_name, nonexistent_dst, 0, NULL, ++ return copy_internal (src_name, dst_name, nonexistent_dst, NULL, NULL, + options, true, + &first_dir_created_per_command_line_arg, + copy_into_self, rename_succeeded); +-- +1.9.1 + |