18 #define _RPMSQ_INTERNAL
23 #define _RPMPS_INTERNAL
24 #define _RPMTS_INTERNAL
32 #define S_ISDEV(m) (S_ISBLK((m)) || S_ISCHR((m)))
61 if (rootDir && *rootDir !=
'\0'
62 && !(rootDir[0] ==
'/' && rootDir[1] ==
'\0'))
64 int nb = strlen(fn) + strlen(rootDir) + 1;
71 while (t > tb && t[-1] ==
'/') {
95 if (fn == NULL ||
Lstat(fn, &sb) != 0) {
103 if (S_ISDIR(sb.st_mode))
106 else if (
S_ISLNK(sb.st_mode)) {
109 #if CHOWN_FOLLOWS_SYMLINK
113 else if (S_ISFIFO(sb.st_mode))
116 else if (S_ISCHR(sb.st_mode))
119 else if (S_ISBLK(sb.st_mode))
141 const unsigned char * digest =
rpmfiDigest(fi, &dalgo, &dlen);
147 unsigned char * fdigest = memset(
alloca(dlen), 0, dlen);
149 rc =
dodigest(dalgo, fn, fdigest, 0, &fsize);
154 if (memcmp(fdigest, digest, dlen))
155 *res |= RPMVERIFY_FDIGEST;
163 if ((size =
Readlink(fn, linkto,
sizeof(linkto)-1)) == -1)
168 if (flink == NULL || strcmp(linkto, flink))
179 unsigned short metamode = fmode;
180 unsigned short filemode;
186 filemode = (
unsigned short)sb.st_mode;
191 if (fileAttrs & RPMFILE_GHOST) {
196 if (metamode != filemode)
201 if (S_ISCHR(fmode) != S_ISCHR(sb.st_mode)
202 || S_ISBLK(fmode) != S_ISBLK(sb.st_mode))
208 if (st_rdev != frdev)
215 *res |= RPMVERIFY_MTIME;
221 if (name == NULL || fuser == NULL || strcmp(name, fuser))
228 if (name == NULL || fgroup == NULL || strcmp(name, fgroup))
256 if (scriptFd != NULL)
269 if (scriptFd != NULL)
328 sprintf(te,
_(
"missing %c %s"),
329 ((fflags & RPMFILE_CONFIG) ?
'c' :
330 (fflags & RPMFILE_DOC) ?
'd' :
331 (fflags & RPMFILE_GHOST) ?
'g' :
338 sprintf(te,
" (%s)", strerror(
errno));
344 const char * size, * digest, *
link, * mtime, * mode;
345 const char * group, * user, * rdev;
346 static const char *
const aok =
".";
347 static const char *
const unknown =
"?";
350 ec = (verifyResult != 0);
353 #define _verify(_RPMVERIFY_F, _C) \
354 ((verifyResult & _RPMVERIFY_F) ? _C : aok)
355 #define _verifylink(_RPMVERIFY_F, _C) \
356 ((verifyResult & RPMVERIFY_READLINKFAIL) ? unknown : \
357 (verifyResult & _RPMVERIFY_F) ? _C : aok)
358 #define _verifyfile(_RPMVERIFY_F, _C) \
359 ((verifyResult & RPMVERIFY_READFAIL) ? unknown : \
360 (verifyResult & _RPMVERIFY_F) ? _C : aok)
375 sprintf(te,
"%s%s%s%s%s%s%s%s %c %s",
376 size, mode, digest, rdev, link, user, group, mtime,
377 ((fflags & RPMFILE_CONFIG) ?
'c' :
378 (fflags & RPMFILE_DOC) ?
'd' :
379 (fflags & RPMFILE_GHOST) ?
'g' :
433 const char * altNEVR;
434 const char * pkgNEVR = NULL;
447 assert(altNEVR != NULL);
448 if (altNEVR[0] ==
'R' && altNEVR[1] ==
' ')
449 nb +=
sizeof(
"\tRequires: ")-1;
450 if (altNEVR[0] ==
'C' && altNEVR[1] ==
' ')
451 nb +=
sizeof(
"\tConflicts: ")-1;
452 nb += strlen(altNEVR+2) +
sizeof(
"\n") - 1;
459 sprintf(te,
_(
"Unsatisfied dependencies for %s:\n"), pkgNEVR);
467 altNEVR =
"? ?altNEVR?";
468 if (altNEVR[0] ==
'R' && altNEVR[1] ==
' ')
469 te =
stpcpy(te,
"\tRequires: ");
470 if (altNEVR[0] ==
'C' && altNEVR[1] ==
' ')
471 te =
stpcpy(te,
"\tConflicts: ");