From: jbj Date: Wed, 18 Jul 2001 10:49:09 +0000 (+0000) Subject: - fix: %dev(...) needs to map rdev and mtime from metadata. X-Git-Tag: tznext/4.11.0.1.tizen20130304~7711 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2225886928ab5e2784cf782f36355753236a1097;p=tools%2Flibrpm-tizen.git - fix: %dev(...) needs to map rdev and mtime from metadata. CVS patchset: 4953 CVS date: 2001/07/18 10:49:09 --- diff --git a/CHANGES b/CHANGES index 595da4e..8bba23f 100644 --- a/CHANGES +++ b/CHANGES @@ -177,6 +177,7 @@ - fix: short aliases broken (#49213). - python: "seal" immutable region for legacy headers in rhnUnload() . - python: add poptmodule.so bindings. + - fix: %dev(...) needs to map rdev and mtime from metadata. 4.0 -> 4.0.[12] - add doxygen and lclint annotations most everywhere. diff --git a/lib/fsm.c b/lib/fsm.c index 6940c51..6f09270 100644 --- a/lib/fsm.c +++ b/lib/fsm.c @@ -628,6 +628,10 @@ int fsmMapAttrs(FSM_t fsm) (fi->fuids ? fi->fuids[i] : fi->uid); /* XXX chmod u-s */ gid_t finalGid = (fi->fgids ? fi->fgids[i] : fi->gid); /* XXX chmod g-s */ + dev_t finalRdev = + (fi->frdevs ? fi->frdevs[i] : 0); + int_32 finalMtime = + (fi->fmtimes ? fi->fmtimes[i] : 0); if (fsm->mapFlags & CPIO_MAP_MODE) st->st_mode = (st->st_mode & S_IFMT) | (finalMode & ~S_IFMT); @@ -636,6 +640,8 @@ int fsmMapAttrs(FSM_t fsm) if ((S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode)) && st->st_nlink == 0) st->st_nlink = 1; + st->st_rdev = finalRdev; + st->st_mtime = finalMtime; } if (fsm->mapFlags & CPIO_MAP_UID) st->st_uid = finalUid; diff --git a/lib/psm.c b/lib/psm.c index b0f1f30..9fe34f9 100644 --- a/lib/psm.c +++ b/lib/psm.c @@ -129,6 +129,7 @@ void loadFi(Header h, TFI_t fi) rc = hge(fi->h, RPMTAG_FILELINKTOS, NULL, (void **) &fi->flinks, NULL); rc = hge(fi->h, RPMTAG_FILELANGS, NULL, (void **) &fi->flangs, NULL); rc = hge(fi->h, RPMTAG_FILEMTIMES, NULL, (void **) &fi->fmtimes, NULL); + rc = hge(fi->h, RPMTAG_FILERDEVS, NULL, (void **) &fi->frdevs, NULL); /* 0 makes for noops */ fi->replacedSizes = xcalloc(fi->fc, sizeof(*fi->replacedSizes)); diff --git a/lib/psm.h b/lib/psm.h index 3dd3f88..a88b0de 100644 --- a/lib/psm.h +++ b/lib/psm.h @@ -51,6 +51,7 @@ struct transactionFileInfo_s { /*@owned@*/ const char ** flinks; /*!< File link(s) (from header) */ /* XXX setuid/setgid bits are turned off if fuser/fgroup doesn't map. */ uint_16 * fmodes; /*!< File mode(s) (from header) */ + uint_16 * frdevs; /*!< File rdev(s) (from header) */ /*@only@*/ /*@null@*/ char * fstates; /*!< File state(s) (from header) */ /*@owned@*/ const char ** fuser; /*!< File owner(s) */ /*@owned@*/ const char ** fgroup; /*!< File group(s) */