From 8d3a074f66cf2c72aca4649950dc3b41d431987d Mon Sep 17 00:00:00 2001 From: marc Date: Tue, 9 Jan 1996 23:41:35 +0000 Subject: [PATCH] added SIZE tag try to determine type of icon, and file in header under GIF, XPM, or ICON CVS patchset: 190 CVS date: 1996/01/09 23:41:35 --- build/pack.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/build/pack.c b/build/pack.c index fba82606d..bf49cc9f9 100644 --- a/build/pack.c +++ b/build/pack.c @@ -45,7 +45,7 @@ static int cpio_gzip(Header header, int fd, char *tempdir); static int writeMagic(Spec s, int fd, char *name, unsigned short type); static int add_file(struct file_entry **festack, char *name, int isdoc, int isconf, int isdir); -static int process_filelist(Header header, StringBuf sb, int type); +static int process_filelist(Header header, StringBuf sb, int *size, int type); static int add_file_aux(char *file, struct stat *sb, int flag); static char *getUname(uid_t uid); static char *getGname(gid_t gid); @@ -302,7 +302,7 @@ static int add_file_aux(char *file, struct stat *sb, int flag) return 0; /* for ftw() */ } -static int process_filelist(Header header, StringBuf sb, int type) +static int process_filelist(Header header, StringBuf sb, int *size, int type) { char buf[1024]; char **files, **fp; @@ -314,7 +314,8 @@ static int process_filelist(Header header, StringBuf sb, int type) int c; fes = NULL; - + *size = 0; + str = getStringBuf(sb); files = splitString(str, strlen(str), '\n'); fp = files; @@ -413,6 +414,7 @@ static int process_filelist(Header header, StringBuf sb, int type) } fileUnameList[c] = fes->uname; fileGnameList[c] = fes->gname; + *size += fes->statbuf.st_size; if (S_ISREG(fes->statbuf.st_mode)) { mdfile(fes->file, buf); fileMD5List[c] = strdup(buf); @@ -508,6 +510,7 @@ int packageBinaries(Spec s) int fd; char *version; char *release; + int size; if (!getEntry(s->packages->header, RPMTAG_VERSION, NULL, (void *) &version, NULL)) { @@ -565,7 +568,7 @@ int packageBinaries(Spec s) } freeIterator(headerIter); - if (process_filelist(outHeader, pr->filelist, RPMLEAD_BINARY)) { + if (process_filelist(outHeader, pr->filelist, &size, RPMLEAD_BINARY)) { return 1; } @@ -577,6 +580,7 @@ int packageBinaries(Spec s) /* Add some final entries to the header */ addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1); + addEntry(outHeader, RPMTAG_SIZE, INT32_TYPE, &size, 1); if (pr->icon) { sprintf(filename, "%s/%s", getVar(RPMVAR_SOURCEDIR), pr->icon); stat(filename, &statbuf); @@ -584,7 +588,16 @@ int packageBinaries(Spec s) iconFD = open(filename, O_RDONLY, 0644); read(iconFD, icon, statbuf.st_size); close(iconFD); - addEntry(outHeader, RPMTAG_ICON, BIN_TYPE, icon, statbuf.st_size); + if (! strncmp(icon, "GIF", 3)) { + addEntry(outHeader, RPMTAG_GIF, BIN_TYPE, + icon, statbuf.st_size); + } else if (! strncmp(icon, "/* XPM", 6)) { + addEntry(outHeader, RPMTAG_XPM, BIN_TYPE, + icon, statbuf.st_size); + } else { + addEntry(outHeader, RPMTAG_ICON, BIN_TYPE, + icon, statbuf.st_size); + } free(icon); } /* XXX - need: distribution, vendor, release, builder, buildhost */ @@ -618,6 +631,7 @@ int packageSource(Spec s) Header outHeader; StringBuf filelist; int fd; + int size; tempdir = tempnam("/usr/tmp", "rpmbuild"); mkdir(tempdir, 0700); @@ -672,10 +686,12 @@ int packageSource(Spec s) addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1); /* XXX - need: distribution, vendor, release, builder, buildhost */ - if (process_filelist(outHeader, filelist, RPMLEAD_SOURCE)) { + if (process_filelist(outHeader, filelist, &size, RPMLEAD_SOURCE)) { return 1; } + addEntry(outHeader, RPMTAG_SIZE, INT32_TYPE, &size, 1); + writeHeader(fd, outHeader); /* Now do the cpio | gzip thing */