RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 30-Jul-2007 21:42:59
Branch: HEAD Handle: 2007073020425801
Modified files:
rpm CHANGES
rpm/lib poptALL.c
rpm/rpmdb header.c librpmdb.vers
Log:
- --newmagic enabler to add new signature/metadata magic to headers.
Summary:
Revision Changes Path
1.1533 +1 -0 rpm/CHANGES
2.40 +3 -0 rpm/lib/poptALL.c
1.54 +23 -2 rpm/rpmdb/header.c
1.6 +1 -0 rpm/rpmdb/librpmdb.vers
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1532 -r1.1533 CHANGES
--- rpm/CHANGES 30 Jul 2007 18:38:28 -0000 1.1532
+++ rpm/CHANGES 30 Jul 2007 19:42:58 -0000 1.1533
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: --newmagic enabler to add new signature/metadata magic to headers.
- jbj: nobrainer --nolead & --nosigh disablers.
- jbj: get rid of convertdb1.
- jbj: HEADER_MAGIC_YES always: remove the enum and arguments everywhere.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/poptALL.c
============================================================================
$ cvs diff -u -r2.39 -r2.40 poptALL.c
--- rpm/lib/poptALL.c 30 Jul 2007 18:38:29 -0000 2.39
+++ rpm/lib/poptALL.c 30 Jul 2007 19:42:59 -0000 2.40
@@ -28,6 +28,7 @@
int _nolead = 0;
int _nosigh = 0;
+extern int _newmagic;
/[EMAIL PROTECTED]@*/
static int _debug = 0;
@@ -471,6 +472,8 @@
N_("disable rpm lead"), NULL},
{ "nosigh", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_nosigh, -1,
N_("disable rpm signature header"), NULL},
+ { "newmagic", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_newmagic, -1,
+ N_("dupe region tag into lsb of magic"), NULL},
POPT_TABLEEND
};
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.c
============================================================================
$ cvs diff -u -r1.53 -r1.54 header.c
--- rpm/rpmdb/header.c 30 Jul 2007 17:34:37 -0000 1.53
+++ rpm/rpmdb/header.c 30 Jul 2007 19:42:59 -0000 1.54
@@ -20,6 +20,8 @@
/[EMAIL PROTECTED]@*/
int _hdr_debug = 0;
+int _newmagic = 0;
+
/[EMAIL PROTECTED] entryInfo @*/
/[EMAIL PROTECTED] indexEntry @*/
@@ -39,6 +41,16 @@
0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
};
+/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
+static unsigned char sigh_magic[8] = {
+ 0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
+};
+
+/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
+static unsigned char meta_magic[8] = {
+ 0x8e, 0xad, 0xe8, 0x3c, 0x00, 0x00, 0x00, 0x00
+};
+
/** \ingroup header
* Alignment needed for header data types.
*/
@@ -1360,7 +1372,10 @@
/[EMAIL PROTECTED]@*/
{ /* XXX HEADER_MAGIC_YES */
magic = block[i++];
- if (memcmp(&magic, header_magic, sizeof(magic)))
+ if (!( !memcmp(&magic, header_magic, sizeof(magic))
+ || !memcmp(&magic, sigh_magic, sizeof(magic))
+ || !memcmp(&magic, meta_magic, sizeof(magic))
+ ))
goto exit;
reserved = block[i++];
}
@@ -1434,9 +1449,15 @@
if (uh == NULL)
return 1;
{ /* XXX HEADER_MAGIC_YES */
+ unsigned char mymagic[sizeof(header_magic)];
+
+ /* XXX create new magic from region marker. */
+ memcpy(mymagic, header_magic, sizeof(header_magic));
+ if (_newmagic && length > 16+3)
+ mymagic[3] = ((unsigned char *)uh)[16+3];
/[EMAIL PROTECTED]@*/
/[EMAIL PROTECTED]@*/
- nb = Fwrite(header_magic, sizeof(char), sizeof(header_magic), fd);
+ nb = Fwrite(mymagic, sizeof(char), sizeof(mymagic), fd);
/[EMAIL PROTECTED]@*/
/[EMAIL PROTECTED]@*/
if (nb != sizeof(header_magic))
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/librpmdb.vers
============================================================================
$ cvs diff -u -r1.5 -r1.6 librpmdb.vers
--- rpm/rpmdb/librpmdb.vers 27 Jun 2007 20:44:08 -0000 1.5
+++ rpm/rpmdb/librpmdb.vers 30 Jul 2007 19:42:59 -0000 1.6
@@ -37,6 +37,7 @@
hGetNEVRA;
_init;
rpm_mergesort;
+ _newmagic;
prDbiOpenFlags;
rdbOptions;
rpmDatabasePoptTable;
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]