Again: remove the artificial restriction tagsize < 8kb
PATCH 1/2 Again: remove the artificial restriction tagsize < 8kb
Signed-off-by Bj�rn Engelmann <[email protected]>
---
430953ceafbc722226e2300b489e38938220d435
cache.h | 1 + mktag.c | 19 +++++++++---------- sha1_file.c | 46 ++++++++++++++++++++++++++++++++++++---------- 3 files changed, 46 insertions(+), 20 deletions(-)
430953ceafbc722226e2300b489e38938220d435
cache.h +1 -0
@@ -154,6 +154,7 @@ extern int ce_match_stat(struct cache_enextern int ce_modified (struct cache_entry *ce,struct stat *st,int );extern int ce_path_match (const struct cache_entry *ce,const char **pathspec);extern int index_fd (unsigned char *sha1,int fd,struct stat *st,int write_object,const char *type); +extern int read_pipe (int fd,char ** return_buf,unsigned long * return_size);extern int index_pipe (unsigned char *sha1,int fd,const char *type,int write_object);extern int index_path (unsigned char *sha1,const char *path,struct stat *st,int write_object);extern void fill_stat_cache_info (struct cache_entry *ce,struct stat *st);
mktag.c +9 -10
@@ -45,7 +45,7 @@ static int verify_tag(char *buffer, unsiunsigned char sha1[20 ];const char *object, *type_line, *tag_line, *tagger_line; -if (size <64 || size >MAXSIZE -1 ) +if (size <64 )return -1 ; buffer[size] =0 ;
@@ -105,8 +105,8 @@ static int verify_tag(char *buffer, unsiint main (int argc,char **argv) { -unsigned long size; -char buffer[MAXSIZE ]; +unsigned long size =4096 ; +char *buffer =malloc (size);unsigned char result_sha1[20 ];if (argc !=1 )
@@ -114,13 +114,9 @@ int main(int argc, char **argv)setup_git_directory (); -// Read the signature - size =0 ; -for (;;) { -int ret =xread (0 , buffer + size,MAXSIZE - size); -if (ret <=0 ) -break ; - size += ret; +if (read_pipe (0 , &buffer, &size)) { +free (buffer); +die ("could not read from stdin" ); }// Verify it for some basic sanity: it needs to start with "object <sha1>\ntype\ntagger "
@@ -129,6 +125,9 @@ int main(int argc, char **argv)if (write_sha1_file (buffer, size, tag_type, result_sha1) <0 )die ("unable to write tag file" ); + +free (buffer); +printf ("%s\n" ,sha1_to_hex (result_sha1));return 0 ; }
sha1_file.c +36 -10
68 lines not on this page · raw message
Signature · 1 line
1.3.3.g4309-dirty