Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
[PATCH] Lift path length limits from git-tar-tree.
author
Rene Scharfe
<rene.scharfe@lsrfire.ath.cx>
Sat, 7 May 2005 00:57:06 +0000
(
02:57
+0200)
committer
Linus Torvalds
<torvalds@ppc970.osdl.org>
Sat, 7 May 2005 05:12:08 +0000
(22:12 -0700)
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
tar-tree.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
bf60144
)
diff --git
a/tar-tree.c
b/tar-tree.c
index 9d9bd7be98502f64e4a643ef0973182f3483251e..8b0d75bd2cf12a531aee3d51e59a8ac8102ba6be 100644
(file)
--- a/
tar-tree.c
+++ b/
tar-tree.c
@@
-212,7
+212,7
@@
static void write_extended_header(const char *headerfilename, int is_dir,
const char *path, unsigned int namelen,
void *content, unsigned int contentsize)
{
const char *path, unsigned int namelen,
void *content, unsigned int contentsize)
{
- char *p;
+ char *
buffer, *
p;
unsigned int pathlen, size, linkpathlen = 0;
size = pathlen = extended_header_len("path", namelen);
unsigned int pathlen, size, linkpathlen = 0;
size = pathlen = extended_header_len("path", namelen);
@@
-220,18
+220,19
@@
static void write_extended_header(const char *headerfilename, int is_dir,
linkpathlen = extended_header_len("linkpath", contentsize);
size += linkpathlen;
}
linkpathlen = extended_header_len("linkpath", contentsize);
size += linkpathlen;
}
- if (size > RECORDSIZE)
- die("tar-tree: extended header too big, wtf?");
write_header(NULL, TYPEFLAG_EXT_HEADER, NULL, NULL, headerfilename,
0100600, NULL, size);
write_header(NULL, TYPEFLAG_EXT_HEADER, NULL, NULL, headerfilename,
0100600, NULL, size);
- p = get_record();
+ buffer = p = malloc(size);
+ if (!buffer)
+ die("git-tar-tree: %s", strerror(errno));
append_extended_header_prefix(&p, pathlen, "path");
append_path(&p, is_dir, basepath, prefix, path);
append_char(&p, '\n');
if (flags & EXT_HEADER_LINKPATH)
append_extended_header(&p, "linkpath", content, contentsize);
append_extended_header_prefix(&p, pathlen, "path");
append_path(&p, is_dir, basepath, prefix, path);
append_char(&p, '\n');
if (flags & EXT_HEADER_LINKPATH)
append_extended_header(&p, "linkpath", content, contentsize);
- write_if_needed();
+ write_blocked(buffer, size);
+ free(buffer);
}
static void write_global_extended_header(const char *sha1)
}
static void write_global_extended_header(const char *sha1)
@@
-269,9
+270,7
@@
static void write_header(const char *sha1, char typeflag, const char *basepath,
}
namelen = path_len(S_ISDIR(mode), basepath, prefix, path);
}
namelen = path_len(S_ISDIR(mode), basepath, prefix, path);
- if (namelen > 500)
- die("tar-tree: name too log of object %s\n", sha1_to_hex(sha1));
- else if (namelen > 100)
+ if (namelen > 100)
ext_header |= EXT_HEADER_PATH;
if (typeflag == TYPEFLAG_LNK && size > 100)
ext_header |= EXT_HEADER_LINKPATH;
ext_header |= EXT_HEADER_PATH;
if (typeflag == TYPEFLAG_LNK && size > 100)
ext_header |= EXT_HEADER_LINKPATH;