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
This commit is contained in:
parent
0786ba9b7a
commit
8d3a074f66
28
build/pack.c
28
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 writeMagic(Spec s, int fd, char *name, unsigned short type);
|
||||||
static int add_file(struct file_entry **festack,
|
static int add_file(struct file_entry **festack,
|
||||||
char *name, int isdoc, int isconf, int isdir);
|
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 int add_file_aux(char *file, struct stat *sb, int flag);
|
||||||
static char *getUname(uid_t uid);
|
static char *getUname(uid_t uid);
|
||||||
static char *getGname(gid_t gid);
|
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() */
|
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 buf[1024];
|
||||||
char **files, **fp;
|
char **files, **fp;
|
||||||
|
@ -314,7 +314,8 @@ static int process_filelist(Header header, StringBuf sb, int type)
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
fes = NULL;
|
fes = NULL;
|
||||||
|
*size = 0;
|
||||||
|
|
||||||
str = getStringBuf(sb);
|
str = getStringBuf(sb);
|
||||||
files = splitString(str, strlen(str), '\n');
|
files = splitString(str, strlen(str), '\n');
|
||||||
fp = files;
|
fp = files;
|
||||||
|
@ -413,6 +414,7 @@ static int process_filelist(Header header, StringBuf sb, int type)
|
||||||
}
|
}
|
||||||
fileUnameList[c] = fes->uname;
|
fileUnameList[c] = fes->uname;
|
||||||
fileGnameList[c] = fes->gname;
|
fileGnameList[c] = fes->gname;
|
||||||
|
*size += fes->statbuf.st_size;
|
||||||
if (S_ISREG(fes->statbuf.st_mode)) {
|
if (S_ISREG(fes->statbuf.st_mode)) {
|
||||||
mdfile(fes->file, buf);
|
mdfile(fes->file, buf);
|
||||||
fileMD5List[c] = strdup(buf);
|
fileMD5List[c] = strdup(buf);
|
||||||
|
@ -508,6 +510,7 @@ int packageBinaries(Spec s)
|
||||||
int fd;
|
int fd;
|
||||||
char *version;
|
char *version;
|
||||||
char *release;
|
char *release;
|
||||||
|
int size;
|
||||||
|
|
||||||
if (!getEntry(s->packages->header, RPMTAG_VERSION, NULL,
|
if (!getEntry(s->packages->header, RPMTAG_VERSION, NULL,
|
||||||
(void *) &version, NULL)) {
|
(void *) &version, NULL)) {
|
||||||
|
@ -565,7 +568,7 @@ int packageBinaries(Spec s)
|
||||||
}
|
}
|
||||||
freeIterator(headerIter);
|
freeIterator(headerIter);
|
||||||
|
|
||||||
if (process_filelist(outHeader, pr->filelist, RPMLEAD_BINARY)) {
|
if (process_filelist(outHeader, pr->filelist, &size, RPMLEAD_BINARY)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -577,6 +580,7 @@ int packageBinaries(Spec s)
|
||||||
|
|
||||||
/* Add some final entries to the header */
|
/* Add some final entries to the header */
|
||||||
addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1);
|
addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1);
|
||||||
|
addEntry(outHeader, RPMTAG_SIZE, INT32_TYPE, &size, 1);
|
||||||
if (pr->icon) {
|
if (pr->icon) {
|
||||||
sprintf(filename, "%s/%s", getVar(RPMVAR_SOURCEDIR), pr->icon);
|
sprintf(filename, "%s/%s", getVar(RPMVAR_SOURCEDIR), pr->icon);
|
||||||
stat(filename, &statbuf);
|
stat(filename, &statbuf);
|
||||||
|
@ -584,7 +588,16 @@ int packageBinaries(Spec s)
|
||||||
iconFD = open(filename, O_RDONLY, 0644);
|
iconFD = open(filename, O_RDONLY, 0644);
|
||||||
read(iconFD, icon, statbuf.st_size);
|
read(iconFD, icon, statbuf.st_size);
|
||||||
close(iconFD);
|
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);
|
free(icon);
|
||||||
}
|
}
|
||||||
/* XXX - need: distribution, vendor, release, builder, buildhost */
|
/* XXX - need: distribution, vendor, release, builder, buildhost */
|
||||||
|
@ -618,6 +631,7 @@ int packageSource(Spec s)
|
||||||
Header outHeader;
|
Header outHeader;
|
||||||
StringBuf filelist;
|
StringBuf filelist;
|
||||||
int fd;
|
int fd;
|
||||||
|
int size;
|
||||||
|
|
||||||
tempdir = tempnam("/usr/tmp", "rpmbuild");
|
tempdir = tempnam("/usr/tmp", "rpmbuild");
|
||||||
mkdir(tempdir, 0700);
|
mkdir(tempdir, 0700);
|
||||||
|
@ -672,10 +686,12 @@ int packageSource(Spec s)
|
||||||
addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1);
|
addEntry(outHeader, RPMTAG_BUILDTIME, INT32_TYPE, &buildtime, 1);
|
||||||
/* XXX - need: distribution, vendor, release, builder, buildhost */
|
/* XXX - need: distribution, vendor, release, builder, buildhost */
|
||||||
|
|
||||||
if (process_filelist(outHeader, filelist, RPMLEAD_SOURCE)) {
|
if (process_filelist(outHeader, filelist, &size, RPMLEAD_SOURCE)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addEntry(outHeader, RPMTAG_SIZE, INT32_TYPE, &size, 1);
|
||||||
|
|
||||||
writeHeader(fd, outHeader);
|
writeHeader(fd, outHeader);
|
||||||
|
|
||||||
/* Now do the cpio | gzip thing */
|
/* Now do the cpio | gzip thing */
|
||||||
|
|
Loading…
Reference in New Issue