<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>rpm: rpmio/macro.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.7 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul></div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div> <h1>rpmio/macro.c File Reference</h1><code>#include "<a class="el" href="system_8h-source.html">system.h</a>"</code><br> <code>#include <stdarg.h></code><br> <code>#include <<a class="el" href="rpmio__internal_8h-source.html">rpmio_internal.h</a>></code><br> <code>#include <<a class="el" href="rpmmessages_8h-source.html">rpmmessages.h</a>></code><br> <code>#include <<a class="el" href="rpmerr_8h-source.html">rpmerr.h</a>></code><br> <code>#include <<a class="el" href="rpmmacro_8h-source.html">rpmmacro.h</a>></code><br> <code>#include "<a class="el" href="debug_8h-source.html">debug.h</a>"</code><br> <p> <a href="macro_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structMacroBuf__s.html">MacroBuf_s</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Macro expansion state. <a href="structMacroBuf__s.html#_details">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#e7a4f4788068a6d7f99bbb7e17a3fa06">isblank</a>(_c) ((_c) == ' ' || (_c) == '\t')</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#31f3b7dcd3b72de84277e0611c91dc8c">iseol</a>(_c) ((_c) == '\n' || (_c) == '\r')</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#dbf7da06422591f6c1917c910053928f">STREQ</a>(_t, _f, _fn) ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn)))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#29032771750a168880d6b86f7719eb05">SAVECHAR</a>(_mb, _c) { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; }</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a5f565fcbbcfbe72a60d1bace33cbd96">_MAX_MACRO_DEPTH</a> 16</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a325230fbd204a976b9fec8a97c01daa">_PRINT_MACRO_TRACE</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#85580f8342baa025fb7fcef85424eb4b">_PRINT_EXPAND_TRACE</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#3852fb2910f45b4049430146881d2558">MACRO_CHUNK_SIZE</a> 16</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#51cebfcbdd4e46d283e62bb1f7491ba4">SKIPBLANK</a>(_s, _c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#e8e4e710929a16d43f0a0f723802f8a4">SKIPNONBLANK</a>(_s, _c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#2ba9e1e548fd331c5fe70f287ff54bfc">COPYNAME</a>(_ne, _s, _c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#651e66f7015a6cae5b0360476ff5b732">COPYOPTS</a>(_oe, _s, _c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#28bb1cf1823622c3510d2976da33ad06">POPT_ERROR_NOARG</a> -10</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#46d04684e0c20a8a32c1d9d01995de90">POPT_ERROR_BADQUOTE</a> -15</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#94b752bdfe50201136ceb0402fd93599">POPT_ERROR_MALLOC</a> -21</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#6fd2ee84754652db0f5264af238b62a2">POPT_ARGV_ARRAY_GROW_DELTA</a> 5</td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structMacroBuf__s.html">MacroBuf_s</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a832e60a571917fcb68ab360efa62df4">MacroBuf</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Macro expansion state. <a href="#a832e60a571917fcb68ab360efa62df4"></a><br></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#99d33da53395a7b1764d8e97933d14ad">expandMacro</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The main macro recursion loop. <a href="#99d33da53395a7b1764d8e97933d14ad"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#2574a8c557fe9a6754ff3b3656943f23">_free</a> (const void *p)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. <a href="#2574a8c557fe9a6754ff3b3656943f23"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#796fc9d6b8dc3c5f320e70862e741e54">compareMacroName</a> (const void *ap, const void *bp)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compare macro entries by name (qsort/bsearch). <a href="#796fc9d6b8dc3c5f320e70862e741e54"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#8fd5ec53561771a933f05aa43e35e2ff">expandMacroTable</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Enlarge macro table. <a href="#8fd5ec53561771a933f05aa43e35e2ff"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#0f7c54578add4b69252e9c0c7d8a4c52">sortMacroTable</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sort entries in macro table. <a href="#0f7c54578add4b69252e9c0c7d8a4c52"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#dde6f3d917ff0aec97fa0f07b6a901de">rpmDumpMacroTable</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, FILE *fp)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print macros to file stream. <a href="#dde6f3d917ff0aec97fa0f07b6a901de"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="structMacroEntry__s.html">MacroEntry</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#7de232655a8c39c381d01a0e859280e9">findEntry</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *<a class="el" href="structname.html">name</a>, size_t namelen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Find entry in macro table. <a href="#7de232655a8c39c381d01a0e859280e9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#b0d3dfd400ee26bb79baa9887879530a">rdcl</a> (char *buf, size_t size, <a class="el" href="struct__FD__s.html">FD_t</a> fd)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">fgets(3) analogue that reads \ continuations. <a href="#b0d3dfd400ee26bb79baa9887879530a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#2d3b1f4b62c48025af39977dcb0218e7">matchchar</a> (const char *p, char pl, char pr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return text between pl and matching pr characters. <a href="#2d3b1f4b62c48025af39977dcb0218e7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#98b6d4f4496d822c12de16036f6a6549">printMacro</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const char *s, const char *se)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Pre-print macro expression to be expanded. <a href="#98b6d4f4496d822c12de16036f6a6549"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#2e0d8e982cff3b5a81aa8e1b65b1f4b3">printExpansion</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const char *t, const char *te)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Post-print expanded macro expression. <a href="#2e0d8e982cff3b5a81aa8e1b65b1f4b3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#22c07020a2b5739ff2fe5900f65ff32e">expandT</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const char *f, size_t flen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Save source and expand field into target. <a href="#22c07020a2b5739ff2fe5900f65ff32e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#3cb49332bed1f1ca4b59d6c12adc5b41">expandU</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, char *u, size_t ulen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Save source/target and expand macro in u. <a href="#3cb49332bed1f1ca4b59d6c12adc5b41"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#d7c8feedc2696f3da7175fae15ec4e85">doShellEscape</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const char *cmd, size_t clen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Expand output of shell command into target buffer. <a href="#d7c8feedc2696f3da7175fae15ec4e85"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#f16b77dc1ecf33147f8c041b604d6ced">doDefine</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const char *se, int level, int expandbody)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Parse (and execute) new macro definition. <a href="#f16b77dc1ecf33147f8c041b604d6ced"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#755df497fc8fe288a65df1055e56977a">doUndefine</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *se)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Parse (and execute) macro undefinition. <a href="#755df497fc8fe288a65df1055e56977a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#0f5cea3892ea72f45b0fe2b9877599a0">pushMacro</a> (<a class="el" href="structMacroEntry__s.html">MacroEntry</a> *mep, const char *n, const char *o, const char *b, int level)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Push new macro definition onto macro entry stack. <a href="#0f5cea3892ea72f45b0fe2b9877599a0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#8d6f7d54c736ebbf736a9a99e50ed952">popMacro</a> (<a class="el" href="structMacroEntry__s.html">MacroEntry</a> *mep)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Pop macro definition from macro entry stack. <a href="#8d6f7d54c736ebbf736a9a99e50ed952"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#ab83b1b978f2436fdd7919bed1fbdf5d">freeArgs</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free parsed arguments for parameterized macro. <a href="#ab83b1b978f2436fdd7919bed1fbdf5d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#45b865d37be6cdeb6cbc7a7b85b93c32">grabArgs</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, const <a class="el" href="structMacroEntry__s.html">MacroEntry</a> me, const char *se, const char *lastc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Parse arguments (to next new line) for parameterized macro. <a href="#45b865d37be6cdeb6cbc7a7b85b93c32"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#3add41b1fbb8be19eb953c5557d7b8f5">doOutput</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, int waserror, const char *msg, size_t msglen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Perform macro message output. <a href="#3add41b1fbb8be19eb953c5557d7b8f5"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a0f62d307a6f45d8cfe425e49251e1f0">doFoo</a> (<a class="el" href="structMacroBuf__s.html">MacroBuf</a> mb, int negate, const char *f, size_t fn, const char *g, size_t gn)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Execute macro primitives. <a href="#a0f62d307a6f45d8cfe425e49251e1f0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#d41e09d193e7960a14ca71f78bdc47bc">XpoptDupArgv</a> (int argc, const char **<a class="el" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>, int *argcPtr, const char ***argvPtr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#b7015045d4fccadf46856cc1fa138f3f">XpoptParseArgvString</a> (const char *s, int *argcPtr, const char ***argvPtr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#c51b3a7dc3e3b18657406b0e03494b00">rpmGlob</a> (const char *patterns, int *argcPtr, const char ***argvPtr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return URL path(s) from a (URL prefixed) pattern glob. <a href="#c51b3a7dc3e3b18657406b0e03494b00"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#4847e20c27064ba3908275e5882fbd8a">expandMacros</a> (void *spec, <a class="el" href="structMacroContext__s.html">MacroContext</a> mc, char *sbuf, size_t slen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Expand macro into buffer. <a href="#4847e20c27064ba3908275e5882fbd8a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#f38cc0557a9d3def58f6d31db62c4859">addMacro</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *n, const char *o, const char *b, int level)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add macro to context. <a href="#f38cc0557a9d3def58f6d31db62c4859"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#47408de31de2e2539c1eff75fd98cac6">delMacro</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *n)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete macro from context. <a href="#47408de31de2e2539c1eff75fd98cac6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#9efaba7c44be35c0f2626b6114b154b7">rpmDefineMacro</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *macro, int level)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Define macro in context. <a href="#9efaba7c44be35c0f2626b6114b154b7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#1da77e015534d1cc1fe930aff4ecf64b">rpmLoadMacros</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, int level)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Load macros from specific context into global context. <a href="#1da77e015534d1cc1fe930aff4ecf64b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#312a8af38062f22c0d66e09d140be18f">rpmLoadMacroFile</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *fn)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Load macro context from a macro file. <a href="#312a8af38062f22c0d66e09d140be18f"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#15c1fb15f39d20163810779c1adbd0a7">rpmInitMacros</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc, const char *<a class="el" href="group__rpmrc.html#ge63ceb25d4146b91751ccf857f67f654">macrofiles</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize macro context from set of macrofile(s). <a href="#15c1fb15f39d20163810779c1adbd0a7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#709e867ae40adfff5e9bf15c8ffdd90c">rpmFreeMacros</a> (<a class="el" href="structMacroContext__s.html">MacroContext</a> mc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy macro context. <a href="#709e867ae40adfff5e9bf15c8ffdd90c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#997ece81a331fad7bd6a9f4b993f91c5">rpmFileHasSuffix</a> (const char *path, const char *suffix)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#1227fbff233c9a2f3559a76b65d8e3c0">isCompressed</a> (const char *<a class="el" href="parseScript_8c.html#f0baa3ccdd9d2a6adf03b72e2bea5789">file</a>, <a class="el" href="rpmmacro_8h.html#eb95839b1705caf41cb0593d533b89c3">rpmCompressedMagic</a> *compressed)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return type of compression used in file. <a href="#1227fbff233c9a2f3559a76b65d8e3c0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#5d9a83318fc250d1fad8096c811754d4">rpmExpand</a> (const char *arg,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return (malloc'ed) concatenated macro expansion(s). <a href="#5d9a83318fc250d1fad8096c811754d4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#4bb017f52f3bd9b8aae77772b0bc9ba8">rpmExpandNumeric</a> (const char *arg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return macro expansion as a numeric value. <a href="#4bb017f52f3bd9b8aae77772b0bc9ba8"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#23bc9da080ad3340bbba93a0bf45dd07">rpmCleanPath</a> (char *path)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Canonicalize file path. <a href="#23bc9da080ad3340bbba93a0bf45dd07"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#5167ad7785835f120734aad8ea938cd9">rpmGetPath</a> (const char *path,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return (malloc'ed) expanded, canonicalized, file path. <a href="#5167ad7785835f120734aad8ea938cd9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a00f38e60e61a7984bf1b08b7c440343">rpmGenPath</a> (const char *urlroot, const char *urlmdir, const char *urlfile)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Merge 3 args into path, any or all of which may be a url. <a href="#a00f38e60e61a7984bf1b08b7c440343"></a><br></td></tr> <tr><td colspan="2"><br><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#186792ba461d45758ca1edc3aa0f085b">rpmGlobalMacroContext_s</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#939bd9f1df20f3bb51e394f3b071bc42">rpmGlobalMacroContext</a> = &<a class="el" href="macro_8c.html#186792ba461d45758ca1edc3aa0f085b">rpmGlobalMacroContext_s</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#0adf3168d27759d533f4f375a90e5f0f">rpmCLIMacroContext_s</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#42c45213125c87fd74d25dd6acbbd15f">rpmCLIMacroContext</a> = &<a class="el" href="macro_8c.html#0adf3168d27759d533f4f375a90e5f0f">rpmCLIMacroContext_s</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#7bc6c3725c8a45369fe50aae3a7a8ec4">max_macro_depth</a> = 16</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#22edb0e3a004d9968ecf66389f4211fc">print_macro_trace</a> = 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#09aa8dd1edc2abff5b6ce1d3387002b8">print_expand_trace</a> = 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#4859ebf3de3eada7338899d0f24d3c23">_debug</a> = 0</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <p> Definition in file <a class="el" href="macro_8c-source.html">macro.c</a>.<hr><h2>Define Documentation</h2> <a class="anchor" name="a5f565fcbbcfbe72a60d1bace33cbd96"></a><!-- doxytag: member="macro.c::_MAX_MACRO_DEPTH" ref="a5f565fcbbcfbe72a60d1bace33cbd96" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define _MAX_MACRO_DEPTH 16 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00100">100</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="85580f8342baa025fb7fcef85424eb4b"></a><!-- doxytag: member="macro.c::_PRINT_EXPAND_TRACE" ref="85580f8342baa025fb7fcef85424eb4b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define _PRINT_EXPAND_TRACE 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00108">108</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="a325230fbd204a976b9fec8a97c01daa"></a><!-- doxytag: member="macro.c::_PRINT_MACRO_TRACE" ref="a325230fbd204a976b9fec8a97c01daa" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define _PRINT_MACRO_TRACE 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00104">104</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="2ba9e1e548fd331c5fe70f287ff54bfc"></a><!-- doxytag: member="macro.c::COPYNAME" ref="2ba9e1e548fd331c5fe70f287ff54bfc" args="(_ne, _s, _c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define COPYNAME </td> <td>(</td> <td class="paramtype">_ne, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment">{ <a class="code" href="macro_8c.html#51cebfcbdd4e46d283e62bb1f7491ba4">SKIPBLANK</a>(_s,_c); \ <span class="comment">/*@-boundswrite@*/</span> \ <span class="keywordflow">while</span>(((_c) = *(_s)) && (<a class="code" href="rpmio_8h.html#fab8f5a8cc3af91c75d30276d4c972ac">xisalnum</a>(_c) || (_c) == <span class="charliteral">'_'</span>)) \ *(_ne)++ = *(_s)++; \ *(_ne) = <span class="charliteral">'\0'</span>; \ <span class="comment">/*@=boundswrite@*/</span> \ } </pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00480">480</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, and <a class="el" href="macro_8c-source.html#l00771">doUndefine()</a>. </div> </div><p> <a class="anchor" name="651e66f7015a6cae5b0360476ff5b732"></a><!-- doxytag: member="macro.c::COPYOPTS" ref="651e66f7015a6cae5b0360476ff5b732" args="(_oe, _s, _c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define COPYOPTS </td> <td>(</td> <td class="paramtype">_oe, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment">{ <span class="comment">/*@-boundswrite@*/</span> \ <span class="keywordflow">while</span>(((_c) = *(_s)) && (_c) != <span class="charliteral">')'</span>) \ *(_oe)++ = *(_s)++; \ *(_oe) = <span class="charliteral">'\0'</span>; \ <span class="comment">/*@=boundswrite@*/</span> \ } </pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00489">489</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>. </div> </div><p> <a class="anchor" name="e7a4f4788068a6d7f99bbb7e17a3fa06"></a><!-- doxytag: member="macro.c::isblank" ref="e7a4f4788068a6d7f99bbb7e17a3fa06" args="(_c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define isblank </td> <td>(</td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> ((_c) == ' ' || (_c) == '\t')</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00010">10</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l00932">grabArgs()</a>. </div> </div><p> <a class="anchor" name="31f3b7dcd3b72de84277e0611c91dc8c"></a><!-- doxytag: member="macro.c::iseol" ref="31f3b7dcd3b72de84277e0611c91dc8c" args="(_c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define iseol </td> <td>(</td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> ((_c) == '\n' || (_c) == '\r')</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00012">12</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, <a class="el" href="macro_8c-source.html#l00598">doShellEscape()</a>, <a class="el" href="macro_8c-source.html#l00771">doUndefine()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, <a class="el" href="macro_8c-source.html#l00431">printExpansion()</a>, <a class="el" href="macro_8c-source.html#l00387">printMacro()</a>, and <a class="el" href="macro_8c-source.html#l00298">rdcl()</a>. </div> </div><p> <a class="anchor" name="3852fb2910f45b4049430146881d2558"></a><!-- doxytag: member="macro.c::MACRO_CHUNK_SIZE" ref="3852fb2910f45b4049430146881d2558" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MACRO_CHUNK_SIZE 16 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00113">113</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00165">expandMacroTable()</a>. </div> </div><p> <a class="anchor" name="6fd2ee84754652db0f5264af238b62a2"></a><!-- doxytag: member="macro.c::POPT_ARGV_ARRAY_GROW_DELTA" ref="6fd2ee84754652db0f5264af238b62a2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POPT_ARGV_ARRAY_GROW_DELTA 5 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l01582">1582</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="poptparse_8c-source.html#l00057">poptParseArgvString()</a>, and <a class="el" href="macro_8c-source.html#l01629">XpoptParseArgvString()</a>. </div> </div><p> <a class="anchor" name="46d04684e0c20a8a32c1d9d01995de90"></a><!-- doxytag: member="macro.c::POPT_ERROR_BADQUOTE" ref="46d04684e0c20a8a32c1d9d01995de90" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POPT_ERROR_BADQUOTE -15 </td> </tr> </table> </div> <div class="memdoc"> <p> error in paramter quoting <p> Definition at line <a class="el" href="macro_8c-source.html#l01579">1579</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="poptparse_8c-source.html#l00057">poptParseArgvString()</a>, <a class="el" href="popt_8c-source.html#l01180">poptStrerror()</a>, and <a class="el" href="macro_8c-source.html#l01629">XpoptParseArgvString()</a>. </div> </div><p> <a class="anchor" name="94b752bdfe50201136ceb0402fd93599"></a><!-- doxytag: member="macro.c::POPT_ERROR_MALLOC" ref="94b752bdfe50201136ceb0402fd93599" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POPT_ERROR_MALLOC -21 </td> </tr> </table> </div> <div class="memdoc"> <p> memory allocation failed <p> Definition at line <a class="el" href="macro_8c-source.html#l01580">1580</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="popt_8c-source.html#l00379">execCommand()</a>, <a class="el" href="poptparse_8c-source.html#l00129">poptConfigFileToString()</a>, <a class="el" href="poptparse_8c-source.html#l00014">poptDupArgv()</a>, <a class="el" href="poptparse_8c-source.html#l00057">poptParseArgvString()</a>, <a class="el" href="popt_8c-source.html#l01180">poptStrerror()</a>, <a class="el" href="macro_8c-source.html#l01585">XpoptDupArgv()</a>, and <a class="el" href="macro_8c-source.html#l01629">XpoptParseArgvString()</a>. </div> </div><p> <a class="anchor" name="28bb1cf1823622c3510d2976da33ad06"></a><!-- doxytag: member="macro.c::POPT_ERROR_NOARG" ref="28bb1cf1823622c3510d2976da33ad06" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POPT_ERROR_NOARG -10 </td> </tr> </table> </div> <div class="memdoc"> <p> missing argument <p> Definition at line <a class="el" href="macro_8c-source.html#l01578">1578</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="popt_8c-source.html#l00379">execCommand()</a>, <a class="el" href="poptparse_8c-source.html#l00014">poptDupArgv()</a>, <a class="el" href="popt_8c-source.html#l00706">poptGetNextOpt()</a>, <a class="el" href="popt_8c-source.html#l01180">poptStrerror()</a>, and <a class="el" href="macro_8c-source.html#l01585">XpoptDupArgv()</a>. </div> </div><p> <a class="anchor" name="29032771750a168880d6b86f7719eb05"></a><!-- doxytag: member="macro.c::SAVECHAR" ref="29032771750a168880d6b86f7719eb05" args="(_mb, _c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SAVECHAR </td> <td>(</td> <td class="paramtype">_mb, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; }</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00096">96</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00598">doShellEscape()</a>, and <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="51cebfcbdd4e46d283e62bb1f7491ba4"></a><!-- doxytag: member="macro.c::SKIPBLANK" ref="51cebfcbdd4e46d283e62bb1f7491ba4" args="(_s, _c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SKIPBLANK </td> <td>(</td> <td class="paramtype">_s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="comment">/*@-globs@*/</span> <span class="comment">/* FIX: __ctype_b */</span> \ <span class="keywordflow">while</span> (((_c) = *(_s)) && <a class="code" href="macro_8c.html#e7a4f4788068a6d7f99bbb7e17a3fa06">isblank</a>(_c)) \ (_s)++; \ </pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00468">468</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, and <a class="el" href="macro_8c-source.html#l01959">rpmLoadMacroFile()</a>. </div> </div><p> <a class="anchor" name="e8e4e710929a16d43f0a0f723802f8a4"></a><!-- doxytag: member="macro.c::SKIPNONBLANK" ref="e8e4e710929a16d43f0a0f723802f8a4" args="(_s, _c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SKIPNONBLANK </td> <td>(</td> <td class="paramtype">_s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="comment">/*@-globs@*/</span> <span class="comment">/* FIX: __ctype_b */</span> \ <span class="keywordflow">while</span> (((_c) = *(_s)) && !(<a class="code" href="macro_8c.html#e7a4f4788068a6d7f99bbb7e17a3fa06">isblank</a>(_c) || <a class="code" href="macro_8c.html#31f3b7dcd3b72de84277e0611c91dc8c">iseol</a>(_c))) \ (_s)++; \ </pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00474">474</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="dbf7da06422591f6c1917c910053928f"></a><!-- doxytag: member="macro.c::STREQ" ref="dbf7da06422591f6c1917c910053928f" args="(_t, _f, _fn)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define STREQ </td> <td>(</td> <td class="paramtype">_t, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_f, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_fn </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn)))</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00014">14</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, and <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <hr><h2>Typedef Documentation</h2> <a class="anchor" name="a832e60a571917fcb68ab360efa62df4"></a><!-- doxytag: member="macro.c::MacroBuf" ref="a832e60a571917fcb68ab360efa62df4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="structMacroBuf__s.html">MacroBuf_s</a> * <a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Macro expansion state. <p> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="2574a8c557fe9a6754ff3b3656943f23"></a><!-- doxytag: member="macro.c::_free" ref="2574a8c557fe9a6754ff3b3656943f23" args="(const void *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void* _free </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"> <em>p</em> </td> <td> ) </td> <td width="100%"><code> [inline, static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>memory to free </td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>NULL</em> </td><td>always </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00128">128</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="f38cc0557a9d3def58f6d31db62c4859"></a><!-- doxytag: member="macro.c::addMacro" ref="f38cc0557a9d3def58f6d31db62c4859" args="(MacroContext mc, const char *n, const char *o, const char *b, int level)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void addMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>level</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Add macro to context. <p> <dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000022">Deprecated:</a></b></dt><dd>Use <a class="el" href="macro_8c.html#9efaba7c44be35c0f2626b6114b154b7">rpmDefineMacro()</a>. </dd></dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>macro name </td></tr> <tr><td valign="top"></td><td valign="top"><em>o</em> </td><td>macro paramaters </td></tr> <tr><td valign="top"></td><td valign="top"><em>b</em> </td><td>macro body </td></tr> <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>macro recursion level (0 is entry API) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01883">1883</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00165">expandMacroTable()</a>, <a class="el" href="header_8c-source.html#l00896">findEntry()</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00024">MacroContext_s::macrosAllocated</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, <a class="el" href="macro_8c-source.html#l00823">pushMacro()</a>, <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>, and <a class="el" href="macro_8c-source.html#l00188">sortMacroTable()</a>. <p> Referenced by <a class="el" href="spec_8c-source.html#l00257">addSource()</a>, <a class="el" href="build_8c-source.html#l00101">buildForTarget()</a>, <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, <a class="el" href="rpmrc_8c-source.html#l00555">doReadRC()</a>, <a class="el" href="build_2build_8c-source.html#l00056">doScript()</a>, <a class="el" href="parsePrep_8c-source.html#l00317">doSetupMacro()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, <a class="el" href="macro_8c-source.html#l00932">grabArgs()</a>, <a class="el" href="parsePreamble_8c-source.html#l00463">handlePreambleTag()</a>, <a class="el" href="rpminject_8c-source.html#l00525">main()</a>, <a class="el" href="signature_8c-source.html#l00548">makeGPGSignature()</a>, <a class="el" href="signature_8c-source.html#l00399">makePGPSignature()</a>, <a class="el" href="parseSpec_8c-source.html#l00455">parseSpec()</a>, <a class="el" href="macro_8c-source.html#l01938">rpmLoadMacros()</a>, <a class="el" href="rpmrc_8c-source.html#l00781">rpmPlatform()</a>, <a class="el" href="rpmrc-py_8c-source.html#l00033">rpmrc_AddMacro()</a>, <a class="el" href="rpmrc_8c-source.html#l01609">rpmRebuildTargetVars()</a>, <a class="el" href="rpmts_8c-source.html#l00500">rpmtsOpenSDB()</a>, <a class="el" href="rpmrc_8c-source.html#l00517">setDefaults()</a>, <a class="el" href="rpmrc_8c-source.html#l00466">setPathDefault()</a>, and <a class="el" href="rpmrc_8c-source.html#l00452">setVarDefault()</a>. </div> </div><p> <a class="anchor" name="796fc9d6b8dc3c5f320e70862e741e54"></a><!-- doxytag: member="macro.c::compareMacroName" ref="796fc9d6b8dc3c5f320e70862e741e54" args="(const void *ap, const void *bp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int compareMacroName </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"> <em>ap</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>bp</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Compare macro entries by name (qsort/bsearch). <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ap</em> </td><td>1st macro entry </td></tr> <tr><td valign="top"></td><td valign="top"><em>bp</em> </td><td>2nd macro entry </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>result of comparison </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00144">144</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00251">findEntry()</a>, and <a class="el" href="macro_8c-source.html#l00188">sortMacroTable()</a>. </div> </div><p> <a class="anchor" name="47408de31de2e2539c1eff75fd98cac6"></a><!-- doxytag: member="macro.c::delMacro" ref="47408de31de2e2539c1eff75fd98cac6" args="(MacroContext mc, const char *n)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void delMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>n</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Delete macro from context. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>macro name </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01909">1909</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="header_8c-source.html#l00896">findEntry()</a>, <a class="el" href="macro_8c-source.html#l00854">popMacro()</a>, <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>, and <a class="el" href="macro_8c-source.html#l00188">sortMacroTable()</a>. <p> Referenced by <a class="el" href="build_2build_8c-source.html#l00056">doScript()</a>, <a class="el" href="macro_8c-source.html#l00771">doUndefine()</a>, <a class="el" href="parsePreamble_8c-source.html#l00463">handlePreambleTag()</a>, <a class="el" href="signature_8c-source.html#l00548">makeGPGSignature()</a>, <a class="el" href="signature_8c-source.html#l00399">makePGPSignature()</a>, <a class="el" href="parseSpec_8c-source.html#l00455">parseSpec()</a>, <a class="el" href="rpmrc-py_8c-source.html#l00051">rpmrc_DelMacro()</a>, <a class="el" href="rpmrc_8c-source.html#l01609">rpmRebuildTargetVars()</a>, and <a class="el" href="rpmts_8c-source.html#l00500">rpmtsOpenSDB()</a>. </div> </div><p> <a class="anchor" name="f16b77dc1ecf33147f8c041b604d6ced"></a><!-- doxytag: member="macro.c::doDefine" ref="f16b77dc1ecf33147f8c041b604d6ced" args="(MacroBuf mb, const char *se, int level, int expandbody)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* doDefine </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>se</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>level</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>expandbody</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Parse (and execute) new macro definition. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>se</em> </td><td>macro definition to parse </td></tr> <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>macro recursion level </td></tr> <tr><td valign="top"></td><td valign="top"><em>expandbody</em> </td><td>should body be expanded? </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>address to continue parsing </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00645">645</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>, <a class="el" href="macro_8c-source.html#l00480">COPYNAME</a>, <a class="el" href="macro_8c-source.html#l00489">COPYOPTS</a>, <a class="el" href="macro_8c-source.html#l00559">expandU()</a>, <a class="el" href="macro_8c-source.html#l00010">isblank</a>, <a class="el" href="macro_8c-source.html#l00012">iseol</a>, <a class="el" href="macro_8c-source.html#l00361">matchchar()</a>, <a class="el" href="macro_8c-source.html#l00093">MacroBuf_s::mc</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, <a class="el" href="macro_8c-source.html#l00468">SKIPBLANK</a>, and <a class="el" href="rpmio_8h-source.html#l00682">xisalpha()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l01925">rpmDefineMacro()</a>. </div> </div><p> <a class="anchor" name="a0f62d307a6f45d8cfe425e49251e1f0"></a><!-- doxytag: member="macro.c::doFoo" ref="a0f62d307a6f45d8cfe425e49251e1f0" args="(MacroBuf mb, int negate, const char *f, size_t fn, const char *g, size_t gn)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void doFoo </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>negate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>f</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>fn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>g</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>gn</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Execute macro primitives. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>negate</em> </td><td>should logic be inverted? </td></tr> <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>beginning of field f </td></tr> <tr><td valign="top"></td><td valign="top"><em>fn</em> </td><td>length of field f </td></tr> <tr><td valign="top"></td><td valign="top"><em>g</em> </td><td>beginning of field g </td></tr> <tr><td valign="top"></td><td valign="top"><em>gn</em> </td><td>length of field g </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01115">1115</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b561e6f801c28caec783071ce7af92d56eec">COMPRESSED_BZIP2</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b561b849fbc1e73f3871280ece58c89d38ee">COMPRESSED_LZMA</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5618a4363137c96594e751ff917000766a7">COMPRESSED_NOT</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5610036b875046b4bad28d4285c98ca33c4">COMPRESSED_OTHER</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5617847689aa59cbc03ae0201f4b180fd20">COMPRESSED_XZ</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5610d06d7254f4eed0c6739ca57ff578c7c">COMPRESSED_ZIP</a>, <a class="el" href="macro_8c-source.html#l00505">expandT()</a>, <a class="el" href="macro_8c-source.html#l00559">expandU()</a>, <a class="el" href="macro_8c-source.html#l00010">isblank</a>, <a class="el" href="macro_8c-source.html#l02084">isCompressed()</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, <a class="el" href="rpmmessages_8h-source.html#l00029">rpmIsVerbose</a>, <a class="el" href="macro_8c-source.html#l00014">STREQ</a>, <a class="el" href="url_8c-source.html#l00391">urlPath()</a>, and <a class="el" href="rpmio_8h-source.html#l00685">xisdigit()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="3add41b1fbb8be19eb953c5557d7b8f5"></a><!-- doxytag: member="macro.c::doOutput" ref="3add41b1fbb8be19eb953c5557d7b8f5" args="(MacroBuf mb, int waserror, const char *msg, size_t msglen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void doOutput </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>waserror</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>msg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>msglen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Perform macro message output. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>waserror</em> </td><td>use <a class="el" href="rpmerr_8h.html#29f3f082b0cd6acdcc70a31cbd613e1a">rpmError()</a>? </td></tr> <tr><td valign="top"></td><td valign="top"><em>msg</em> </td><td>message to ouput </td></tr> <tr><td valign="top"></td><td valign="top"><em>msglen</em> </td><td>no. of bytes in message </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01086">1086</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l00559">expandU()</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, and <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="d7c8feedc2696f3da7175fae15ec4e85"></a><!-- doxytag: member="macro.c::doShellEscape" ref="d7c8feedc2696f3da7175fae15ec4e85" args="(MacroBuf mb, const char *cmd, size_t clen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int doShellEscape </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>cmd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>clen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Expand output of shell command into target buffer. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>cmd</em> </td><td>shell command </td></tr> <tr><td valign="top"></td><td valign="top"><em>clen</em> </td><td>no. bytes in shell command </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>result of expansion </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00598">598</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l00559">expandU()</a>, <a class="el" href="macro_8c-source.html#l00012">iseol</a>, <a class="el" href="macro_8c-source.html#l00086">MacroBuf_s::nb</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, <a class="el" href="macro_8c-source.html#l00096">SAVECHAR</a>, and <a class="el" href="macro_8c-source.html#l00085">MacroBuf_s::t</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="755df497fc8fe288a65df1055e56977a"></a><!-- doxytag: member="macro.c::doUndefine" ref="755df497fc8fe288a65df1055e56977a" args="(MacroContext mc, const char *se)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* doUndefine </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>se</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Parse (and execute) macro undefinition. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context </td></tr> <tr><td valign="top"></td><td valign="top"><em>se</em> </td><td>macro name to undefine </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>address to continue parsing </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00771">771</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l00480">COPYNAME</a>, <a class="el" href="macro_8c-source.html#l01909">delMacro()</a>, <a class="el" href="macro_8c-source.html#l00012">iseol</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, and <a class="el" href="rpmio_8h-source.html#l00682">xisalpha()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="99d33da53395a7b1764d8e97933d14ad"></a><!-- doxytag: member="macro.c::expandMacro" ref="99d33da53395a7b1764d8e97933d14ad" args="(MacroBuf mb)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int expandMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> The main macro recursion loop. <p> <dl compact><dt><b><a class="el" href="todo.html#_todo000101">Todo:</a></b></dt><dd>Dynamically reallocate target buffer. </dd></dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on failure </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01224">1224</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>, <a class="el" href="rpmmacro_8h-source.html#l00016">MacroEntry_s::body</a>, <a class="el" href="macro_8c-source.html#l00087">MacroBuf_s::depth</a>, <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, <a class="el" href="macro_8c-source.html#l01086">doOutput()</a>, <a class="el" href="macro_8c-source.html#l00598">doShellEscape()</a>, <a class="el" href="macro_8c-source.html#l00771">doUndefine()</a>, <a class="el" href="macro_8c-source.html#l00089">MacroBuf_s::expand_trace</a>, <a class="el" href="macro_8c-source.html#l00505">expandT()</a>, <a class="el" href="header_8c-source.html#l00896">findEntry()</a>, <a class="el" href="macro_8c-source.html#l00880">freeArgs()</a>, <a class="el" href="macro_8c-source.html#l00932">grabArgs()</a>, <a class="el" href="macro_8c-source.html#l00010">isblank</a>, <a class="el" href="macro_8c-source.html#l00012">iseol</a>, <a class="el" href="macro_8c-source.html#l00088">MacroBuf_s::macro_trace</a>, <a class="el" href="macro_8c-source.html#l00361">matchchar()</a>, <a class="el" href="macro_8c-source.html#l00102">max_macro_depth</a>, <a class="el" href="macro_8c-source.html#l00093">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="macro_8c-source.html#l00086">MacroBuf_s::nb</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::opts</a>, <a class="el" href="macro_8c-source.html#l00110">print_expand_trace</a>, <a class="el" href="macro_8c-source.html#l00106">print_macro_trace</a>, <a class="el" href="macro_8c-source.html#l00431">printExpansion()</a>, <a class="el" href="macro_8c-source.html#l00387">printMacro()</a>, <a class="el" href="rpmmacro_8h-source.html#l00057">RMIL_GLOBAL</a>, <a class="el" href="macro_8c-source.html#l00209">rpmDumpMacroTable()</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, <a class="el" href="macro_8c-source.html#l00083">MacroBuf_s::s</a>, <a class="el" href="macro_8c-source.html#l00096">SAVECHAR</a>, <a class="el" href="macro_8c-source.html#l00014">STREQ</a>, <a class="el" href="macro_8c-source.html#l00085">MacroBuf_s::t</a>, <a class="el" href="rpmmacro_8h-source.html#l00017">MacroEntry_s::used</a>, <a class="el" href="rpmio_8h-source.html#l00688">xisalnum()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00024">xmalloc()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01848">expandMacros()</a>, <a class="el" href="macro_8c-source.html#l00505">expandT()</a>, and <a class="el" href="macro_8c-source.html#l00559">expandU()</a>. </div> </div><p> <a class="anchor" name="4847e20c27064ba3908275e5882fbd8a"></a><!-- doxytag: member="macro.c::expandMacros" ref="4847e20c27064ba3908275e5882fbd8a" args="(void *spec, MacroContext mc, char *sbuf, size_t slen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int expandMacros </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>spec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>sbuf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>slen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Expand macro into buffer. <p> <dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000021">Deprecated:</a></b></dt><dd>Use <a class="el" href="macro_8c.html#5d9a83318fc250d1fad8096c811754d4">rpmExpand()</a>. </dd></dl> <dl compact><dt><b><a class="el" href="todo.html#_todo000106">Todo:</a></b></dt><dd>Eliminate from API. </dd></dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>spec</em> </td><td>cookie (unused) </td></tr> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sbuf</em> </td><td>input macro to expand, output expansion </td></tr> </table> </dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>slen</em> </td><td>size of buffer </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01848">1848</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, <a class="el" href="macro_8c-source.html#l00110">print_expand_trace</a>, <a class="el" href="macro_8c-source.html#l00106">print_macro_trace</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="pack_8c-source.html#l00131">addFileToTagAux()</a>, <a class="el" href="parseSpec_8c-source.html#l00132">copyNextLineFromOFI()</a>, <a class="el" href="files_8c-source.html#l01942">processPackageFiles()</a>, <a class="el" href="macro_8c-source.html#l02148">rpmExpand()</a>, and <a class="el" href="macro_8c-source.html#l02286">rpmGetPath()</a>. </div> </div><p> <a class="anchor" name="8fd5ec53561771a933f05aa43e35e2ff"></a><!-- doxytag: member="macro.c::expandMacroTable" ref="8fd5ec53561771a933f05aa43e35e2ff" args="(MacroContext mc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void expandMacroTable </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Enlarge macro table. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00165">165</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="macro_8c-source.html#l00113">MACRO_CHUNK_SIZE</a>, <a class="el" href="rpmmacro_8h-source.html#l00024">MacroContext_s::macrosAllocated</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, <a class="el" href="rpmmalloc_8c-source.html#l00024">xmalloc()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00045">xrealloc()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>. </div> </div><p> <a class="anchor" name="22c07020a2b5739ff2fe5900f65ff32e"></a><!-- doxytag: member="macro.c::expandT" ref="22c07020a2b5739ff2fe5900f65ff32e" args="(MacroBuf mb, const char *f, size_t flen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int expandT </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>f</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>flen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Save source and expand field into target. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>field </td></tr> <tr><td valign="top"></td><td valign="top"><em>flen</em> </td><td>no. bytes in field </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>result of expansion </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00505">505</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l00083">MacroBuf_s::s</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, and <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="3cb49332bed1f1ca4b59d6c12adc5b41"></a><!-- doxytag: member="macro.c::expandU" ref="3cb49332bed1f1ca4b59d6c12adc5b41" args="(MacroBuf mb, char *u, size_t ulen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int expandU </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>u</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>ulen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Save source/target and expand macro in u. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>u</em> </td><td>input macro, output expansion </td></tr> <tr><td valign="top"></td><td valign="top"><em>ulen</em> </td><td>no. bytes in u buffer </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>result of expansion </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00559">559</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, <a class="el" href="macro_8c-source.html#l00086">MacroBuf_s::nb</a>, <a class="el" href="macro_8c-source.html#l00083">MacroBuf_s::s</a>, and <a class="el" href="macro_8c-source.html#l00085">MacroBuf_s::t</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, <a class="el" href="macro_8c-source.html#l01086">doOutput()</a>, <a class="el" href="macro_8c-source.html#l00598">doShellEscape()</a>, and <a class="el" href="macro_8c-source.html#l00932">grabArgs()</a>. </div> </div><p> <a class="anchor" name="7de232655a8c39c381d01a0e859280e9"></a><!-- doxytag: member="macro.c::findEntry" ref="7de232655a8c39c381d01a0e859280e9" args="(MacroContext mc, const char *name, size_t namelen)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="structMacroEntry__s.html">MacroEntry</a>* findEntry </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>namelen</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Find entry in macro table. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>macro name </td></tr> <tr><td valign="top"></td><td valign="top"><em>namelen</em> </td><td>no. of bytes </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>address of slot in macro table with name (or NULL) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00251">251</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="macro_8c-source.html#l00144">compareMacroName()</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. </div> </div><p> <a class="anchor" name="ab83b1b978f2436fdd7919bed1fbdf5d"></a><!-- doxytag: member="macro.c::freeArgs" ref="ab83b1b978f2436fdd7919bed1fbdf5d" args="(MacroBuf mb)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void freeArgs </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Free parsed arguments for parameterized macro. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00880">880</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="rpmmacro_8h-source.html#l00016">MacroEntry_s::body</a>, <a class="el" href="macro_8c-source.html#l00087">MacroBuf_s::depth</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00018">MacroEntry_s::level</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, <a class="el" href="macro_8c-source.html#l00093">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, and <a class="el" href="rpmmacro_8h-source.html#l00017">MacroEntry_s::used</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="45b865d37be6cdeb6cbc7a7b85b93c32"></a><!-- doxytag: member="macro.c::grabArgs" ref="45b865d37be6cdeb6cbc7a7b85b93c32" args="(MacroBuf mb, const MacroEntry me, const char *se, const char *lastc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* grabArgs </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structMacroEntry__s.html">MacroEntry</a> </td> <td class="paramname"> <em>me</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>se</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>lastc</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Parse arguments (to next new line) for parameterized macro. <p> <dl compact><dt><b><a class="el" href="todo.html#_todo000100">Todo:</a></b></dt><dd>Use popt rather than getopt to parse args. </dd></dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>me</em> </td><td>macro entry slot </td></tr> <tr><td valign="top"></td><td valign="top"><em>se</em> </td><td>arguments to parse </td></tr> <tr><td valign="top"></td><td valign="top"><em>lastc</em> </td><td>stop parsing at lastc </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>address to continue parsing </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00932">932</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>, <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="compress_8c-source.html#l00064">argv</a>, <a class="el" href="macro_8c-source.html#l00087">MacroBuf_s::depth</a>, <a class="el" href="macro_8c-source.html#l00559">expandU()</a>, <a class="el" href="macro_8c-source.html#l00010">isblank</a>, <a class="el" href="macro_8c-source.html#l00093">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::opts</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, and <a class="el" href="system_8h.html#890dbcd7c456828c1b6ff714e405fcc1">stpcpy()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="1227fbff233c9a2f3559a76b65d8e3c0"></a><!-- doxytag: member="macro.c::isCompressed" ref="1227fbff233c9a2f3559a76b65d8e3c0" args="(const char *file, rpmCompressedMagic *compressed)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int isCompressed </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="rpmmacro_8h.html#eb95839b1705caf41cb0593d533b89c3">rpmCompressedMagic</a> * </td> <td class="paramname"> <em>compressed</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return type of compression used in file. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>name of file </td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>compressed</em> </td><td>address of compression type </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on I/O error </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02084">2084</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b561e6f801c28caec783071ce7af92d56eec">COMPRESSED_BZIP2</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b561b849fbc1e73f3871280ece58c89d38ee">COMPRESSED_LZMA</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5618a4363137c96594e751ff917000766a7">COMPRESSED_NOT</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5610036b875046b4bad28d4285c98ca33c4">COMPRESSED_OTHER</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5617847689aa59cbc03ae0201f4b180fd20">COMPRESSED_XZ</a>, <a class="el" href="rpmmacro_8h.html#8cd18c5a4325494025f60227fcd9b5610d06d7254f4eed0c6739ca57ff578c7c">COMPRESSED_ZIP</a>, <a class="el" href="rpmio_8c-source.html#l02903">Fclose()</a>, <a class="el" href="rpmio_8c-source.html#l03280">Ferror()</a>, <a class="el" href="rpmio_8c-source.html#l03187">Fopen()</a>, <a class="el" href="rpmio_8c-source.html#l02824">Fread()</a>, <a class="el" href="rpmio_8c-source.html#l02813">Fstrerror()</a>, <a class="el" href="rpmerr_8h.html#d00dd16161260fe872fdf140cd8af55b6fc1b509e2472ee2cb32e474a19ba516">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00143">rpmError</a>, and <a class="el" href="macro_8c-source.html#l02074">rpmFileHasSuffix()</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00101">buildForTarget()</a>, <a class="el" href="macro_8c-source.html#l01115">doFoo()</a>, <a class="el" href="parsePrep_8c-source.html#l00070">doPatch()</a>, and <a class="el" href="parsePrep_8c-source.html#l00187">doUntar()</a>. </div> </div><p> <a class="anchor" name="2d3b1f4b62c48025af39977dcb0218e7"></a><!-- doxytag: member="macro.c::matchchar" ref="2d3b1f4b62c48025af39977dcb0218e7" args="(const char *p, char pl, char pr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* matchchar </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char </td> <td class="paramname"> <em>pl</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char </td> <td class="paramname"> <em>pr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Return text between pl and matching pr characters. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>start of text </td></tr> <tr><td valign="top"></td><td valign="top"><em>pl</em> </td><td>left char, i.e. '[', '(', '{', etc. </td></tr> <tr><td valign="top"></td><td valign="top"><em>pr</em> </td><td>right char, i.e. ']', ')', '}', etc. </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>address of last char before pr (or NULL) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00361">361</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, and <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="8d6f7d54c736ebbf736a9a99e50ed952"></a><!-- doxytag: member="macro.c::popMacro" ref="8d6f7d54c736ebbf736a9a99e50ed952" args="(MacroEntry *mep)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void popMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroEntry__s.html">MacroEntry</a> * </td> <td class="paramname"> <em>mep</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Pop macro definition from macro entry stack. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mep</em> </td><td>address of macro entry slot </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00854">854</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="rpmmacro_8h-source.html#l00016">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::opts</a>, and <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::prev</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01909">delMacro()</a>. </div> </div><p> <a class="anchor" name="2e0d8e982cff3b5a81aa8e1b65b1f4b3"></a><!-- doxytag: member="macro.c::printExpansion" ref="2e0d8e982cff3b5a81aa8e1b65b1f4b3" args="(MacroBuf mb, const char *t, const char *te)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void printExpansion </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>te</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Post-print expanded macro expression. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>current expansion string result </td></tr> <tr><td valign="top"></td><td valign="top"><em>te</em> </td><td>end of string </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00431">431</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l00087">MacroBuf_s::depth</a>, and <a class="el" href="macro_8c-source.html#l00012">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="98b6d4f4496d822c12de16036f6a6549"></a><!-- doxytag: member="macro.c::printMacro" ref="98b6d4f4496d822c12de16036f6a6549" args="(MacroBuf mb, const char *s, const char *se)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void printMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroBuf__s.html">MacroBuf</a> </td> <td class="paramname"> <em>mb</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>se</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Pre-print macro expression to be expanded. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mb</em> </td><td>macro expansion state </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>current expansion string </td></tr> <tr><td valign="top"></td><td valign="top"><em>se</em> </td><td>end of string </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00387">387</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00478">_</a>, <a class="el" href="macro_8c-source.html#l00087">MacroBuf_s::depth</a>, and <a class="el" href="macro_8c-source.html#l00012">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>. </div> </div><p> <a class="anchor" name="0f5cea3892ea72f45b0fe2b9877599a0"></a><!-- doxytag: member="macro.c::pushMacro" ref="0f5cea3892ea72f45b0fe2b9877599a0" args="(MacroEntry *mep, const char *n, const char *o, const char *b, int level)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void pushMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroEntry__s.html">MacroEntry</a> * </td> <td class="paramname"> <em>mep</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>level</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Push new macro definition onto macro entry stack. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mep</em> </td><td>address of macro entry slot </td></tr> <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>macro name </td></tr> <tr><td valign="top"></td><td valign="top"><em>o</em> </td><td>macro parameters (NULL if none) </td></tr> <tr><td valign="top"></td><td valign="top"><em>b</em> </td><td>macro body (NULL becomes "") </td></tr> <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>macro recursion level </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00823">823</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::prev</a>, <a class="el" href="rpmmalloc_8c-source.html#l00024">xmalloc()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>. </div> </div><p> <a class="anchor" name="b0d3dfd400ee26bb79baa9887879530a"></a><!-- doxytag: member="macro.c::rdcl" ref="b0d3dfd400ee26bb79baa9887879530a" args="(char *buf, size_t size, FD_t fd)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static char* rdcl </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="struct__FD__s.html">FD_t</a> </td> <td class="paramname"> <em>fd</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> fgets(3) analogue that reads \ continuations. <p> Last newline always trimmed. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>input buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>inbut buffer size (bytes) </td></tr> <tr><td valign="top"></td><td valign="top"><em>fd</em> </td><td>file handle </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>buffer, or NULL on end-of-file </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00298">298</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmio_8c-source.html#l00090">fdGetFILE</a>, and <a class="el" href="macro_8c-source.html#l00012">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01959">rpmLoadMacroFile()</a>. </div> </div><p> <a class="anchor" name="23bc9da080ad3340bbba93a0bf45dd07"></a><!-- doxytag: member="macro.c::rpmCleanPath" ref="23bc9da080ad3340bbba93a0bf45dd07" args="(char *path)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* rpmCleanPath </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>path</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Canonicalize file path. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>path to canonicalize (in-place) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>canonicalized path (malloc'ed) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02198">2198</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="fprint_8c-source.html#l00059">doLookup()</a>, <a class="el" href="rpmdb_8c-source.html#l03654">rpmdbMoveDatabase()</a>, <a class="el" href="rpmdb_8c-source.html#l03596">rpmdbRemoveDatabase()</a>, <a class="el" href="macro_8c-source.html#l02286">rpmGetPath()</a>, and <a class="el" href="query_8c-source.html#l00436">rpmQueryVerify()</a>. </div> </div><p> <a class="anchor" name="9efaba7c44be35c0f2626b6114b154b7"></a><!-- doxytag: member="macro.c::rpmDefineMacro" ref="9efaba7c44be35c0f2626b6114b154b7" args="(MacroContext mc, const char *macro, int level)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmDefineMacro </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>macro</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>level</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Define macro in context. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> <tr><td valign="top"></td><td valign="top"><em>macro</em> </td><td>macro name, options, body </td></tr> <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>macro recursion level (0 is entry API) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd></dd></dl> <dl compact><dt><b><a class="el" href="todo.html#_todo000107">Todo:</a></b></dt><dd>Document. </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01925">1925</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="macro_8c-source.html#l00645">doDefine()</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="rpmcache_8c-source.html#l00102">ftsCacheUpdate()</a>, <a class="el" href="poptALL_8c-source.html#l00152">rpmcliAllArgCallback()</a>, <a class="el" href="rpmdb_8c-source.html#l03767">rpmdbRebuild()</a>, and <a class="el" href="macro_8c-source.html#l01959">rpmLoadMacroFile()</a>. </div> </div><p> <a class="anchor" name="dde6f3d917ff0aec97fa0f07b6a901de"></a><!-- doxytag: member="macro.c::rpmDumpMacroTable" ref="dde6f3d917ff0aec97fa0f07b6a901de" args="(MacroContext mc, FILE *fp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rpmDumpMacroTable </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>fp</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Print macros to file stream. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> <tr><td valign="top"></td><td valign="top"><em>fp</em> </td><td>file stream (NULL uses stderr). </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00209">209</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="rpmrc_8c-source.html#l01914">rpmShowRC()</a>. </div> </div><p> <a class="anchor" name="5d9a83318fc250d1fad8096c811754d4"></a><!-- doxytag: member="macro.c::rpmExpand" ref="5d9a83318fc250d1fad8096c811754d4" args="(const char *arg,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* rpmExpand </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>arg</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return (malloc'ed) concatenated macro expansion(s). <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>macro(s) to expand (NULL terminates list) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>macro expansion (malloc'ed) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02148">2148</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01848">expandMacros()</a>, <a class="el" href="system_8h.html#890dbcd7c456828c1b6ff714e405fcc1">stpcpy()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup()</a>. <p> Referenced by <a class="el" href="files_8c-source.html#l02448">checkFiles()</a>, <a class="el" href="parsePreamble_8c-source.html#l00229">checkForValidArchitectures()</a>, <a class="el" href="signature_8c-source.html#l00858">checkPassPhrase()</a>, <a class="el" href="pack_8c-source.html#l00056">cpio_doio()</a>, <a class="el" href="dbconfig_8c-source.html#l00277">db3New()</a>, <a class="el" href="rpmdb_8c-source.html#l00178">dbiTagsInit()</a>, <a class="el" href="rpmrc_8c-source.html#l01126">defaultMachine()</a>, <a class="el" href="expression_8c-source.html#l00336">doPrimary()</a>, <a class="el" href="build_2build_8c-source.html#l00056">doScript()</a>, <a class="el" href="parsePrep_8c-source.html#l00317">doSetupMacro()</a>, <a class="el" href="rpmmodule_8c-source.html#l00047">expandMacro()</a>, <a class="el" href="parsePreamble_8c-source.html#l00338">fillOutMainPackage()</a>, <a class="el" href="transaction_8c-source.html#l01134">getRepackageHeaderFromTE()</a>, <a class="el" href="formats_8c-source.html#l00996">i18nTag()</a>, <a class="el" href="depends_8c-source.html#l00869">ignoreDep()</a>, <a class="el" href="rpmcache_8c-source.html#l00441">initGlobs()</a>, <a class="el" href="rpmcache_8c-source.html#l00534">main()</a>, <a class="el" href="signature_8c-source.html#l00548">makeGPGSignature()</a>, <a class="el" href="signature_8c-source.html#l00399">makePGPSignature()</a>, <a class="el" href="rpmdb_8c-source.html#l00963">newRpmdb()</a>, <a class="el" href="legacy_8c-source.html#l00036">open_dso()</a>, <a class="el" href="pack_8c-source.html#l00755">packageBinaries()</a>, <a class="el" href="files_8c-source.html#l00826">parseForRegexLang()</a>, <a class="el" href="parseSpec_8c-source.html#l00455">parseSpec()</a>, <a class="el" href="files_8c-source.html#l02281">processSourceFiles()</a>, <a class="el" href="expression_8c-source.html#l00188">rdToken()</a>, <a class="el" href="parseSpec_8c-source.html#l00291">readLine()</a>, <a class="el" href="poptALL_8c-source.html#l00152">rpmcliAllArgCallback()</a>, <a class="el" href="rpmchecksig_8c-source.html#l00564">rpmcliImportPubkeys()</a>, <a class="el" href="query_8c-source.html#l00783">rpmcliQuery()</a>, <a class="el" href="rpmdb_8c-source.html#l01915">rpmdbSetIteratorRE()</a>, <a class="el" href="macro_8c-source.html#l02171">rpmExpandNumeric()</a>, <a class="el" href="rpmfc_8c-source.html#l00206">rpmfcExec()</a>, <a class="el" href="rpmfc_8c-source.html#l00028">rpmfcExpandAppend()</a>, <a class="el" href="rpmfc_8c-source.html#l01552">rpmfcGenerateDependsHelper()</a>, <a class="el" href="signature_8c-source.html#l00969">rpmGetPassPhrase()</a>, <a class="el" href="rpmgi_8c-source.html#l00480">rpmgiNext()</a>, <a class="el" href="rpmgi_8c-source.html#l00073">rpmgiOpen()</a>, <a class="el" href="signature_8c-source.html#l00033">rpmLookupSignatureType()</a>, <a class="el" href="rpmrc_8c-source.html#l00781">rpmPlatform()</a>, <a class="el" href="rpmrc_8c-source.html#l01881">rpmReadConfigFiles()</a>, <a class="el" href="rpminstall_8c-source.html#l01102">rpmRollback()</a>, <a class="el" href="rpmts-py_8c-source.html#l00590">rpmts_IDTXglob()</a>, <a class="el" href="rpmts_8c-source.html#l00338">rpmtsFindPubkey()</a>, <a class="el" href="rpmts_8c-source.html#l00547">rpmtsSolve()</a>, <a class="el" href="psm_8c-source.html#l00625">runScript()</a>, <a class="el" href="transaction_8c-source.html#l00752">skipFiles()</a>, and <a class="el" href="pack_8c-source.html#l00420">writeRPM()</a>. </div> </div><p> <a class="anchor" name="4bb017f52f3bd9b8aae77772b0bc9ba8"></a><!-- doxytag: member="macro.c::rpmExpandNumeric" ref="4bb017f52f3bd9b8aae77772b0bc9ba8" args="(const char *arg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmExpandNumeric </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>arg</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return macro expansion as a numeric value. <p> Boolean values ('Y' or 'y' returns 1, 'N' or 'n' returns 0) are permitted as well. An undefined macro returns 0. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>macro to expand </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>numeric value </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02171">2171</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, and <a class="el" href="macro_8c-source.html#l02148">rpmExpand()</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00304">build()</a>, <a class="el" href="files_8c-source.html#l02448">checkFiles()</a>, <a class="el" href="rpmdb_8c-source.html#l00265">dbiOpen()</a>, <a class="el" href="parsePrep_8c-source.html#l00473">doPatchMacro()</a>, <a class="el" href="files_8c-source.html#l01147">genCpioListAndHeader()</a>, <a class="el" href="rpmqv_8c-source.html#l00170">main()</a>, <a class="el" href="rpmdb_8c-source.html#l00963">newRpmdb()</a>, <a class="el" href="parseReqs_8c-source.html#l00035">parseRCPOT()</a>, <a class="el" href="parseSpec_8c-source.html#l00455">parseSpec()</a>, <a class="el" href="files_8c-source.html#l01942">processPackageFiles()</a>, <a class="el" href="rpmfi_8c-source.html#l00708">relocateFileList()</a>, <a class="el" href="query_8c-source.html#l00783">rpmcliQuery()</a>, <a class="el" href="verify_8c-source.html#l00457">rpmcliVerify()</a>, <a class="el" href="rpmdb_8c-source.html#l01159">rpmdbInit()</a>, <a class="el" href="rpmdb_8c-source.html#l01151">rpmdbOpen()</a>, <a class="el" href="rpmdb_8c-source.html#l03767">rpmdbRebuild()</a>, <a class="el" href="rpmdb_8c-source.html#l01180">rpmdbVerify()</a>, <a class="el" href="rpminstall_8c-source.html#l00766">rpmErase()</a>, <a class="el" href="rpmfc_8c-source.html#l00862">rpmfcELF()</a>, <a class="el" href="rpmfc_8c-source.html#l01630">rpmfcGenerateDepends()</a>, <a class="el" href="rpminstall_8c-source.html#l00288">rpmInstall()</a>, <a class="el" href="pack_8c-source.html#l00398">rpmLeadVersion()</a>, <a class="el" href="rpminstall_8c-source.html#l01102">rpmRollback()</a>, <a class="el" href="rpmts-py_8c-source.html#l01707">rpmts_Create()</a>, <a class="el" href="rpmts-py_8c-source.html#l01567">rpmts_init()</a>, <a class="el" href="rpmts_8c-source.html#l01534">rpmtsCreate()</a>, <a class="el" href="rpmts_8c-source.html#l00500">rpmtsOpenSDB()</a>, <a class="el" href="transaction_8c-source.html#l01435">rpmtsRun()</a>, and <a class="el" href="transaction_8c-source.html#l00752">skipFiles()</a>. </div> </div><p> <a class="anchor" name="997ece81a331fad7bd6a9f4b993f91c5"></a><!-- doxytag: member="macro.c::rpmFileHasSuffix" ref="997ece81a331fad7bd6a9f4b993f91c5" args="(const char *path, const char *suffix)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int rpmFileHasSuffix </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>suffix</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l02074">2074</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l02084">isCompressed()</a>. </div> </div><p> <a class="anchor" name="709e867ae40adfff5e9bf15c8ffdd90c"></a><!-- doxytag: member="macro.c::rpmFreeMacros" ref="709e867ae40adfff5e9bf15c8ffdd90c" args="(MacroContext mc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rpmFreeMacros </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Destroy macro context. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL uses global context). </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02048">2048</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="rpmmacro_8h-source.html#l00016">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::opts</a>, <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::prev</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00304">build()</a>, and <a class="el" href="rpmqv_8c-source.html#l00170">main()</a>. </div> </div><p> <a class="anchor" name="a00f38e60e61a7984bf1b08b7c440343"></a><!-- doxytag: member="macro.c::rpmGenPath" ref="a00f38e60e61a7984bf1b08b7c440343" args="(const char *urlroot, const char *urlmdir, const char *urlfile)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* rpmGenPath </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>urlroot</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>urlmdir</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>urlfile</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Merge 3 args into path, any or all of which may be a url. <p> The leading part of the first URL encountered is used for the result, other URL prefixes are discarded, permitting a primitive form of URL inheiritance. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>urlroot</em> </td><td>root URL (often path to chroot, or NULL) </td></tr> <tr><td valign="top"></td><td valign="top"><em>urlmdir</em> </td><td>directory URL (often a directory, or NULL) </td></tr> <tr><td valign="top"></td><td valign="top"><em>urlfile</em> </td><td>file URL (often a file, or NULL) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>expanded, merged, canonicalized path (malloc'ed) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02317">2317</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="parseFiles_8c-source.html#l00018">file</a>, <a class="el" href="macro_8c-source.html#l02286">rpmGetPath()</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f5665ce47b498e38dfe851d350107b86cb0">URL_IS_DASH</a>, and <a class="el" href="url_8c-source.html#l00391">urlPath()</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00101">buildForTarget()</a>, <a class="el" href="db3_8c-source.html#l00763">db3close()</a>, <a class="el" href="db3_8c-source.html#l00915">db3open()</a>, <a class="el" href="db3_8c-source.html#l00272">db_init()</a>, <a class="el" href="build_2build_8c-source.html#l00056">doScript()</a>, <a class="el" href="parsePrep_8c-source.html#l00317">doSetupMacro()</a>, <a class="el" href="parsePreamble_8c-source.html#l00463">handlePreambleTag()</a>, <a class="el" href="lib_2misc_8c-source.html#l00122">makeTempFile()</a>, <a class="el" href="files_8c-source.html#l01860">processBinaryFile()</a>, <a class="el" href="files_8c-source.html#l01780">processMetadataFile()</a>, <a class="el" href="files_8c-source.html#l01942">processPackageFiles()</a>, <a class="el" href="rpminstall_8c-source.html#l00288">rpmInstall()</a>, and <a class="el" href="psm_8c-source.html#l01383">rpmpsmStage()</a>. </div> </div><p> <a class="anchor" name="5167ad7785835f120734aad8ea938cd9"></a><!-- doxytag: member="macro.c::rpmGetPath" ref="5167ad7785835f120734aad8ea938cd9" args="(const char *path,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* rpmGetPath </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return (malloc'ed) expanded, canonicalized, file path. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>macro(s) to expand (NULL terminates list) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>canonicalized path (malloc'ed) </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l02286">2286</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01848">expandMacros()</a>, <a class="el" href="macro_8c-source.html#l02198">rpmCleanPath()</a>, <a class="el" href="system_8h.html#890dbcd7c456828c1b6ff714e405fcc1">stpcpy()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup()</a>. <p> Referenced by <a class="el" href="pack_8c-source.html#l00131">addFileToTagAux()</a>, <a class="el" href="spec_8c-source.html#l00257">addSource()</a>, <a class="el" href="build_8c-source.html#l00101">buildForTarget()</a>, <a class="el" href="db3_8c-source.html#l00763">db3close()</a>, <a class="el" href="db3_8c-source.html#l00915">db3open()</a>, <a class="el" href="parsePrep_8c-source.html#l00070">doPatch()</a>, <a class="el" href="rpmrc_8c-source.html#l00555">doReadRC()</a>, <a class="el" href="build_2build_8c-source.html#l00022">doRmSource()</a>, <a class="el" href="parsePrep_8c-source.html#l00187">doUntar()</a>, <a class="el" href="files_8c-source.html#l01147">genCpioListAndHeader()</a>, <a class="el" href="rpmtool_8c-source.html#l00275">main()</a>, <a class="el" href="rpmdb_8c-source.html#l00963">newRpmdb()</a>, <a class="el" href="pack_8c-source.html#l00755">packageBinaries()</a>, <a class="el" href="pack_8c-source.html#l00862">packageSources()</a>, <a class="el" href="parseFiles_8c-source.html#l00026">parseFiles()</a>, <a class="el" href="parseSpec_8c-source.html#l00455">parseSpec()</a>, <a class="el" href="files_8c-source.html#l01942">processPackageFiles()</a>, <a class="el" href="files_8c-source.html#l02281">processSourceFiles()</a>, <a class="el" href="parsePreamble_8c-source.html#l00359">readIcon()</a>, <a class="el" href="rpmdb_8c-source.html#l03767">rpmdbRebuild()</a>, <a class="el" href="signature_8c-source.html#l00073">rpmDetectPGPVersion()</a>, <a class="el" href="rpmfi_8c-source.html#l01695">rpmfiBuildREContexts()</a>, <a class="el" href="macro_8c-source.html#l02317">rpmGenPath()</a>, <a class="el" href="fs_8c-source.html#l00287">rpmGetFilesystemUsage()</a>, <a class="el" href="rpminstall_8c-source.html#l00288">rpmInstall()</a>, <a class="el" href="psm_8c-source.html#l01383">rpmpsmStage()</a>, <a class="el" href="query_8c-source.html#l00436">rpmQueryVerify()</a>, <a class="el" href="rpmsx_8c-source.html#l00319">rpmsxParse()</a>, <a class="el" href="rpmts-py_8c-source.html#l01181">rpmts_Run()</a>, <a class="el" href="rpmts_8c-source.html#l00170">rpmtsOpenDB()</a>, <a class="el" href="rpmts_8c-source.html#l00500">rpmtsOpenSDB()</a>, <a class="el" href="psm_8c-source.html#l00625">runScript()</a>, and <a class="el" href="rpmrc_8c-source.html#l00466">setPathDefault()</a>. </div> </div><p> <a class="anchor" name="c51b3a7dc3e3b18657406b0e03494b00"></a><!-- doxytag: member="macro.c::rpmGlob" ref="c51b3a7dc3e3b18657406b0e03494b00" args="(const char *patterns, int *argcPtr, const char ***argvPtr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmGlob </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>patterns</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>argcPtr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *** </td> <td class="paramname"> <em>argvPtr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return URL path(s) from a (URL prefixed) pattern glob. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>patterns</em> </td><td>glob pattern </td></tr> </table> </dl> <dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>*argcPtr</em> </td><td>no. of paths </td></tr> <tr><td valign="top"></td><td valign="top"><em>*argvPtr</em> </td><td>array of paths (malloc'd contiguous blob) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01700">1700</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="compress_8c-source.html#l00064">argv</a>, <a class="el" href="system_8h.html#bc6595dbf6880c71628fecf0dbb23d66">getenv()</a>, <a class="el" href="rpmrpc_8c-source.html#l01446">Glob()</a>, <a class="el" href="rpmrpc_8c-source.html#l01441">Glob_error()</a>, <a class="el" href="rpmrpc_8c-source.html#l01405">Glob_pattern_p()</a>, <a class="el" href="rpmrpc_8c-source.html#l01484">Globfree()</a>, <a class="el" href="system_8h-source.html#l00467">setlocale</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f5665ce47b498e38dfe851d350107b86cb0">URL_IS_DASH</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f5673c9c198188c069b467ce593d9413475">URL_IS_FTP</a>, <a class="el" href="rpmurl_8h-source.html#l00020">URL_IS_HKP</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f569cec1f8f01bd18cbe16cef81830fd95f">URL_IS_HTTP</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f5654350c4a233015b91be84a91e51bbb49">URL_IS_HTTPS</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f56b83b361a4814f376a40035d5b837d66f">URL_IS_PATH</a>, <a class="el" href="rpmurl_8h.html#3c0dd3c42784390f1b3102ededcf5f56adafeb790bb74bf766bea5fdde6e0e1c">URL_IS_UNKNOWN</a>, <a class="el" href="url_8c-source.html#l00391">urlPath()</a>, <a class="el" href="rpmmalloc_8c-source.html#l00024">xmalloc()</a>, <a class="el" href="macro_8c-source.html#l01629">XpoptParseArgvString()</a>, <a class="el" href="rpmmalloc_8c-source.html#l00045">xrealloc()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup()</a>. <p> Referenced by <a class="el" href="rpminstall_8c-source.html#l01026">IDTXglob()</a>, <a class="el" href="files_8c-source.html#l01860">processBinaryFile()</a>, <a class="el" href="rpmgi_8c-source.html#l00287">rpmgiGlobArgv()</a>, <a class="el" href="rpmgraph_8c-source.html#l00044">rpmGraph()</a>, <a class="el" href="macro_8c-source.html#l01992">rpmInitMacros()</a>, <a class="el" href="rpminstall_8c-source.html#l00288">rpmInstall()</a>, and <a class="el" href="manifest_8c-source.html#l00069">rpmReadPackageManifest()</a>. </div> </div><p> <a class="anchor" name="15c1fb15f39d20163810779c1adbd0a7"></a><!-- doxytag: member="macro.c::rpmInitMacros" ref="15c1fb15f39d20163810779c1adbd0a7" args="(MacroContext mc, const char *macrofiles)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rpmInitMacros </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>macrofiles</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Initialize macro context from set of macrofile(s). <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context </td></tr> <tr><td valign="top"></td><td valign="top"><em>macrofiles</em> </td><td>colon separated list of macro files (NULL does nothing) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01992">1992</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmlib_8h-source.html#l00058">_free()</a>, <a class="el" href="rpmmacro_8h-source.html#l00053">RMIL_CMDLINE</a>, <a class="el" href="macro_8c-source.html#l00075">rpmCLIMacroContext</a>, <a class="el" href="macro_8c-source.html#l01700">rpmGlob()</a>, <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>, <a class="el" href="macro_8c-source.html#l01959">rpmLoadMacroFile()</a>, <a class="el" href="macro_8c-source.html#l01938">rpmLoadMacros()</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup()</a>. <p> Referenced by <a class="el" href="rpmrc_8c-source.html#l01790">rpmReadRC()</a>. </div> </div><p> <a class="anchor" name="312a8af38062f22c0d66e09d140be18f"></a><!-- doxytag: member="macro.c::rpmLoadMacroFile" ref="312a8af38062f22c0d66e09d140be18f" args="(MacroContext mc, const char *fn)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmLoadMacroFile </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>fn</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Load macro context from a macro file. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>(unused) </td></tr> <tr><td valign="top"></td><td valign="top"><em>fn</em> </td><td>macro file name </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01959">1959</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmio_8c-source.html#l02903">Fclose()</a>, <a class="el" href="rpmio_8c-source.html#l03280">Ferror()</a>, <a class="el" href="rpmio_8c-source.html#l03187">Fopen()</a>, <a class="el" href="macro_8c-source.html#l00102">max_macro_depth</a>, <a class="el" href="macro_8c-source.html#l00298">rdcl()</a>, <a class="el" href="rpmmacro_8h-source.html#l00050">RMIL_MACROFILES</a>, <a class="el" href="macro_8c-source.html#l01925">rpmDefineMacro()</a>, and <a class="el" href="macro_8c-source.html#l00468">SKIPBLANK</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01992">rpmInitMacros()</a>. </div> </div><p> <a class="anchor" name="1da77e015534d1cc1fe930aff4ecf64b"></a><!-- doxytag: member="macro.c::rpmLoadMacros" ref="1da77e015534d1cc1fe930aff4ecf64b" args="(MacroContext mc, int level)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rpmLoadMacros </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>level</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Load macros from specific context into global context. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context (NULL does nothing). </td></tr> <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>macro recursion level (0 is entry API) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01938">1938</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>, <a class="el" href="rpmmacro_8h-source.html#l00016">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::opts</a>, and <a class="el" href="macro_8c-source.html#l00070">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01992">rpmInitMacros()</a>. </div> </div><p> <a class="anchor" name="0f7c54578add4b69252e9c0c7d8a4c52"></a><!-- doxytag: member="macro.c::sortMacroTable" ref="0f7c54578add4b69252e9c0c7d8a4c52" args="(MacroContext mc)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void sortMacroTable </td> <td>(</td> <td class="paramtype"><a class="el" href="structMacroContext__s.html">MacroContext</a> </td> <td class="paramname"> <em>mc</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Sort entries in macro table. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mc</em> </td><td>macro context </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00188">188</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00144">compareMacroName()</a>, <a class="el" href="rpmmacro_8h-source.html#l00025">MacroContext_s::firstFree</a>, and <a class="el" href="rpmmacro_8h-source.html#l00023">MacroContext_s::macroTable</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01883">addMacro()</a>, and <a class="el" href="macro_8c-source.html#l01909">delMacro()</a>. </div> </div><p> <a class="anchor" name="d41e09d193e7960a14ca71f78bdc47bc"></a><!-- doxytag: member="macro.c::XpoptDupArgv" ref="d41e09d193e7960a14ca71f78bdc47bc" args="(int argc, const char **argv, int *argcPtr, const char ***argvPtr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int XpoptDupArgv </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>argc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>argv</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>argcPtr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *** </td> <td class="paramname"> <em>argvPtr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l01585">1585</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01580">POPT_ERROR_MALLOC</a>, and <a class="el" href="macro_8c-source.html#l01578">POPT_ERROR_NOARG</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01629">XpoptParseArgvString()</a>. </div> </div><p> <a class="anchor" name="b7015045d4fccadf46856cc1fa138f3f"></a><!-- doxytag: member="macro.c::XpoptParseArgvString" ref="b7015045d4fccadf46856cc1fa138f3f" args="(const char *s, int *argcPtr, const char ***argvPtr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int XpoptParseArgvString </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>argcPtr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *** </td> <td class="paramname"> <em>argvPtr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l01629">1629</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="compress_8c-source.html#l00064">argv</a>, <a class="el" href="macro_8c-source.html#l01582">POPT_ARGV_ARRAY_GROW_DELTA</a>, <a class="el" href="macro_8c-source.html#l01579">POPT_ERROR_BADQUOTE</a>, <a class="el" href="macro_8c-source.html#l01580">POPT_ERROR_MALLOC</a>, and <a class="el" href="macro_8c-source.html#l01585">XpoptDupArgv()</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01700">rpmGlob()</a>. </div> </div><p> <hr><h2>Variable Documentation</h2> <a class="anchor" name="4859ebf3de3eada7338899d0f24d3c23"></a><!-- doxytag: member="macro.c::_debug" ref="4859ebf3de3eada7338899d0f24d3c23" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="rpmcache_8c.html#4859ebf3de3eada7338899d0f24d3c23">_debug</a> = 0<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l01698">1698</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="7bc6c3725c8a45369fe50aae3a7a8ec4"></a><!-- doxytag: member="macro.c::max_macro_depth" ref="7bc6c3725c8a45369fe50aae3a7a8ec4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="macro_8c.html#7bc6c3725c8a45369fe50aae3a7a8ec4">max_macro_depth</a> = 16 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00102">102</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l01959">rpmLoadMacroFile()</a>. </div> </div><p> <a class="anchor" name="09aa8dd1edc2abff5b6ce1d3387002b8"></a><!-- doxytag: member="macro.c::print_expand_trace" ref="09aa8dd1edc2abff5b6ce1d3387002b8" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="macro_8c.html#09aa8dd1edc2abff5b6ce1d3387002b8">print_expand_trace</a> = 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00110">110</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l01848">expandMacros()</a>. </div> </div><p> <a class="anchor" name="22edb0e3a004d9968ecf66389f4211fc"></a><!-- doxytag: member="macro.c::print_macro_trace" ref="22edb0e3a004d9968ecf66389f4211fc" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="macro_8c.html#22edb0e3a004d9968ecf66389f4211fc">print_macro_trace</a> = 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00106">106</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01224">expandMacro()</a>, and <a class="el" href="macro_8c-source.html#l01848">expandMacros()</a>. </div> </div><p> <a class="anchor" name="42c45213125c87fd74d25dd6acbbd15f"></a><!-- doxytag: member="macro.c::rpmCLIMacroContext" ref="42c45213125c87fd74d25dd6acbbd15f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structMacroContext__s.html">MacroContext</a> <a class="el" href="rpmmacro_8h.html#42c45213125c87fd74d25dd6acbbd15f">rpmCLIMacroContext</a> = &<a class="el" href="macro_8c.html#0adf3168d27759d533f4f375a90e5f0f">rpmCLIMacroContext_s</a> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00075">75</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="0adf3168d27759d533f4f375a90e5f0f"></a><!-- doxytag: member="macro.c::rpmCLIMacroContext_s" ref="0adf3168d27759d533f4f375a90e5f0f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> <a class="el" href="macro_8c.html#0adf3168d27759d533f4f375a90e5f0f">rpmCLIMacroContext_s</a><code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00073">73</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="939bd9f1df20f3bb51e394f3b071bc42"></a><!-- doxytag: member="macro.c::rpmGlobalMacroContext" ref="939bd9f1df20f3bb51e394f3b071bc42" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structMacroContext__s.html">MacroContext</a> <a class="el" href="rpmmacro_8h.html#939bd9f1df20f3bb51e394f3b071bc42">rpmGlobalMacroContext</a> = &<a class="el" href="macro_8c.html#186792ba461d45758ca1edc3aa0f085b">rpmGlobalMacroContext_s</a> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00070">70</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <a class="anchor" name="186792ba461d45758ca1edc3aa0f085b"></a><!-- doxytag: member="macro.c::rpmGlobalMacroContext_s" ref="186792ba461d45758ca1edc3aa0f085b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> <a class="el" href="macro_8c.html#186792ba461d45758ca1edc3aa0f085b">rpmGlobalMacroContext_s</a><code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00068">68</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on 1 Oct 2013 for rpm by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address> </body> </html>