Prechádzať zdrojové kódy

Do not include the ar magic in the deb and deb-split magic macros

This allows the code to parse the ar header normally w/o needing to
seek back.
Guillem Jover 16 rokov pred
rodič
commit
4088b785d8
3 zmenil súbory, kde vykonal 8 pridanie a 7 odobranie
  1. 1 1
      dpkg-deb/dpkg-deb.h
  2. 1 1
      dpkg-split/dpkg-split.h
  3. 6 5
      dpkg-split/info.c

+ 1 - 1
dpkg-deb/dpkg-deb.h

@@ -52,7 +52,7 @@ extern enum compress_type compress_type;
 #define OLDDEBDIR		"DEBIAN"
 #define OLDOLDDEBDIR		".DEBIAN"
 
-#define DEBMAGIC     "!<arch>\ndebian-binary   "
+#define DEBMAGIC		"debian-binary   "
 #define ADMINMEMBER		"control.tar.gz  "
 #define ADMINMEMBER_COMPAT	"control.tar.gz/ "
 #define DATAMEMBER_GZ		"data.tar.gz     "

+ 1 - 1
dpkg-split/dpkg-split.h

@@ -70,7 +70,7 @@ void addtopartlist(struct partinfo**, struct partinfo*, struct partinfo *refi);
 
 #define PARTSDIR          "parts/"
 
-#define PARTMAGIC         "!<arch>\ndebian-split    "
+#define PARTMAGIC         "debian-split    "
 #define HEADERALLOWANCE    1024
 
 #define SPLITPARTDEFMAX    (450 * 1024)

+ 6 - 5
dpkg-split/info.c

@@ -83,19 +83,20 @@ struct partinfo *read_info(FILE *partfile, const char *fn, struct partinfo *ir)
 
   size_t thisilen;
   unsigned int templong;
-  char magicbuf[sizeof(PARTMAGIC)-1], *rip, *partnums, *slash;
+  char magicbuf[SARMAG], *rip, *partnums, *slash;
   struct ar_hdr arh;
   int c;
   struct stat stab;
   
-  if (fread(magicbuf,1,sizeof(PARTMAGIC)-1,partfile) != sizeof(PARTMAGIC)-1) {
+  if (fread(magicbuf, 1, sizeof(magicbuf), partfile) != sizeof(magicbuf)) {
     if (ferror(partfile)) rerr(fn); else return NULL;
   }
-  if (memcmp(magicbuf,PARTMAGIC,sizeof(magicbuf))) return NULL;
-  if (fseek(partfile,-sizeof(arh.ar_name),SEEK_CUR))
-    ohshite(_("unable to seek back"));
+  if (memcmp(magicbuf, "!<arch>\n", sizeof(magicbuf)))
+    return NULL;
   
   if (fread(&arh,1,sizeof(arh),partfile) != sizeof(arh)) rerreof(partfile,fn);
+  if (memcmp(arh.ar_name, PARTMAGIC, sizeof(arh.ar_name)))
+    return NULL;
   if (memcmp(arh.ar_fmag,ARFMAG,sizeof(arh.ar_fmag)))
     ohshit(_("file `%.250s' is corrupt - bad magic at end of first header"),fn);
   thisilen = parseheaderlength(arh.ar_size, sizeof(arh.ar_size), fn,