8 #define _RPMPS_INTERNAL
24 #define S_ISDEV(m) (S_ISBLK((m)) || S_ISCHR((m)))
42 if (rootDir && *rootDir !=
'\0'
43 && !(rootDir[0] ==
'/' && rootDir[1] ==
'\0'))
45 int nb = strlen(fn) + strlen(rootDir) + 1;
52 while (t > tb && t[-1] ==
'/') {
77 if (fn == NULL ||
Lstat(fn, &sb) != 0) {
85 if (S_ISDIR(sb.st_mode))
91 #if CHOWN_FOLLOWS_SYMLINK
95 else if (S_ISFIFO(sb.st_mode))
98 else if (S_ISCHR(sb.st_mode))
101 else if (S_ISBLK(sb.st_mode))
124 const unsigned char * digest =
rpmfiDigest(fi, &dalgo, &dlen);
130 unsigned char * fdigest = memset(
alloca(dlen), 0, dlen);
132 rc =
dodigest(dalgo, fn, fdigest, 0, &fsize);
137 if (memcmp(fdigest, digest, dlen))
138 *res |= RPMVERIFY_FDIGEST;
146 if ((size =
Readlink(fn, linkto,
sizeof(linkto)-1)) == -1)
151 if (flink == NULL || strcmp(linkto, flink))
162 unsigned short metamode = fmode;
163 unsigned short filemode;
169 filemode = (
unsigned short)sb.st_mode;
174 if (fileAttrs & RPMFILE_GHOST) {
179 if (metamode != filemode)
184 if (S_ISCHR(fmode) != S_ISCHR(sb.st_mode)
185 || S_ISBLK(fmode) != S_ISBLK(sb.st_mode))
189 uint_16 st_rdev = (sb.st_rdev & 0xffff);
191 if (st_rdev != frdev)
198 *res |= RPMVERIFY_MTIME;
204 if (name == NULL || fuser == NULL || strcmp(name, fuser))
211 if (name == NULL || fgroup == NULL || strcmp(name, fgroup))
239 if (scriptFd != NULL)
247 if (scriptFd != NULL)
305 sprintf(te,
_(
"missing %c %s"),
306 ((fflags & RPMFILE_CONFIG) ?
'c' :
307 (fflags & RPMFILE_DOC) ?
'd' :
308 (fflags & RPMFILE_GHOST) ?
'g' :
317 const char * size, * digest, * link, * mtime, * mode;
318 const char * group, * user, * rdev;
319 static const char *
const aok =
".";
320 static const char *
const unknown =
"?";
324 #define _verify(_RPMVERIFY_F, _C) \
325 ((verifyResult & _RPMVERIFY_F) ? _C : aok)
326 #define _verifylink(_RPMVERIFY_F, _C) \
327 ((verifyResult & RPMVERIFY_READLINKFAIL) ? unknown : \
328 (verifyResult & _RPMVERIFY_F) ? _C : aok)
329 #define _verifyfile(_RPMVERIFY_F, _C) \
330 ((verifyResult & RPMVERIFY_READFAIL) ? unknown : \
331 (verifyResult & _RPMVERIFY_F) ? _C : aok)
346 sprintf(te,
"%s%s%s%s%s%s%s%s %c %s",
347 size, mode, digest, rdev, link, user, group, mtime,
348 ((fflags & RPMFILE_CONFIG) ?
'c' :
349 (fflags & RPMFILE_DOC) ?
'd' :
350 (fflags & RPMFILE_GHOST) ?
'g' :
407 if (ps != NULL && numProblems > 0) {
408 const char * pkgNEVR, * altNEVR;
413 for (i = 0; i < numProblems; i++) {
415 altNEVR = (p->altNEVR ? p->altNEVR :
"? ?altNEVR?");
416 if (altNEVR[0] ==
'R' && altNEVR[1] ==
' ')
417 nb +=
sizeof(
"\tRequires: ")-1;
418 if (altNEVR[0] ==
'C' && altNEVR[1] ==
' ')
419 nb +=
sizeof(
"\tConflicts: ")-1;
420 nb += strlen(altNEVR+2) +
sizeof(
"\n") - 1;
425 pkgNEVR = (ps->probs->pkgNEVR ? ps->probs->pkgNEVR :
"?pkgNEVR?");
426 sprintf(te,
_(
"Unsatisfied dependencies for %s:\n"), pkgNEVR);
428 for (i = 0; i < numProblems; i++) {
430 altNEVR = (p->altNEVR ? p->altNEVR :
"? ?altNEVR?");
431 if (altNEVR[0] ==
'R' && altNEVR[1] ==
' ')
432 te =
stpcpy(te,
"\tRequires: ");
433 if (altNEVR[0] ==
'C' && altNEVR[1] ==
' ')
434 te =
stpcpy(te,
"\tConflicts: ");
463 #if defined(__x86_64__)
471 #if defined(__x86_64__)
478 #if defined(__x86_64__)