Sophie

Sophie

distrib > CentOS > 5 > i386 > media > os > by-pkgid > 608068f228165b6e5a4f2c11fda54521 > files > 422

rpm-apidocs-4.4.2.3-34.el5.i386.rpm

<!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&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;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 &quot;<a class="el" href="system_8h-source.html">system.h</a>&quot;</code><br>
<code>#include &lt;stdarg.h&gt;</code><br>
<code>#include &lt;<a class="el" href="rpmio__internal_8h-source.html">rpmio_internal.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="rpmmessages_8h-source.html">rpmmessages.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="rpmerr_8h-source.html">rpmerr.h</a>&gt;</code><br>
<code>#include &lt;<a class="el" href="rpmmacro_8h-source.html">rpmmacro.h</a>&gt;</code><br>
<code>#include &quot;<a class="el" href="debug_8h-source.html">debug.h</a>&quot;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMacroBuf__s.html">MacroBuf_s</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#e7a4f4788068a6d7f99bbb7e17a3fa06">isblank</a>(_c)&nbsp;&nbsp;&nbsp;((_c) == ' ' || (_c) == '\t')</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#31f3b7dcd3b72de84277e0611c91dc8c">iseol</a>(_c)&nbsp;&nbsp;&nbsp;((_c) == '\n' || (_c) == '\r')</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#dbf7da06422591f6c1917c910053928f">STREQ</a>(_t, _f, _fn)&nbsp;&nbsp;&nbsp;((_fn) == (sizeof(_t)-1) &amp;&amp; !strncmp((_t), (_f), (_fn)))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#29032771750a168880d6b86f7719eb05">SAVECHAR</a>(_mb, _c)&nbsp;&nbsp;&nbsp;{ *(_mb)-&gt;t = (_c), (_mb)-&gt;t++, (_mb)-&gt;nb--; }</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a5f565fcbbcfbe72a60d1bace33cbd96">_MAX_MACRO_DEPTH</a>&nbsp;&nbsp;&nbsp;16</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a325230fbd204a976b9fec8a97c01daa">_PRINT_MACRO_TRACE</a>&nbsp;&nbsp;&nbsp;0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#85580f8342baa025fb7fcef85424eb4b">_PRINT_EXPAND_TRACE</a>&nbsp;&nbsp;&nbsp;0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#3852fb2910f45b4049430146881d2558">MACRO_CHUNK_SIZE</a>&nbsp;&nbsp;&nbsp;16</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#28bb1cf1823622c3510d2976da33ad06">POPT_ERROR_NOARG</a>&nbsp;&nbsp;&nbsp;-10</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#46d04684e0c20a8a32c1d9d01995de90">POPT_ERROR_BADQUOTE</a>&nbsp;&nbsp;&nbsp;-15</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#94b752bdfe50201136ceb0402fd93599">POPT_ERROR_MALLOC</a>&nbsp;&nbsp;&nbsp;-21</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#6fd2ee84754652db0f5264af238b62a2">POPT_ARGV_ARRAY_GROW_DELTA</a>&nbsp;&nbsp;&nbsp;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> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#a832e60a571917fcb68ab360efa62df4">MacroBuf</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#23bc9da080ad3340bbba93a0bf45dd07">rpmCleanPath</a> (char *path)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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>&nbsp;</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>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#939bd9f1df20f3bb51e394f3b071bc42">rpmGlobalMacroContext</a> = &amp;<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>&nbsp;</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>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="macro_8c.html#42c45213125c87fd74d25dd6acbbd15f">rpmCLIMacroContext</a> = &amp;<a class="el" href="macro_8c.html#0adf3168d27759d533f4f375a90e5f0f">rpmCLIMacroContext_s</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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)) &amp;&amp; (<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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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)) &amp;&amp; (_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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;((_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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;((_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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;-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&nbsp;&nbsp;&nbsp;-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&nbsp;&nbsp;&nbsp;-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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;{ *(_mb)-&gt;t = (_c), (_mb)-&gt;t++, (_mb)-&gt;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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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)) &amp;&amp; <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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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)) &amp;&amp; !(<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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;((_fn) == (sizeof(_t)-1) &amp;&amp; !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 *&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context (NULL uses global context). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>macro name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>o</em>&nbsp;</td><td>macro paramaters </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>macro body </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>ap</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>bp</em></td><td>&nbsp;</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>&nbsp;</td><td>1st macro entry </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bp</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context (NULL uses global context). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>se</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>expandbody</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>se</em>&nbsp;</td><td>macro definition to parse </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>macro recursion level </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>expandbody</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>negate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>fn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>g</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>gn</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>negate</em>&nbsp;</td><td>should logic be inverted? </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>beginning of field f </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fn</em>&nbsp;</td><td>length of field f </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>g</em>&nbsp;</td><td>beginning of field g </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>gn</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>waserror</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>msg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>msglen</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>waserror</em>&nbsp;</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>&nbsp;</td><td>message to ouput </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msglen</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>clen</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cmd</em>&nbsp;</td><td>shell command </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>clen</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>se</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>se</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>sbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</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>&nbsp;</td><td>cookie (unused) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>flen</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>field </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flen</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>u</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ulen</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>u</em>&nbsp;</td><td>input macro, output expansion </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ulen</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>namelen</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>macro name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>namelen</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>me</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>se</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>lastc</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>macro entry slot </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>se</em>&nbsp;</td><td>arguments to parse </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>lastc</em>&nbsp;</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 *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>compressed</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>pl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>pr</em></td><td>&nbsp;</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>&nbsp;</td><td>start of text </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pl</em>&nbsp;</td><td>left char, i.e. '[', '(', '{', etc. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>mep</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>te</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>current expansion string result </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>te</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>se</em></td><td>&nbsp;</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>&nbsp;</td><td>macro expansion state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>current expansion string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>se</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>mep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em></td><td>&nbsp;</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>&nbsp;</td><td>address of macro entry slot </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>macro name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>o</em>&nbsp;</td><td>macro parameters (NULL if none) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>macro body (NULL becomes "") </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>fd</em></td><td>&nbsp;</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>&nbsp;</td><td>input buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>inbut buffer size (bytes) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fd</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>path</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>macro</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context (NULL uses global context). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>macro</em>&nbsp;</td><td>macro name, options, body </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>fp</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context (NULL uses global context). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fp</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>arg</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>suffix</em></td><td>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>urlroot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>urlmdir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>urlfile</em></td><td>&nbsp;</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>&nbsp;</td><td>root URL (often path to chroot, or NULL) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>urlmdir</em>&nbsp;</td><td>directory URL (often a directory, or NULL) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>urlfile</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>patterns</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>argcPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char ***&nbsp;</td>
          <td class="paramname"> <em>argvPtr</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>no. of paths </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>*argvPtr</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>macrofiles</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>macrofiles</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fn</em></td><td>&nbsp;</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>&nbsp;</td><td>(unused) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fn</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>level</em></td><td>&nbsp;</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>&nbsp;</td><td>macro context (NULL does nothing). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>mc</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;</td>
          <td class="paramname"> <em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>argv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>argcPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char ***&nbsp;</td>
          <td class="paramname"> <em>argvPtr</em></td><td>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>argcPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char ***&nbsp;</td>
          <td class="paramname"> <em>argvPtr</em></td><td>&nbsp;</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> = &amp;<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> = &amp;<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&nbsp;
<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>