RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ hdrfmt.c header.c header.h

From: Jeff Johnson <jbj@rpm5.org>
Date: Thu 18 Oct 2007 - 22:31:17 CEST
Message-Id: <20071018203117.8EE9C34845C@rpm5.org>
  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:   18-Oct-2007 22:31:17
  Branch: HEAD                             Handle: 2007101821311601

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               hdrfmt.c header.c header.h

  Log:
    - fix several indirection problems.
    - eliminate data arg in (*headerTagFormatFunction).

  Summary:
    Revision    Changes     Path
    1.1730      +2  -0      rpm/CHANGES
    1.19        +44 -40     rpm/rpmdb/hdrfmt.c
    1.91        +38 -44     rpm/rpmdb/header.c
    1.45        +1  -2      rpm/rpmdb/header.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1729 -r1.1730 CHANGES
  --- rpm/CHANGES	18 Oct 2007 18:56:56 -0000	1.1729
  +++ rpm/CHANGES	18 Oct 2007 20:31:16 -0000	1.1730
  @@ -1,4 +1,6 @@
   4.5 -> 5.0:
  +    - jbj: fix several indirection problems.
  +    - jbj: eliminate data arg in (*headerTagFormatFunction).
       - jbj: start simplifying the world's most complicated sprintf.
       - jbj: fix: trigger conditions not displayed correctly.
       - jbj: trade-in element overload hack for another, less egregious, hack.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c	18 Oct 2007 15:59:06 -0000	1.18
  +++ rpm/rpmdb/hdrfmt.c	18 Oct 2007 20:31:17 -0000	1.19
  @@ -71,15 +71,15 @@
   /**
    * Identify type of trigger.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	(unused)
    * @param padding	(unused)
    * @return		formatted string
    */
  -static /*@only@*/ char * triggertypeFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * triggertypeFormat(HE_t he,
   		/*@unused@*/ char * formatPrefix, /*@unused@*/ int padding)
   {
  -    const int_32 * item = (*data).i32p;
  +    rpmTagData data = { .ptr = (*he->p).ptr };
  +    const int_32 * item = data.i32p;
       char * val;
   
       if (he->t != RPM_INT32_TYPE)
  @@ -100,16 +100,16 @@
   /**
    * Format file permissions for display.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * permsFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * permsFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   	/*@requires maxRead(data) >= 0 @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       char * val;
       char * buf;
   
  @@ -118,7 +118,7 @@
       } else {
   	val = xmalloc(15 + padding);
   	strcat(formatPrefix, "s");
  -	buf = rpmPermsString((*data).i32p[0]);
  +	buf = rpmPermsString(data.i32p[0]);
   	/*@-formatconst@*/
   	sprintf(val, formatPrefix, buf);
   	/*@=formatconst@*/
  @@ -131,20 +131,24 @@
   /**
    * Format file flags for display.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * fflagsFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * fflagsFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   	/*@requires maxRead(data) >= 0 @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
  +    /* XXX HACK: he->freeData for element index. */
  +    int element = he->freeData;
       char * val;
       char buf[15];
  -    int anint = *((int_32 *) data);
  +    int anint;
   
  +assert(element >= 0);
  +    anint = data.i32p[element];
       if (he->t != RPM_INT32_TYPE) {
   	val = xstrdup(_("(invalid type)"));
       } else {
  @@ -180,15 +184,15 @@
    * Wrap a pubkey in ascii armor for display.
    * @todo Permit selectable display formats (i.e. binary).
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	(unused)
    * @param padding	(unused)
    * @return		formatted string
    */
  -static /*@only@*/ char * armorFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * armorFormat(HE_t he,
   		/*@unused@*/ char * formatPrefix, /*@unused@*/ int padding)
   	/*@*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       const char * enc;
       const unsigned char * s;
       size_t ns;
  @@ -199,13 +203,13 @@
       case RPM_OPENPGP_TYPE:
       case RPM_ASN1_TYPE:		/* XXX WRONG */
       case RPM_BIN_TYPE:
  -	s = (*data).ui8p;
  +	s = data.ui8p;
   	ns = he->c;
   	atype = PGPARMOR_SIGNATURE;	/* XXX check pkt for signature */
   	break;
       case RPM_STRING_TYPE:
       case RPM_STRING_ARRAY_TYPE:
  -	enc = (*data).str;
  +	enc = data.str;
   	s = NULL;
   	ns = 0;
   /*@-moduncon@*/
  @@ -237,15 +241,15 @@
    * Encode binary data in base64 for display.
    * @todo Permit selectable display formats (i.e. binary).
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	(unused)
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * base64Format(HE_t he, hPTR_t data,
  +static /*@only@*/ char * base64Format(HE_t he,
   		/*@unused@*/ char * formatPrefix, int padding)
   	/*@*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       char * val;
   
       if (!(he->t == RPM_BIN_TYPE || he->t == RPM_ASN1_TYPE || he->t == RPM_OPENPGP_TYPE)) {
  @@ -272,7 +276,7 @@
   
       /* XXX b64encode accesses uninitialized memory. */
       { 	unsigned char * _data = xcalloc(1, ns+1);
  -	memcpy(_data, data, ns);
  +	memcpy(_data, data.ptr, ns);
   /*@-moduncon@*/
   	if ((enc = b64encode(_data, ns)) != NULL) {
   	    t = stpcpy(t, enc);
  @@ -338,15 +342,15 @@
   /**
    * Wrap tag data in simple header xml markup.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * xmlFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * xmlFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       const char * xtag = NULL;
       size_t nb;
       char * val;
  @@ -359,7 +363,7 @@
       switch (he->t) {
       case RPM_I18NSTRING_TYPE:
       case RPM_STRING_TYPE:
  -	s = (*data).str;
  +	s = data.str;
   	xtag = "string";
   	/* XXX Force utf8 strings. */
   	s = xstrdup(s);
  @@ -373,7 +377,7 @@
       {	int cpl = b64encode_chars_per_line;
   	b64encode_chars_per_line = 0;
   /*@-formatconst@*/
  -	s = base64Format(he, data, formatPrefix, padding);
  +	s = base64Format(he, formatPrefix, padding);
   /*@=formatconst@*/
   	b64encode_chars_per_line = cpl;
   	xtag = "base64";
  @@ -382,16 +386,16 @@
   /*@=globs =mods@*/
       case RPM_CHAR_TYPE:
       case RPM_INT8_TYPE:
  -	anint = *((uint_8 *) data);
  +	anint = data.i8p[0];
   	break;
       case RPM_INT16_TYPE:
  -	anint = *((uint_16 *) data);
  +	anint = data.ui16p[0];	/* XXX note unsigned */
   	break;
       case RPM_INT32_TYPE:
  -	anint = *((uint_32 *) data);
  +	anint = data.i32p[0];
   	break;
       case RPM_INT64_TYPE:
  -	anint = *((uint_64 *) data);
  +	anint = data.i64p[0];
   	break;
       case RPM_NULL_TYPE:
       case RPM_STRING_ARRAY_TYPE:
  @@ -499,15 +503,15 @@
   /**
    * Wrap tag data in simple header yaml markup.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * yamlFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * yamlFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       int element = he->freeData;	/* XXX HACK: he->freeData for element index. */
       const char * xtag = NULL;
       const char * ytag = NULL;
  @@ -525,7 +529,7 @@
       case RPM_I18NSTRING_TYPE:
       case RPM_STRING_TYPE:
   	xx = 0;
  -	s = (*data).str;
  +	s = data.str;
   	if (strchr("[", s[0]))	/* leading [ */
   	    xx = 1;
   	if (xx == 0)
  @@ -558,7 +562,7 @@
   	}
   
   	/* XXX Force utf8 strings. */
  -	s = xstrdup((*data).str);
  +	s = xstrdup(data.str);
   	s = xstrtolocale(s);
   	freeit = 1;
   	break;
  @@ -569,7 +573,7 @@
       {	int cpl = b64encode_chars_per_line;
   	b64encode_chars_per_line = 0;
   /*@-formatconst@*/
  -	s = base64Format(he, data, formatPrefix, padding);
  +	s = base64Format(he, formatPrefix, padding);
   	element = -element;	/* XXX skip "    " indent. */
   /*@=formatconst@*/
   	b64encode_chars_per_line = cpl;
  @@ -579,16 +583,16 @@
   /*@=globs =mods@*/
       case RPM_CHAR_TYPE:
       case RPM_INT8_TYPE:
  -	anint = *((uint_8 *) data);
  +	anint = data.i8p[0];
   	break;
       case RPM_INT16_TYPE:
  -	anint = *((uint_16 *) data);
  +	anint = data.ui16p[0];	/* XXX note unsigned */
   	break;
       case RPM_INT32_TYPE:
  -	anint = *((uint_32 *) data);
  +	anint = data.i32p[0];
   	break;
       case RPM_INT64_TYPE:
  -	anint = *((uint_64 *) data);
  +	anint = data.i64p[0];
   	break;
       case RPM_NULL_TYPE:
       case RPM_STRING_ARRAY_TYPE:
  @@ -654,22 +658,22 @@
   /**
    * Display signature fingerprint and time.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	(unused)
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * pgpsigFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * pgpsigFormat(HE_t he,
   		/*@unused@*/ char * formatPrefix, /*@unused@*/ int padding)
   	/*@globals fileSystem, internalState @*/
   	/*@modifies fileSystem, internalState @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       char * val, * t;
   
       if (!(he->t == RPM_BIN_TYPE || he->t == RPM_ASN1_TYPE || he->t == RPM_OPENPGP_TYPE)) {
   	val = xstrdup(_("(not a blob)"));
       } else {
  -	unsigned char * pkt = (byte *) data;
  +	unsigned char * pkt = (byte *) data.ptr;
   	unsigned int pktlen = 0;
   	unsigned int v = *pkt;
   	pgpTag tag = 0;
  @@ -761,16 +765,16 @@
   /**
    * Format dependency flags for display.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -static /*@only@*/ char * depflagsFormat(HE_t he, hPTR_t data,
  +static /*@only@*/ char * depflagsFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   	/*@requires maxRead(data) >= 0 @*/
   {
  +    rpmTagData data = { .ptr = (*he->p).ptr };
       char * val;
   
       if (he->t != RPM_INT32_TYPE) {
  @@ -778,7 +782,7 @@
       } else {
   	/* XXX HACK: he->freeData for element index. */
   	int element = he->freeData;
  -	int anint = (*data).i32p[element];
  +	int anint = data.i32p[element];
   	char *t, *buf;
   
   	t = buf = alloca(32);
  @@ -900,7 +904,7 @@
   		_he->p = &flags;
   		_he->c = 1;
   		he->freeData = j;/* XXX HACK: he->freeData for element index. */
  -		flagsStr = depflagsFormat(_he, he->p, buf, 0);
  +		flagsStr = depflagsFormat(_he, buf, 0);
   		sprintf(item, "%s %s %s", names.argv[j], flagsStr, versions.argv[j]);
   		flagsStr = _free(flagsStr);
   	    } else
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.90 -r1.91 header.c
  --- rpm/rpmdb/header.c	18 Oct 2007 18:56:56 -0000	1.90
  +++ rpm/rpmdb/header.c	18 Oct 2007 20:31:17 -0000	1.91
  @@ -2797,13 +2797,12 @@
   /**
    * Convert tag data representation.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @param fmt		output radix (NULL or "" assumes %d)
    * @return		formatted string
    */
  -static char * intFormat(HE_t he, hPTR_t data,
  +static char * intFormat(HE_t he,
   		char * formatPrefix, int padding, const char *fmt)
   {
       /* XXX HACK: he->freeData for element index. */
  @@ -2814,7 +2813,6 @@
       if (fmt == NULL || *fmt == '\0')
   	fmt = "d";
   
  -assert(he->p == data);
       switch (he->t) {
       default:
   	str = xstrdup(_("(not a number)"));
  @@ -2850,63 +2848,60 @@
   /**
    * Return octal formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * octFormat(HE_t he, hPTR_t data,
  +static char * octFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  -    return intFormat(he, data, formatPrefix, padding, "o");
  +    return intFormat(he, formatPrefix, padding, "o");
   }
   
   /**
    * Return hex formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * hexFormat(HE_t he, hPTR_t data, 
  +static char * hexFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  -    return intFormat(he, data, formatPrefix, padding, "x");
  +    return intFormat(he, formatPrefix, padding, "x");
   }
   
   /**
    * Return decimal formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * decFormat(HE_t he, hPTR_t data, 
  +static char * decFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  -    return intFormat(he, data, formatPrefix, padding, "d");
  +    return intFormat(he, formatPrefix, padding, "d");
   }
   
   /**
    * Return strftime formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @param strftimeFormat strftime(3) format
    * @return		formatted string
    */
  -static char * realDateFormat(HE_t he, hPTR_t data, 
  +static char * realDateFormat(HE_t he,
   		char * formatPrefix, int padding,
   		const char * strftimeFormat)
   	/*@modifies formatPrefix @*/
   {
       char * val;
  +    rpmTagData data = { .ptr = (*he->p).ptr };
   
       if (he->t != RPM_INT32_TYPE) {
   	val = xstrdup(_("(not a number)"));
  @@ -2918,7 +2913,7 @@
   	strcat(formatPrefix, "s");
   
   	/* this is important if sizeof(int_32) ! sizeof(time_t) */
  -	{   time_t dateint = *((int_32 *) data);
  +	{   time_t dateint = data.ui32p[0];
   	    tstruct = localtime(&dateint);
   	}
   	buf[0] = '\0';
  @@ -2935,63 +2930,59 @@
   /**
    * Return date formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * dateFormat(HE_t he, hPTR_t data, 
  +static char * dateFormat(HE_t he,
   		         char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  -    return realDateFormat(he, data, formatPrefix, padding,
  -			_("%c"));
  +    return realDateFormat(he, formatPrefix, padding, _("%c"));
   }
   
   /**
    * Return day formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * dayFormat(HE_t he, hPTR_t data, 
  +static char * dayFormat(HE_t he,
   		         char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
  -    return realDateFormat(he, data, formatPrefix, padding, 
  -			  _("%a %b %d %Y"));
  +    return realDateFormat(he, formatPrefix, padding, _("%a %b %d %Y"));
   }
   
   /**
    * Return shell escape formatted data.
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix	sprintf format string
    * @param padding	no. additional bytes needed by format string
    * @return		formatted string
    */
  -static char * shescapeFormat(HE_t he, hPTR_t data, 
  +static char * shescapeFormat(HE_t he,
   		char * formatPrefix, int padding)
   	/*@modifies formatPrefix @*/
   {
       char * result, * dst, * src, * buf;
  +    rpmTagData data = { .ptr = (*he->p).ptr };
   
       if (he->t == RPM_INT32_TYPE) {
   	result = xmalloc(padding + 20);
   	strcat(formatPrefix, "d");
   	/*@-formatconst@*/
  -	sprintf(result, formatPrefix, (*data).i32p[0]);
  +	sprintf(result, formatPrefix, data.i32p[0]);
   	/*@=formatconst@*/
       } else if (he->t == RPM_INT64_TYPE) {
   	result = xmalloc(padding + 40);
   	strcat(formatPrefix, "lld");
   	/*@-formatconst@*/
  -	sprintf(result, formatPrefix, (*data).i64p[0]);
  +	sprintf(result, formatPrefix, data.i64p[0]);
   	/*@=formatconst@*/
       } else {
  -	buf = alloca(strlen((*data).str) + padding + 2);
  +	buf = alloca(strlen(data.str) + padding + 2);
   	strcat(formatPrefix, "s");
   	/*@-formatconst@*/
   	sprintf(buf, formatPrefix, data);
  @@ -3453,7 +3444,6 @@
       size_t need = 0;
       char * t, * te;
       char buf[20];
  -    hRET_t strarray;
       rpmTagCount countBuf;
   
       memset(buf, 0, sizeof(buf));
  @@ -3511,42 +3501,46 @@
       if (he_p.ptr)
       switch (he->t) {
       case RPM_STRING_ARRAY_TYPE:
  -	strarray.argv = he_p.argv;
  +    {	hRET_t _he_p = { .ptr = NULL };
  +	HE_s _he_s = { .tag = 0, .t = 0, .p = &_he_p, .c = 0, .freeData = 0 };
  +	HE_t _he = &_he_s;
  +	_he->tag = he->tag;
  +	_he->t = RPM_STRING_TYPE;
  +	(*_he->p).str = (*he->p).argv[element];
  +	_he->c = 1;
  +	_he->freeData = -1;
   
  -	if (tag->fmt) {
  -	    /* XXX HACK: he->freeData for element index. */
  -	    he->freeData = (he->c > 1 ? element : -1);
  -	    val = tag->fmt(he, (hPTR_t) strarray.argv[element], buf, tag->pad);	/* NOCAST */
  -	}
  +	if (tag->fmt)
  +	    val = tag->fmt(_he, buf, tag->pad);
   
   	if (val) {
   	    need = strlen(val);
   	} else {
  -	    need = strlen(strarray.argv[element]) + tag->pad + 20;
  +	    need = strlen((*_he->p).str) + tag->pad + 20;
   	    val = xmalloc(need+1);
   	    strcat(buf, "s");
   	    /*@-formatconst@*/
  -	    sprintf(val, buf, strarray.argv[element]);
  +	    sprintf(val, buf, (*_he->p).str);
   	    /*@=formatconst@*/
   	}
   
  -	break;
  +    }	break;
   
       case RPM_STRING_TYPE:
   	if (tag->fmt) {
   	    /* XXX HACK: he->freeData for element index. */
   	    he->freeData = -1;
  -	    val = tag->fmt(he, he_p.ptr, buf, tag->pad);
  +	    val = tag->fmt(he, buf, tag->pad);
   	}
   
   	if (val) {
   	    need = strlen(val);
   	} else {
  -	    need = strlen(he_p.str) + tag->pad + 20;
  +	    need = strlen((*he->p).str) + tag->pad + 20;
   	    val = xmalloc(need+1);
   	    strcat(buf, "s");
   	    /*@-formatconst@*/
  -	    sprintf(val, buf, he_p.str);
  +	    sprintf(val, buf, (*he->p).str);
   	    /*@=formatconst@*/
   	}
   	break;
  @@ -3559,9 +3553,9 @@
   	/* XXX HACK: he->freeData for element index. */
   	he->freeData = (he->c > 1 ? element : -1);
   	if (tag->fmt)
  -	    val = tag->fmt(he, he->p, buf, tag->pad);
  +	    val = tag->fmt(he, buf, tag->pad);
   	else
  -	    val = decFormat(he, he->p, buf, tag->pad);
  +	    val = decFormat(he, buf, tag->pad);
   assert(val);
   	if (val)
   	    need = strlen(val);
  @@ -3573,7 +3567,7 @@
   	if (tag->fmt) {
   	    /* XXX HACK: he->freeData for element index. */
   	    he->freeData = -1;
  -	    val = tag->fmt(he, he_p.ptr, buf, tag->pad);
  +	    val = tag->fmt(he, buf, tag->pad);
   	}
   
   	if (val) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.44 -r1.45 header.h
  --- rpm/rpmdb/header.h	18 Oct 2007 15:59:06 -0000	1.44
  +++ rpm/rpmdb/header.h	18 Oct 2007 20:31:17 -0000	1.45
  @@ -246,12 +246,11 @@
    * HEADER_EXT_TAG format function prototype.
    *
    * @param he		tag container
  - * @param data		tag value
    * @param formatPrefix
    * @param padding
    * @return		formatted string
    */
  -typedef /*only@*/ char * (*headerTagFormatFunction)(HE_t he, rpmTagData * data,
  +typedef /*only@*/ char * (*headerTagFormatFunction)(HE_t he,
   				char * formatPrefix, int padding)
   	/*@requires maxSet(data) >= 0 @*/;
   
  @@ .
Received on Thu Oct 18 22:31:17 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.