swh:1:snp:87728f882295b5ba27035837248a04c5be121c53
Revision 22f0dcd9634a818a0c83f23ea1a48f2d620c0546 authored by René Scharfe on 05 January 2013, 22:49:54 UTC, committed by Junio C Hamano on 06 January 2013, 06:56:36 UTC
The name field of a tar header has a size of 100 characters.  This limit
was extended long ago in a backward compatible way by providing the
additional prefix field, which can hold 155 additional characters.  The
actual path is constructed at extraction time by concatenating the prefix
field, a slash and the name field.

get_path_prefix() is used to determine which slash in the path is used as
the cutting point and thus which part of it is placed into the field
prefix and which into the field name.  It tries to cram as much into the
prefix field as possible.  (And only if we can't fit a path into the
provided 255 characters we use a pax extended header to store it.)

If a path is longer than 100 but shorter than 156 characters and ends
with a slash (i.e. is for a directory) then get_path_prefix() puts the
whole path in the prefix field and leaves the name field empty.  GNU tar
reconstructs the path without complaint, but the tar included with
NetBSD 6 does not: It reports the header to be invalid.

For compatibility with this version of tar, make sure to never leave the
name field empty.  In order to do that, trim the trailing slash from the
part considered as possible prefix, if it exists -- that way the last
path component (or more, but not less) will end up in the name field.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 828ea97
History
Tip revision: 6c40894d2466d4e7fddc047a05116aa9d14712ee authored by Junio C Hamano on 30 August 2021, 23:06:22 UTC
The second batch
Tip revision: 6c40894
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 752 bytes
INSTALL -rw-r--r-- 8.1 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 76.4 KB
README -rw-r--r-- 2.4 KB
RelNotes l--------- 32 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.2 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-- 43.9 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.2 KB
connect.c -rw-r--r-- 13.3 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-- 941 bytes
daemon.c -rw-r--r-- 29.1 KB
date.c -rw-r--r-- 23.1 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-- 124.7 KB
diff.h -rw-r--r-- 10.6 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.3 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.1 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.7 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-- 27.3 KB
grep.h -rw-r--r-- 3.1 KB
hash.c -rw-r--r-- 2.5 KB
hash.h -rw-r--r-- 1.1 KB
help.c -rw-r--r-- 9.9 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-- 35.2 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.4 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.1 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-- 14.9 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.2 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.1 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.0 KB
remote.c -rw-r--r-- 41.0 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-- 63.8 KB
revision.h -rw-r--r-- 5.6 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
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-- 69.8 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-- 30.8 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.6 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

README

back to top