Revision 78ed1d2d63390694cb6c451896086fb7338f75b6 authored by Michael J Gruber on 03 March 2012, 00:37:35 UTC, committed by Junio C Hamano on 03 March 2012, 07:06:08 UTC
The construct 'while IFS== read' makes dash 0.5.6 execute read without changing IFS, which results in test breakages all over the place in t0300. Neither dash 0.5.5.1 and older nor dash 0.5.7 and newer are affected: The problem was introduded resp. fixed by the commits 55c46b7 ([BUILTIN] Honor tab as IFS whitespace when splitting fields in readcmd, 2009-08-11) 1d806ac ([VAR] Do not poplocalvars prematurely on regular utilities, 2010-05-27) in http://git.kernel.org/?p=utils/dash/dash.git Putting 'IFS==' before that line makes all versions of dash work. This looks like a dash bug, not a misinterpretation of the standard. However, it's worth working around for two reasons. One, this version of dash was released in Fedora 14-16, so the bug is found in the wild. And two, at least one other shell, Solaris /bin/sh, choked on this by persisting IFS after the read invocation. That is not a shell we usually care about, and I think this use of IFS is acceptable by POSIX (which allows other behavior near "special builtins", but "read" is not one of those). But it seems that this may be a subtle, not-well-tested case for some shells. Given that the workaround is so simple, it's worth just being defensive. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent fe6c64a
File | Mode | Size |
---|---|---|
Documentation | ||
block-sha1 | ||
builtin | ||
compat | ||
contrib | ||
git-gui | ||
git_remote_helpers | ||
gitk-git | ||
gitweb | ||
mergetools | ||
perl | ||
po | ||
ppc | ||
t | ||
templates | ||
vcs-svn | ||
xdiff | ||
.gitattributes | -rw-r--r-- | 105 bytes |
.gitignore | -rw-r--r-- | 3.3 KB |
.mailmap | -rw-r--r-- | 2.7 KB |
COPYING | -rw-r--r-- | 18.3 KB |
GIT-VERSION-GEN | -rwxr-xr-x | 754 bytes |
INSTALL | -rw-r--r-- | 8.5 KB |
LGPL-2.1 | -rw-r--r-- | 26.2 KB |
Makefile | -rw-r--r-- | 76.9 KB |
README | -rw-r--r-- | 2.5 KB |
RelNotes | l--------- | 34 bytes |
abspath.c | -rw-r--r-- | 4.2 KB |
aclocal.m4 | -rw-r--r-- | 1.4 KB |
advice.c | -rw-r--r-- | 1.6 KB |
advice.h | -rw-r--r-- | 513 bytes |
alias.c | -rw-r--r-- | 1.7 KB |
alloc.c | -rw-r--r-- | 1.6 KB |
archive-tar.c | -rw-r--r-- | 9.1 KB |
archive-zip.c | -rw-r--r-- | 7.5 KB |
archive.c | -rw-r--r-- | 12.0 KB |
archive.h | -rw-r--r-- | 1.1 KB |
argv-array.c | -rw-r--r-- | 1.1 KB |
argv-array.h | -rw-r--r-- | 463 bytes |
attr.c | -rw-r--r-- | 18.8 KB |
attr.h | -rw-r--r-- | 1.6 KB |
base85.c | -rw-r--r-- | 2.8 KB |
bisect.c | -rw-r--r-- | 22.9 KB |
bisect.h | -rw-r--r-- | 837 bytes |
blob.c | -rw-r--r-- | 565 bytes |
blob.h | -rw-r--r-- | 664 bytes |
branch.c | -rw-r--r-- | 6.7 KB |
branch.h | -rw-r--r-- | 1.9 KB |
builtin.h | -rw-r--r-- | 9.0 KB |
bulk-checkin.c | -rw-r--r-- | 7.0 KB |
bulk-checkin.h | -rw-r--r-- | 343 bytes |
bundle.c | -rw-r--r-- | 11.1 KB |
bundle.h | -rw-r--r-- | 707 bytes |
cache-tree.c | -rw-r--r-- | 15.9 KB |
cache-tree.h | -rw-r--r-- | 1.4 KB |
cache.h | -rw-r--r-- | 44.1 KB |
check-builtins.sh | -rwxr-xr-x | 588 bytes |
check-racy.c | -rw-r--r-- | 538 bytes |
check_bindir | -rwxr-xr-x | 369 bytes |
color.c | -rw-r--r-- | 5.2 KB |
color.h | -rw-r--r-- | 3.1 KB |
combine-diff.c | -rw-r--r-- | 31.5 KB |
command-list.txt | -rw-r--r-- | 7.8 KB |
commit.c | -rw-r--r-- | 27.3 KB |
commit.h | -rw-r--r-- | 7.3 KB |
config.c | -rw-r--r-- | 35.4 KB |
config.mak.in | -rw-r--r-- | 1.9 KB |
configure.ac | -rw-r--r-- | 29.5 KB |
connect.c | -rw-r--r-- | 13.7 KB |
connected.c | -rw-r--r-- | 1.5 KB |
connected.h | -rw-r--r-- | 651 bytes |
convert.c | -rw-r--r-- | 28.8 KB |
convert.h | -rw-r--r-- | 2.0 KB |
copy.c | -rw-r--r-- | 1.6 KB |
credential-cache--daemon.c | -rw-r--r-- | 5.9 KB |
credential-cache.c | -rw-r--r-- | 2.9 KB |
credential-store.c | -rw-r--r-- | 3.9 KB |
credential.c | -rw-r--r-- | 7.5 KB |
credential.h | -rw-r--r-- | 764 bytes |
csum-file.c | -rw-r--r-- | 4.0 KB |
csum-file.h | -rw-r--r-- | 1.1 KB |
ctype.c | -rw-r--r-- | 951 bytes |
daemon.c | -rw-r--r-- | 29.1 KB |
date.c | -rw-r--r-- | 23.9 KB |
decorate.c | -rw-r--r-- | 1.8 KB |
decorate.h | -rw-r--r-- | 400 bytes |
delta.h | -rw-r--r-- | 3.4 KB |
diff-delta.c | -rw-r--r-- | 15.5 KB |
diff-lib.c | -rw-r--r-- | 13.8 KB |
diff-no-index.c | -rw-r--r-- | 6.1 KB |
diff.c | -rw-r--r-- | 126.1 KB |
diff.h | -rw-r--r-- | 10.7 KB |
diffcore-break.c | -rw-r--r-- | 8.7 KB |
diffcore-delta.c | -rw-r--r-- | 5.4 KB |
diffcore-order.c | -rw-r--r-- | 2.2 KB |
diffcore-pickaxe.c | -rw-r--r-- | 6.0 KB |
diffcore-rename.c | -rw-r--r-- | 18.3 KB |
diffcore.h | -rw-r--r-- | 4.4 KB |
dir.c | -rw-r--r-- | 29.9 KB |
dir.h | -rw-r--r-- | 3.4 KB |
editor.c | -rw-r--r-- | 1.1 KB |
entry.c | -rw-r--r-- | 7.7 KB |
environment.c | -rw-r--r-- | 7.4 KB |
exec_cmd.c | -rw-r--r-- | 3.2 KB |
exec_cmd.h | -rw-r--r-- | 487 bytes |
fast-import.c | -rw-r--r-- | 86.2 KB |
fetch-pack.h | -rw-r--r-- | 479 bytes |
fixup-builtins | -rwxr-xr-x | 432 bytes |
fmt-merge-msg.h | -rw-r--r-- | 187 bytes |
fsck.c | -rw-r--r-- | 9.5 KB |
fsck.h | -rw-r--r-- | 1.0 KB |
generate-cmdlist.sh | -rwxr-xr-x | 429 bytes |
gettext.c | -rw-r--r-- | 3.8 KB |
gettext.h | -rw-r--r-- | 1.3 KB |
git-add--interactive.perl | -rwxr-xr-x | 35.4 KB |
git-am.sh | -rwxr-xr-x | 21.0 KB |
git-archimport.perl | -rwxr-xr-x | 36.0 KB |
git-bisect.sh | -rwxr-xr-x | 11.2 KB |
git-compat-util.h | -rw-r--r-- | 14.6 KB |
git-cvsexportcommit.perl | -rwxr-xr-x | 12.6 KB |
git-cvsimport.perl | -rwxr-xr-x | 29.5 KB |
git-cvsserver.perl | -rwxr-xr-x | 118.0 KB |
git-difftool--helper.sh | -rwxr-xr-x | 1.7 KB |
git-difftool.perl | -rwxr-xr-x | 2.6 KB |
git-filter-branch.sh | -rwxr-xr-x | 11.8 KB |
git-instaweb.sh | -rwxr-xr-x | 17.8 KB |
git-lost-found.sh | -rwxr-xr-x | 554 bytes |
git-merge-octopus.sh | -rwxr-xr-x | 2.2 KB |
git-merge-one-file.sh | -rwxr-xr-x | 3.8 KB |
git-merge-resolve.sh | -rwxr-xr-x | 944 bytes |
git-mergetool--lib.sh | -rw-r--r-- | 4.1 KB |
git-mergetool.sh | -rwxr-xr-x | 8.4 KB |
git-parse-remote.sh | -rw-r--r-- | 2.5 KB |
git-pull.sh | -rwxr-xr-x | 7.4 KB |
git-quiltimport.sh | -rwxr-xr-x | 3.3 KB |
git-rebase--am.sh | -rw-r--r-- | 615 bytes |
git-rebase--interactive.sh | -rw-r--r-- | 22.2 KB |
git-rebase--merge.sh | -rw-r--r-- | 3.0 KB |
git-rebase.sh | -rwxr-xr-x | 13.0 KB |
git-relink.perl | -rwxr-xr-x | 4.0 KB |
git-remote-testgit.py | -rw-r--r-- | 5.9 KB |
git-repack.sh | -rwxr-xr-x | 4.5 KB |
git-request-pull.sh | -rwxr-xr-x | 3.0 KB |
git-send-email.perl | -rwxr-xr-x | 39.4 KB |
git-sh-i18n.sh | -rw-r--r-- | 2.2 KB |
git-sh-setup.sh | -rw-r--r-- | 4.8 KB |
git-stash.sh | -rwxr-xr-x | 12.6 KB |
git-submodule.sh | -rwxr-xr-x | 21.2 KB |
git-svn.perl | -rwxr-xr-x | 188.2 KB |
git-web--browse.sh | -rwxr-xr-x | 4.1 KB |
git.c | -rw-r--r-- | 16.8 KB |
git.spec.in | -rw-r--r-- | 11.0 KB |
gpg-interface.c | -rw-r--r-- | 3.3 KB |
gpg-interface.h | -rw-r--r-- | 451 bytes |
graph.c | -rw-r--r-- | 34.4 KB |
graph.h | -rw-r--r-- | 3.6 KB |
grep.c | -rw-r--r-- | 30.2 KB |
grep.h | -rw-r--r-- | 4.1 KB |
hash.c | -rw-r--r-- | 2.5 KB |
hash.h | -rw-r--r-- | 1.1 KB |
help.c | -rw-r--r-- | 9.5 KB |
help.h | -rw-r--r-- | 906 bytes |
hex.c | -rw-r--r-- | 2.3 KB |
http-backend.c | -rw-r--r-- | 13.2 KB |
http-fetch.c | -rw-r--r-- | 2.3 KB |
http-push.c | -rw-r--r-- | 50.8 KB |
http-walker.c | -rw-r--r-- | 13.9 KB |
http.c | -rw-r--r-- | 31.9 KB |
http.h | -rw-r--r-- | 5.1 KB |
ident.c | -rw-r--r-- | 7.0 KB |
imap-send.c | -rw-r--r-- | 34.8 KB |
kwset.c | -rw-r--r-- | 20.5 KB |
kwset.h | -rw-r--r-- | 2.6 KB |
levenshtein.c | -rw-r--r-- | 2.5 KB |
levenshtein.h | -rw-r--r-- | 203 bytes |
list-objects.c | -rw-r--r-- | 5.5 KB |
list-objects.h | -rw-r--r-- | 429 bytes |
ll-merge.c | -rw-r--r-- | 10.0 KB |
ll-merge.h | -rw-r--r-- | 567 bytes |
lockfile.c | -rw-r--r-- | 6.2 KB |
log-tree.c | -rw-r--r-- | 21.4 KB |
log-tree.h | -rw-r--r-- | 867 bytes |
mailmap.c | -rw-r--r-- | 6.5 KB |
mailmap.h | -rw-r--r-- | 263 bytes |
match-trees.c | -rw-r--r-- | 8.7 KB |
merge-file.c | -rw-r--r-- | 2.6 KB |
merge-file.h | -rw-r--r-- | 175 bytes |
merge-recursive.c | -rw-r--r-- | 57.5 KB |
merge-recursive.h | -rw-r--r-- | 1.7 KB |
name-hash.c | -rw-r--r-- | 4.7 KB |
notes-cache.c | -rw-r--r-- | 2.2 KB |
notes-cache.h | -rw-r--r-- | 500 bytes |
notes-merge.c | -rw-r--r-- | 23.1 KB |
notes-merge.h | -rw-r--r-- | 3.5 KB |
notes.c | -rw-r--r-- | 35.8 KB |
notes.h | -rw-r--r-- | 11.9 KB |
object.c | -rw-r--r-- | 5.8 KB |
object.h | -rw-r--r-- | 2.5 KB |
pack-check.c | -rw-r--r-- | 5.0 KB |
pack-refs.c | -rw-r--r-- | 3.4 KB |
pack-refs.h | -rw-r--r-- | 465 bytes |
pack-revindex.c | -rw-r--r-- | 4.0 KB |
pack-revindex.h | -rw-r--r-- | 223 bytes |
pack-write.c | -rw-r--r-- | 10.4 KB |
pack.h | -rw-r--r-- | 3.2 KB |
pager.c | -rw-r--r-- | 2.9 KB |
parse-options-cb.c | -rw-r--r-- | 2.5 KB |
parse-options.c | -rw-r--r-- | 15.0 KB |
parse-options.h | -rw-r--r-- | 8.4 KB |
patch-delta.c | -rw-r--r-- | 2.2 KB |
patch-ids.c | -rw-r--r-- | 2.5 KB |
patch-ids.h | -rw-r--r-- | 490 bytes |
path.c | -rw-r--r-- | 15.0 KB |
pkt-line.c | -rw-r--r-- | 4.5 KB |
pkt-line.h | -rw-r--r-- | 589 bytes |
preload-index.c | -rw-r--r-- | 2.4 KB |
pretty.c | -rw-r--r-- | 34.8 KB |
progress.c | -rw-r--r-- | 6.5 KB |
progress.h | -rw-r--r-- | 504 bytes |
prompt.c | -rw-r--r-- | 1.4 KB |
prompt.h | -rw-r--r-- | 207 bytes |
quote.c | -rw-r--r-- | 11.3 KB |
quote.h | -rw-r--r-- | 2.9 KB |
reachable.c | -rw-r--r-- | 6.2 KB |
reachable.h | -rw-r--r-- | 163 bytes |
read-cache.c | -rw-r--r-- | 45.2 KB |
reflog-walk.c | -rw-r--r-- | 8.0 KB |
reflog-walk.h | -rw-r--r-- | 739 bytes |
refs.c | -rw-r--r-- | 52.0 KB |
refs.h | -rw-r--r-- | 5.9 KB |
remote-curl.c | -rw-r--r-- | 21.1 KB |
remote.c | -rw-r--r-- | 41.2 KB |
remote.h | -rw-r--r-- | 4.2 KB |
replace_object.c | -rw-r--r-- | 2.7 KB |
rerere.c | -rw-r--r-- | 17.9 KB |
rerere.h | -rw-r--r-- | 829 bytes |
resolve-undo.c | -rw-r--r-- | 3.9 KB |
resolve-undo.h | -rw-r--r-- | 546 bytes |
revision.c | -rw-r--r-- | 64.1 KB |
revision.h | -rw-r--r-- | 5.6 KB |
run-command.c | -rw-r--r-- | 14.7 KB |
run-command.h | -rw-r--r-- | 2.9 KB |
send-pack.h | -rw-r--r-- | 403 bytes |
sequencer.c | -rw-r--r-- | 271 bytes |
sequencer.h | -rw-r--r-- | 261 bytes |
server-info.c | -rw-r--r-- | 5.1 KB |
setup.c | -rw-r--r-- | 20.1 KB |
sh-i18n--envsubst.c | -rw-r--r-- | 10.7 KB |
sha1-array.c | -rw-r--r-- | 1.2 KB |
sha1-array.h | -rw-r--r-- | 631 bytes |
sha1-lookup.c | -rw-r--r-- | 7.8 KB |
sha1-lookup.h | -rw-r--r-- | 403 bytes |
sha1_file.c | -rw-r--r-- | 70.1 KB |
sha1_name.c | -rw-r--r-- | 26.5 KB |
shallow.c | -rw-r--r-- | 2.3 KB |
shell.c | -rw-r--r-- | 5.1 KB |
shortlog.h | -rw-r--r-- | 463 bytes |
show-index.c | -rw-r--r-- | 2.2 KB |
sideband.c | -rw-r--r-- | 3.4 KB |
sideband.h | -rw-r--r-- | 326 bytes |
sigchain.c | -rw-r--r-- | 969 bytes |
sigchain.h | -rw-r--r-- | 215 bytes |
strbuf.c | -rw-r--r-- | 9.1 KB |
strbuf.h | -rw-r--r-- | 4.5 KB |
streaming.c | -rw-r--r-- | 10.4 KB |
streaming.h | -rw-r--r-- | 404 bytes |
string-list.c | -rw-r--r-- | 4.7 KB |
string-list.h | -rw-r--r-- | 2.1 KB |
submodule.c | -rw-r--r-- | 25.0 KB |
submodule.h | -rw-r--r-- | 1.4 KB |
symlinks.c | -rw-r--r-- | 8.4 KB |
tag.c | -rw-r--r-- | 3.7 KB |
tag.h | -rw-r--r-- | 517 bytes |
tar.h | -rw-r--r-- | 644 bytes |
test-chmtime.c | -rw-r--r-- | 2.6 KB |
test-credential.c | -rw-r--r-- | 791 bytes |
test-ctype.c | -rw-r--r-- | 918 bytes |
test-date.c | -rw-r--r-- | 1.4 KB |
test-delta.c | -rw-r--r-- | 1.8 KB |
test-dump-cache-tree.c | -rw-r--r-- | 1.5 KB |
test-genrandom.c | -rw-r--r-- | 722 bytes |
test-index-version.c | -rw-r--r-- | 264 bytes |
test-line-buffer.c | -rw-r--r-- | 2.1 KB |
test-match-trees.c | -rw-r--r-- | 588 bytes |
test-mktemp.c | -rw-r--r-- | 269 bytes |
test-obj-pool.c | -rw-r--r-- | 2.5 KB |
test-parse-options.c | -rw-r--r-- | 3.2 KB |
test-path-utils.c | -rw-r--r-- | 1.3 KB |
test-run-command.c | -rw-r--r-- | 840 bytes |
test-scrap-cache-tree.c | -rw-r--r-- | 395 bytes |
test-sha1.c | -rw-r--r-- | 816 bytes |
test-sha1.sh | -rwxr-xr-x | 1.9 KB |
test-sigchain.c | -rw-r--r-- | 344 bytes |
test-string-pool.c | -rw-r--r-- | 654 bytes |
test-subprocess.c | -rw-r--r-- | 387 bytes |
test-svn-fe.c | -rw-r--r-- | 312 bytes |
test-treap.c | -rw-r--r-- | 1.7 KB |
thread-utils.c | -rw-r--r-- | 1.3 KB |
thread-utils.h | -rw-r--r-- | 209 bytes |
trace.c | -rw-r--r-- | 4.7 KB |
transport-helper.c | -rw-r--r-- | 29.0 KB |
transport.c | -rw-r--r-- | 31.0 KB |
transport.h | -rw-r--r-- | 5.7 KB |
tree-diff.c | -rw-r--r-- | 8.6 KB |
tree-walk.c | -rw-r--r-- | 15.5 KB |
tree-walk.h | -rw-r--r-- | 2.2 KB |
tree.c | -rw-r--r-- | 6.1 KB |
tree.h | -rw-r--r-- | 897 bytes |
unimplemented.sh | -rw-r--r-- | 100 bytes |
unix-socket.c | -rw-r--r-- | 2.4 KB |
unix-socket.h | -rw-r--r-- | 158 bytes |
unpack-trees.c | -rw-r--r-- | 47.0 KB |
unpack-trees.h | -rw-r--r-- | 2.2 KB |
upload-pack.c | -rw-r--r-- | 19.8 KB |
url.c | -rw-r--r-- | 2.8 KB |
url.h | -rw-r--r-- | 492 bytes |
usage.c | -rw-r--r-- | 2.9 KB |
userdiff.c | -rw-r--r-- | 9.4 KB |
userdiff.h | -rw-r--r-- | 646 bytes |
utf8.c | -rw-r--r-- | 13.0 KB |
utf8.h | -rw-r--r-- | 658 bytes |
walker.c | -rw-r--r-- | 7.2 KB |
walker.h | -rw-r--r-- | 1.1 KB |
wrap-for-bin.sh | -rw-r--r-- | 678 bytes |
wrapper.c | -rw-r--r-- | 8.1 KB |
write_or_die.c | -rw-r--r-- | 2.0 KB |
ws.c | -rw-r--r-- | 9.6 KB |
wt-status.c | -rw-r--r-- | 25.7 KB |
wt-status.h | -rw-r--r-- | 2.1 KB |
xdiff-interface.c | -rw-r--r-- | 8.2 KB |
xdiff-interface.h | -rw-r--r-- | 1.1 KB |
zlib.c | -rw-r--r-- | 5.8 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...