bug-coreutils
[Top][All Lists]
Advanced

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

allow spaces in build tree path


From: Ralf Wildenhues
Subject: allow spaces in build tree path
Date: Sun, 22 Oct 2006 14:30:21 +0200
User-agent: Mutt/1.5.13 (2006-08-11)

The patch below allows CVS HEAD coreutils to pass the testsuite with
spaces in the absolute build tree path.  Spaces in the source tree
path are not tested, neither spaces in $srcdir (the relative path
pointing from the top builddir to the top source dir, that is given
by the invocation of `configure').  I have not tested spaces in $prefix.

The changes comprise not only the quoting of all relevant path entities,
but also changes the trap cleanup code to only perform the `rm' if
previous `cd' and `chmod' were successful:

  -trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
  +trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit 
$status'

Now with quoting in place this should be less of a problem, but before
it would have helped to avoid accidentally removing unrelated files.
(Is there a chance that the chmod fails but we should still rm the
files?)

Tested on GNU/Linux with a
  env RUN_EXPENSIVE_TESTS=yes RUN_VERY_EXPENSIVE_TESTS=yes make check

test both as normal user (that is member of more than one group) and
root, and a build dir path containing two consecutive spaces (two
instead of one helps to find underquoted eval constructs).

If there is interest, I can try to prepare a similar patch for spaces in
the absolute source tree path; as long as $srcdir does not contain them,
that should still work in coreutils, I think.

The patch is gzipped for size.

Cheers,
Ralf

2006-10-22  Ralf Wildenhues  <address@hidden>

        * tests/sample-test: Quote variables containing absolute build
        tree paths.  In the cleanup trap, make sure `cd' succeeds before
        `chmod'ing and `rm'ing the temporary files.
        * tests/chgrp/basic: Likewise.
        * tests/chgrp/deref: Likewise.
        * tests/chgrp/no-x: Likewise.
        * tests/chgrp/posix-H: Likewise.
        * tests/chgrp/recurse: Likewise.
        * tests/chmod/c-option: Likewise.
        * tests/chmod/equal-x: Likewise.
        * tests/chmod/equals: Likewise.
        * tests/chmod/inaccessible: Likewise.
        * tests/chmod/no-x: Likewise.
        * tests/chmod/octal: Likewise.
        * tests/chmod/setgid: Likewise.
        * tests/chmod/umask-x: Likewise.
        * tests/chmod/usage: Likewise.
        * tests/chown/basic: Likewise.
        * tests/chown/deref: Likewise.
        * tests/chown/separator: Likewise.
        * tests/cp/acl: Likewise.
        * tests/cp/backup-1: Likewise.
        * tests/cp/backup-dir: Likewise.
        * tests/cp/backup-is-src: Likewise.
        * tests/cp/cp-HL: Likewise.
        * tests/cp/cp-deref: Likewise.
        * tests/cp/cp-i: Likewise.
        * tests/cp/cp-mv-backup: Likewise.
        * tests/cp/cp-parents: Likewise.
        * tests/cp/deref-slink: Likewise.
        * tests/cp/dir-rm-dest: Likewise.
        * tests/cp/dir-slash: Likewise.
        * tests/cp/dir-vs-file: Likewise.
        * tests/cp/fail-perm: Likewise.
        * tests/cp/into-self: Likewise.
        * tests/cp/link: Likewise.
        * tests/cp/link-no-deref: Likewise.
        * tests/cp/link-preserve: Likewise.
        * tests/cp/no-deref-link1: Likewise.
        * tests/cp/no-deref-link2: Likewise.
        * tests/cp/no-deref-link3: Likewise.
        * tests/cp/perm: Likewise.
        * tests/cp/preserve-2: Likewise.
        * tests/cp/r-vs-symlink: Likewise.
        * tests/cp/same-file: Likewise.
        * tests/cp/slink-2-slink: Likewise.
        * tests/cp/sparse: Likewise.
        * tests/cp/special-bits: Likewise.
        * tests/cp/src-base-dot: Likewise.
        * tests/cp/symlink-slash: Likewise.
        * tests/dd/not-rewound: Likewise.
        * tests/dd/skip-seek2: Likewise.
        * tests/dd/unblock-sync: Likewise.
        * tests/du/2g: Likewise.
        * tests/du/8gb: Likewise.
        * tests/du/basic: Likewise.
        * tests/du/deref: Likewise.
        * tests/du/deref-args: Likewise.
        * tests/du/exclude: Likewise.
        * tests/du/fd-leak: Likewise.
        * tests/du/hard-link: Likewise.
        * tests/du/inaccessible-cwd: Likewise.
        * tests/du/long-from-unreadable: Likewise.
        * tests/du/long-sloop: Likewise.
        * tests/du/no-deref: Likewise.
        * tests/du/no-x: Likewise.
        * tests/du/restore-wd: Likewise.
        * tests/du/slash: Likewise.
        * tests/du/slink: Likewise.
        * tests/du/trailing-slash: Likewise.
        * tests/du/two-args: Likewise.
        * tests/fmt/long-line: Likewise.
        * tests/install/basic-1: Likewise.
        * tests/install/create-leading: Likewise.
        * tests/install/d-slashdot: Likewise.
        * tests/install/trap: Likewise.
        * tests/ln/misc: Likewise.
        * tests/ln/target-1: Likewise.
        * tests/ls/color-dtype-dir: Likewise.
        * tests/ls/dangle: Likewise.
        * tests/ls/dired: Likewise.
        * tests/ls/file-type: Likewise.
        * tests/ls/follow-slink: Likewise.
        * tests/ls/infloop: Likewise.
        * tests/ls/inode: Likewise.
        * tests/ls/m-option: Likewise.
        * tests/ls/no-arg: Likewise.
        * tests/ls/recursive: Likewise.
        * tests/ls/rt-1: Likewise.
        * tests/ls/stat-dtype: Likewise.
        * tests/ls/stat-failed: Likewise.
        * tests/ls/stat-vs-dirent: Likewise.
        * tests/misc/cat-proc: Likewise.
        * tests/misc/close-stdout: Likewise.
        * tests/misc/csplit: Likewise.
        * tests/misc/date-sec: Likewise.
        * tests/misc/false-status: Likewise.
        * tests/misc/head-c: Likewise.
        * tests/misc/head-pos: Likewise.
        * tests/misc/mknod: Likewise.
        * tests/misc/nl: Likewise.
        * tests/misc/nohup: Likewise.
        * tests/misc/pathchk1: Likewise.
        * tests/misc/printf: Likewise.
        * tests/misc/printf-hex: Likewise.
        * tests/misc/pwd-long: Likewise.
        * tests/misc/shuf: Likewise.
        * tests/misc/sort-rand: Likewise.
        * tests/misc/split-a: Likewise.
        * tests/misc/split-fail: Likewise.
        * tests/misc/split-l: Likewise.
        * tests/misc/stat-fmt: Likewise.
        * tests/misc/tac-continue: Likewise.
        * tests/misc/wc-files0: Likewise.
        * tests/mkdir/concurrent-1: Likewise.
        * tests/mkdir/p-1: Likewise.
        * tests/mkdir/p-2: Likewise.
        * tests/mkdir/p-3: Likewise.
        * tests/mkdir/p-slashdot: Likewise.
        * tests/mkdir/p-thru-slink: Likewise.
        * tests/mkdir/p-v: Likewise.
        * tests/mkdir/parents: Likewise.
        * tests/mkdir/perm: Likewise.
        * tests/mkdir/t-slash: Likewise.
        * tests/mv/acl: Likewise.
        * tests/mv/atomic: Likewise.
        * tests/mv/backup-dir: Likewise.
        * tests/mv/childproof: Likewise.
        * tests/mv/diag: Likewise.
        * tests/mv/dir-file: Likewise.
        * tests/mv/dir2dir: Likewise.
        * tests/mv/dup-source: Likewise.
        * tests/mv/hard-2: Likewise.
        * tests/mv/hard-3: Likewise.
        * tests/mv/hard-4: Likewise.
        * tests/mv/hard-link-1: Likewise.
        * tests/mv/hard-verbose: Likewise.
        * tests/mv/i-2: Likewise.
        * tests/mv/i-3: Likewise.
        * tests/mv/i-4: Likewise.
        * tests/mv/i-5: Likewise.
        * tests/mv/i-link-no: Likewise.
        * tests/mv/into-self-4: Likewise.
        * tests/mv/leak-fd: Likewise.
        * tests/mv/mv-special-1: Likewise.
        * tests/mv/no-target-dir: Likewise.
        * tests/mv/part-fail: Likewise.
        * tests/mv/part-hardlink: Likewise.
        * tests/mv/part-rename: Likewise.
        * tests/mv/part-symlink: Likewise.
        * tests/mv/partition-perm: Likewise.
        * tests/mv/perm-1: Likewise.
        * tests/mv/reply-no: Likewise.
        * tests/mv/trailing-slash: Likewise.
        * tests/mv/update: Likewise.
        * tests/od/od-N: Likewise.
        * tests/od/x8: Likewise.
        * tests/readlink/can-e: Likewise.
        * tests/readlink/can-f: Likewise.
        * tests/readlink/can-m: Likewise.
        * tests/readlink/rl-1: Likewise.
        * tests/rm/cycle: Likewise.
        * tests/rm/dangling-symlink: Likewise.
        * tests/rm/deep-1: Likewise.
        * tests/rm/dir-no-w: Likewise.
        * tests/rm/dir-nonrecur: Likewise.
        * tests/rm/dot-rel: Likewise.
        * tests/rm/empty-inacc: Likewise.
        * tests/rm/f-1: Likewise.
        * tests/rm/fail-2eperm: Likewise.
        * tests/rm/hash: Likewise.
        * tests/rm/i-1: Likewise.
        * tests/rm/i-no-r: Likewise.
        * tests/rm/ignorable: Likewise.
        * tests/rm/inaccessible: Likewise.
        * tests/rm/interactive-always: Likewise.
        * tests/rm/interactive-once: Likewise.
        * tests/rm/ir-1: Likewise.
        * tests/rm/isatty: Likewise.
        * tests/rm/no-give-up: Likewise.
        * tests/rm/r-1: Likewise.
        * tests/rm/r-2: Likewise.
        * tests/rm/r-3: Likewise.
        * tests/rm/r-4: Likewise.
        * tests/rm/readdir-bug: Likewise.
        * tests/rm/rm1: Likewise.
        * tests/rm/rm2: Likewise.
        * tests/rm/rm3: Likewise.
        * tests/rm/rm4: Likewise.
        * tests/rm/rm5: Likewise.
        * tests/rm/sunos-1: Likewise.
        * tests/rm/unread2: Likewise.
        * tests/rm/unread3: Likewise.
        * tests/rmdir/fail-perm: Likewise.
        * tests/rmdir/t-slash: Likewise.
        * tests/shred/exact: Likewise.
        * tests/shred/remove: Likewise.
        * tests/sum/sysv: Likewise.
        * tests/tail-2/append-only: Likewise.
        * tests/tail-2/assert: Likewise.
        * tests/tail-2/assert-2: Likewise.
        * tests/tail-2/big-4gb: Likewise.
        * tests/tail-2/fflush: Likewise.
        * tests/tail-2/infloop-1: Likewise.
        * tests/tail-2/proc-ksyms: Likewise.
        * tests/tail-2/start-middle: Likewise.
        * tests/tail-2/tail-n0f: Likewise.
        * tests/tee/basic: Likewise.
        * tests/tee/dash: Likewise.
        * tests/touch/fail-diag: Likewise.
        * tests/touch/no-create-missing: Likewise.
        * tests/touch/not-owner: Likewise.
        * tests/touch/obsolescent: Likewise.
        * tests/touch/read-only: Likewise.
        * tests/touch/relative: Likewise.

Attachment: spaces-in-abs-builddir.diff.gz
Description: Binary data


reply via email to

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