RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 26-Jan-2008 18:05:02
Branch: HEAD Handle: 2008012617050200
Modified files:
rpm CHANGES
rpm/rpmdb hdrfmt.c rpmtag.h
Log:
- jbj: stub in RPMTAG_FILESTAT and RPMTAG_STAT extensions, w-i-p.
Summary:
Revision Changes Path
1.2099 +1 -0 rpm/CHANGES
1.63 +47 -0 rpm/rpmdb/hdrfmt.c
1.35 +2 -0 rpm/rpmdb/rpmtag.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2098 -r1.2099 CHANGES
--- rpm/CHANGES 26 Jan 2008 04:12:43 -0000 1.2098
+++ rpm/CHANGES 26 Jan 2008 17:05:02 -0000 1.2099
@@ -1,4 +1,5 @@
5.0.0 -> 5.1a1:
+ - jbj: stub in RPMTAG_FILESTAT and RPMTAG_STAT extensions, w-i-p.
- jbj: re-add PayloadFilesHavePrefix/CompressedFileNames w --lsb.
- rse: provide %{shrink:<body>} macro for removing leading+trailing and removing intermediate whitespaces
- rse: allow sub-shell and Lua independent speedy lookup of environment variables via %{getenv:<name>} in macros
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/hdrfmt.c
============================================================================
$ cvs diff -u -r1.62 -r1.63 hdrfmt.c
--- rpm/rpmdb/hdrfmt.c 23 Dec 2007 00:14:01 -0000 1.62
+++ rpm/rpmdb/hdrfmt.c 26 Jan 2008 17:05:02 -0000 1.63
@@ -1659,6 +1659,49 @@
return _fnTag(h, he);
}
+static int filestatTag(Header h, HE_t he)
+ /*@modifies he @*/
+{
+ rpmTagData paths = { .ptr = NULL };
+ /* _dev */
+ rpmTagData _ino = { .ptr = NULL };
+ rpmTagData _mode = { .ptr = NULL };
+ /* _nlink */
+ /* _uid */
+ /* _gid */
+ rpmTagData _rdev = { .ptr = NULL };
+ rpmTagData _size = { .ptr = NULL };
+ /* _blksize */
+ /* _blocks */
+ /* _atime */
+ rpmTagData _mtime = { .ptr = NULL };
+ /* st_ctime */
+ int rc;
+
+ he->tag = RPMTAG_BASENAMES;
+ if ((rc = _fnTag(h, he)) != 0 || he->c == 0)
+ goto exit;
+
+exit:
+ paths.ptr = _free(paths.ptr);
+ _ino.ptr = _free(_ino.ptr);
+ _mode.ptr = _free(_mode.ptr);
+ _rdev.ptr = _free(_rdev.ptr);
+ _size.ptr = _free(_size.ptr);
+ _mtime.ptr = _free(_mtime.ptr);
+ return rc;
+}
+
+static int diskstatTag(Header h, HE_t he)
+ /*@modifies he @*/
+{
+ int rc;
+
+ he->tag = RPMTAG_BASENAMES;
+ rc = _fnTag(h, he);
+ return rc;
+}
+
/*@-type@*/ /* FIX: cast? */
static struct headerSprintfExtension_s _headerCompoundFormats[] = {
{ HEADER_EXT_TAG, "RPMTAG_CHANGELOGNAME",
@@ -1687,6 +1730,10 @@
{ .tagFunction = filepathsTag } },
{ HEADER_EXT_TAG, "RPMTAG_ORIGPATHS",
{ .tagFunction = origpathsTag } },
+ { HEADER_EXT_TAG, "RPMTAG_FILESTAT",
+ { .tagFunction = filestatTag } },
+ { HEADER_EXT_TAG, "RPMTAG_STAT",
+ { .tagFunction = diskstatTag } },
{ HEADER_EXT_FORMAT, "armor",
{ .fmtFunction = armorFormat } },
{ HEADER_EXT_FORMAT, "base64",
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmtag.h
============================================================================
$ cvs diff -u -r1.34 -r1.35 rpmtag.h
--- rpm/rpmdb/rpmtag.h 28 Dec 2007 10:05:56 -0000 1.34
+++ rpm/rpmdb/rpmtag.h 26 Jan 2008 17:05:02 -0000 1.35
@@ -410,6 +410,8 @@
RPMTAG_TRACKPROG = 1204, /* s internal arbitrary */
RPMTAG_SANITYCHECK = 1205, /* s */
RPMTAG_SANITYCHECKPROG = 1206, /* s */
+ RPMTAG_FILESTAT = 1207, /* s[] stat(2) from metadata extension*/
+ RPMTAG_STAT = 1208, /* s[] stat(2) from disk extension */
/*@-enummemuse@*/
RPMTAG_FIRSTFREE_TAG /*!< internal */
@@ .
Received on Sat Jan 26 18:05:02 2008