From d8679f0250762892ab1e1a6d71badc2e9d42a526 Mon Sep 17 00:00:00 2001 From: Nicolás Reynolds Date: Sat, 12 Apr 2014 03:59:45 +0000 Subject: Sat Apr 12 03:57:05 UTC 2014 --- .../0001-cp-don-t-reserve-a-device-number.patch | 77 ++++++++++++++++++++++ core/coreutils/PKGBUILD | 11 ++-- 2 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 core/coreutils/0001-cp-don-t-reserve-a-device-number.patch (limited to 'core/coreutils') diff --git a/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch b/core/coreutils/0001-cp-don-t-reserve-a-device-number.patch new file mode 100644 index 000000000..1f276b4a4 --- /dev/null +++ b/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 +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 + diff --git a/core/coreutils/PKGBUILD b/core/coreutils/PKGBUILD index a367cabdc..26113ba39 100644 --- a/core/coreutils/PKGBUILD +++ b/core/coreutils/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 207977 2014-03-16 10:09:10Z bpiotrowski $ +# $Id: PKGBUILD 210100 2014-04-09 22:21:54Z thomas $ # Maintainer: Sébastien "Seblu" Luttringer # Maintainer: Bartłomiej Piotrowski # Contributor: Allan McRae @@ -6,7 +6,7 @@ pkgname=coreutils pkgver=8.22 -pkgrel=3 +pkgrel=4 pkgdesc='The basic file, shell and text manipulation utilities of the GNU operating system' arch=('i686' 'x86_64') license=('GPL3') @@ -15,14 +15,17 @@ groups=('base') depends=('glibc' 'pam' 'acl' 'gmp' 'libcap' 'openssl') install=$pkgname.install source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig} - coreutils-8.22-shuf-segfault.patch) + coreutils-8.22-shuf-segfault.patch + 0001-cp-don-t-reserve-a-device-number.patch) md5sums=('8fb0ae2267aa6e728958adc38f8163a2' 'SKIP' - '94f7e6f373f37beb236caabed8fcdb52') + '94f7e6f373f37beb236caabed8fcdb52' + 'ac3825f60b6e0300e375f656a3667c52') prepare() { cd $pkgname-$pkgver patch -p1 -i ../coreutils-8.22-shuf-segfault.patch + patch -p1 -i ../0001-cp-don-t-reserve-a-device-number.patch } build() { -- cgit v1.2.3-54-g00ecf