Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 2269bb274471fd2722517c2c0b740d7f > files > 102

rpm-devel-4.0.4-19mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>lib/formats.c Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.17 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>lib/formats.c</h1><a href="formats_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 
00005 <span class="preprocessor">#include "<a class="code" href="system_8h.html">system.h</a>"</span>
00006 <span class="preprocessor">#include &lt;<a class="code" href="rpmlib_8h.html">rpmlib.h</a>&gt;</span>
00007 <span class="preprocessor">#include &lt;<a class="code" href="rpmmacro_8h.html">rpmmacro.h</a>&gt;</span>   <span class="comment">/* XXX for %_i18ndomains */</span>
00008 <span class="preprocessor">#include "<a class="code" href="rpmpgp_8h.html">rpmpgp.h</a>"</span>
00009 <span class="preprocessor">#include "<a class="code" href="manifest_8h.html">manifest.h</a>"</span>
00010 <span class="preprocessor">#include "<a class="code" href="misc_8h.html">misc.h</a>"</span>
00011 <span class="preprocessor">#include "<a class="code" href="debug_8h.html">debug.h</a>"</span>
00012 
<a name="l00021"></a><a class="code" href="formats_8c.html#a4">00021</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a4">triggertypeFormat</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00022         <span class="comment">/*@unused@*/</span> <span class="keywordtype">char</span> * formatPrefix, <span class="comment">/*@unused@*/</span> <span class="keywordtype">int</span> padding,
00023         <span class="comment">/*@unused@*/</span> <span class="keywordtype">int</span> element)       <span class="comment">/*@*/</span>
00024 {
00025     <span class="keyword">const</span> <a class="code" href="header_8h.html#a9">int_32</a> * item = data;
00026     <span class="keywordtype">char</span> * val;
00027 
00028     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>)
00029         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a number)"</span>));
00030     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*item &amp; <a class="code" href="rpmlib_8h.html#a497a270">RPMSENSE_TRIGGERIN</a>)
00031         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">"in"</span>);
00032     <span class="keywordflow">else</span>
00033         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">"un"</span>);
00034     <span class="keywordflow">return</span> val;
00035 }
00036 
<a name="l00045"></a><a class="code" href="formats_8c.html#a5">00045</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a5">permsFormat</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, <span class="keywordtype">char</span> * formatPrefix,
00046         <span class="keywordtype">int</span> padding, <span class="comment">/*@unused@*/</span> <span class="keywordtype">int</span> element)
00047                 <span class="comment">/*@modifies formatPrefix @*/</span>
00048 {
00049     <span class="keywordtype">char</span> * val;
00050     <span class="keywordtype">char</span> * buf;
00051 
00052     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>) {
00053         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a number)"</span>));
00054     } <span class="keywordflow">else</span> {
00055         val = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(15 + padding);
00056         strcat(formatPrefix, <span class="stringliteral">"s"</span>);
00057         buf = <a class="code" href="manifest_8c.html#a0">rpmPermsString</a>(*((<a class="code" href="header_8h.html#a9">int_32</a> *) data));
00058         <span class="comment">/*@-formatconst@*/</span>
00059         sprintf(val, formatPrefix, buf);
00060         <span class="comment">/*@=formatconst@*/</span>
00061         buf = <a class="code" href="poptint_8h.html#a14">_free</a>(buf);
00062     }
00063 
00064     <span class="keywordflow">return</span> val;
00065 }
00066 
<a name="l00075"></a><a class="code" href="formats_8c.html#a6">00075</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a6">fflagsFormat</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00076         <span class="keywordtype">char</span> * formatPrefix, <span class="keywordtype">int</span> padding, <span class="comment">/*@unused@*/</span> <span class="keywordtype">int</span> element)
00077                 <span class="comment">/*@modifies formatPrefix @*/</span>
00078 {
00079     <span class="keywordtype">char</span> * val;
00080     <span class="keywordtype">char</span> buf[15];
00081     <span class="keywordtype">int</span> anint = *((<a class="code" href="header_8h.html#a9">int_32</a> *) data);
00082 
00083     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>) {
00084         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a number)"</span>));
00085     } <span class="keywordflow">else</span> {
00086         buf[0] = <span class="charliteral">'\0'</span>;
00087         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a244">RPMFILE_DOC</a>)
00088             strcat(buf, <span class="stringliteral">"d"</span>);
00089         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a243">RPMFILE_CONFIG</a>)
00090             strcat(buf, <span class="stringliteral">"c"</span>);
00091         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a248">RPMFILE_SPECFILE</a>)
00092             strcat(buf, <span class="stringliteral">"s"</span>);
00093         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a246">RPMFILE_MISSINGOK</a>)
00094             strcat(buf, <span class="stringliteral">"m"</span>);
00095         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a247">RPMFILE_NOREPLACE</a>)
00096             strcat(buf, <span class="stringliteral">"n"</span>);
00097         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a496a249">RPMFILE_GHOST</a>)
00098             strcat(buf, <span class="stringliteral">"g"</span>);
00099 
00100         val = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(5 + padding);
00101         strcat(formatPrefix, <span class="stringliteral">"s"</span>);
00102         <span class="comment">/*@-formatconst@*/</span>
00103         sprintf(val, formatPrefix, buf);
00104         <span class="comment">/*@=formatconst@*/</span>
00105     }
00106 
00107     <span class="keywordflow">return</span> val;
00108 }
00109 
<a name="l00118"></a><a class="code" href="formats_8c.html#a7">00118</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a7">armorFormat</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00119                 <span class="comment">/*@unused@*/</span> <span class="keywordtype">char</span> * formatPrefix, <span class="keywordtype">int</span> padding, <span class="keywordtype">int</span> element)
00120         <span class="comment">/*@*/</span>
00121 {
00122     <span class="keyword">const</span> <span class="keywordtype">char</span> * enc;
00123     <span class="keyword">const</span> <span class="keywordtype">char</span> * s;
00124     <span class="keywordtype">char</span> * t;
00125     <span class="keywordtype">char</span> * val;
00126     <span class="keywordtype">int</span> atype;
00127     <span class="keywordtype">int</span> lc, ns, nt;
00128 
00129     <span class="keywordflow">switch</span> (type) {
00130     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a72">RPM_BIN_TYPE</a>:
00131         s = data;
00132         ns = element;
00133         atype = <a class="code" href="rpmpgp_8h.html#a176a137">PGPARMOR_SIGNATURE</a>;     <span class="comment">/* XXX check pkt for signature */</span>
00134         <span class="keywordflow">break</span>;
00135     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a71">RPM_STRING_TYPE</a>:
00136     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a73">RPM_STRING_ARRAY_TYPE</a>:
00137         enc = data;
00138         <span class="keywordflow">if</span> (b64decode(enc, (<span class="keywordtype">void</span> **)&amp;s, &amp;ns))
00139             <span class="keywordflow">return</span> <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not base64)"</span>));
00140         atype = <a class="code" href="rpmpgp_8h.html#a176a136">PGPARMOR_PUBKEY</a>;        <span class="comment">/* XXX check pkt for pubkey */</span>
00141         <span class="keywordflow">break</span>;
00142     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a66">RPM_NULL_TYPE</a>:
00143     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a67">RPM_CHAR_TYPE</a>:
00144     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a68">RPM_INT8_TYPE</a>:
00145     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a69">RPM_INT16_TYPE</a>:
00146     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>:
00147     <span class="keywordflow">case</span> <a class="code" href="group__header.html#a93a74">RPM_I18NSTRING_TYPE</a>:
00148     <span class="keywordflow">default</span>:
00149         <span class="keywordflow">return</span> <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(invalid type)"</span>));
00150         <span class="comment">/*@notreached@*/</span> <span class="keywordflow">break</span>;
00151     }
00152 
00153     nt = ((ns + 2) / 3) * 4;
00154     <span class="comment">/*@-globs@*/</span>
00155     <span class="comment">/* Add additional bytes necessary for eol string(s). */</span>
00156     <span class="keywordflow">if</span> (b64encode_chars_per_line &gt; 0 &amp;&amp; b64encode_eolstr != NULL) {
00157         lc = (nt + b64encode_chars_per_line - 1) / b64encode_chars_per_line;
00158        <span class="keywordflow">if</span> (((nt + b64encode_chars_per_line - 1) % b64encode_chars_per_line) != 0)
00159         ++lc;
00160         nt += lc * strlen(b64encode_eolstr);
00161     }
00162     <span class="comment">/*@=globs@*/</span>
00163 
00164     nt += 512;  <span class="comment">/* XXX slop for armor and crc */</span>
00165 
00166     val = t = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(nt + padding + 1);
00167     *t = <span class="charliteral">'\0'</span>;
00168     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <span class="stringliteral">"-----BEGIN PGP "</span>);
00169     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <a class="code" href="rpmpgp_8h.html#a154">pgpValStr</a>(pgpArmorTbl, atype));
00170     <span class="comment">/*@-globs@*/</span>
00171     t = <a class="code" href="system_8h.html#a32">stpcpy</a>( <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <span class="stringliteral">"-----\nVersion: rpm-"</span>), RPMVERSION);
00172     <span class="comment">/*@=globs@*/</span>
00173     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <span class="stringliteral">" (beecrypt-2.2.0)\n\n"</span>);
00174 
00175     <span class="keywordflow">if</span> ((enc = b64encode(s, ns)) != NULL) {
00176         t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, enc);
00177         enc = <a class="code" href="poptint_8h.html#a14">_free</a>(enc);
00178         <span class="keywordflow">if</span> ((enc = b64crc(s, ns)) != NULL) {
00179             *t++ = <span class="charliteral">'='</span>;
00180             t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, enc);
00181             enc = <a class="code" href="poptint_8h.html#a14">_free</a>(enc);
00182         }
00183     }
00184         
00185     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <span class="stringliteral">"-----END PGP "</span>);
00186     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <a class="code" href="rpmpgp_8h.html#a154">pgpValStr</a>(pgpArmorTbl, atype));
00187     t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, <span class="stringliteral">"-----\n"</span>);
00188 
00189     <span class="comment">/*@-branchstate@*/</span>
00190     <span class="keywordflow">if</span> (s != data) s = <a class="code" href="poptint_8h.html#a14">_free</a>(s);
00191     <span class="comment">/*@=branchstate@*/</span>
00192 
00193     <span class="keywordflow">return</span> val;
00194 }
00195 
<a name="l00204"></a><a class="code" href="formats_8c.html#a8">00204</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a8">base64Format</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00205                 <span class="comment">/*@unused@*/</span> <span class="keywordtype">char</span> * formatPrefix, <span class="keywordtype">int</span> padding, <span class="keywordtype">int</span> element)
00206         <span class="comment">/*@*/</span>
00207 {
00208     <span class="keywordtype">char</span> * val;
00209 
00210     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a72">RPM_BIN_TYPE</a>) {
00211         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a blob)"</span>));
00212     } <span class="keywordflow">else</span> {
00213         <span class="keyword">const</span> <span class="keywordtype">char</span> * enc;
00214         <span class="keywordtype">char</span> * t;
00215         <span class="keywordtype">int</span> lc;
00216         <span class="keywordtype">int</span> nt = ((element + 2) / 3) * 4;
00217 
00218         <span class="comment">/*@-globs@*/</span>
00219         <span class="comment">/* Add additional bytes necessary for eol string(s). */</span>
00220         <span class="keywordflow">if</span> (b64encode_chars_per_line &gt; 0 &amp;&amp; b64encode_eolstr != NULL) {
00221             lc = (nt + b64encode_chars_per_line - 1) / b64encode_chars_per_line;
00222         <span class="keywordflow">if</span> (((nt + b64encode_chars_per_line - 1) % b64encode_chars_per_line) != 0)
00223             ++lc;
00224             nt += lc * strlen(b64encode_eolstr);
00225         }
00226         <span class="comment">/*@=globs@*/</span>
00227 
00228         val = t = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(nt + padding + 1);
00229 
00230         *t = <span class="charliteral">'\0'</span>;
00231         <span class="keywordflow">if</span> ((enc = b64encode(data, element)) != NULL) {
00232             t = <a class="code" href="system_8h.html#a32">stpcpy</a>(t, enc);
00233             enc = <a class="code" href="poptint_8h.html#a14">_free</a>(enc);
00234         }
00235     }
00236 
00237     <span class="keywordflow">return</span> val;
00238 }
00239 
00240 <span class="preprocessor">#ifdef  NOTYET</span>
00241 <span class="preprocessor"></span>
00249 <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * pgppktFormat(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00250         <span class="keywordtype">char</span> * formatPrefix, <span class="keywordtype">int</span> padding, <span class="keywordtype">int</span> element)
00251                 <span class="comment">/*@modifies formatPrefix @*/</span>
00252 {
00253     <span class="keywordtype">char</span> * val;
00254 
00255     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a72">RPM_BIN_TYPE</a>) {
00256         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a blob)"</span>));
00257     } <span class="keywordflow">else</span> {
00258     }
00259 
00260     <span class="keywordflow">return</span> val;
00261 }
00262 <span class="preprocessor">#endif</span>
00263 <span class="preprocessor"></span>
<a name="l00272"></a><a class="code" href="formats_8c.html#a9">00272</a> <span class="keyword">static</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a9">depflagsFormat</a>(<a class="code" href="header_8h.html#a9">int_32</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span> * data, 
00273         <span class="keywordtype">char</span> * formatPrefix, <span class="keywordtype">int</span> padding, <span class="comment">/*@unused@*/</span> <span class="keywordtype">int</span> element)
00274                 <span class="comment">/*@modifies formatPrefix @*/</span>
00275 {
00276     <span class="keywordtype">char</span> * val;
00277     <span class="keywordtype">char</span> buf[10];
00278     <span class="keywordtype">int</span> anint = *((<a class="code" href="header_8h.html#a9">int_32</a> *) data);
00279 
00280     <span class="keywordflow">if</span> (type != <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>) {
00281         val = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"(not a number)"</span>));
00282     } <span class="keywordflow">else</span> {
00283         buf[0] = <span class="charliteral">'\0'</span>;
00284 
00285         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a497a255">RPMSENSE_LESS</a>) 
00286             strcat(buf, <span class="stringliteral">"&lt;"</span>);
00287         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a497a256">RPMSENSE_GREATER</a>)
00288             strcat(buf, <span class="stringliteral">"&gt;"</span>);
00289         <span class="keywordflow">if</span> (anint &amp; <a class="code" href="rpmlib_8h.html#a497a257">RPMSENSE_EQUAL</a>)
00290             strcat(buf, <span class="stringliteral">"="</span>);
00291 
00292         val = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(5 + padding);
00293         strcat(formatPrefix, <span class="stringliteral">"s"</span>);
00294         <span class="comment">/*@-formatconst@*/</span>
00295         sprintf(val, formatPrefix, buf);
00296         <span class="comment">/*@=formatconst@*/</span>
00297     }
00298 
00299     <span class="keywordflow">return</span> val;
00300 }
00301 
<a name="l00310"></a><a class="code" href="formats_8c.html#a10">00310</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a10">fsnamesTag</a>( <span class="comment">/*@unused@*/</span> <a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * type,
00311                 <span class="comment">/*@out@*/</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00312                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00313         <span class="comment">/*@globals fileSystem, internalState @*/</span>
00314         <span class="comment">/*@modifies *type, *data, *count, *freeData,</span>
00315 <span class="comment">                fileSystem, internalState @*/</span>
00316 {
00317     <span class="keyword">const</span> <span class="keywordtype">char</span> ** list;
00318 
00319     <span class="keywordflow">if</span> (<a class="code" href="fs_8c.html#a5">rpmGetFilesystemList</a>(&amp;list, count)) {
00320         <span class="keywordflow">return</span> 1;
00321     }
00322 
00323     *type = <a class="code" href="group__header.html#a93a73">RPM_STRING_ARRAY_TYPE</a>;
00324     *((<span class="keyword">const</span> <span class="keywordtype">char</span> ***) data) = list;
00325 
00326     *freeData = 0;
00327 
00328     <span class="keywordflow">return</span> 0; 
00329 }
00330 
<a name="l00339"></a><a class="code" href="formats_8c.html#a11">00339</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a11">instprefixTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@null@*/</span> <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00340         <span class="comment">/*@null@*/</span> <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data,
00341         <span class="comment">/*@null@*/</span> <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00342         <span class="comment">/*@null@*/</span> <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00343                 <span class="comment">/*@modifies *type, *data, *freeData @*/</span>
00344 {
00345     <a class="code" href="rpmlib_8h.html#a69">HGE_t</a> hge = (HGE_t)headerGetEntryMinMemory;
00346     <a class="code" href="rpmlib_8h.html#a68">HFD_t</a> hfd = headerFreeData;
00347     <a class="code" href="group__header.html#a13">rpmTagType</a> ipt;
00348     <span class="keywordtype">char</span> ** array;
00349 
00350     <span class="keywordflow">if</span> (hge(h, <a class="code" href="rpmlib_8h.html#a494a171">RPMTAG_INSTALLPREFIX</a>, type, (<span class="keywordtype">void</span> **)data, count)) {
00351         <span class="keywordflow">if</span> (freeData) *freeData = 0;
00352         <span class="keywordflow">return</span> 0;
00353     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (hge(h, <a class="code" href="rpmlib_8h.html#a494a203">RPMTAG_INSTPREFIXES</a>, &amp;ipt, (<span class="keywordtype">void</span> **) &amp;array, count)) {
00354         <span class="keywordflow">if</span> (data) *data = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(array[0]);
00355         <span class="keywordflow">if</span> (freeData) *freeData = 1;
00356         <span class="keywordflow">if</span> (type) *type = <a class="code" href="group__header.html#a93a71">RPM_STRING_TYPE</a>;
00357         array = hfd(array, ipt);
00358         <span class="keywordflow">return</span> 0;
00359     } 
00360 
00361     <span class="keywordflow">return</span> 1;
00362 }
00363 
<a name="l00372"></a><a class="code" href="formats_8c.html#a12">00372</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a12">fssizesTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00373                 <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00374                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00375         <span class="comment">/*@globals rpmGlobalMacroContext,</span>
00376 <span class="comment">                fileSystem, internalState @*/</span>
00377         <span class="comment">/*@modifies *type, *data, *count, *freeData, rpmGlobalMacroContext,</span>
00378 <span class="comment">                fileSystem, internalState @*/</span>
00379 {
00380     <a class="code" href="rpmlib_8h.html#a69">HGE_t</a> hge = (HGE_t)headerGetEntryMinMemory;
00381     <span class="keyword">const</span> <span class="keywordtype">char</span> ** filenames;
00382     <a class="code" href="header_8h.html#a9">int_32</a> * filesizes;
00383     <a class="code" href="header_8h.html#a12">uint_32</a> * usages;
00384     <span class="keywordtype">int</span> numFiles;
00385 
00386     <span class="keywordflow">if</span> (!hge(h, <a class="code" href="rpmlib_8h.html#a494a141">RPMTAG_FILESIZES</a>, NULL, (<span class="keywordtype">void</span> **) &amp;filesizes, &amp;numFiles)) {
00387         filesizes = NULL;
00388         numFiles = 0;
00389         filenames = NULL;
00390     } <span class="keywordflow">else</span> {
00391         <a class="code" href="lib_2misc_8c.html#a14">rpmBuildFileList</a>(h, &amp;filenames, &amp;numFiles);
00392     }
00393 
00394     <span class="keywordflow">if</span> (<a class="code" href="fs_8c.html#a5">rpmGetFilesystemList</a>(NULL, count)) {
00395         <span class="keywordflow">return</span> 1;
00396     }
00397 
00398     *type = <a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>;
00399     *freeData = 1;
00400 
00401     <span class="keywordflow">if</span> (filenames == NULL) {
00402         usages = <a class="code" href="rpmmalloc_8c.html#a2">xcalloc</a>((*count), <span class="keyword">sizeof</span>(usages));
00403         *data = usages;
00404 
00405         <span class="keywordflow">return</span> 0;
00406     }
00407 
00408     <span class="keywordflow">if</span> (<a class="code" href="fs_8c.html#a6">rpmGetFilesystemUsage</a>(filenames, filesizes, numFiles, &amp;usages, 0))      
00409         <span class="keywordflow">return</span> 1;
00410 
00411     *data = usages;
00412 
00413     filenames = <a class="code" href="poptint_8h.html#a14">_free</a>(filenames);
00414 
00415     <span class="keywordflow">return</span> 0;
00416 }
00417 
<a name="l00426"></a><a class="code" href="formats_8c.html#a13">00426</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a13">triggercondsTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00427         <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00428         <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00429                 <span class="comment">/*@modifies *type, *data, *count, *freeData @*/</span>
00430 {
00431     <a class="code" href="rpmlib_8h.html#a69">HGE_t</a> hge = (HGE_t)headerGetEntryMinMemory;
00432     <a class="code" href="rpmlib_8h.html#a68">HFD_t</a> hfd = headerFreeData;
00433     <a class="code" href="group__header.html#a13">rpmTagType</a> tnt, tvt, tst;
00434     <a class="code" href="header_8h.html#a9">int_32</a> * indices, * flags;
00435     <span class="keywordtype">char</span> ** names, ** versions;
00436     <span class="keywordtype">int</span> numNames, numScripts;
00437     <span class="keywordtype">char</span> ** conds, ** s;
00438     <span class="keywordtype">char</span> * item, * flagsStr;
00439     <span class="keywordtype">char</span> * chptr;
00440     <span class="keywordtype">int</span> i, j, xx;
00441     <span class="keywordtype">char</span> buf[5];
00442 
00443     <span class="keywordflow">if</span> (!hge(h, <a class="code" href="rpmlib_8h.html#a494a179">RPMTAG_TRIGGERNAME</a>, &amp;tnt, (<span class="keywordtype">void</span> **) &amp;names, &amp;numNames)) {
00444         *freeData = 0;
00445         <span class="keywordflow">return</span> 0;
00446     }
00447 
00448     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a182">RPMTAG_TRIGGERINDEX</a>, NULL, (<span class="keywordtype">void</span> **) &amp;indices, NULL);
00449     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a181">RPMTAG_TRIGGERFLAGS</a>, NULL, (<span class="keywordtype">void</span> **) &amp;flags, NULL);
00450     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a180">RPMTAG_TRIGGERVERSION</a>, &amp;tvt, (<span class="keywordtype">void</span> **) &amp;versions, NULL);
00451     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a178">RPMTAG_TRIGGERSCRIPTS</a>, &amp;tst, (<span class="keywordtype">void</span> **) &amp;s, &amp;numScripts);
00452     s = hfd(s, tst);
00453 
00454     *freeData = 1;
00455     *data = conds = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(<span class="keyword">sizeof</span>(*conds) * numScripts);
00456     *count = numScripts;
00457     *type = <a class="code" href="group__header.html#a93a73">RPM_STRING_ARRAY_TYPE</a>;
00458     <span class="keywordflow">for</span> (i = 0; i &lt; numScripts; i++) {
00459         chptr = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">""</span>);
00460 
00461         <span class="keywordflow">for</span> (j = 0; j &lt; numNames; j++) {
00462             <span class="keywordflow">if</span> (indices[j] != i)
00463                 <span class="comment">/*@innercontinue@*/</span> <span class="keywordflow">continue</span>;
00464 
00465             item = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(strlen(names[j]) + strlen(versions[j]) + 20);
00466             <span class="keywordflow">if</span> (flags[j] &amp; <a class="code" href="rpmlib_8h.html#a16">RPMSENSE_SENSEMASK</a>) {
00467                 buf[0] = <span class="charliteral">'%'</span>, buf[1] = <span class="charliteral">'\0'</span>;
00468                 flagsStr = <a class="code" href="formats_8c.html#a9">depflagsFormat</a>(<a class="code" href="group__header.html#a93a70">RPM_INT32_TYPE</a>, flags, buf, 0, j);
00469                 sprintf(item, <span class="stringliteral">"%s %s %s"</span>, names[j], flagsStr, versions[j]);
00470                 flagsStr = <a class="code" href="poptint_8h.html#a14">_free</a>(flagsStr);
00471             } <span class="keywordflow">else</span> {
00472                 strcpy(item, names[j]);
00473             }
00474 
00475             chptr = <a class="code" href="rpmmalloc_8c.html#a3">xrealloc</a>(chptr, strlen(chptr) + strlen(item) + 5);
00476             <span class="keywordflow">if</span> (*chptr != <span class="charliteral">'\0'</span>) strcat(chptr, <span class="stringliteral">", "</span>);
00477             strcat(chptr, item);
00478             item = <a class="code" href="poptint_8h.html#a14">_free</a>(item);
00479         }
00480 
00481         conds[i] = chptr;
00482     }
00483 
00484     names = hfd(names, tnt);
00485     versions = hfd(versions, tvt);
00486 
00487     <span class="keywordflow">return</span> 0;
00488 }
00489 
<a name="l00498"></a><a class="code" href="formats_8c.html#a14">00498</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a14">triggertypeTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00499         <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00500         <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00501                 <span class="comment">/*@modifies *type, *data, *count, *freeData @*/</span>
00502 {
00503     <a class="code" href="rpmlib_8h.html#a69">HGE_t</a> hge = (HGE_t)headerGetEntryMinMemory;
00504     <a class="code" href="rpmlib_8h.html#a68">HFD_t</a> hfd = headerFreeData;
00505     <a class="code" href="group__header.html#a13">rpmTagType</a> tst;
00506     <a class="code" href="header_8h.html#a9">int_32</a> * indices, * flags;
00507     <span class="keyword">const</span> <span class="keywordtype">char</span> ** conds;
00508     <span class="keyword">const</span> <span class="keywordtype">char</span> ** s;
00509     <span class="keywordtype">int</span> i, j, xx;
00510     <span class="keywordtype">int</span> numScripts, numNames;
00511 
00512     <span class="keywordflow">if</span> (!hge(h, <a class="code" href="rpmlib_8h.html#a494a182">RPMTAG_TRIGGERINDEX</a>, NULL, (<span class="keywordtype">void</span> **) &amp;indices, &amp;numNames)) {
00513         *freeData = 0;
00514         <span class="keywordflow">return</span> 1;
00515     }
00516 
00517     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a181">RPMTAG_TRIGGERFLAGS</a>, NULL, (<span class="keywordtype">void</span> **) &amp;flags, NULL);
00518     xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a178">RPMTAG_TRIGGERSCRIPTS</a>, &amp;tst, (<span class="keywordtype">void</span> **) &amp;s, &amp;numScripts);
00519     s = hfd(s, tst);
00520 
00521     *freeData = 1;
00522     *data = conds = <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a>(<span class="keyword">sizeof</span>(*conds) * numScripts);
00523     *count = numScripts;
00524     *type = <a class="code" href="group__header.html#a93a73">RPM_STRING_ARRAY_TYPE</a>;
00525     <span class="keywordflow">for</span> (i = 0; i &lt; numScripts; i++) {
00526         <span class="keywordflow">for</span> (j = 0; j &lt; numNames; j++) {
00527             <span class="keywordflow">if</span> (indices[j] != i)
00528                 <span class="comment">/*@innercontinue@*/</span> <span class="keywordflow">continue</span>;
00529 
00530             <span class="keywordflow">if</span> (flags[j] &amp; <a class="code" href="rpmlib_8h.html#a497a270">RPMSENSE_TRIGGERIN</a>)
00531                 conds[i] = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">"in"</span>);
00532             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags[j] &amp; <a class="code" href="rpmlib_8h.html#a497a271">RPMSENSE_TRIGGERUN</a>)
00533                 conds[i] = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">"un"</span>);
00534             <span class="keywordflow">else</span>
00535                 conds[i] = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(<span class="stringliteral">"postun"</span>);
00536             <span class="comment">/*@innerbreak@*/</span> <span class="keywordflow">break</span>;
00537         }
00538     }
00539 
00540     <span class="keywordflow">return</span> 0;
00541 }
00542 
<a name="l00551"></a><a class="code" href="formats_8c.html#a15">00551</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a15">filenamesTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00552         <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00553         <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00554                 <span class="comment">/*@modifies *type, *data, *count, *freeData @*/</span>
00555 {
00556     *type = <a class="code" href="group__header.html#a93a73">RPM_STRING_ARRAY_TYPE</a>;
00557 
00558     <a class="code" href="lib_2misc_8c.html#a14">rpmBuildFileList</a>(h, (<span class="keyword">const</span> <span class="keywordtype">char</span> ***) data, count);
00559     *freeData = 1;
00560 
00561     *freeData = 0;      <span class="comment">/* XXX WTFO? */</span>
00562 
00563     <span class="keywordflow">return</span> 0; 
00564 }
00565 
00566 <span class="comment">/* I18N look aside diversions */</span>
00567 
00568 <span class="comment">/*@-exportlocal -exportheadervar@*/</span>
00569 <span class="comment">/*@unchecked@*/</span>
<a name="l00570"></a><a class="code" href="formats_8c.html#a0">00570</a> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a0">_nl_msg_cat_cntr</a>;   <span class="comment">/* XXX GNU gettext voodoo */</span>
00571 <span class="comment">/*@=exportlocal =exportheadervar@*/</span>
00572 <span class="comment">/*@observer@*/</span> <span class="comment">/*@unchecked@*/</span>
<a name="l00573"></a><a class="code" href="formats_8c.html#a1">00573</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a1">language</a> = <span class="stringliteral">"LANGUAGE"</span>;
00574 
00575 <span class="comment">/*@observer@*/</span> <span class="comment">/*@unchecked@*/</span>
<a name="l00576"></a><a class="code" href="formats_8c.html#a2">00576</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="formats_8c.html#a2">_macro_i18ndomains</a> =
00577                 <span class="stringliteral">"%{?_i18ndomains:%{_i18ndomains}}"</span>;
00578 
<a name="l00588"></a><a class="code" href="formats_8c.html#a16">00588</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a16">i18nTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <a class="code" href="header_8h.html#a9">int_32</a> tag, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00589                 <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00590                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00591         <span class="comment">/*@globals rpmGlobalMacroContext @*/</span>
00592         <span class="comment">/*@modifies *type, *data, *count, *freeData, rpmGlobalMacroContext @*/</span>
00593 {
00594     <a class="code" href="rpmlib_8h.html#a69">HGE_t</a> hge = (HGE_t)headerGetEntryMinMemory;
00595     <span class="keywordtype">char</span> * dstring = <a class="code" href="macro_8c.html#a50">rpmExpand</a>(<a class="code" href="formats_8c.html#a2">_macro_i18ndomains</a>, NULL);
00596     <span class="keywordtype">int</span> rc;
00597 
00598     *type = <a class="code" href="group__header.html#a93a71">RPM_STRING_TYPE</a>;
00599     *data = NULL;
00600     *count = 0;
00601     *freeData = 0;
00602 
00603     <span class="keywordflow">if</span> (dstring &amp;&amp; *dstring) {
00604         <span class="keywordtype">char</span> *domain, *de;
00605         <span class="keyword">const</span> <span class="keywordtype">char</span> * langval;
00606         <span class="keyword">const</span> <span class="keywordtype">char</span> * msgkey;
00607         <span class="keyword">const</span> <span class="keywordtype">char</span> * msgid;
00608 
00609         {   <span class="keyword">const</span> <span class="keywordtype">char</span> * tn = <a class="code" href="tagName_8c.html#a0">tagName</a>(tag);
00610             <span class="keyword">const</span> <span class="keywordtype">char</span> * n;
00611             <span class="keywordtype">char</span> * mk;
00612             (void) <a class="code" href="group__header.html#a88">headerNVR</a>(h, &amp;n, NULL, NULL);
00613             mk = <a class="code" href="system_8h.html#a36">alloca</a>(strlen(n) + strlen(tn) + <span class="keyword">sizeof</span>(<span class="stringliteral">"()"</span>));
00614             sprintf(mk, <span class="stringliteral">"%s(%s)"</span>, n, tn);
00615             msgkey = mk;
00616         }
00617 
00618         <span class="comment">/* change to en_US for msgkey -&gt; msgid resolution */</span>
00619         langval = <a class="code" href="system_8h.html#a34">getenv</a>(<a class="code" href="formats_8c.html#a1">language</a>);
00620         (void) <a class="code" href="system_8h.html#a42">setenv</a>(<a class="code" href="formats_8c.html#a1">language</a>, <span class="stringliteral">"en_US"</span>, 1);
00621 <span class="comment">/*@i@*/</span> ++<a class="code" href="formats_8c.html#a0">_nl_msg_cat_cntr</a>;
00622 
00623         msgid = NULL;
00624         <span class="comment">/*@-branchstate@*/</span>
00625         <span class="keywordflow">for</span> (domain = dstring; domain != NULL; domain = de) {
00626             de = strchr(domain, <span class="charliteral">':'</span>);
00627             <span class="keywordflow">if</span> (de) *de++ = <span class="charliteral">'\0'</span>;
00628             msgid = <span class="comment">/*@-unrecog@*/</span> <a class="code" href="system_8h.html#a19">dgettext</a>(domain, msgkey) <span class="comment">/*@=unrecog@*/</span>;
00629             <span class="keywordflow">if</span> (msgid != msgkey) <span class="keywordflow">break</span>;
00630         }
00631         <span class="comment">/*@=branchstate@*/</span>
00632 
00633         <span class="comment">/* restore previous environment for msgid -&gt; msgstr resolution */</span>
00634         <span class="keywordflow">if</span> (langval)
00635             (void) <a class="code" href="system_8h.html#a42">setenv</a>(<a class="code" href="formats_8c.html#a1">language</a>, langval, 1);
00636         <span class="keywordflow">else</span>
00637             <a class="code" href="system_8h.html#a43">unsetenv</a>(<a class="code" href="formats_8c.html#a1">language</a>);
00638 <span class="comment">/*@i@*/</span> ++<a class="code" href="formats_8c.html#a0">_nl_msg_cat_cntr</a>;
00639 
00640         <span class="keywordflow">if</span> (domain &amp;&amp; msgid) {
00641             *data = <span class="comment">/*@-unrecog@*/</span> <a class="code" href="system_8h.html#a19">dgettext</a>(domain, msgid) <span class="comment">/*@=unrecog@*/</span>;
00642             *data = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(*data);     <span class="comment">/* XXX xstrdup has side effects. */</span>
00643             *count = 1;
00644             *freeData = 1;
00645         }
00646         dstring = <a class="code" href="poptint_8h.html#a14">_free</a>(dstring);
00647         <span class="keywordflow">if</span> (*data)
00648             <span class="keywordflow">return</span> 0;
00649     }
00650 
00651     dstring = <a class="code" href="poptint_8h.html#a14">_free</a>(dstring);
00652 
00653     rc = hge(h, tag, type, (<span class="keywordtype">void</span> **)data, count);
00654 
00655     <span class="keywordflow">if</span> (rc &amp;&amp; (*data) != NULL) {
00656         *data = <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(*data);
00657         *freeData = 1;
00658         <span class="keywordflow">return</span> 0;
00659     }
00660 
00661     *freeData = 0;
00662     *data = NULL;
00663     *count = 0;
00664     <span class="keywordflow">return</span> 1;
00665 }
00666 
<a name="l00675"></a><a class="code" href="formats_8c.html#a17">00675</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a17">summaryTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00676                 <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00677                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00678         <span class="comment">/*@globals rpmGlobalMacroContext @*/</span>
00679         <span class="comment">/*@modifies *type, *data, *count, *freeData, rpmGlobalMacroContext @*/</span>
00680 {
00681     <span class="keywordflow">return</span> <a class="code" href="formats_8c.html#a16">i18nTag</a>(h, <a class="code" href="rpmlib_8h.html#a494a117">RPMTAG_SUMMARY</a>, type, data, count, freeData);
00682 }
00683 
<a name="l00692"></a><a class="code" href="formats_8c.html#a18">00692</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a18">descriptionTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00693                 <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00694                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00695         <span class="comment">/*@globals rpmGlobalMacroContext @*/</span>
00696         <span class="comment">/*@modifies *type, *data, *count, *freeData, rpmGlobalMacroContext @*/</span>
00697 {
00698     <span class="keywordflow">return</span> <a class="code" href="formats_8c.html#a16">i18nTag</a>(h, <a class="code" href="rpmlib_8h.html#a494a118">RPMTAG_DESCRIPTION</a>, type, data, count, freeData);
00699 }
00700 
<a name="l00709"></a><a class="code" href="formats_8c.html#a19">00709</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="formats_8c.html#a19">groupTag</a>(<a class="code" href="structheaderToken.html">Header</a> h, <span class="comment">/*@out@*/</span> <a class="code" href="group__header.html#a13">rpmTagType</a> * type,
00710                 <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> ** data, <span class="comment">/*@out@*/</span> <a class="code" href="header_8h.html#a9">int_32</a> * count,
00711                 <span class="comment">/*@out@*/</span> <span class="keywordtype">int</span> * freeData)
00712         <span class="comment">/*@globals rpmGlobalMacroContext @*/</span>
00713         <span class="comment">/*@modifies *type, *data, *count, *freeData, rpmGlobalMacroContext @*/</span>
00714 {
00715     <span class="keywordflow">return</span> <a class="code" href="formats_8c.html#a16">i18nTag</a>(h, <a class="code" href="rpmlib_8h.html#a494a129">RPMTAG_GROUP</a>, type, data, count, freeData);
00716 }
00717 
00718 <span class="comment">/*@-type@*/</span> <span class="comment">/* FIX: cast? */</span>
<a name="l00719"></a><a class="code" href="formats_8c.html#a3">00719</a> <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structheaderSprintfExtension__s.html">headerSprintfExtension_s</a> rpmHeaderFormats[] = {
00720     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_GROUP"</span>, { <a class="code" href="formats_8c.html#a19">groupTag</a> } },
00721     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_DESCRIPTION"</span>, { <a class="code" href="formats_8c.html#a18">descriptionTag</a> } },
00722     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_SUMMARY"</span>, { <a class="code" href="formats_8c.html#a17">summaryTag</a> } },
00723     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_FILENAMES"</span>, { <a class="code" href="formats_8c.html#a15">filenamesTag</a> } },
00724     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_FSSIZES"</span>, { <a class="code" href="formats_8c.html#a12">fssizesTag</a> } },
00725     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_FSNAMES"</span>, { <a class="code" href="formats_8c.html#a10">fsnamesTag</a> } },
00726     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_INSTALLPREFIX"</span>, { <a class="code" href="formats_8c.html#a11">instprefixTag</a> } },
00727     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_TRIGGERCONDS"</span>, { <a class="code" href="formats_8c.html#a13">triggercondsTag</a> } },
00728     { <a class="code" href="group__header.html#a91a63">HEADER_EXT_TAG</a>, <span class="stringliteral">"RPMTAG_TRIGGERTYPE"</span>, { <a class="code" href="formats_8c.html#a14">triggertypeTag</a> } },
00729     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"armor"</span>, { <a class="code" href="formats_8c.html#a7">armorFormat</a> } },
00730     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"base64"</span>, { <a class="code" href="formats_8c.html#a8">base64Format</a> } },
00731 <span class="preprocessor">#ifdef  NOTYET</span>
00732 <span class="preprocessor"></span>    { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"pgppkt"</span>, { pgppktFormat } },
00733 <span class="preprocessor">#endif</span>
00734 <span class="preprocessor"></span>    { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"depflags"</span>, { <a class="code" href="formats_8c.html#a9">depflagsFormat</a> } },
00735     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"fflags"</span>, { <a class="code" href="formats_8c.html#a6">fflagsFormat</a> } },
00736     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"perms"</span>, { <a class="code" href="formats_8c.html#a5">permsFormat</a> } },
00737     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"permissions"</span>, { <a class="code" href="formats_8c.html#a5">permsFormat</a> } },
00738     { <a class="code" href="group__header.html#a91a61">HEADER_EXT_FORMAT</a>, <span class="stringliteral">"triggertype"</span>, { <a class="code" href="formats_8c.html#a4">triggertypeFormat</a> } },
00739     { <a class="code" href="group__header.html#a91a62">HEADER_EXT_MORE</a>, NULL, { (<span class="keywordtype">void</span> *) headerDefaultFormats } }
00740 } ;
00741 <span class="comment">/*@=type@*/</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Sep 12 22:14:56 2002 for rpm by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.17 </small></address>
</body>
</html>