Due to insufficient quoting, install-sh fails for names (source or dest)
that contain spaces or some shell meta-characters.  E.g.,

  $ mkdir /tmp/x\ y
  $ touch a\ b
  $ bash install-sh 'a b' /tmp/x\ y
  install-sh: line 150: [: /tmp/x: binary operator expected
  mv: when moving multiple files, last argument must be a directory
  Try `mv --help' for more information.
  [Exit 1]

Plus, there was a bit of unnecessary quoting and some other
minor problems.  I've fixed them, so now this works as it should:

  $ mkdir /tmp/x\ y
  $ touch a\ b
  $ bash install-sh a\ b /tmp/x\ y
  $ ls /tmp/x\ y
  a\ b*

I've just checked in this change:

2002-11-09  Jim Meyering  <[EMAIL PROTECTED]>

        Make install-sh work even when names contain spaces or
        certain (but not all) shell metachars.

        * lib/install-sh: Remove lots of unnecessary quoting.
        Add double quotes where necessary.
        Write diagnostics to stderr, not stdout.
        Normalize spacing in diagnostics: use one space (not two,
        and not a TAB) after the leading `install:'.
        Remove trailing white space.
        Remove unnecessary curly braces.
        If removing the destination fails, also try to move it aside.
        Use `trap' more portably.
        * tests/installsh2.test: New file, to test for the above fix.
        * tests/Makefile.am (TESTS): Add installsh2.test.


Reply via email to