{"thread":{"id":"513","subject":"[PATCH 4/5] git-tar-tree: make file contents accessible to write_header()","startedAt":"2005-05-06T20:56:08Z","lastAt":"2005-05-06T20:56:08Z","messageCount":1,"participants":["Rene Scharfe"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"2706","messageId":"20050506205608.GE19518@lsrfire.ath.cx","threadId":"513","inReplyTo":null,"subject":"[PATCH 4/5] git-tar-tree: make file contents accessible to write_header()","fromName":"Rene Scharfe","fromEmail":"rene.scharfe@lsrfire.ath.cx","sentAt":"2005-05-06T20:56:08Z","receivedAt":"2005-05-06T20:56:08Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Pass pointer to filecontents to write_header() and pass pointer\nto filecontents, its size and some flags to write_exntended_header().\nThese parameters are not used, yet.  They are added in preparation\nto symlink support.\n\n---\ncommit 2da87ce547b59294d4d1cf527009395fbec7bf91\ntree 9eedd772d20dd5a66735f49efe80e17ced40f258\nparent 07b06da34d45be748f46ce4c8ffd3a2e0bba6191\nauthor Rene Scharfe <rene.scharfe@lsrfire.ath.cx> 1115312682 +0200\ncommitter Rene Scharfe <rene.scharfe@lsrfire.ath.cx> 1115312682 +0200\n\nIndex: tar-tree.c\n===================================================================\n--- bb298354f2340d064398c211af0a44cde2b7f48b/tar-tree.c  (mode:100644 sha1:277c882acc4f487bfc90dee76b00dc88f99f3da3)\n+++ 9eedd772d20dd5a66735f49efe80e17ced40f258/tar-tree.c  (mode:100644 sha1:e99adc7dd781cf46efbed82221bf62975a4a3996)\n@@ -199,13 +199,14 @@\n }\n \n static void write_header(const char *, char, const char *, struct path_prefix *,\n-                         const char *, unsigned int, unsigned long);\n+                         const char *, unsigned int, void *, unsigned long);\n \n /* stores a pax extended header directly in the block buffer */\n static void write_extended_header(const char *headerfilename, int is_dir,\n-                                  const char *basepath,\n+                                  unsigned int flags, const char *basepath,\n                                   struct path_prefix *prefix,\n-                                  const char *path, unsigned int namelen)\n+                                  const char *path, unsigned int namelen,\n+                                  void *content, unsigned int contentsize)\n {\n \tchar *p;\n \tunsigned int pathlen, size;\n@@ -214,7 +215,7 @@\n \tif (size > RECORDSIZE)\n \t\tdie(\"tar-tree: extended header too big, wtf?\");\n \twrite_header(NULL, TYPEFLAG_EXT_HEADER, NULL, NULL, headerfilename,\n-\t             0100600, size);\n+\t             0100600, NULL, size);\n \n \tp = get_record();\n \tappend_extended_header_prefix(&p, pathlen, \"path\");\n@@ -230,7 +231,7 @@\n \n \tsize = extended_header_len(\"comment\", 40);\n \twrite_header(NULL, TYPEFLAG_GLOBAL_HEADER, NULL, NULL,\n-\t             \"pax_global_header\", 0100600, size);\n+\t             \"pax_global_header\", 0100600, NULL, size);\n \n \tp = get_record();\n \tappend_extended_header(&p, \"comment\", sha1_to_hex(sha1), 40);\n@@ -240,7 +241,7 @@\n /* stores a ustar header directly in the block buffer */\n static void write_header(const char *sha1, char typeflag, const char *basepath,\n                          struct path_prefix *prefix, const char *path,\n-                         unsigned int mode, unsigned long size)\n+                         unsigned int mode, void *buffer, unsigned long size)\n {\n \tunsigned int namelen; \n \tchar *p, *header = NULL;\n@@ -262,8 +263,9 @@\n \t\tchar headerfilename[51];\n \t\tsprintf(headerfilename, \"%s.paxheader\", sha1_hex);\n \t\t/* the extended header must be written before the normal one */\n-\t\twrite_extended_header(headerfilename, S_ISDIR(mode), basepath,\n-\t\t\t\t      prefix, path, namelen);\n+\t\twrite_extended_header(headerfilename, S_ISDIR(mode),\n+\t\t                      0, basepath, prefix, path,\n+\t\t                      namelen, buffer, size);\n \n \t\theader = get_record();\n \t\tsprintf(header, \"%s.data\", sha1_hex);\n@@ -325,7 +327,7 @@\n \t\tif (!eltbuf)\n \t\t\tdie(\"cannot read %s\", sha1_to_hex(sha1));\n \t\twrite_header(sha1, TYPEFLAG_AUTO, basedir, prefix, path,\n-\t\t             mode, eltsize);\n+\t\t             mode, eltbuf, eltsize);\n \t\tif (!strcmp(elttype, \"tree\")) {\n \t\t\tthis_prefix.name = path;\n \t\t\ttraverse_tree(eltbuf, eltsize, &this_prefix);\n@@ -399,7 +401,8 @@\n \tif (!archive_time)\n \t\tarchive_time = time(NULL);\n \tif (basedir)\n-\t\twrite_header(\"0\", TYPEFLAG_DIR, NULL, NULL, basedir, 040755, 0);\n+\t\twrite_header(\"0\", TYPEFLAG_DIR, NULL, NULL, basedir, 040755,\n+\t\t             NULL, 0);\n \ttraverse_tree(buffer, size, NULL);\n \tfree(buffer);\n \twrite_trailer();\n\n\n\f\n!-------------------------------------------------------------flip-\n\n\n"}]}