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: 02-Aug-2007 20:04:32
Branch: HEAD Handle: 2007080219043200
Modified files:
rpm CHANGES
rpm/lib formats.c
rpm/rpmdb Makefile.am header.h librpmdb.vers
Log:
- refactor most header extensions from -lrpm to -lrpmdb. heh, no
filenames, very sick and sad.
Summary:
Revision Changes Path
1.1548 +1 -0 rpm/CHANGES
2.104 +1 -1307 rpm/lib/formats.c
1.78 +1 -1 rpm/rpmdb/Makefile.am
1.19 +8 -0 rpm/rpmdb/header.h
1.7 +1 -0 rpm/rpmdb/librpmdb.vers
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1547 -r1.1548 CHANGES
--- rpm/CHANGES 2 Aug 2007 17:30:12 -0000 1.1547
+++ rpm/CHANGES 2 Aug 2007 18:04:32 -0000 1.1548
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: refactor most header extensions from -lrpm to -lrpmdb. heh, no
filenames, very sick and sad.
- jbj: add headerGetExtension(), mapped to gud old stuff for now.
- jbj: skeletal configgery for standalone index tables.
- jbj: another header-extension-less hack-a-round.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/formats.c
============================================================================
$ cvs diff -u -r2.103 -r2.104 formats.c
--- rpm/lib/formats.c 2 Aug 2007 15:03:08 -0000 2.103
+++ rpm/lib/formats.c 2 Aug 2007 18:04:32 -0000 2.104
@@ -20,812 +20,6 @@
#include "debug.h"
-/[EMAIL PROTECTED] pgpDig @*/
-/[EMAIL PROTECTED] pgpDigParams @*/
-
-/**
- * Identify type of trigger.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix (unused)
- * @param padding (unused)
- * @param element (unused)
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * triggertypeFormat(int_32 type, const
void * data,
- /[EMAIL PROTECTED]@*/ char * formatPrefix, /[EMAIL
PROTECTED]@*/ int padding,
- /[EMAIL PROTECTED]@*/ int element)
- /[EMAIL PROTECTED] maxRead(data) >= 0 @*/
-{
- const int_32 * item = data;
- char * val;
-
- if (type != RPM_INT32_TYPE)
- val = xstrdup(_("(invalid type)"));
- else if (*item & RPMSENSE_TRIGGERPREIN)
- val = xstrdup("prein");
- else if (*item & RPMSENSE_TRIGGERIN)
- val = xstrdup("in");
- else if (*item & RPMSENSE_TRIGGERUN)
- val = xstrdup("un");
- else if (*item & RPMSENSE_TRIGGERPOSTUN)
- val = xstrdup("postun");
- else
- val = xstrdup("");
- return val;
-}
-
-/**
- * Format file permissions for display.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix
- * @param padding
- * @param element (unused)
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * permsFormat(int_32 type, const void *
data,
- char * formatPrefix, int padding, /[EMAIL PROTECTED]@*/ int
element)
- /[EMAIL PROTECTED] formatPrefix @*/
- /[EMAIL PROTECTED] maxRead(data) >= 0 @*/
-{
- char * val;
- char * buf;
-
- if (type != RPM_INT32_TYPE) {
- val = xstrdup(_("(invalid type)"));
- } else {
- val = xmalloc(15 + padding);
-/[EMAIL PROTECTED]@*/
- strcat(formatPrefix, "s");
-/[EMAIL PROTECTED]@*/
- buf = rpmPermsString(*((int_32 *) data));
- /[EMAIL PROTECTED]@*/
- sprintf(val, formatPrefix, buf);
- /[EMAIL PROTECTED]@*/
- buf = _free(buf);
- }
-
- return val;
-}
-
-/**
- * Format file flags for display.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix
- * @param padding
- * @param element (unused)
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * fflagsFormat(int_32 type, const void *
data,
- char * formatPrefix, int padding, /[EMAIL PROTECTED]@*/ int
element)
- /[EMAIL PROTECTED] formatPrefix @*/
- /[EMAIL PROTECTED] maxRead(data) >= 0 @*/
-{
- char * val;
- char buf[15];
- int anint = *((int_32 *) data);
-
- if (type != RPM_INT32_TYPE) {
- val = xstrdup(_("(invalid type)"));
- } else {
- buf[0] = '\0';
-/[EMAIL PROTECTED]@*/
- if (anint & RPMFILE_DOC)
- strcat(buf, "d");
- if (anint & RPMFILE_CONFIG)
- strcat(buf, "c");
- if (anint & RPMFILE_SPECFILE)
- strcat(buf, "s");
- if (anint & RPMFILE_MISSINGOK)
- strcat(buf, "m");
- if (anint & RPMFILE_NOREPLACE)
- strcat(buf, "n");
- if (anint & RPMFILE_GHOST)
- strcat(buf, "g");
- if (anint & RPMFILE_LICENSE)
- strcat(buf, "l");
- if (anint & RPMFILE_README)
- strcat(buf, "r");
-/[EMAIL PROTECTED]@*/
-
- val = xmalloc(5 + padding);
-/[EMAIL PROTECTED]@*/
- strcat(formatPrefix, "s");
-/[EMAIL PROTECTED]@*/
- /[EMAIL PROTECTED]@*/
- sprintf(val, formatPrefix, buf);
- /[EMAIL PROTECTED]@*/
- }
-
- return val;
-}
-
-/**
- * Wrap a pubkey in ascii armor for display.
- * @todo Permit selectable display formats (i.e. binary).
- * @param type tag type
- * @param data tag value
- * @param formatPrefix (unused)
- * @param padding (unused)
- * @param element no. bytes of binary data
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * armorFormat(int_32 type, const void *
data,
- /[EMAIL PROTECTED]@*/ char * formatPrefix, /[EMAIL
PROTECTED]@*/ int padding,
- int element)
- /[EMAIL PROTECTED]/
-{
- const char * enc;
- const unsigned char * s;
- size_t ns;
- int atype;
- char * val;
-
- switch (type) {
- case RPM_OPENPGP_TYPE:
- case RPM_ASN1_TYPE: /* XXX WRONG */
- case RPM_BIN_TYPE:
- s = data;
- /* XXX HACK ALERT: element field abused as no. bytes of binary data. */
- ns = element;
- atype = PGPARMOR_SIGNATURE; /* XXX check pkt for signature */
- break;
- case RPM_STRING_TYPE:
- case RPM_STRING_ARRAY_TYPE:
- enc = data;
- s = NULL;
- ns = 0;
- if (b64decode(enc, (void **)&s, &ns))
- return xstrdup(_("(not base64)"));
- atype = PGPARMOR_PUBKEY; /* XXX check pkt for pubkey */
- break;
- case RPM_NULL_TYPE:
- case RPM_CHAR_TYPE:
- case RPM_INT8_TYPE:
- case RPM_INT16_TYPE:
- case RPM_INT32_TYPE:
- case RPM_INT64_TYPE:
- case RPM_I18NSTRING_TYPE:
- default:
- return xstrdup(_("(invalid type)"));
- /[EMAIL PROTECTED]@*/ break;
- }
-
- /* XXX this doesn't use padding directly, assumes enough slop in retval.
*/
- val = pgpArmorWrap(atype, s, ns);
- if (atype == PGPARMOR_PUBKEY)
- s = _free(s);
- return val;
-}
-
-/**
- * Encode binary data in base64 for display.
- * @todo Permit selectable display formats (i.e. binary).
- * @param type tag type
- * @param data tag value
- * @param formatPrefix (unused)
- * @param padding
- * @param element
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * base64Format(int_32 type, const void *
data,
- /[EMAIL PROTECTED]@*/ char * formatPrefix, int padding, int
element)
- /[EMAIL PROTECTED]/
-{
- char * val;
-
- if (!(type == RPM_BIN_TYPE || type == RPM_ASN1_TYPE || type ==
RPM_OPENPGP_TYPE)) {
- val = xstrdup(_("(not a blob)"));
- } else {
- const char * enc;
- char * t;
- int lc;
- /* XXX HACK ALERT: element field abused as no. bytes of binary data. */
- size_t ns = element;
- size_t nt = ((ns + 2) / 3) * 4;
-
-/[EMAIL PROTECTED]@*/
- /[EMAIL PROTECTED]@*/
- /* Add additional bytes necessary for eol string(s). */
- if (b64encode_chars_per_line > 0 && b64encode_eolstr != NULL) {
- lc = (nt + b64encode_chars_per_line - 1) / b64encode_chars_per_line;
- if (((nt + b64encode_chars_per_line - 1) % b64encode_chars_per_line) !=
0)
- ++lc;
- nt += lc * strlen(b64encode_eolstr);
- }
- /[EMAIL PROTECTED]@*/
-
- val = t = xcalloc(1, nt + padding + 1);
- *t = '\0';
-
- /* XXX b64encode accesses uninitialized memory. */
- { unsigned char * _data = xcalloc(1, ns+1);
- memcpy(_data, data, ns);
- if ((enc = b64encode(_data, ns)) != NULL) {
- t = stpcpy(t, enc);
- enc = _free(enc);
- }
- _data = _free(_data);
- }
-/[EMAIL PROTECTED]@*/
- }
-
- return val;
-}
-
-/**
- * Return length of string represented with xml characters substituted.
- * @param s string
- * @return length of xml string
- */
-static size_t xmlstrlen(const char * s)
- /[EMAIL PROTECTED]/
-{
- size_t len = 0;
- int c;
-
-/[EMAIL PROTECTED]@*/
- while ((c = *s++) != '\0')
-/[EMAIL PROTECTED]@*/
- {
- switch (c) {
- case '<':
- case '>': len += sizeof("<") - 1; /[EMAIL PROTECTED]@*/
break;
- case '&': len += sizeof("&") - 1; /[EMAIL PROTECTED]@*/
break;
- default: len += 1; /[EMAIL PROTECTED]@*/
break;
- }
- }
- return len;
-}
-
-/**
- * Copy source string to target, substituting for xml characters.
- * @param t target xml string
- * @param s source string
- * @return target xml string
- */
-static char * xmlstrcpy(/[EMAIL PROTECTED]@*/ char * t, const char * s)
- /[EMAIL PROTECTED] t @*/
-{
- char * te = t;
- int c;
-
-/[EMAIL PROTECTED]@*/
- while ((c = *s++) != '\0') {
- switch (c) {
- case '<': te = stpcpy(te, "<"); /[EMAIL PROTECTED]@*/
break;
- case '>': te = stpcpy(te, ">"); /[EMAIL PROTECTED]@*/
break;
- case '&': te = stpcpy(te, "&"); /[EMAIL PROTECTED]@*/
break;
- default: *te++ = c; /[EMAIL PROTECTED]@*/
break;
- }
- }
- *te = '\0';
-/[EMAIL PROTECTED]@*/
- return t;
-}
-
-/**
- * Wrap tag data in simple header xml markup.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix
- * @param padding
- * @param element (unused)
- * @return formatted string
- */
-/[EMAIL PROTECTED]@*/
-static /[EMAIL PROTECTED]@*/ char * xmlFormat(int_32 type, const void * data,
- char * formatPrefix, int padding,
- /[EMAIL PROTECTED]@*/ int element)
- /[EMAIL PROTECTED] formatPrefix @*/
-{
- const char * xtag = NULL;
- size_t nb;
- char * val;
- const char * s = NULL;
- char * t, * te;
- unsigned long long anint = 0;
- int freeit = 0;
- int xx;
-
-/[EMAIL PROTECTED]@*/
- switch (type) {
- case RPM_I18NSTRING_TYPE:
- case RPM_STRING_TYPE:
- s = data;
- xtag = "string";
- /* XXX Force utf8 strings. */
- s = xstrdup(s);
- s = xstrtolocale(s);
- freeit = 1;
- break;
- case RPM_OPENPGP_TYPE:
- case RPM_ASN1_TYPE:
- case RPM_BIN_TYPE:
- { int cpl = b64encode_chars_per_line;
-/[EMAIL PROTECTED]@*/
- b64encode_chars_per_line = 0;
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- s = base64Format(type, data, formatPrefix, padding, element);
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- b64encode_chars_per_line = cpl;
-/[EMAIL PROTECTED]@*/
- xtag = "base64";
- freeit = 1;
- } break;
- case RPM_CHAR_TYPE:
- case RPM_INT8_TYPE:
- anint = *((uint_8 *) data);
- break;
- case RPM_INT16_TYPE:
- anint = *((uint_16 *) data);
- break;
- case RPM_INT32_TYPE:
- anint = *((uint_32 *) data);
- break;
- case RPM_INT64_TYPE:
- anint = *((uint_64 *) data);
- break;
- case RPM_NULL_TYPE:
- case RPM_STRING_ARRAY_TYPE:
- default:
- return xstrdup(_("(invalid xml type)"));
- /[EMAIL PROTECTED]@*/ break;
- }
-/[EMAIL PROTECTED]@*/
-
-/[EMAIL PROTECTED]@*/
- if (s == NULL) {
- int tlen = 64;
- t = memset(alloca(tlen+1), 0, tlen+1);
-/[EMAIL PROTECTED]@*/
- if (anint != 0)
- xx = snprintf(t, tlen, "%llu", anint);
-/[EMAIL PROTECTED]@*/
- s = t;
- xtag = "integer";
- }
-/[EMAIL PROTECTED]@*/
-
- nb = xmlstrlen(s);
- if (nb == 0) {
- nb += strlen(xtag) + sizeof("\t</>");
- te = t = alloca(nb);
- te = stpcpy( stpcpy( stpcpy(te, "\t<"), xtag), "/>");
- } else {
- nb += 2 * strlen(xtag) + sizeof("\t<></>");
- te = t = alloca(nb);
- te = stpcpy( stpcpy( stpcpy(te, "\t<"), xtag), ">");
- te = xmlstrcpy(te, s);
- te += strlen(te);
- te = stpcpy( stpcpy( stpcpy(te, "</"), xtag), ">");
- }
-
-/[EMAIL PROTECTED]@*/
- if (freeit)
- s = _free(s);
-/[EMAIL PROTECTED]@*/
-
- nb += padding;
- val = xmalloc(nb+1);
-/[EMAIL PROTECTED]@*/
- strcat(formatPrefix, "s");
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- xx = snprintf(val, nb, formatPrefix, t);
-/[EMAIL PROTECTED]@*/
- val[nb] = '\0';
-
- return val;
-}
-/[EMAIL PROTECTED]@*/
-
-/**
- * Return length of string represented with yaml indentation.
- * @param s string
- * @param lvl indentation level
- * @return length of yaml string
- */
-static size_t yamlstrlen(const char * s, int lvl)
- /[EMAIL PROTECTED]/
-{
- size_t len = 0;
- int indent = (lvl > 0);
- int c;
-
-/[EMAIL PROTECTED]@*/
- while ((c = *s++) != '\0')
-/[EMAIL PROTECTED]@*/
- {
- if (indent) {
- len += 2 * lvl;
- indent = 0;
- }
- if (c == '\n')
- indent = (lvl > 0);
- len++;
- }
- return len;
-}
-
-/**
- * Copy source string to target, indenting for yaml.
- * @param t target yaml string
- * @param s source string
- * @param lvl indentation level
- * @return target yaml string
- */
-static char * yamlstrcpy(/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ char *
t, const char * s, int lvl)
- /[EMAIL PROTECTED] t @*/
-{
- char * te = t;
- int indent = (lvl > 0);
- int c;
-
-/[EMAIL PROTECTED]@*/
- while ((c = *s++) != '\0') {
- if (indent) {
- int i;
- for (i = 0; i < lvl; i++) {
- *te++ = ' ';
- *te++ = ' ';
- }
- indent = 0;
- }
- if (c == '\n')
- indent = (lvl > 0);
- *te++ = c;
- }
- *te = '\0';
-/[EMAIL PROTECTED]@*/
- return t;
-}
-
-/**
- * Wrap tag data in simple header yaml markup.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix
- * @param padding
- * @param element element index (or -1 for non-array).
- * @return formatted string
- */
-/[EMAIL PROTECTED]@*/
-static /[EMAIL PROTECTED]@*/ char * yamlFormat(int_32 type, const void *
data,
- char * formatPrefix, int padding,
- int element)
- /[EMAIL PROTECTED] formatPrefix @*/
-{
- const char * xtag = NULL;
- const char * ytag = NULL;
- size_t nb;
- char * val;
- const char * s = NULL;
- char * t, * te;
- unsigned long long anint = 0;
- int freeit = 0;
- int lvl = 0;
- int xx;
- int c;
-
-/[EMAIL PROTECTED]@*/
- switch (type) {
- case RPM_I18NSTRING_TYPE:
- case RPM_STRING_TYPE:
- xx = 0;
- s = data;
- if (strchr("[", s[0])) /* leading [ */
- xx = 1;
- if (xx == 0)
- while ((c = *s++) != '\0') {
- switch (c) {
- default:
- continue;
- case '\n': /* multiline */
- xx = 1;
- /[EMAIL PROTECTED]@*/ break;
- case '-': /* leading "- \"" */
- case ':': /* embedded ": " or ":" at EOL */
- if (s[0] != ' ' && s[0] != '\0' && s[1] != '"')
- continue;
- xx = 1;
- /[EMAIL PROTECTED]@*/ break;
- }
- /[EMAIL PROTECTED]@*/ break;
- }
- if (xx) {
- if (element >= 0) {
- xtag = "- |-\n";
- lvl = 3;
- } else {
- xtag = "|-\n";
- lvl = 2;
- }
- } else {
- xtag = (element >= 0 ? "- " : NULL);
- }
-
- /* XXX Force utf8 strings. */
- s = xstrdup(data);
- s = xstrtolocale(s);
- freeit = 1;
- break;
- case RPM_OPENPGP_TYPE:
- case RPM_ASN1_TYPE:
- case RPM_BIN_TYPE:
- { int cpl = b64encode_chars_per_line;
-/[EMAIL PROTECTED]@*/
- b64encode_chars_per_line = 0;
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- s = base64Format(type, data, formatPrefix, padding, element);
- element = -element; /* XXX skip " " indent. */
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- b64encode_chars_per_line = cpl;
-/[EMAIL PROTECTED]@*/
- xtag = "!!binary ";
- freeit = 1;
- } break;
- case RPM_CHAR_TYPE:
- case RPM_INT8_TYPE:
- anint = *((uint_8 *) data);
- break;
- case RPM_INT16_TYPE:
- anint = *((uint_16 *) data);
- break;
- case RPM_INT32_TYPE:
- anint = *((uint_32 *) data);
- break;
- case RPM_INT64_TYPE:
- anint = *((uint_64 *) data);
- break;
- case RPM_NULL_TYPE:
- case RPM_STRING_ARRAY_TYPE:
- default:
- return xstrdup(_("(invalid yaml type)"));
- /[EMAIL PROTECTED]@*/ break;
- }
-/[EMAIL PROTECTED]@*/
-
-/[EMAIL PROTECTED]@*/
- if (s == NULL) {
- int tlen = 64;
- t = memset(alloca(tlen+1), 0, tlen+1);
-/[EMAIL PROTECTED]@*/
- xx = snprintf(t, tlen, "%llu", anint);
-/[EMAIL PROTECTED]@*/
- s = t;
- xtag = (element >= 0 ? "- " : NULL);
- }
-/[EMAIL PROTECTED]@*/
-
- nb = yamlstrlen(s, lvl);
- if (nb == 0) {
- if (element >= 0)
- nb += sizeof(" ") - 1;
- nb += sizeof("- ~") - 1;
- nb++;
- te = t = alloca(nb);
- if (element >= 0)
- te = stpcpy(te, " ");
- te = stpcpy(te, "- ~");
- } else {
- if (element >= 0)
- nb += sizeof(" ") - 1;
- if (xtag)
- nb += strlen(xtag);
- if (ytag)
- nb += strlen(ytag);
- nb++;
- te = t = alloca(nb);
- if (element >= 0)
- te = stpcpy(te, " ");
- if (xtag)
- te = stpcpy(te, xtag);
- te = yamlstrcpy(te, s, lvl);
- te += strlen(te);
- if (ytag)
- te = stpcpy(te, ytag);
- }
-
- /* XXX s was malloc'd */
-/[EMAIL PROTECTED]@*/
- if (freeit)
- s = _free(s);
-/[EMAIL PROTECTED]@*/
-
- nb += padding;
- val = xmalloc(nb+1);
-/[EMAIL PROTECTED]@*/
- strcat(formatPrefix, "s");
-/[EMAIL PROTECTED]@*/
-/[EMAIL PROTECTED]@*/
- xx = snprintf(val, nb, formatPrefix, t);
-/[EMAIL PROTECTED]@*/
- val[nb] = '\0';
-
- return val;
-}
-/[EMAIL PROTECTED]@*/
-
-/**
- * Display signature fingerprint and time.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix (unused)
- * @param padding
- * @param element (unused)
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * pgpsigFormat(int_32 type, const void *
data,
- /[EMAIL PROTECTED]@*/ char * formatPrefix, /[EMAIL
PROTECTED]@*/ int padding,
- /[EMAIL PROTECTED]@*/ int element)
- /[EMAIL PROTECTED] fileSystem, internalState @*/
- /[EMAIL PROTECTED] fileSystem, internalState @*/
-{
- char * val, * t;
-
- if (!(type == RPM_BIN_TYPE || type == RPM_ASN1_TYPE || type ==
RPM_OPENPGP_TYPE)) {
- val = xstrdup(_("(not a blob)"));
- } else {
- unsigned char * pkt = (byte *) data;
- unsigned int pktlen = 0;
-/[EMAIL PROTECTED]@*/
- unsigned int v = *pkt;
-/[EMAIL PROTECTED]@*/
- pgpTag tag = 0;
- unsigned int plen;
- unsigned int hlen = 0;
-
- if (v & 0x80) {
- if (v & 0x40) {
- tag = (v & 0x3f);
- plen = pgpLen(pkt+1, &hlen);
- } else {
- tag = (v >> 2) & 0xf;
- plen = (1 << (v & 0x3));
- hlen = pgpGrab(pkt+1, plen);
- }
-
- pktlen = 1 + plen + hlen;
- }
-
- if (pktlen == 0 || tag != PGPTAG_SIGNATURE) {
- val = xstrdup(_("(not an OpenPGP signature)"));
- } else {
- pgpDig dig = pgpNewDig();
- pgpDigParams sigp = &dig->signature;
- size_t nb = 0;
- const char *tempstr;
-
- (void) pgpPrtPkts(pkt, pktlen, dig, 0);
-
- val = NULL;
- again:
- nb += 100;
- val = t = xrealloc(val, nb + 1);
-
-/[EMAIL PROTECTED]@*/
- switch (sigp->pubkey_algo) {
- case PGPPUBKEYALGO_DSA:
- t = stpcpy(t, "DSA");
- break;
- case PGPPUBKEYALGO_RSA:
- t = stpcpy(t, "RSA");
- break;
- default:
- (void) snprintf(t, nb - (t - val), "%d", sigp->pubkey_algo);
- t += strlen(t);
- break;
- }
- if (t + 5 >= val + nb)
- goto again;
- *t++ = '/';
- switch (sigp->hash_algo) {
- case PGPHASHALGO_MD5:
- t = stpcpy(t, "MD5");
- break;
- case PGPHASHALGO_SHA1:
- t = stpcpy(t, "SHA1");
- break;
- default:
- (void) snprintf(t, nb - (t - val), "%d", sigp->hash_algo);
- t += strlen(t);
- break;
- }
- if (t + strlen (", ") + 1 >= val + nb)
- goto again;
-
- t = stpcpy(t, ", ");
-
- /* this is important if sizeof(int_32) ! sizeof(time_t) */
- { time_t dateint = pgpGrab(sigp->time, sizeof(sigp->time));
- struct tm * tstruct = localtime(&dateint);
- if (tstruct)
- (void) strftime(t, (nb - (t - val)), "%c", tstruct);
- }
- t += strlen(t);
- if (t + strlen (", Key ID ") + 1 >= val + nb)
- goto again;
- t = stpcpy(t, ", Key ID ");
- tempstr = pgpHexStr(sigp->signid, sizeof(sigp->signid));
- if (t + strlen (tempstr) > val + nb)
- goto again;
- t = stpcpy(t, tempstr);
-/[EMAIL PROTECTED]@*/
-
- dig = pgpFreeDig(dig);
- }
- }
-
- return val;
-}
-
-/**
- * Format dependency flags for display.
- * @param type tag type
- * @param data tag value
- * @param formatPrefix
- * @param padding
- * @param element (unused)
- * @return formatted string
- */
-static /[EMAIL PROTECTED]@*/ char * depflagsFormat(int_32 type, const void *
data,
- char * formatPrefix, int padding, /[EMAIL PROTECTED]@*/ int
element)
- /[EMAIL PROTECTED] formatPrefix @*/
- /[EMAIL PROTECTED] maxRead(data) >= 0 @*/
-{
- char * val;
-
- if (type != RPM_INT32_TYPE) {
- val = xstrdup(_("(invalid type)"));
- } else {
- int anint = *((int_32 *) data);
- char *t, *buf;
-
- t = buf = alloca(32);
- *t = '\0';
-
-/[EMAIL PROTECTED]@*/
-#ifdef NOTYET /* XXX appending markers breaks :depflags format. */
- if (anint & RPMSENSE_SCRIPT_PRE)
- t = stpcpy(t, "(pre)");
- if (anint & RPMSENSE_SCRIPT_POST)
- t = stpcpy(t, "(post)");
- if (anint & RPMSENSE_SCRIPT_PREUN)
- t = stpcpy(t, "(preun)");
- if (anint & RPMSENSE_SCRIPT_POSTUN)
- t = stpcpy(t, "(postun)");
-#endif
- if (anint & RPMSENSE_SENSEMASK)
- *t++ = ' ';
- if (anint & RPMSENSE_LESS)
- *t++ = '<';
- if (anint & RPMSENSE_GREATER)
- *t++ = '>';
- if (anint & RPMSENSE_EQUAL)
- *t++ = '=';
- if (anint & RPMSENSE_SENSEMASK)
- *t++ = ' ';
- *t = '\0';
-/[EMAIL PROTECTED]@*/
-
- val = xmalloc(5 + padding);
-/[EMAIL PROTECTED]@*/
- strcat(formatPrefix, "s");
-/[EMAIL PROTECTED]@*/
- /[EMAIL PROTECTED]@*/
- sprintf(val, formatPrefix, buf);
- /[EMAIL PROTECTED]@*/
- }
-
- return val;
-}
/**
* Retrieve mounted file system paths.
@@ -860,44 +54,6 @@
}
/**
- * Retrieve install prefixes.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int instprefixTag(Header h, /[EMAIL PROTECTED]@*/ /[EMAIL
PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ const void ** data,
- /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ int_32 * count,
- /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *freeData @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- HFD_t hfd = headerFreeData;
- rpmTagType ipt;
- char ** array;
-
- if (hge(h, RPMTAG_INSTALLPREFIX, type, data, count)) {
- if (freeData) *freeData = 0;
- return 0;
- } else if (hge(h, RPMTAG_INSTPREFIXES, &ipt, &array, count)) {
- if (type) *type = RPM_STRING_TYPE;
-/[EMAIL PROTECTED]@*/
- if (data) *data = xstrdup(array[0]);
-/[EMAIL PROTECTED]@*/
- if (freeData) *freeData = 1;
- array = hfd(array, ipt);
- return 0;
- }
-
- return 1;
-}
-
-/**
* Retrieve mounted file system space.
* @param h header
* @retval *type tag type
@@ -958,145 +114,6 @@
}
/**
- * Retrieve trigger info.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int triggercondsTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *count, *freeData @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- HFD_t hfd = headerFreeData;
- rpmTagType tnt, tvt, tst;
- int_32 * indices, * flags;
- char ** names, ** versions;
- int numNames, numScripts;
- char ** conds, ** s;
- char * item, * flagsStr;
- char * chptr;
- int i, j, xx;
- char buf[5];
-
- if (!hge(h, RPMTAG_TRIGGERNAME, &tnt, &names, &numNames)) {
- *freeData = 0;
- return 0;
- }
-
- xx = hge(h, RPMTAG_TRIGGERINDEX, NULL, &indices, NULL);
- xx = hge(h, RPMTAG_TRIGGERFLAGS, NULL, &flags, NULL);
- xx = hge(h, RPMTAG_TRIGGERVERSION, &tvt, &versions, NULL);
- xx = hge(h, RPMTAG_TRIGGERSCRIPTS, &tst, &s, &numScripts);
- s = hfd(s, tst);
-
- *freeData = 1;
- *data = conds = xmalloc(sizeof(*conds) * numScripts);
- *count = numScripts;
- *type = RPM_STRING_ARRAY_TYPE;
-/[EMAIL PROTECTED]@*/
- for (i = 0; i < numScripts; i++) {
- chptr = xstrdup("");
-
- for (j = 0; j < numNames; j++) {
- if (indices[j] != i)
- /[EMAIL PROTECTED]@*/ continue;
-
- item = xmalloc(strlen(names[j]) + strlen(versions[j]) + 20);
- if (flags[j] & RPMSENSE_SENSEMASK) {
- buf[0] = '%', buf[1] = '\0';
- flagsStr = depflagsFormat(RPM_INT32_TYPE, flags, buf, 0, j);
- sprintf(item, "%s %s %s", names[j], flagsStr, versions[j]);
- flagsStr = _free(flagsStr);
- } else {
- strcpy(item, names[j]);
- }
-
- chptr = xrealloc(chptr, strlen(chptr) + strlen(item) + 5);
- if (*chptr != '\0') strcat(chptr, ", ");
- strcat(chptr, item);
- item = _free(item);
- }
-
- conds[i] = chptr;
- }
-/[EMAIL PROTECTED]@*/
-
- names = hfd(names, tnt);
- versions = hfd(versions, tvt);
-
- return 0;
-}
-
-/**
- * Retrieve trigger type info.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int triggertypeTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *count, *freeData @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- HFD_t hfd = headerFreeData;
- rpmTagType tst;
- int_32 * indices, * flags;
- const char ** conds;
- const char ** s;
- int i, j, xx;
- int numScripts, numNames;
-
- if (!hge(h, RPMTAG_TRIGGERINDEX, NULL, &indices, &numNames)) {
- *freeData = 0;
- return 1;
- }
-
- xx = hge(h, RPMTAG_TRIGGERFLAGS, NULL, &flags, NULL);
- xx = hge(h, RPMTAG_TRIGGERSCRIPTS, &tst, &s, &numScripts);
- s = hfd(s, tst);
-
- *freeData = 1;
- *data = conds = xmalloc(sizeof(*conds) * numScripts);
- *count = numScripts;
- *type = RPM_STRING_ARRAY_TYPE;
-/[EMAIL PROTECTED]@*/
- for (i = 0; i < numScripts; i++) {
- for (j = 0; j < numNames; j++) {
- if (indices[j] != i)
- /[EMAIL PROTECTED]@*/ continue;
-
- if (flags[j] & RPMSENSE_TRIGGERPREIN)
- conds[i] = xstrdup("prein");
- else if (flags[j] & RPMSENSE_TRIGGERIN)
- conds[i] = xstrdup("in");
- else if (flags[j] & RPMSENSE_TRIGGERUN)
- conds[i] = xstrdup("un");
- else if (flags[j] & RPMSENSE_TRIGGERPOSTUN)
- conds[i] = xstrdup("postun");
- else
- conds[i] = xstrdup("");
- /[EMAIL PROTECTED]@*/ break;
- }
- }
-/[EMAIL PROTECTED]@*/
-
- return 0;
-}
-
-/**
* Retrieve file paths.
* @param h header
* @retval *type tag type
@@ -1326,314 +343,8 @@
return 0;
}
-/* I18N look aside diversions */
-
-#if defined(ENABLE_NLS)
-/[EMAIL PROTECTED] [EMAIL PROTECTED]/
-/[EMAIL PROTECTED]@*/
-extern int _nl_msg_cat_cntr; /* XXX GNU gettext voodoo */
-/[EMAIL PROTECTED] [EMAIL PROTECTED]/
-#endif
-/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
-static const char * language = "LANGUAGE";
-
-/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
-static const char * _macro_i18ndomains = "%{?_i18ndomains}";
-
-/**
- * Retrieve i18n text.
- * @param h header
- * @param tag tag
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int i18nTag(Header h, int_32 tag, /[EMAIL PROTECTED]@*/ rpmTagType *
type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- char * dstring = rpmExpand(_macro_i18ndomains, NULL);
- int rc;
-
- *type = RPM_STRING_TYPE;
- *data = NULL;
- *count = 0;
- *freeData = 0;
-
- if (dstring && *dstring) {
- char *domain, *de;
- const char * langval;
- const char * msgkey;
- const char * msgid;
-
- { const char * tn = tagName(tag);
- const char * n = NULL;
- char * mk;
- size_t nb = sizeof("()");
- int xx = headerNVR(h, &n, NULL, NULL);
- xx = 0; /* XXX keep gcc quiet */
- if (tn) nb += strlen(tn);
- if (n) nb += strlen(n);
- mk = alloca(nb);
- sprintf(mk, "%s(%s)", (n?n:""), (tn?tn:""));
- msgkey = mk;
- }
-
- /* change to en_US for msgkey -> msgid resolution */
- langval = getenv(language);
- (void) setenv(language, "en_US", 1);
-#if defined(ENABLE_NLS)
-/[EMAIL PROTECTED]@*/ ++_nl_msg_cat_cntr;
-#endif
-
- msgid = NULL;
- /[EMAIL PROTECTED]@*/
- for (domain = dstring; domain != NULL; domain = de) {
- de = strchr(domain, ':');
- if (de) *de++ = '\0';
- msgid = /[EMAIL PROTECTED]@*/ dgettext(domain, msgkey) /[EMAIL
PROTECTED]@*/;
- if (msgid != msgkey) break;
- }
- /[EMAIL PROTECTED]@*/
-
- /* restore previous environment for msgid -> msgstr resolution */
- if (langval)
- (void) setenv(language, langval, 1);
- else
- unsetenv(language);
-#if defined(ENABLE_NLS)
-/[EMAIL PROTECTED]@*/ ++_nl_msg_cat_cntr;
-#endif
-
- if (domain && msgid) {
- *data = /[EMAIL PROTECTED]@*/ dgettext(domain, msgid) /[EMAIL
PROTECTED]@*/;
- *data = xstrdup(*data); /* XXX xstrdup has side effects. */
- *count = 1;
- *freeData = 1;
- }
- dstring = _free(dstring);
- if (*data)
- return 0;
- }
-
- dstring = _free(dstring);
-
- rc = hge(h, tag, type, (void **)data, count);
-
- if (rc && (*data) != NULL) {
- *data = xstrdup(*data);
- *data = xstrtolocale(*data);
- *freeData = 1;
- return 0;
- }
-
- *freeData = 0;
- *data = NULL;
- *count = 0;
- return 1;
-}
-
-/**
- * Retrieve text and convert to locale.
- */
-static int localeTag(Header h, int_32 tag, /[EMAIL PROTECTED]@*/ rpmTagType
* type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *count, *freeData @*/
-{
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- rpmTagType t;
- char **d, **d2, *dp;
- int rc, i, l;
-
- rc = hge(h, tag, &t, &d, count);
- if (!rc || d == NULL || *count == 0) {
- *freeData = 0;
- *data = NULL;
- *count = 0;
- return 1;
- }
- if (type)
- *type = t;
- if (t == RPM_STRING_TYPE) {
- d = (char **)xstrdup((char *)d);
- d = (char **)xstrtolocale((char *)d);
- *freeData = 1;
- } else if (t == RPM_STRING_ARRAY_TYPE) {
- l = 0;
- for (i = 0; i < *count; i++) {
- d[i] = xstrdup(d[i]);
- d[i] = (char *)xstrtolocale(d[i]);
-assert(d[i] != NULL);
- l += strlen(d[i]) + 1;
- }
- d2 = xmalloc(*count * sizeof(*d2) + l);
- dp = (char *)(d2 + *count);
- for (i = 0; i < *count; i++) {
- d2[i] = dp;
- strcpy(dp, d[i]);
- dp += strlen(dp) + 1;
- d[i] = _free(d[i]);
- }
- d = _free(d);
- d = d2;
- *freeData = 1;
- } else
- *freeData = 0;
- *data = (void **)d;
- return 0;
-}
-
-/**
- * Retrieve summary text.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int summaryTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- return i18nTag(h, RPMTAG_SUMMARY, type, data, count, freeData);
-}
-
-/**
- * Retrieve description text.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int descriptionTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- return i18nTag(h, RPMTAG_DESCRIPTION, type, data, count, freeData);
-}
-
-static int changelognameTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType *
type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *count, *freeData @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- return localeTag(h, RPMTAG_CHANGELOGNAME, type, data, count, freeData);
-}
-
-static int changelogtextTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType *
type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] *type, *data, *count, *freeData @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- return localeTag(h, RPMTAG_CHANGELOGTEXT, type, data, count, freeData);
-}
-
-/**
- * Retrieve group text.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int groupTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- return i18nTag(h, RPMTAG_GROUP, type, data, count, freeData);
-}
-
-/**
- * Retrieve db instance from header.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int dbinstanceTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno,
- fileSystem, internalState @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext,
- fileSystem, internalState @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- int_32 * valuep = xcalloc(1, sizeof(*valuep));
-
- *valuep = headerGetInstance(h);
-
- *type = RPM_INT32_TYPE;
- *data = valuep;
- *count = 1;
- *freeData = 1;
-
- return 0;
-}
-
-/**
- * Retrieve N-V-R.A compound string from header.
- * @param h header
- * @retval *type tag type
- * @retval *data tag value
- * @retval *count no. of data items
- * @retval *freeData data-was-malloc'ed indicator
- * @return 0 on success
- */
-static int nvraTag(Header h, /[EMAIL PROTECTED]@*/ rpmTagType * type,
- /[EMAIL PROTECTED]@*/ const void ** data, /[EMAIL PROTECTED]@*/
int_32 * count,
- /[EMAIL PROTECTED]@*/ int * freeData)
- /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno,
- fileSystem, internalState @*/
- /[EMAIL PROTECTED] *type, *data, *count, *freeData,
rpmGlobalMacroContext,
- fileSystem, internalState @*/
- /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(data) >= 0
- /\ maxSet(count) >= 0 /\ maxSet(freeData) >= 0 @*/
-{
- *type = RPM_STRING_TYPE;
- *data = hGetNEVRA(h, NULL);
- *count = 1;
- *freeData = 1;
-
- return 0;
-}
-
/[EMAIL PROTECTED]@*/ /* FIX: cast? */
const struct headerSprintfExtension_s rpmHeaderFormats[] = {
- { HEADER_EXT_TAG, "RPMTAG_CHANGELOGNAME", { changelognameTag } },
- { HEADER_EXT_TAG, "RPMTAG_CHANGELOGTEXT", { changelogtextTag } },
- { HEADER_EXT_TAG, "RPMTAG_DESCRIPTION", { descriptionTag } },
{ HEADER_EXT_TAG, "RPMTAG_ENHANCES", { missingokTag } },
{ HEADER_EXT_TAG, "RPMTAG_FILECLASS", { fileclassTag } },
{ HEADER_EXT_TAG, "RPMTAG_FILECONTEXTS", { filecontextsTag } },
@@ -1643,25 +354,8 @@
{ HEADER_EXT_TAG, "RPMTAG_FSCONTEXTS", { fscontextsTag } },
{ HEADER_EXT_TAG, "RPMTAG_FSNAMES", { fsnamesTag } },
{ HEADER_EXT_TAG, "RPMTAG_FSSIZES", { fssizesTag } },
- { HEADER_EXT_TAG, "RPMTAG_GROUP", { groupTag } },
- { HEADER_EXT_TAG, "RPMTAG_INSTALLPREFIX", { instprefixTag } },
{ HEADER_EXT_TAG, "RPMTAG_RECONTEXTS", { recontextsTag } },
{ HEADER_EXT_TAG, "RPMTAG_SUGGESTS", { missingokTag } },
- { HEADER_EXT_TAG, "RPMTAG_SUMMARY", { summaryTag } },
- { HEADER_EXT_TAG, "RPMTAG_TRIGGERCONDS", { triggercondsTag } },
- { HEADER_EXT_TAG, "RPMTAG_TRIGGERTYPE", { triggertypeTag } },
- { HEADER_EXT_TAG, "RPMTAG_DBINSTANCE", { dbinstanceTag } },
- { HEADER_EXT_TAG, "RPMTAG_NVRA", { nvraTag } },
- { HEADER_EXT_FORMAT, "armor", { armorFormat } },
- { HEADER_EXT_FORMAT, "base64", { base64Format } },
- { HEADER_EXT_FORMAT, "depflags", { depflagsFormat } },
- { HEADER_EXT_FORMAT, "fflags", { fflagsFormat } },
- { HEADER_EXT_FORMAT, "perms", { permsFormat } },
- { HEADER_EXT_FORMAT, "permissions", { permsFormat } },
- { HEADER_EXT_FORMAT, "pgpsig", { pgpsigFormat } },
- { HEADER_EXT_FORMAT, "triggertype", { triggertypeFormat } },
- { HEADER_EXT_FORMAT, "xml", { xmlFormat } },
- { HEADER_EXT_FORMAT, "yaml", { yamlFormat } },
- { HEADER_EXT_MORE, NULL, { (void *) headerDefaultFormats } }
+ { HEADER_EXT_MORE, NULL, { (void *) headerCompoundFormats } }
} ;
/[EMAIL PROTECTED]@*/
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/Makefile.am
============================================================================
$ cvs diff -u -r1.77 -r1.78 Makefile.am
--- rpm/rpmdb/Makefile.am 29 Jul 2007 14:02:34 -0000 1.77
+++ rpm/rpmdb/Makefile.am 2 Aug 2007 18:04:32 -0000 1.78
@@ -40,7 +40,7 @@
usrlib_LTLIBRARIES = librpmdb.la
librpmdb_la_SOURCES = \
dbconfig.c fprint.c \
- hdrNVR.c header.c header_internal.c legacy.c merge.c \
+ hdrfmt.c hdrNVR.c header.c header_internal.c legacy.c merge.c \
poptDB.c rpmdb.c \
tagname.c tagtbl.c
librpmdb_la_LDFLAGS = -release $(LT_CURRENT).$(LT_REVISION)
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.h
============================================================================
$ cvs diff -u -r1.18 -r1.19 header.h
--- rpm/rpmdb/header.h 2 Aug 2007 17:30:12 -0000 1.18
+++ rpm/rpmdb/header.h 2 Aug 2007 18:04:32 -0000 1.19
@@ -230,6 +230,14 @@
/[EMAIL PROTECTED]@*/
/** \ingroup header
+ * Supported default header extension/tag output formats.
+ */
+/[EMAIL PROTECTED]@*/
+/[EMAIL PROTECTED]@*/
+extern const struct headerSprintfExtension_s headerCompoundFormats[];
+/[EMAIL PROTECTED]@*/
+
+/** \ingroup header
* The basic types of data in tags from headers.
*/
typedef enum rpmTagType_e {
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/librpmdb.vers
============================================================================
$ cvs diff -u -r1.6 -r1.7 librpmdb.vers
--- rpm/rpmdb/librpmdb.vers 30 Jul 2007 19:42:59 -0000 1.6
+++ rpm/rpmdb/librpmdb.vers 2 Aug 2007 18:04:32 -0000 1.7
@@ -24,6 +24,7 @@
fpLookupList;
_hdr_debug;
hdrVec;
+ headerCompoundFormats;
headerDefaultFormats;
headerDump;
headerGetLangs;
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]