This is the mail archive of the automake@gnu.org mailing list for the automake project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: install-sh: work with names containing spaces


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  <jim@meyering.net>

	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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]