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("&lt;") - 1;      /[EMAIL PROTECTED]@*/ 
break;
  -     case '&':       len += sizeof("&amp;") - 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, "&lt;");        /[EMAIL PROTECTED]@*/ 
break;
  -     case '>':       te = stpcpy(te, "&gt;");        /[EMAIL PROTECTED]@*/ 
break;
  -     case '&':       te = stpcpy(te, "&amp;");       /[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]

Reply via email to