<!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> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> <a class="qindex" href="pages.html">Related Pages</a> </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 <<a class="code" href="rpmlib_8h.html">rpmlib.h</a>></span> 00007 <span class="preprocessor">#include <<a class="code" href="rpmmacro_8h.html">rpmmacro.h</a>></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 & <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 & <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 & <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 & <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 & <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 & <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 & <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> **)&s, &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 > 0 && 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 > 0 && 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 & <a class="code" href="rpmlib_8h.html#a497a255">RPMSENSE_LESS</a>) 00286 strcat(buf, <span class="stringliteral">"<"</span>); 00287 <span class="keywordflow">if</span> (anint & <a class="code" href="rpmlib_8h.html#a497a256">RPMSENSE_GREATER</a>) 00288 strcat(buf, <span class="stringliteral">">"</span>); 00289 <span class="keywordflow">if</span> (anint & <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>(&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>, &ipt, (<span class="keywordtype">void</span> **) &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> **) &filesizes, &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, &filenames, &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, &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>, &tnt, (<span class="keywordtype">void</span> **) &names, &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> **) &indices, NULL); 00449 xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a181">RPMTAG_TRIGGERFLAGS</a>, NULL, (<span class="keywordtype">void</span> **) &flags, NULL); 00450 xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a180">RPMTAG_TRIGGERVERSION</a>, &tvt, (<span class="keywordtype">void</span> **) &versions, NULL); 00451 xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a178">RPMTAG_TRIGGERSCRIPTS</a>, &tst, (<span class="keywordtype">void</span> **) &s, &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 < 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 < 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] & <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> **) &indices, &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> **) &flags, NULL); 00518 xx = hge(h, <a class="code" href="rpmlib_8h.html#a494a178">RPMTAG_TRIGGERSCRIPTS</a>, &tst, (<span class="keywordtype">void</span> **) &s, &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 < numScripts; i++) { 00526 <span class="keywordflow">for</span> (j = 0; j < 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] & <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] & <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 && *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, &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 -> 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 -> 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 && 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 && (*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>