Revision 56d7c27af1f8aa7519f165f6c022732e64db3716 authored by Jeff King on 26 May 2011, 16:30:27 UTC, committed by Junio C Hamano on 26 May 2011, 20:54:18 UTC
The read_in_full function repeatedly calls read() to fill a buffer. If the first read() returns an error, we notify the caller by returning the error. However, if we read some data and then get an error on a subsequent read, we simply return the amount of data that we did read, and the caller is unaware of the error. This makes the tradeoff that seeing the partial data is more important than the fact that an error occurred. In practice, this is generally not the case; we care more if an error occurred, and should throw away any partial data. I audited the current callers. In most cases, this will make no difference at all, as they do: if (read_in_full(fd, buf, size) != size) error("short read"); However, it will help in a few cases: 1. In sha1_file.c:index_stream, we would fail to notice errors in the incoming stream. 2. When reading symbolic refs in resolve_ref, we would fail to notice errors and potentially use a truncated ref name. 3. In various places, we will get much better error messages. For example, callers of safe_read would erroneously print "the remote end hung up unexpectedly" instead of showing the read error. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 09ffc70
File | Mode | Size |
---|---|---|
Documentation | ||
block-sha1 | ||
builtin | ||
compat | ||
contrib | ||
git-gui | ||
git_remote_helpers | ||
gitk-git | ||
gitweb | ||
perl | ||
po | ||
ppc | ||
t | ||
templates | ||
vcs-svn | ||
xdiff | ||
.gitattributes | -rw-r--r-- | 105 bytes |
.gitignore | -rw-r--r-- | 3.0 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-- | 7.5 KB |
LGPL-2.1 | -rw-r--r-- | 26.2 KB |
Makefile | -rw-r--r-- | 68.3 KB |
README | -rw-r--r-- | 2.4 KB |
RelNotes | l--------- | 34 bytes |
abspath.c | -rw-r--r-- | 3.4 KB |
aclocal.m4 | -rw-r--r-- | 1.4 KB |
advice.c | -rw-r--r-- | 1.4 KB |
advice.h | -rw-r--r-- | 432 bytes |
alias.c | -rw-r--r-- | 1.7 KB |
alloc.c | -rw-r--r-- | 1.6 KB |
archive-tar.c | -rw-r--r-- | 6.3 KB |
archive-zip.c | -rw-r--r-- | 7.3 KB |
archive.c | -rw-r--r-- | 10.3 KB |
archive.h | -rw-r--r-- | 927 bytes |
attr.c | -rw-r--r-- | 17.2 KB |
attr.h | -rw-r--r-- | 972 bytes |
base85.c | -rw-r--r-- | 2.8 KB |
bisect.c | -rw-r--r-- | 23.9 KB |
bisect.h | -rw-r--r-- | 820 bytes |
blob.c | -rw-r--r-- | 565 bytes |
blob.h | -rw-r--r-- | 664 bytes |
branch.c | -rw-r--r-- | 5.6 KB |
branch.h | -rw-r--r-- | 1.1 KB |
builtin.h | -rw-r--r-- | 8.8 KB |
bundle.c | -rw-r--r-- | 10.3 KB |
bundle.h | -rw-r--r-- | 627 bytes |
cache-tree.c | -rw-r--r-- | 15.7 KB |
cache-tree.h | -rw-r--r-- | 1.4 KB |
cache.h | -rw-r--r-- | 40.5 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-- | 4.3 KB |
color.h | -rw-r--r-- | 2.4 KB |
combine-diff.c | -rw-r--r-- | 27.9 KB |
command-list.txt | -rw-r--r-- | 7.7 KB |
commit.c | -rw-r--r-- | 19.9 KB |
commit.h | -rw-r--r-- | 5.5 KB |
config.c | -rw-r--r-- | 34.3 KB |
config.mak.in | -rw-r--r-- | 1.7 KB |
configure.ac | -rw-r--r-- | 27.6 KB |
connect.c | -rw-r--r-- | 14.1 KB |
convert.c | -rw-r--r-- | 19.0 KB |
copy.c | -rw-r--r-- | 1.6 KB |
csum-file.c | -rw-r--r-- | 2.5 KB |
csum-file.h | -rw-r--r-- | 761 bytes |
ctype.c | -rw-r--r-- | 873 bytes |
daemon.c | -rw-r--r-- | 27.5 KB |
date.c | -rw-r--r-- | 22.7 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-- | 14.5 KB |
diff-no-index.c | -rw-r--r-- | 6.1 KB |
diff.c | -rw-r--r-- | 117.9 KB |
diff.h | -rw-r--r-- | 10.3 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.8 KB |
diffcore-rename.c | -rw-r--r-- | 17.3 KB |
diffcore.h | -rw-r--r-- | 4.3 KB |
dir.c | -rw-r--r-- | 30.4 KB |
dir.h | -rw-r--r-- | 3.3 KB |
editor.c | -rw-r--r-- | 1.1 KB |
entry.c | -rw-r--r-- | 5.9 KB |
environment.c | -rw-r--r-- | 6.2 KB |
exec_cmd.c | -rw-r--r-- | 3.2 KB |
exec_cmd.h | -rw-r--r-- | 487 bytes |
fast-import.c | -rw-r--r-- | 83.5 KB |
fetch-pack.h | -rw-r--r-- | 479 bytes |
fixup-builtins | -rwxr-xr-x | 432 bytes |
fsck.c | -rw-r--r-- | 9.4 KB |
fsck.h | -rw-r--r-- | 1.0 KB |
generate-cmdlist.sh | -rwxr-xr-x | 443 bytes |
gettext.c | -rw-r--r-- | 290 bytes |
gettext.h | -rw-r--r-- | 975 bytes |
git-add--interactive.perl | -rwxr-xr-x | 35.1 KB |
git-am.sh | -rwxr-xr-x | 19.5 KB |
git-archimport.perl | -rwxr-xr-x | 36.0 KB |
git-bisect.sh | -rwxr-xr-x | 10.1 KB |
git-compat-util.h | -rw-r--r-- | 13.9 KB |
git-cvsexportcommit.perl | -rwxr-xr-x | 12.4 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 | 12.0 KB |
git-instaweb.sh | -rwxr-xr-x | 17.4 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-- | 9.3 KB |
git-mergetool.sh | -rwxr-xr-x | 8.7 KB |
git-parse-remote.sh | -rw-r--r-- | 1.3 KB |
git-pull.sh | -rwxr-xr-x | 8.3 KB |
git-quiltimport.sh | -rwxr-xr-x | 3.3 KB |
git-rebase--interactive.sh | -rwxr-xr-x | 26.0 KB |
git-rebase.sh | -rwxr-xr-x | 14.6 KB |
git-relink.perl | -rwxr-xr-x | 4.0 KB |
git-remote-testgit.py | -rw-r--r-- | 5.1 KB |
git-repack.sh | -rwxr-xr-x | 4.5 KB |
git-request-pull.sh | -rwxr-xr-x | 1.6 KB |
git-send-email.perl | -rwxr-xr-x | 38.8 KB |
git-sh-setup.sh | -rw-r--r-- | 4.6 KB |
git-stash.sh | -rwxr-xr-x | 9.9 KB |
git-submodule.sh | -rwxr-xr-x | 18.5 KB |
git-svn.perl | -rwxr-xr-x | 173.9 KB |
git-web--browse.sh | -rwxr-xr-x | 4.1 KB |
git.c | -rw-r--r-- | 16.0 KB |
git.spec.in | -rw-r--r-- | 10.7 KB |
graph.c | -rw-r--r-- | 34.8 KB |
graph.h | -rw-r--r-- | 3.6 KB |
grep.c | -rw-r--r-- | 23.8 KB |
grep.h | -rw-r--r-- | 2.7 KB |
hash.c | -rw-r--r-- | 2.5 KB |
hash.h | -rw-r--r-- | 1.1 KB |
help.c | -rw-r--r-- | 9.4 KB |
help.h | -rw-r--r-- | 906 bytes |
hex.c | -rw-r--r-- | 2.1 KB |
http-backend.c | -rw-r--r-- | 13.2 KB |
http-fetch.c | -rw-r--r-- | 2.1 KB |
http-push.c | -rw-r--r-- | 54.3 KB |
http-walker.c | -rw-r--r-- | 13.9 KB |
http.c | -rw-r--r-- | 33.0 KB |
http.h | -rw-r--r-- | 5.1 KB |
ident.c | -rw-r--r-- | 6.1 KB |
imap-send.c | -rw-r--r-- | 35.2 KB |
levenshtein.c | -rw-r--r-- | 2.5 KB |
levenshtein.h | -rw-r--r-- | 203 bytes |
list-objects.c | -rw-r--r-- | 5.3 KB |
list-objects.h | -rw-r--r-- | 422 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-- | 16.7 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-recursive.c | -rw-r--r-- | 49.1 KB |
merge-recursive.h | -rw-r--r-- | 1.7 KB |
name-hash.c | -rw-r--r-- | 4.6 KB |
notes-cache.c | -rw-r--r-- | 2.1 KB |
notes-cache.h | -rw-r--r-- | 500 bytes |
notes-merge.c | -rw-r--r-- | 22.6 KB |
notes-merge.h | -rw-r--r-- | 3.4 KB |
notes.c | -rw-r--r-- | 35.5 KB |
notes.h | -rw-r--r-- | 11.7 KB |
object.c | -rw-r--r-- | 5.8 KB |
object.h | -rw-r--r-- | 2.5 KB |
pack-check.c | -rw-r--r-- | 4.6 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-- | 8.0 KB |
pack.h | -rw-r--r-- | 2.3 KB |
pager.c | -rw-r--r-- | 2.2 KB |
parse-options.c | -rw-r--r-- | 17.1 KB |
parse-options.h | -rw-r--r-- | 7.7 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-- | 14.8 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-- | 31.9 KB |
progress.c | -rw-r--r-- | 6.5 KB |
progress.h | -rw-r--r-- | 504 bytes |
quote.c | -rw-r--r-- | 10.9 KB |
quote.h | -rw-r--r-- | 2.7 KB |
reachable.c | -rw-r--r-- | 5.5 KB |
reachable.h | -rw-r--r-- | 127 bytes |
read-cache.c | -rw-r--r-- | 45.2 KB |
reflog-walk.c | -rw-r--r-- | 7.6 KB |
reflog-walk.h | -rw-r--r-- | 664 bytes |
refs.c | -rw-r--r-- | 46.4 KB |
refs.h | -rw-r--r-- | 4.7 KB |
remote-curl.c | -rw-r--r-- | 20.6 KB |
remote.c | -rw-r--r-- | 41.2 KB |
remote.h | -rw-r--r-- | 4.2 KB |
replace_object.c | -rw-r--r-- | 2.6 KB |
rerere.c | -rw-r--r-- | 15.8 KB |
rerere.h | -rw-r--r-- | 736 bytes |
resolve-undo.c | -rw-r--r-- | 3.9 KB |
resolve-undo.h | -rw-r--r-- | 546 bytes |
revision.c | -rw-r--r-- | 60.1 KB |
revision.h | -rw-r--r-- | 4.9 KB |
run-command.c | -rw-r--r-- | 13.3 KB |
run-command.h | -rw-r--r-- | 2.8 KB |
send-pack.h | -rw-r--r-- | 403 bytes |
server-info.c | -rw-r--r-- | 5.1 KB |
setup.c | -rw-r--r-- | 17.7 KB |
sha1-lookup.c | -rw-r--r-- | 7.8 KB |
sha1-lookup.h | -rw-r--r-- | 403 bytes |
sha1_file.c | -rw-r--r-- | 67.5 KB |
sha1_name.c | -rw-r--r-- | 28.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-- | 7.9 KB |
strbuf.h | -rw-r--r-- | 3.6 KB |
string-list.c | -rw-r--r-- | 4.5 KB |
string-list.h | -rw-r--r-- | 2.1 KB |
submodule.c | -rw-r--r-- | 20.3 KB |
submodule.h | -rw-r--r-- | 1.3 KB |
symlinks.c | -rw-r--r-- | 8.4 KB |
tag.c | -rw-r--r-- | 3.5 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-ctype.c | -rw-r--r-- | 1.4 KB |
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.0 KB |
test-path-utils.c | -rw-r--r-- | 854 bytes |
test-run-command.c | -rw-r--r-- | 774 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-- | 28.4 KB |
transport.c | -rw-r--r-- | 30.3 KB |
transport.h | -rw-r--r-- | 5.7 KB |
tree-diff.c | -rw-r--r-- | 8.6 KB |
tree-walk.c | -rw-r--r-- | 14.6 KB |
tree-walk.h | -rw-r--r-- | 1.9 KB |
tree.c | -rw-r--r-- | 7.0 KB |
tree.h | -rw-r--r-- | 883 bytes |
unimplemented.sh | -rw-r--r-- | 100 bytes |
unpack-trees.c | -rw-r--r-- | 46.0 KB |
unpack-trees.h | -rw-r--r-- | 2.1 KB |
upload-pack.c | -rw-r--r-- | 17.9 KB |
url.c | -rw-r--r-- | 3.0 KB |
url.h | -rw-r--r-- | 437 bytes |
usage.c | -rw-r--r-- | 2.4 KB |
userdiff.c | -rw-r--r-- | 8.3 KB |
userdiff.h | -rw-r--r-- | 566 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-- | 610 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.8 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-- | 1.2 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...