sh-setup: work around "unset IFS" bug in some shells
authorJunio C Hamano <gitster@pobox.com>
Fri, 7 Dec 2012 22:31:52 +0000 (14:31 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Dec 2012 21:27:16 +0000 (13:27 -0800)
With an unset IFS, field splitting is supposed to act as if IFS is
set to the usual SP HT LF, but Marc Branchaud reports that the shell
on FreeBSD 7.2 gets this wrong.

It is easy to set it to the default value manually, and it is also
safer in case somebody tries to save the old value away and restore,
e.g.

$oIFS=$IFS
IFS=something
...
IFS=$oIFS

while forgetting that the original IFS might be unset (which can be
coded but would be more involved).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-sh-setup.sh

index ee0e0bc045bb7d92045a3afb0a042748834e6163..107c144fed596dc8fe36b28a22939acef1cf5fd0 100644 (file)
 # But we protect ourselves from such a user mistake nevertheless.
 unset CDPATH
 
-# Similarly for IFS
-unset IFS
+# Similarly for IFS, but some shells (e.g. FreeBSD 7.2) are buggy and
+# do not equate an unset IFS with IFS with the default, so here is
+# an explicit SP HT LF.
+IFS='  
+'
 
 git_broken_path_fix () {
        case ":$PATH:" in