Clean up on files.c.
CVS patchset: 2555 CVS date: 1998/11/24 19:30:38
This commit is contained in:
parent
bf93337cec
commit
4551a1256f
359
build/files.c
359
build/files.c
|
@ -12,36 +12,36 @@
|
||||||
|
|
||||||
#define MAXDOCDIR 1024
|
#define MAXDOCDIR 1024
|
||||||
|
|
||||||
struct FileListRec {
|
typedef struct {
|
||||||
char *diskName; /* get file from here */
|
const char *diskName; /* get file from here */
|
||||||
char *fileName; /* filename in cpio archive */
|
const char *fileName; /* filename in cpio archive */
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
gid_t gid;
|
gid_t gid;
|
||||||
dev_t device;
|
dev_t device;
|
||||||
ino_t inode;
|
ino_t inode;
|
||||||
char *uname;
|
const char *uname;
|
||||||
char *gname;
|
const char *gname;
|
||||||
int flags;
|
int flags;
|
||||||
int verifyFlags;
|
int verifyFlags;
|
||||||
int size;
|
int size;
|
||||||
int mtime;
|
int mtime;
|
||||||
dev_t rdev;
|
dev_t rdev;
|
||||||
char *lang;
|
const char *lang;
|
||||||
};
|
} FileListRec;
|
||||||
|
|
||||||
struct AttrRec {
|
struct AttrRec {
|
||||||
char *PmodeString;
|
const char *PmodeString;
|
||||||
int Pmode;
|
int Pmode;
|
||||||
char *PdirmodeString;
|
const char *PdirmodeString;
|
||||||
int Pdirmode;
|
int Pdirmode;
|
||||||
char *Uname;
|
const char *Uname;
|
||||||
char *Gname;
|
const char *Gname;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FileList {
|
struct FileList {
|
||||||
char *buildRoot;
|
const char *buildRoot;
|
||||||
char *prefix;
|
const char *prefix;
|
||||||
|
|
||||||
int fileCount;
|
int fileCount;
|
||||||
int totalFileSize;
|
int totalFileSize;
|
||||||
|
@ -57,14 +57,14 @@ struct FileList {
|
||||||
struct AttrRec current;
|
struct AttrRec current;
|
||||||
struct AttrRec def;
|
struct AttrRec def;
|
||||||
int defVerifyFlags;
|
int defVerifyFlags;
|
||||||
char *currentLang;
|
const char *currentLang;
|
||||||
|
|
||||||
/* Hard coded limit of MAXDOCDIR docdirs. */
|
/* Hard coded limit of MAXDOCDIR docdirs. */
|
||||||
/* If you break it you are doing something wrong. */
|
/* If you break it you are doing something wrong. */
|
||||||
char *docDirs[MAXDOCDIR];
|
char *docDirs[MAXDOCDIR];
|
||||||
int docDirCount;
|
int docDirCount;
|
||||||
|
|
||||||
struct FileListRec *fileList;
|
FileListRec *fileList;
|
||||||
int fileListRecsAlloced;
|
int fileListRecsAlloced;
|
||||||
int fileListRecsUsed;
|
int fileListRecsUsed;
|
||||||
};
|
};
|
||||||
|
@ -72,9 +72,9 @@ struct FileList {
|
||||||
#ifdef DYING
|
#ifdef DYING
|
||||||
static int processPackageFiles(Spec spec, Package pkg,
|
static int processPackageFiles(Spec spec, Package pkg,
|
||||||
int installSpecialDoc, int test);
|
int installSpecialDoc, int test);
|
||||||
static void freeFileList(struct FileListRec *fileList, int count);
|
static void freeFileList(FileListRec *fileList, int count);
|
||||||
static int compareFileListRecs(const void *ap, const void *bp);
|
static int compareFileListRecs(const void *ap, const void *bp);
|
||||||
static int isDoc(struct FileList *fl, char *fileName);
|
static int isDoc(struct FileList *fl, const char *fileName);
|
||||||
static int processBinaryFile(Package pkg, struct FileList *fl, char *fileName);
|
static int processBinaryFile(Package pkg, struct FileList *fl, char *fileName);
|
||||||
static int addFile(struct FileList *fl, char *name, struct stat *statp);
|
static int addFile(struct FileList *fl, char *name, struct stat *statp);
|
||||||
static int parseForSimple(Spec spec, Package pkg, char *buf,
|
static int parseForSimple(Spec spec, Package pkg, char *buf,
|
||||||
|
@ -197,18 +197,16 @@ static void timeCheck(int tc, Header h)
|
||||||
|
|
||||||
currentTime = time(NULL);
|
currentTime = time(NULL);
|
||||||
|
|
||||||
x = 0;
|
for (x = 0; x < count; x++) {
|
||||||
while (x < count) {
|
|
||||||
if (currentTime - mtime[x] > tc) {
|
if (currentTime - mtime[x] > tc) {
|
||||||
rpmMessage(RPMMESS_WARNING, _("TIMECHECK failure: %s\n"), file[x]);
|
rpmMessage(RPMMESS_WARNING, _("TIMECHECK failure: %s\n"), file[x]);
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parseForVerify(char *buf, struct FileList *fl)
|
static int parseForVerify(char *buf, struct FileList *fl)
|
||||||
{
|
{
|
||||||
char *p, *start, *end, *name;
|
char *p, *q, *start, *end, *name;
|
||||||
char ourbuf[BUFSIZ];
|
char ourbuf[BUFSIZ];
|
||||||
int not, verifyFlags;
|
int not, verifyFlags;
|
||||||
int *resultVerify;
|
int *resultVerify;
|
||||||
|
@ -252,10 +250,12 @@ static int parseForVerify(char *buf, struct FileList *fl)
|
||||||
*start++ = ' ';
|
*start++ = ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
p = strtok(ourbuf, ", \n\t");
|
|
||||||
not = 0;
|
not = 0;
|
||||||
verifyFlags = RPMVERIFY_NONE;
|
verifyFlags = RPMVERIFY_NONE;
|
||||||
while (p) {
|
|
||||||
|
q = ourbuf;
|
||||||
|
while ((p = strtok(q, ", \n\t")) != NULL) {
|
||||||
|
q = NULL;
|
||||||
if (!strcmp(p, "not")) {
|
if (!strcmp(p, "not")) {
|
||||||
not = 1;
|
not = 1;
|
||||||
} else if (!strcmp(p, "md5")) {
|
} else if (!strcmp(p, "md5")) {
|
||||||
|
@ -279,7 +279,6 @@ static int parseForVerify(char *buf, struct FileList *fl)
|
||||||
fl->processingFailed = 1;
|
fl->processingFailed = 1;
|
||||||
return RPMERR_BADSPEC;
|
return RPMERR_BADSPEC;
|
||||||
}
|
}
|
||||||
p = strtok(NULL, ", \n\t");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*resultVerify = not ? ~(verifyFlags) : verifyFlags;
|
*resultVerify = not ? ~(verifyFlags) : verifyFlags;
|
||||||
|
@ -695,15 +694,15 @@ static int parseForSimple(Spec spec, Package pkg, char *buf,
|
||||||
|
|
||||||
static int compareFileListRecs(const void *ap, const void *bp)
|
static int compareFileListRecs(const void *ap, const void *bp)
|
||||||
{
|
{
|
||||||
char *a, *b;
|
const char *a, *b;
|
||||||
|
|
||||||
a = ((struct FileListRec *)ap)->fileName;
|
a = ((FileListRec *)ap)->fileName;
|
||||||
b = ((struct FileListRec *)bp)->fileName;
|
b = ((FileListRec *)bp)->fileName;
|
||||||
|
|
||||||
return strcmp(a, b);
|
return strcmp(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int isDoc(struct FileList *fl, char *fileName)
|
static int isDoc(struct FileList *fl, const char *fileName)
|
||||||
{
|
{
|
||||||
int x = fl->docDirCount;
|
int x = fl->docDirCount;
|
||||||
|
|
||||||
|
@ -719,10 +718,10 @@ static void genCpioListAndHeader(struct FileList *fl,
|
||||||
struct cpioFileMapping **cpioList,
|
struct cpioFileMapping **cpioList,
|
||||||
int *cpioCount, Header h, int isSrc)
|
int *cpioCount, Header h, int isSrc)
|
||||||
{
|
{
|
||||||
int skipLen = 0;
|
int skipLen;
|
||||||
struct FileListRec *p;
|
|
||||||
int count;
|
int count;
|
||||||
struct cpioFileMapping *cpioListPtr;
|
FileListRec *flp;
|
||||||
|
struct cpioFileMapping *clp;
|
||||||
char *s, buf[BUFSIZ];
|
char *s, buf[BUFSIZ];
|
||||||
|
|
||||||
/* Sort the big list */
|
/* Sort the big list */
|
||||||
|
@ -730,128 +729,119 @@ static void genCpioListAndHeader(struct FileList *fl,
|
||||||
sizeof(*(fl->fileList)), compareFileListRecs);
|
sizeof(*(fl->fileList)), compareFileListRecs);
|
||||||
|
|
||||||
/* Generate the cpio list and the header */
|
/* Generate the cpio list and the header */
|
||||||
|
skipLen = 0;
|
||||||
if (! isSrc) {
|
if (! isSrc) {
|
||||||
if (fl->prefix) {
|
|
||||||
skipLen = 1 + strlen(fl->prefix);
|
|
||||||
} else {
|
|
||||||
skipLen = 1;
|
skipLen = 1;
|
||||||
|
if (fl->prefix)
|
||||||
|
skipLen += strlen(fl->prefix);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
*cpioList = malloc(sizeof(**cpioList) * fl->fileListRecsUsed);
|
|
||||||
*cpioCount = 0;
|
*cpioCount = 0;
|
||||||
cpioListPtr = *cpioList;
|
clp = *cpioList = malloc(sizeof(**cpioList) * fl->fileListRecsUsed);
|
||||||
p = fl->fileList;
|
|
||||||
count = fl->fileListRecsUsed;
|
for (flp = fl->fileList, count = fl->fileListRecsUsed; count > 0; flp++, count--) {
|
||||||
while (count) {
|
if ((count > 1) && !strcmp(flp->fileName, flp[1].fileName)) {
|
||||||
if ((count > 1) && !strcmp(p->fileName, p[1].fileName)) {
|
rpmError(RPMERR_BADSPEC, _("File listed twice: %s"), flp->fileName);
|
||||||
rpmError(RPMERR_BADSPEC, _("File listed twice: %s"), p->fileName);
|
|
||||||
fl->processingFailed = 1;
|
fl->processingFailed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make the cpio list */
|
/* Make the cpio list */
|
||||||
if (! (p->flags & RPMFILE_GHOST)) {
|
if (! (flp->flags & RPMFILE_GHOST)) {
|
||||||
cpioListPtr->fsPath = strdup(p->diskName);
|
clp->fsPath = strdup(flp->diskName);
|
||||||
cpioListPtr->archivePath = strdup(p->fileName + skipLen);
|
clp->archivePath = strdup(flp->fileName + skipLen);
|
||||||
cpioListPtr->finalMode = p->mode;
|
clp->finalMode = flp->mode;
|
||||||
cpioListPtr->finalUid = p->uid;
|
clp->finalUid = flp->uid;
|
||||||
cpioListPtr->finalGid = p->gid;
|
clp->finalGid = flp->gid;
|
||||||
cpioListPtr->mapFlags = CPIO_MAP_PATH | CPIO_MAP_MODE |
|
clp->mapFlags = CPIO_MAP_PATH | CPIO_MAP_MODE |
|
||||||
CPIO_MAP_UID | CPIO_MAP_GID;
|
CPIO_MAP_UID | CPIO_MAP_GID;
|
||||||
if (isSrc) {
|
if (isSrc) {
|
||||||
cpioListPtr->mapFlags |= CPIO_FOLLOW_SYMLINKS;
|
clp->mapFlags |= CPIO_FOLLOW_SYMLINKS;
|
||||||
}
|
}
|
||||||
cpioListPtr++;
|
clp++;
|
||||||
(*cpioCount)++;
|
(*cpioCount)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make the header */
|
/* Make the header */
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILENAMES, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILENAMES, RPM_STRING_ARRAY_TYPE,
|
||||||
&(p->fileName), 1);
|
&(flp->fileName), 1);
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILESIZES, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILESIZES, RPM_INT32_TYPE,
|
||||||
&(p->size), 1);
|
&(flp->size), 1);
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEUSERNAME, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEUSERNAME, RPM_STRING_ARRAY_TYPE,
|
||||||
&(p->uname), 1);
|
&(flp->uname), 1);
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEGROUPNAME, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEGROUPNAME, RPM_STRING_ARRAY_TYPE,
|
||||||
&(p->gname), 1);
|
&(flp->gname), 1);
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEMTIMES, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEMTIMES, RPM_INT32_TYPE,
|
||||||
&(p->mtime), 1);
|
&(flp->mtime), 1);
|
||||||
if (sizeof(p->mode) != sizeof(uint_16)) {
|
if (sizeof(flp->mode) != sizeof(uint_16)) {
|
||||||
uint_16 pmode = (uint_16)p->mode;
|
uint_16 pmode = (uint_16)flp->mode;
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEMODES, RPM_INT16_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEMODES, RPM_INT16_TYPE,
|
||||||
&(pmode), 1);
|
&(pmode), 1);
|
||||||
} else {
|
} else {
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEMODES, RPM_INT16_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEMODES, RPM_INT16_TYPE,
|
||||||
&(p->mode), 1);
|
&(flp->mode), 1);
|
||||||
}
|
}
|
||||||
if (sizeof(p->rdev) != sizeof(uint_16)) {
|
if (sizeof(flp->rdev) != sizeof(uint_16)) {
|
||||||
uint_16 prdev = (uint_16)p->rdev;
|
uint_16 prdev = (uint_16)flp->rdev;
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILERDEVS, RPM_INT16_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILERDEVS, RPM_INT16_TYPE,
|
||||||
&(prdev), 1);
|
&(prdev), 1);
|
||||||
} else {
|
} else {
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILERDEVS, RPM_INT16_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILERDEVS, RPM_INT16_TYPE,
|
||||||
&(p->rdev), 1);
|
&(flp->rdev), 1);
|
||||||
}
|
}
|
||||||
if (sizeof(p->device) != sizeof(uint_32)) {
|
if (sizeof(flp->device) != sizeof(uint_32)) {
|
||||||
uint_32 pdevice = (uint_32)p->device;
|
uint_32 pdevice = (uint_32)flp->device;
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEDEVICES, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEDEVICES, RPM_INT32_TYPE,
|
||||||
&(pdevice), 1);
|
&(pdevice), 1);
|
||||||
} else {
|
} else {
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEDEVICES, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEDEVICES, RPM_INT32_TYPE,
|
||||||
&(p->device), 1);
|
&(flp->device), 1);
|
||||||
}
|
}
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEINODES, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEINODES, RPM_INT32_TYPE,
|
||||||
&(p->inode), 1);
|
&(flp->inode), 1);
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILELANGS, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILELANGS, RPM_STRING_ARRAY_TYPE,
|
||||||
&(p->lang), 1);
|
&(flp->lang), 1);
|
||||||
|
|
||||||
/* We used to add these, but they should not be needed */
|
/* We used to add these, but they should not be needed */
|
||||||
/* headerAddOrAppendEntry(h, RPMTAG_FILEUIDS,
|
/* headerAddOrAppendEntry(h, RPMTAG_FILEUIDS,
|
||||||
* RPM_INT32_TYPE, &(p->uid), 1);
|
* RPM_INT32_TYPE, &(flp->uid), 1);
|
||||||
* headerAddOrAppendEntry(h, RPMTAG_FILEGIDS,
|
* headerAddOrAppendEntry(h, RPMTAG_FILEGIDS,
|
||||||
* RPM_INT32_TYPE, &(p->gid), 1);
|
* RPM_INT32_TYPE, &(flp->gid), 1);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
|
if (S_ISREG(flp->mode))
|
||||||
|
mdfile(flp->diskName, buf);
|
||||||
s = buf;
|
s = buf;
|
||||||
if (S_ISREG(p->mode)) {
|
|
||||||
mdfile(p->diskName, buf);
|
|
||||||
}
|
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEMD5S, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEMD5S, RPM_STRING_ARRAY_TYPE,
|
||||||
&s, 1);
|
&s, 1);
|
||||||
|
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
|
if (S_ISLNK(flp->mode))
|
||||||
|
buf[readlink(flp->diskName, buf, BUFSIZ)] = '\0';
|
||||||
s = buf;
|
s = buf;
|
||||||
if (S_ISLNK(p->mode)) {
|
|
||||||
buf[readlink(p->diskName, buf, BUFSIZ)] = '\0';
|
|
||||||
}
|
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILELINKTOS, RPM_STRING_ARRAY_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILELINKTOS, RPM_STRING_ARRAY_TYPE,
|
||||||
&s, 1);
|
&s, 1);
|
||||||
|
|
||||||
if (p->flags & RPMFILE_GHOST) {
|
if (flp->flags & RPMFILE_GHOST) {
|
||||||
p->verifyFlags &= ~(RPMVERIFY_MD5 | RPMVERIFY_FILESIZE |
|
flp->verifyFlags &= ~(RPMVERIFY_MD5 | RPMVERIFY_FILESIZE |
|
||||||
RPMVERIFY_LINKTO | RPMVERIFY_MTIME);
|
RPMVERIFY_LINKTO | RPMVERIFY_MTIME);
|
||||||
}
|
}
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEVERIFYFLAGS, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEVERIFYFLAGS, RPM_INT32_TYPE,
|
||||||
&(p->verifyFlags), 1);
|
&(flp->verifyFlags), 1);
|
||||||
|
|
||||||
|
if (!isSrc && isDoc(fl, flp->fileName))
|
||||||
|
flp->flags |= RPMFILE_DOC;
|
||||||
|
if (S_ISDIR(flp->mode))
|
||||||
|
flp->flags &= ~(RPMFILE_CONFIG|RPMFILE_DOC);
|
||||||
|
|
||||||
if (!isSrc && isDoc(fl, p->fileName)) {
|
|
||||||
p->flags |= RPMFILE_DOC;
|
|
||||||
}
|
|
||||||
if (p->mode & S_IFDIR) {
|
|
||||||
p->flags &= ~RPMFILE_CONFIG;
|
|
||||||
p->flags &= ~RPMFILE_DOC;
|
|
||||||
}
|
|
||||||
headerAddOrAppendEntry(h, RPMTAG_FILEFLAGS, RPM_INT32_TYPE,
|
headerAddOrAppendEntry(h, RPMTAG_FILEFLAGS, RPM_INT32_TYPE,
|
||||||
&(p->flags), 1);
|
&(flp->flags), 1);
|
||||||
|
|
||||||
p++;
|
|
||||||
count--;
|
|
||||||
}
|
}
|
||||||
headerAddEntry(h, RPMTAG_SIZE, RPM_INT32_TYPE,
|
headerAddEntry(h, RPMTAG_SIZE, RPM_INT32_TYPE,
|
||||||
&(fl->totalFileSize), 1);
|
&(fl->totalFileSize), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void freeFileList(struct FileListRec *fileList, int count)
|
static void freeFileList(FileListRec *fileList, int count)
|
||||||
{
|
{
|
||||||
while (count--) {
|
while (count--) {
|
||||||
FREE(fileList[count].diskName);
|
FREE(fileList[count].diskName);
|
||||||
|
@ -863,9 +853,9 @@ static void freeFileList(struct FileListRec *fileList, int count)
|
||||||
|
|
||||||
static int addFile(struct FileList *fl, char *name, struct stat *statp)
|
static int addFile(struct FileList *fl, char *name, struct stat *statp)
|
||||||
{
|
{
|
||||||
|
FileListRec *flp;
|
||||||
char fileName[BUFSIZ];
|
char fileName[BUFSIZ];
|
||||||
char diskName[BUFSIZ];
|
char diskName[BUFSIZ];
|
||||||
char *prefixTest, *prefixPtr;
|
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
int_16 fileMode;
|
int_16 fileMode;
|
||||||
int fileUid, fileGid;
|
int fileUid, fileGid;
|
||||||
|
@ -895,8 +885,8 @@ static int addFile(struct FileList *fl, char *name, struct stat *statp)
|
||||||
|
|
||||||
/* If we are using a prefix, validate the file */
|
/* If we are using a prefix, validate the file */
|
||||||
if (!fl->inFtw && fl->prefix) {
|
if (!fl->inFtw && fl->prefix) {
|
||||||
prefixTest = fileName;
|
const char *prefixTest = fileName;
|
||||||
prefixPtr = fl->prefix;
|
const char *prefixPtr = fl->prefix;
|
||||||
|
|
||||||
while (*prefixPtr && *prefixTest && (*prefixTest == *prefixPtr)) {
|
while (*prefixPtr && *prefixTest && (*prefixTest == *prefixPtr)) {
|
||||||
prefixPtr++;
|
prefixPtr++;
|
||||||
|
@ -929,7 +919,9 @@ static int addFile(struct FileList *fl, char *name, struct stat *statp)
|
||||||
myftw(diskName, 16, (myftwFunc) addFile, fl);
|
myftw(diskName, 16, (myftwFunc) addFile, fl);
|
||||||
fl->isDir = 0;
|
fl->isDir = 0;
|
||||||
fl->inFtw = 0;
|
fl->inFtw = 0;
|
||||||
} else {
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
fileMode = statp->st_mode;
|
fileMode = statp->st_mode;
|
||||||
fileUid = statp->st_uid;
|
fileUid = statp->st_uid;
|
||||||
fileGid = statp->st_gid;
|
fileGid = statp->st_gid;
|
||||||
|
@ -969,39 +961,40 @@ static int addFile(struct FileList *fl, char *name, struct stat *statp)
|
||||||
if (fl->fileListRecsUsed == fl->fileListRecsAlloced) {
|
if (fl->fileListRecsUsed == fl->fileListRecsAlloced) {
|
||||||
fl->fileListRecsAlloced += 128;
|
fl->fileListRecsAlloced += 128;
|
||||||
fl->fileList = realloc(fl->fileList,
|
fl->fileList = realloc(fl->fileList,
|
||||||
fl->fileListRecsAlloced *
|
fl->fileListRecsAlloced * sizeof(*(fl->fileList)));
|
||||||
sizeof(*(fl->fileList)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fl->fileList[fl->fileListRecsUsed].fileName = strdup(fileName);
|
flp = &fl->fileList[fl->fileListRecsUsed];
|
||||||
fl->fileList[fl->fileListRecsUsed].diskName = strdup(diskName);
|
|
||||||
fl->fileList[fl->fileListRecsUsed].mode = fileMode;
|
flp->fileName = strdup(fileName);
|
||||||
fl->fileList[fl->fileListRecsUsed].uid = fileUid;
|
flp->diskName = strdup(diskName);
|
||||||
fl->fileList[fl->fileListRecsUsed].gid = fileGid;
|
flp->mode = fileMode;
|
||||||
fl->fileList[fl->fileListRecsUsed].uname = fileUname;
|
flp->uid = fileUid;
|
||||||
fl->fileList[fl->fileListRecsUsed].gname = fileGname;
|
flp->gid = fileGid;
|
||||||
|
flp->uname = fileUname;
|
||||||
|
flp->gname = fileGname;
|
||||||
|
|
||||||
if (fl->currentLang) {
|
if (fl->currentLang) {
|
||||||
fl->fileList[fl->fileListRecsUsed].lang = strdup(fl->currentLang);
|
flp->lang = strdup(fl->currentLang);
|
||||||
} else if (! parseForRegexLang(fileName, &lang)) {
|
} else if (! parseForRegexLang(fileName, &lang)) {
|
||||||
fl->fileList[fl->fileListRecsUsed].lang = strdup(lang);
|
flp->lang = strdup(lang);
|
||||||
} else {
|
} else {
|
||||||
fl->fileList[fl->fileListRecsUsed].lang = strdup("");
|
flp->lang = strdup("");
|
||||||
}
|
}
|
||||||
|
|
||||||
fl->fileList[fl->fileListRecsUsed].flags = fl->currentFlags;
|
flp->flags = fl->currentFlags;
|
||||||
fl->fileList[fl->fileListRecsUsed].verifyFlags =
|
flp->verifyFlags = fl->currentVerifyFlags;
|
||||||
fl->currentVerifyFlags;
|
|
||||||
fl->fileList[fl->fileListRecsUsed].size = statp->st_size;
|
flp->size = statp->st_size;
|
||||||
fl->fileList[fl->fileListRecsUsed].mtime = statp->st_mtime;
|
flp->mtime = statp->st_mtime;
|
||||||
fl->fileList[fl->fileListRecsUsed].rdev = statp->st_rdev;
|
flp->rdev = statp->st_rdev;
|
||||||
fl->fileList[fl->fileListRecsUsed].device = statp->st_dev;
|
flp->device = statp->st_dev;
|
||||||
fl->fileList[fl->fileListRecsUsed].inode = statp->st_ino;
|
flp->inode = statp->st_ino;
|
||||||
|
|
||||||
fl->fileListRecsUsed++;
|
fl->fileListRecsUsed++;
|
||||||
|
|
||||||
fl->totalFileSize += statp->st_size;
|
fl->totalFileSize += flp->size;
|
||||||
fl->fileCount++;
|
fl->fileCount++;
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1036,10 +1029,8 @@ static int processBinaryFile(Package pkg, struct FileList *fl, char *fileName)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
x = 0;
|
for (x = 0; x < glob_result.gl_pathc; x++) {
|
||||||
while (x < glob_result.gl_pathc) {
|
|
||||||
rc = addFile(fl, &(glob_result.gl_pathv[x][offset]), NULL);
|
rc = addFile(fl, &(glob_result.gl_pathv[x][offset]), NULL);
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
globfree(&glob_result);
|
globfree(&glob_result);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1134,14 +1125,12 @@ static int processPackageFiles(Spec spec, Package pkg,
|
||||||
|
|
||||||
s = getStringBuf(pkg->fileList);
|
s = getStringBuf(pkg->fileList);
|
||||||
files = splitString(s, strlen(s), '\n');
|
files = splitString(s, strlen(s), '\n');
|
||||||
fp = files;
|
|
||||||
|
|
||||||
while (*fp) {
|
for (fp = files; *fp != NULL; fp++) {
|
||||||
s = *fp;
|
s = *fp;
|
||||||
SKIPSPACE(s);
|
SKIPSPACE(s);
|
||||||
if (! *s) {
|
if (*s == '\0')
|
||||||
fp++; continue;
|
continue;
|
||||||
}
|
|
||||||
fileName = NULL;
|
fileName = NULL;
|
||||||
strcpy(buf, s);
|
strcpy(buf, s);
|
||||||
|
|
||||||
|
@ -1153,42 +1142,33 @@ static int processPackageFiles(Spec spec, Package pkg,
|
||||||
fl.current.Pmode = fl.def.Pmode;
|
fl.current.Pmode = fl.def.Pmode;
|
||||||
fl.current.Pdirmode = fl.def.Pdirmode;
|
fl.current.Pdirmode = fl.def.Pdirmode;
|
||||||
fl.isSpecialDoc = 0;
|
fl.isSpecialDoc = 0;
|
||||||
|
|
||||||
FREE(fl.current.PmodeString);
|
FREE(fl.current.PmodeString);
|
||||||
FREE(fl.current.PdirmodeString);
|
FREE(fl.current.PdirmodeString);
|
||||||
FREE(fl.current.Uname);
|
FREE(fl.current.Uname);
|
||||||
FREE(fl.current.Gname);
|
FREE(fl.current.Gname);
|
||||||
FREE(fl.currentLang);
|
FREE(fl.currentLang);
|
||||||
if (fl.def.PmodeString) {
|
if (fl.def.PmodeString)
|
||||||
fl.current.PmodeString = strdup(fl.def.PmodeString);
|
fl.current.PmodeString = strdup(fl.def.PmodeString);
|
||||||
}
|
if (fl.def.PdirmodeString)
|
||||||
if (fl.def.PdirmodeString) {
|
|
||||||
fl.current.PdirmodeString = strdup(fl.def.PdirmodeString);
|
fl.current.PdirmodeString = strdup(fl.def.PdirmodeString);
|
||||||
}
|
if (fl.def.Uname)
|
||||||
if (fl.def.Uname) {
|
|
||||||
fl.current.Uname = strdup(fl.def.Uname);
|
fl.current.Uname = strdup(fl.def.Uname);
|
||||||
}
|
if (fl.def.Gname)
|
||||||
if (fl.def.Gname) {
|
|
||||||
fl.current.Gname = strdup(fl.def.Gname);
|
fl.current.Gname = strdup(fl.def.Gname);
|
||||||
}
|
|
||||||
|
|
||||||
if (parseForVerify(buf, &fl)) {
|
if (parseForVerify(buf, &fl))
|
||||||
fp++; continue;
|
continue;
|
||||||
}
|
if (parseForAttr(buf, &fl))
|
||||||
if (parseForAttr(buf, &fl)) {
|
continue;
|
||||||
fp++; continue;
|
if (parseForConfig(buf, &fl))
|
||||||
}
|
continue;
|
||||||
if (parseForConfig(buf, &fl)) {
|
if (parseForLang(buf, &fl))
|
||||||
fp++; continue;
|
continue;
|
||||||
}
|
if (parseForSimple(spec, pkg, buf, &fl, &fileName))
|
||||||
if (parseForLang(buf, &fl)) {
|
continue;
|
||||||
fp++; continue;
|
if (fileName == NULL)
|
||||||
}
|
continue;
|
||||||
if (parseForSimple(spec, pkg, buf, &fl, &fileName)) {
|
|
||||||
fp++; continue;
|
|
||||||
}
|
|
||||||
if (! fileName) {
|
|
||||||
fp++; continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fl.isSpecialDoc) {
|
if (fl.isSpecialDoc) {
|
||||||
/* Save this stuff for last */
|
/* Save this stuff for last */
|
||||||
|
@ -1211,8 +1191,6 @@ static int processPackageFiles(Spec spec, Package pkg,
|
||||||
} else {
|
} else {
|
||||||
processBinaryFile(pkg, &fl, fileName);
|
processBinaryFile(pkg, &fl, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
fp++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now process special doc, if there is one */
|
/* Now process special doc, if there is one */
|
||||||
|
@ -1269,7 +1247,6 @@ int processSourceFiles(Spec spec)
|
||||||
int x, isSpec = 1;
|
int x, isSpec = 1;
|
||||||
struct FileList fl;
|
struct FileList fl;
|
||||||
char *s, **files, **fp, *fn;
|
char *s, **files, **fp, *fn;
|
||||||
struct stat sb;
|
|
||||||
HeaderIterator hi;
|
HeaderIterator hi;
|
||||||
int tag, type, count;
|
int tag, type, count;
|
||||||
Package pkg;
|
Package pkg;
|
||||||
|
@ -1357,7 +1334,7 @@ int processSourceFiles(Spec spec)
|
||||||
spec->sourceCpioList = NULL;
|
spec->sourceCpioList = NULL;
|
||||||
spec->sourceCpioCount = 0;
|
spec->sourceCpioCount = 0;
|
||||||
|
|
||||||
fl.fileList = malloc((spec->numSources + 1) * sizeof(struct FileListRec));
|
fl.fileList = malloc((spec->numSources + 1) * sizeof(FileListRec));
|
||||||
fl.processingFailed = 0;
|
fl.processingFailed = 0;
|
||||||
fl.fileListRecsUsed = 0;
|
fl.fileListRecsUsed = 0;
|
||||||
fl.totalFileSize = 0;
|
fl.totalFileSize = 0;
|
||||||
|
@ -1365,54 +1342,58 @@ int processSourceFiles(Spec spec)
|
||||||
|
|
||||||
s = getStringBuf(sourceFiles);
|
s = getStringBuf(sourceFiles);
|
||||||
files = splitString(s, strlen(s), '\n');
|
files = splitString(s, strlen(s), '\n');
|
||||||
fp = files;
|
|
||||||
|
|
||||||
/* The first source file is the spec file */
|
/* The first source file is the spec file */
|
||||||
x = 0;
|
x = 0;
|
||||||
while (*fp) {
|
for (fp = files; *fp != NULL; fp++) {
|
||||||
|
FileListRec *flp;
|
||||||
s = *fp;
|
s = *fp;
|
||||||
SKIPSPACE(s);
|
SKIPSPACE(s);
|
||||||
if (! *s) {
|
if (! *s)
|
||||||
fp++; continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
fl.fileList[x].flags = isSpec ? RPMFILE_SPECFILE : 0;
|
flp = &fl.fileList[x];
|
||||||
|
|
||||||
|
flp->flags = isSpec ? RPMFILE_SPECFILE : 0;
|
||||||
/* files with leading ! are no source files */
|
/* files with leading ! are no source files */
|
||||||
if (*s == '!') {
|
if (*s == '!') {
|
||||||
fl.fileList[x].flags |= RPMFILE_GHOST;
|
flp->flags |= RPMFILE_GHOST;
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
fl.fileList[x].diskName = strdup(s);
|
flp->diskName = strdup(s);
|
||||||
fn = strrchr(s, '/');
|
fn = strrchr(s, '/');
|
||||||
if (fn) {
|
if (fn) {
|
||||||
fn++;
|
fn++;
|
||||||
} else {
|
} else {
|
||||||
fn = s;
|
fn = s;
|
||||||
}
|
}
|
||||||
fl.fileList[x].fileName = strdup(fn);
|
flp->fileName = strdup(fn);
|
||||||
fl.fileList[x].verifyFlags = RPMVERIFY_ALL;
|
flp->verifyFlags = RPMVERIFY_ALL;
|
||||||
|
|
||||||
|
{ struct stat sb;
|
||||||
stat(s, &sb);
|
stat(s, &sb);
|
||||||
fl.fileList[x].mode = sb.st_mode;
|
flp->mode = sb.st_mode;
|
||||||
fl.fileList[x].uid = sb.st_uid;
|
flp->uid = sb.st_uid;
|
||||||
fl.fileList[x].gid = sb.st_gid;
|
flp->gid = sb.st_gid;
|
||||||
fl.fileList[x].uname = getUname(sb.st_uid);
|
flp->size = sb.st_size;
|
||||||
fl.fileList[x].gname = getGname(sb.st_gid);
|
flp->mtime = sb.st_mtime;
|
||||||
fl.fileList[x].size = sb.st_size;
|
flp->rdev = sb.st_rdev;
|
||||||
fl.fileList[x].mtime = sb.st_mtime;
|
flp->device = sb.st_dev;
|
||||||
fl.fileList[x].rdev = sb.st_rdev;
|
flp->inode = sb.st_ino;
|
||||||
fl.fileList[x].device = sb.st_dev;
|
}
|
||||||
fl.fileList[x].inode = sb.st_ino;
|
|
||||||
fl.fileList[x].lang = strdup("");
|
|
||||||
|
|
||||||
fl.totalFileSize += sb.st_size;
|
flp->uname = getUname(flp->uid);
|
||||||
|
flp->gname = getGname(flp->gid);
|
||||||
|
flp->lang = strdup("");
|
||||||
|
|
||||||
if (! (fl.fileList[x].uname && fl.fileList[x].gname)) {
|
fl.totalFileSize += flp->size;
|
||||||
|
|
||||||
|
if (! (flp->uname && flp->gname)) {
|
||||||
rpmError(RPMERR_BADSPEC, _("Bad owner/group: %s"), s);
|
rpmError(RPMERR_BADSPEC, _("Bad owner/group: %s"), s);
|
||||||
fl.processingFailed = 1;
|
fl.processingFailed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
isSpec = 0;
|
isSpec = 0;
|
||||||
fp++;
|
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
fl.fileListRecsUsed = x;
|
fl.fileListRecsUsed = x;
|
||||||
|
@ -1566,14 +1547,13 @@ static int generateAutoReqProv(Spec spec, Package pkg,
|
||||||
return RPMERR_EXEC;
|
return RPMERR_EXEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
f = fsave = splitString(getStringBuf(readBuf),
|
fsave = splitString(getStringBuf(readBuf),
|
||||||
strlen(getStringBuf(readBuf)), '\n');
|
strlen(getStringBuf(readBuf)), '\n');
|
||||||
freeStringBuf(readBuf);
|
freeStringBuf(readBuf);
|
||||||
while (*f) {
|
for (f = fsave; *f != NULL; f++) {
|
||||||
if (**f) {
|
if (**f) {
|
||||||
addReqProv(spec, pkg, RPMSENSE_PROVIDES, *f, NULL, 0);
|
addReqProv(spec, pkg, RPMSENSE_PROVIDES, *f, NULL, 0);
|
||||||
}
|
}
|
||||||
f++;
|
|
||||||
}
|
}
|
||||||
freeSplitString(fsave);
|
freeSplitString(fsave);
|
||||||
}
|
}
|
||||||
|
@ -1593,14 +1573,13 @@ static int generateAutoReqProv(Spec spec, Package pkg,
|
||||||
return RPMERR_EXEC;
|
return RPMERR_EXEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
f = fsave = splitString(getStringBuf(readBuf),
|
fsave = splitString(getStringBuf(readBuf),
|
||||||
strlen(getStringBuf(readBuf)), '\n');
|
strlen(getStringBuf(readBuf)), '\n');
|
||||||
freeStringBuf(readBuf);
|
freeStringBuf(readBuf);
|
||||||
while (*f) {
|
for (f = fsave; *f != NULL; f++) {
|
||||||
if (**f) {
|
if (**f) {
|
||||||
addReqProv(spec, pkg, RPMSENSE_ANY, *f, NULL, 0);
|
addReqProv(spec, pkg, RPMSENSE_ANY, *f, NULL, 0);
|
||||||
}
|
}
|
||||||
f++;
|
|
||||||
}
|
}
|
||||||
freeSplitString(fsave);
|
freeSplitString(fsave);
|
||||||
}
|
}
|
||||||
|
@ -1624,10 +1603,8 @@ static void printReqs(Spec spec, Package pkg)
|
||||||
if (headerGetEntry(pkg->header, RPMTAG_PROVIDES,
|
if (headerGetEntry(pkg->header, RPMTAG_PROVIDES,
|
||||||
NULL, (void **) &names, &count)) {
|
NULL, (void **) &names, &count)) {
|
||||||
rpmMessage(RPMMESS_NORMAL, _("Provides:"));
|
rpmMessage(RPMMESS_NORMAL, _("Provides:"));
|
||||||
x = 0;
|
for (x = 0; x < count; x++) {
|
||||||
while (x < count) {
|
|
||||||
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
rpmMessage(RPMMESS_NORMAL, "\n");
|
rpmMessage(RPMMESS_NORMAL, "\n");
|
||||||
FREE(names);
|
FREE(names);
|
||||||
|
@ -1637,8 +1614,7 @@ static void printReqs(Spec spec, Package pkg)
|
||||||
NULL, (void **) &names, &count)) {
|
NULL, (void **) &names, &count)) {
|
||||||
headerGetEntry(pkg->header, RPMTAG_REQUIREFLAGS,
|
headerGetEntry(pkg->header, RPMTAG_REQUIREFLAGS,
|
||||||
NULL, (void **) &flags, NULL);
|
NULL, (void **) &flags, NULL);
|
||||||
x = 0;
|
for (x = 0; x < count; x++) {
|
||||||
while (x < count) {
|
|
||||||
if (flags[x] & RPMSENSE_PREREQ) {
|
if (flags[x] & RPMSENSE_PREREQ) {
|
||||||
if (! startedPreReq) {
|
if (! startedPreReq) {
|
||||||
rpmMessage(RPMMESS_NORMAL, _("Prereqs:"));
|
rpmMessage(RPMMESS_NORMAL, _("Prereqs:"));
|
||||||
|
@ -1646,13 +1622,11 @@ static void printReqs(Spec spec, Package pkg)
|
||||||
}
|
}
|
||||||
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
if (startedPreReq) {
|
if (startedPreReq) {
|
||||||
rpmMessage(RPMMESS_NORMAL, "\n");
|
rpmMessage(RPMMESS_NORMAL, "\n");
|
||||||
}
|
}
|
||||||
x = 0;
|
for (x = 0; x < count; x++) {
|
||||||
while (x < count) {
|
|
||||||
if (! (flags[x] & RPMSENSE_PREREQ)) {
|
if (! (flags[x] & RPMSENSE_PREREQ)) {
|
||||||
if (! startedReq) {
|
if (! startedReq) {
|
||||||
rpmMessage(RPMMESS_NORMAL, _("Requires:"));
|
rpmMessage(RPMMESS_NORMAL, _("Requires:"));
|
||||||
|
@ -1660,7 +1634,6 @@ static void printReqs(Spec spec, Package pkg)
|
||||||
}
|
}
|
||||||
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
rpmMessage(RPMMESS_NORMAL, " %s", names[x]);
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
rpmMessage(RPMMESS_NORMAL, "\n");
|
rpmMessage(RPMMESS_NORMAL, "\n");
|
||||||
FREE(names);
|
FREE(names);
|
||||||
|
|
|
@ -48,7 +48,7 @@ char *getUname(uid_t uid)
|
||||||
* getUnameS() takes a username, gets the uid, and creates an entry in the
|
* getUnameS() takes a username, gets the uid, and creates an entry in the
|
||||||
* table to hold a string containing the user name.
|
* table to hold a string containing the user name.
|
||||||
*/
|
*/
|
||||||
char *getUnameS(char *uname)
|
char *getUnameS(const char *uname)
|
||||||
{
|
{
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
int x;
|
int x;
|
||||||
|
@ -113,7 +113,7 @@ char *getGname(gid_t gid)
|
||||||
* getGnameS() takes a group name, gets the gid, and creates an entry in the
|
* getGnameS() takes a group name, gets the gid, and creates an entry in the
|
||||||
* table to hold a string containing the group name.
|
* table to hold a string containing the group name.
|
||||||
*/
|
*/
|
||||||
char *getGnameS(char *gname)
|
char *getGnameS(const char *gname)
|
||||||
{
|
{
|
||||||
struct group *gr;
|
struct group *gr;
|
||||||
int x;
|
int x;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#define FREE(x) { if (x) free(x); x = NULL; }
|
#define FREE(x) { if (x) free((void *)x); x = NULL; }
|
||||||
#define SKIPSPACE(s) { while (*(s) && isspace(*(s))) (s)++; }
|
#define SKIPSPACE(s) { while (*(s) && isspace(*(s))) (s)++; }
|
||||||
#define SKIPNONSPACE(s) { while (*(s) && !isspace(*(s))) (s)++; }
|
#define SKIPNONSPACE(s) { while (*(s) && !isspace(*(s))) (s)++; }
|
||||||
#define SKIPTONEWLINE(s) { while (*s && *s != '\n') s++; }
|
#define SKIPTONEWLINE(s) { while (*s && *s != '\n') s++; }
|
||||||
|
@ -70,9 +70,9 @@ extern "C" {
|
||||||
/* from build/names.h */
|
/* from build/names.h */
|
||||||
|
|
||||||
char *getUname(uid_t uid);
|
char *getUname(uid_t uid);
|
||||||
char *getUnameS(char *uname);
|
char *getUnameS(const char *uname);
|
||||||
char *getGname(gid_t gid);
|
char *getGname(gid_t gid);
|
||||||
char *getGnameS(char *gname);
|
char *getGnameS(const char *gname);
|
||||||
|
|
||||||
char *const buildHost(void);
|
char *const buildHost(void);
|
||||||
time_t *const getBuildTime(void);
|
time_t *const getBuildTime(void);
|
||||||
|
|
|
@ -9,7 +9,7 @@ rpminc_HEADERS = dbindex.h header.h misc.h rpmlib.h rpmmacro.h stringbuf.h
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
cpio.h depends.h falloc.h install.h \
|
cpio.h depends.h falloc.h install.h \
|
||||||
md5.h oldheader.h oldrpmdb.h rpm_malloc.h \
|
md5.h oldheader.h oldrpmdb.h rpm_malloc.h \
|
||||||
rpmdb.h rpmlead.h signature.h tread.h
|
rpmdb.h rpmio.h rpmlead.h signature.h tread.h
|
||||||
|
|
||||||
lib_LIBRARIES = librpm.a
|
lib_LIBRARIES = librpm.a
|
||||||
librpm_a_SOURCES = \
|
librpm_a_SOURCES = \
|
||||||
|
@ -17,7 +17,7 @@ librpm_a_SOURCES = \
|
||||||
formats.c fs.c header.c install.c \
|
formats.c fs.c header.c install.c \
|
||||||
lookup.c macro.c md5.c md5sum.c \
|
lookup.c macro.c md5.c md5sum.c \
|
||||||
messages.c misc.c oldheader.c package.c query.c \
|
messages.c misc.c oldheader.c package.c query.c \
|
||||||
rebuilddb.c rpmdb.c rpmerr.c rpmlead.c \
|
rebuilddb.c rpmdb.c rpmerr.c rpmio.c rpmlead.c \
|
||||||
rpmrc.c signature.c stringbuf.c tagtable.c \
|
rpmrc.c signature.c stringbuf.c tagtable.c \
|
||||||
tread.c uninstall.c verify.c
|
tread.c uninstall.c verify.c
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@ rpminc_HEADERS = dbindex.h header.h misc.h rpmlib.h rpmmacro.h stringbuf.h
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
cpio.h depends.h falloc.h install.h \
|
cpio.h depends.h falloc.h install.h \
|
||||||
md5.h oldheader.h oldrpmdb.h rpm_malloc.h \
|
md5.h oldheader.h oldrpmdb.h rpm_malloc.h \
|
||||||
rpmdb.h rpmlead.h signature.h tread.h
|
rpmdb.h rpmio.h rpmlead.h signature.h tread.h
|
||||||
|
|
||||||
lib_LIBRARIES = librpm.a
|
lib_LIBRARIES = librpm.a
|
||||||
librpm_a_SOURCES = \
|
librpm_a_SOURCES = \
|
||||||
|
@ -135,7 +135,7 @@ librpm_a_SOURCES = \
|
||||||
formats.c fs.c header.c install.c \
|
formats.c fs.c header.c install.c \
|
||||||
lookup.c macro.c md5.c md5sum.c \
|
lookup.c macro.c md5.c md5sum.c \
|
||||||
messages.c misc.c oldheader.c package.c query.c \
|
messages.c misc.c oldheader.c package.c query.c \
|
||||||
rebuilddb.c rpmdb.c rpmerr.c rpmlead.c \
|
rebuilddb.c rpmdb.c rpmerr.c rpmio.c rpmlead.c \
|
||||||
rpmrc.c signature.c stringbuf.c tagtable.c \
|
rpmrc.c signature.c stringbuf.c tagtable.c \
|
||||||
tread.c uninstall.c verify.c
|
tread.c uninstall.c verify.c
|
||||||
|
|
||||||
|
@ -152,8 +152,9 @@ LDFLAGS = @LDFLAGS@
|
||||||
librpm_a_LIBADD =
|
librpm_a_LIBADD =
|
||||||
librpm_a_OBJECTS = cpio.o dbindex.o depends.o falloc.o formats.o fs.o \
|
librpm_a_OBJECTS = cpio.o dbindex.o depends.o falloc.o formats.o fs.o \
|
||||||
header.o install.o lookup.o macro.o md5.o md5sum.o messages.o misc.o \
|
header.o install.o lookup.o macro.o md5.o md5sum.o messages.o misc.o \
|
||||||
oldheader.o package.o query.o rebuilddb.o rpmdb.o rpmerr.o rpmlead.o \
|
oldheader.o package.o query.o rebuilddb.o rpmdb.o rpmerr.o rpmio.o \
|
||||||
rpmrc.o signature.o stringbuf.o tagtable.o tread.o uninstall.o verify.o
|
rpmlead.o rpmrc.o signature.o stringbuf.o tagtable.o tread.o \
|
||||||
|
uninstall.o verify.o
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||||
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
|
||||||
|
@ -171,9 +172,9 @@ DEP_FILES = .deps/cpio.P .deps/dbindex.P .deps/depends.P .deps/falloc.P \
|
||||||
.deps/lookup.P .deps/macro.P .deps/md5.P .deps/md5sum.P \
|
.deps/lookup.P .deps/macro.P .deps/md5.P .deps/md5sum.P \
|
||||||
.deps/messages.P .deps/misc.P .deps/oldheader.P .deps/package.P \
|
.deps/messages.P .deps/misc.P .deps/oldheader.P .deps/package.P \
|
||||||
.deps/query.P .deps/rebuilddb.P .deps/rpmdb.P .deps/rpmerr.P \
|
.deps/query.P .deps/rebuilddb.P .deps/rpmdb.P .deps/rpmerr.P \
|
||||||
.deps/rpmlead.P .deps/rpmrc.P .deps/signature.P .deps/stringbuf.P \
|
.deps/rpmio.P .deps/rpmlead.P .deps/rpmrc.P .deps/signature.P \
|
||||||
.deps/tagtable .deps/tagtable.P .deps/tread.P .deps/uninstall.P \
|
.deps/stringbuf.P .deps/tagtable .deps/tagtable.P .deps/tread.P \
|
||||||
.deps/verify.P
|
.deps/uninstall.P .deps/verify.P
|
||||||
SOURCES = $(librpm_a_SOURCES)
|
SOURCES = $(librpm_a_SOURCES)
|
||||||
OBJECTS = $(librpm_a_OBJECTS)
|
OBJECTS = $(librpm_a_OBJECTS)
|
||||||
|
|
||||||
|
|
|
@ -20,13 +20,13 @@ void MD5Update(struct MD5Context *context, unsigned char const *buf,
|
||||||
void MD5Final(unsigned char digest[16], struct MD5Context *context);
|
void MD5Final(unsigned char digest[16], struct MD5Context *context);
|
||||||
void MD5Transform(uint32 buf[4], uint32 const in[16]);
|
void MD5Transform(uint32 buf[4], uint32 const in[16]);
|
||||||
|
|
||||||
int mdfile(char *fn, unsigned char *digest);
|
int mdfile(const char *fn, unsigned char *digest);
|
||||||
int mdbinfile(char *fn, unsigned char *bindigest);
|
int mdbinfile(const char *fn, unsigned char *bindigest);
|
||||||
|
|
||||||
/* These assume a little endian machine and return incorrect results!
|
/* These assume a little endian machine and return incorrect results!
|
||||||
They are here for compatibility with old (broken) versions of RPM */
|
They are here for compatibility with old (broken) versions of RPM */
|
||||||
int mdfileBroken(char *fn, unsigned char *digest);
|
int mdfileBroken(const char *fn, unsigned char *digest);
|
||||||
int mdbinfileBroken(char *fn, unsigned char *bindigest);
|
int mdbinfileBroken(const char *fn, unsigned char *bindigest);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is needed to make RSAREF happy on some MS-DOS compilers.
|
* This is needed to make RSAREF happy on some MS-DOS compilers.
|
||||||
|
|
10
lib/md5sum.c
10
lib/md5sum.c
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
#include "md5.h"
|
#include "md5.h"
|
||||||
|
|
||||||
static int domd5(char * fn, unsigned char * digest, int asAscii,
|
static int domd5(const char * fn, unsigned char * digest, int asAscii,
|
||||||
int brokenEndian) {
|
int brokenEndian) {
|
||||||
unsigned char buf[1024];
|
unsigned char buf[1024];
|
||||||
unsigned char bindigest[16];
|
unsigned char bindigest[16];
|
||||||
|
@ -52,18 +52,18 @@ static int domd5(char * fn, unsigned char * digest, int asAscii,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mdbinfile(char *fn, unsigned char *bindigest) {
|
int mdbinfile(const char *fn, unsigned char *bindigest) {
|
||||||
return domd5(fn, bindigest, 0, 0);
|
return domd5(fn, bindigest, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int mdbinfileBroken(char *fn, unsigned char *bindigest) {
|
int mdbinfileBroken(const char *fn, unsigned char *bindigest) {
|
||||||
return domd5(fn, bindigest, 0, 1);
|
return domd5(fn, bindigest, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int mdfile(char *fn, unsigned char *digest) {
|
int mdfile(const char *fn, unsigned char *digest) {
|
||||||
return domd5(fn, digest, 1, 0);
|
return domd5(fn, digest, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int mdfileBroken(char *fn, unsigned char *digest) {
|
int mdfileBroken(const char *fn, unsigned char *digest) {
|
||||||
return domd5(fn, digest, 1, 1);
|
return domd5(fn, digest, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include "rpmlead.h"
|
#include "rpmlead.h"
|
||||||
#include "signature.h"
|
#include "signature.h"
|
||||||
|
|
||||||
typedef int (*md5func)(char * fn, unsigned char * digest);
|
typedef int (*md5func)(const char * fn, unsigned char * digest);
|
||||||
|
|
||||||
static int makePGPSignature(char *file, void **sig, int_32 *size,
|
static int makePGPSignature(char *file, void **sig, int_32 *size,
|
||||||
char *passPhrase);
|
char *passPhrase);
|
||||||
|
|
574
po/rpm.pot
574
po/rpm.pot
File diff suppressed because it is too large
Load Diff
|
@ -6,7 +6,7 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"POT-Creation-Date: 1998-11-19 18:16-0500\n"
|
"POT-Creation-Date: 1998-11-23 17:24-0500\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|
6
rpm.c
6
rpm.c
|
@ -72,6 +72,7 @@ static int shortCircuit;
|
||||||
static int showrc;
|
static int showrc;
|
||||||
static int signIt;
|
static int signIt;
|
||||||
static int test;
|
static int test;
|
||||||
|
static int useCatalog;
|
||||||
|
|
||||||
static int rpm_version;
|
static int rpm_version;
|
||||||
|
|
||||||
|
@ -79,9 +80,10 @@ static struct rpmQueryArguments queryArgs;
|
||||||
/* the structure describing the options we take and the defaults */
|
/* the structure describing the options we take and the defaults */
|
||||||
static struct poptOption optionsTable[] = {
|
static struct poptOption optionsTable[] = {
|
||||||
{ "addsign", '\0', 0, 0, GETOPT_ADDSIGN, NULL, NULL},
|
{ "addsign", '\0', 0, 0, GETOPT_ADDSIGN, NULL, NULL},
|
||||||
|
/* all and allmatches both using 'a' is dumb */
|
||||||
{ "all", 'a', 0, 0, 'a', NULL, NULL},
|
{ "all", 'a', 0, 0, 'a', NULL, NULL},
|
||||||
{ "allfiles", '\0', 0, &allFiles, 0, NULL, NULL},
|
{ "allfiles", '\0', 0, &allFiles, 0, NULL, NULL},
|
||||||
{ "allmatches", 'a', 0, &allMatches, 0, NULL, NULL},
|
{ "allmatches", '\0', 0, &allMatches, 0, NULL, NULL},
|
||||||
{ "badreloc", '\0', 0, &badReloc, 0, NULL, NULL},
|
{ "badreloc", '\0', 0, &badReloc, 0, NULL, NULL},
|
||||||
{ "build", 'b', POPT_ARG_STRING, 0, 'b', NULL, NULL},
|
{ "build", 'b', POPT_ARG_STRING, 0, 'b', NULL, NULL},
|
||||||
{ "buildarch", '\0', POPT_ARG_STRING, &arch, GETOPT_BUILDARCH, NULL, NULL},
|
{ "buildarch", '\0', POPT_ARG_STRING, &arch, GETOPT_BUILDARCH, NULL, NULL},
|
||||||
|
@ -139,6 +141,7 @@ static struct poptOption optionsTable[] = {
|
||||||
{ "timecheck", '\0', POPT_ARG_STRING, 0, GETOPT_TIMECHECK, NULL, NULL},
|
{ "timecheck", '\0', POPT_ARG_STRING, 0, GETOPT_TIMECHECK, NULL, NULL},
|
||||||
{ "upgrade", 'U', 0, 0, 'U', NULL, NULL},
|
{ "upgrade", 'U', 0, 0, 'U', NULL, NULL},
|
||||||
{ "uninstall", 'u', 0, 0, 'u', NULL, NULL},
|
{ "uninstall", 'u', 0, 0, 'u', NULL, NULL},
|
||||||
|
{ "usecatalog", '\0', 0, &useCatalog, 0, NULL, NULL},
|
||||||
{ "verbose", 'v', 0, 0, 'v', NULL, NULL},
|
{ "verbose", 'v', 0, 0, 'v', NULL, NULL},
|
||||||
{ "verify", 'V', 0, 0, 'V', NULL, NULL},
|
{ "verify", 'V', 0, 0, 'V', NULL, NULL},
|
||||||
{ NULL, 'y', 0, 0, 'V', NULL, NULL},
|
{ NULL, 'y', 0, 0, 'V', NULL, NULL},
|
||||||
|
@ -151,7 +154,6 @@ static struct poptOption optionsTable[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void argerror(char * desc);
|
static void argerror(char * desc);
|
||||||
|
|
||||||
static void argerror(char * desc) {
|
static void argerror(char * desc) {
|
||||||
|
|
Loading…
Reference in New Issue