<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>macro.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.2.17 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>rpmio/macro.c File Reference</h1> <a href="#_details">More...</a> <p> <code>#include "<a class="el" href="system_8h-source.html">system.h</a>"</code><br> <code>#include <stdarg.h></code><br> <code>#include <<a class="el" href="rpmio__internal_8h-source.html">rpmio_internal.h</a>></code><br> <code>#include <<a class="el" href="rpmmessages_8h-source.html">rpmmessages.h</a>></code><br> <code>#include <<a class="el" href="rpmerr_8h-source.html">rpmerr.h</a>></code><br> <code>#include <<a class="el" href="rpmmacro_8h-source.html">rpmmacro.h</a>></code><br> <code>#include "<a class="el" href="debug_8h-source.html">debug.h</a>"</code><br> <p> <a href="macro_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Data Structures</h2></td></tr> <tr><td nowrap align=right valign=top>struct </td><td valign=bottom><a class="el" href="structMacroBuf__s.html">MacroBuf_s</a></td></tr> <tr><td> </td><td><font size=-1><em>Macro expansion state.</em> <a href="structMacroBuf__s.html#_details">More...</a><em></em></font><br><br></td></tr> <tr><td colspan=2><br><h2>Defines</h2></td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a0">isblank</a>(_c) ((_c) == ' ' || (_c) == '\t')</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a1">iseol</a>(_c) ((_c) == '\n' || (_c) == '\r')</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a2">STREQ</a>(_t, _f, _fn) ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn)))</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a3">SAVECHAR</a>(_mb, _c) { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; }</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a4">MAX_MACRO_DEPTH</a> 16</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a5">MACRO_CHUNK_SIZE</a> 16</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a6">SKIPBLANK</a>(_s, _c)</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a7">SKIPNONBLANK</a>(_s, _c)</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a8">COPYNAME</a>(_ne, _s, _c)</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a9">COPYOPTS</a>(_oe, _s, _c)</td></tr> <tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="macro_8c.html#a10">COPYBODY</a>(_be, _s, _c)</td></tr> <tr><td colspan=2><br><h2>Typedefs</h2></td></tr> <tr><td nowrap align=right valign=top>typedef <a class="el" href="structMacroBuf__s.html">MacroBuf_s</a> * </td><td valign=bottom><a class="el" href="macro_8c.html#a16">MacroBuf</a></td></tr> <tr><td> </td><td><font size=-1><em>Macro expansion state.</em> <a href="#a16"></a><em></em></font><br><br></td></tr> <tr><td colspan=2><br><h2>Functions</h2></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a20">expandMacro</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb)</td></tr> <tr><td> </td><td><font size=-1><em>The main macro recursion loop.</em> <a href="#a20"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void * </td><td valign=bottom><a class="el" href="macro_8c.html#a21">_free</a> (const void *p)</td></tr> <tr><td> </td><td><font size=-1><em>Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.</em> <a href="#a21"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a22">compareMacroName</a> (const void *ap, const void *bp)</td></tr> <tr><td> </td><td><font size=-1><em>Compare macro entries by name (qsort/bsearch).</em> <a href="#a22"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a23">expandMacroTable</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc)</td></tr> <tr><td> </td><td><font size=-1><em>Enlarge macro table.</em> <a href="#a23"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a24">sortMacroTable</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc)</td></tr> <tr><td> </td><td><font size=-1><em>Sort entries in macro table.</em> <a href="#a24"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a25">rpmDumpMacroTable</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, FILE *fp)</td></tr> <tr><td> </td><td><font size=-1><em>Print macros to file stream.</em> <a href="#a25"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top><a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> * </td><td valign=bottom><a class="el" href="macro_8c.html#a26">findEntry</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *<a class="el" href="parseScript_8c.html#a0">name</a>, size_t namelen)</td></tr> <tr><td> </td><td><font size=-1><em>Find entry in macro table.</em> <a href="#a26"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="macro_8c.html#a27">rdcl</a> (char *buf, size_t size, <a class="el" href="group__rpmio.html#a1">FD_t</a> fd, int escapes)</td></tr> <tr><td> </td><td><font size=-1><em>fgets(3) analogue that reads \ continuations.</em> <a href="#a27"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a28">matchchar</a> (const char *p, char pl, char pr)</td></tr> <tr><td> </td><td><font size=-1><em>Return text between pl and matching pr characters.</em> <a href="#a28"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a29">printMacro</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const char *s, const char *se)</td></tr> <tr><td> </td><td><font size=-1><em>Pre-print macro expression to be expanded.</em> <a href="#a29"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a30">printExpansion</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const char *t, const char *te)</td></tr> <tr><td> </td><td><font size=-1><em>Post-print expanded macro expression.</em> <a href="#a30"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a31">expandT</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const char *f, size_t flen)</td></tr> <tr><td> </td><td><font size=-1><em>Save source and expand field into target.</em> <a href="#a31"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a32">expandU</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, char *u, size_t ulen)</td></tr> <tr><td> </td><td><font size=-1><em>Save source/target and expand macro in u.</em> <a href="#a32"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a33">doShellEscape</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const char *cmd, size_t clen)</td></tr> <tr><td> </td><td><font size=-1><em>Expand output of shell command into target buffer.</em> <a href="#a33"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a34">doDefine</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const char *se, int level, int expandbody)</td></tr> <tr><td> </td><td><font size=-1><em>Parse (and execute) new macro definition.</em> <a href="#a34"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a35">doUndefine</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *se)</td></tr> <tr><td> </td><td><font size=-1><em>Parse (and execute) macro undefinition.</em> <a href="#a35"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a36">pushMacro</a> (<a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> *mep, const char *n, const char *o, const char *b, int level)</td></tr> <tr><td> </td><td><font size=-1><em>Push new macro definition onto macro entry stack.</em> <a href="#a36"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a37">popMacro</a> (<a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> *mep)</td></tr> <tr><td> </td><td><font size=-1><em>Pop macro definition from macro entry stack.</em> <a href="#a37"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a38">freeArgs</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb)</td></tr> <tr><td> </td><td><font size=-1><em>Free parsed arguments for parameterized macro.</em> <a href="#a38"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a39">grabArgs</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, const <a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> me, const char *se, char lastc)</td></tr> <tr><td> </td><td><font size=-1><em>Parse arguments (to next new line) for parameterized macro.</em> <a href="#a39"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a40">doOutput</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, int waserror, const char *msg, size_t msglen)</td></tr> <tr><td> </td><td><font size=-1><em>Perform macro message output.</em> <a href="#a40"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a41">doFoo</a> (<a class="el" href="macro_8c.html#a16">MacroBuf</a> mb, int negate, const char *f, size_t fn, const char *g, size_t gn)</td></tr> <tr><td> </td><td><font size=-1><em>Execute macro primitives.</em> <a href="#a41"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a42">expandMacros</a> (void *spec, <a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, char *sbuf, size_t slen)</td></tr> <tr><td> </td><td><font size=-1><em>Expand macro into buffer.</em> <a href="#a42"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a43">addMacro</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *n, const char *o, const char *b, int level)</td></tr> <tr><td> </td><td><font size=-1><em>Add macro to context.</em> <a href="#a43"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a44">delMacro</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *n)</td></tr> <tr><td> </td><td><font size=-1><em>Delete macro from context.</em> <a href="#a44"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a45">rpmDefineMacro</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *macro, int level)</td></tr> <tr><td> </td><td><font size=-1><em>Define macro in context.</em> <a href="#a45"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a46">rpmLoadMacros</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, int level)</td></tr> <tr><td> </td><td><font size=-1><em>Load macros from specific context into global context.</em> <a href="#a46"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a47">rpmInitMacros</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc, const char *<a class="el" href="group__rpmrc.html#a12">macrofiles</a>)</td></tr> <tr><td> </td><td><font size=-1><em>Initialize global macro context from set of macrofile(s).</em> <a href="#a47"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="macro_8c.html#a48">rpmFreeMacros</a> (<a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> mc)</td></tr> <tr><td> </td><td><font size=-1><em>Destroy macro context.</em> <a href="#a48"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a49">isCompressed</a> (const char *<a class="el" href="parseScript_8c.html#a2">file</a>, <a class="el" href="rpmmacro_8h.html#a13">rpmCompressedMagic</a> *compressed)</td></tr> <tr><td> </td><td><font size=-1><em>Return type of compression used in file.</em> <a href="#a49"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="macro_8c.html#a50">rpmExpand</a> (const char *arg,...)</td></tr> <tr><td> </td><td><font size=-1><em>Return (malloc'ed) concatenated macro expansion(s).</em> <a href="#a50"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a51">rpmExpandNumeric</a> (const char *arg)</td></tr> <tr><td> </td><td><font size=-1><em>Return macro expansion as a numeric value.</em> <a href="#a51"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="macro_8c.html#a52">rpmCleanPath</a> (char *path)</td></tr> <tr><td> </td><td><font size=-1><em>Canonicalize file path.</em> <a href="#a52"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a53">rpmGetPath</a> (const char *path,...)</td></tr> <tr><td> </td><td><font size=-1><em>Return (malloc'ed) expanded, canonicalized, file path.</em> <a href="#a53"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>const char * </td><td valign=bottom><a class="el" href="macro_8c.html#a54">rpmGenPath</a> (const char *urlroot, const char *urlmdir, const char *urlfile)</td></tr> <tr><td> </td><td><font size=-1><em>Merge 3 args into path, any or all of which may be a url.</em> <a href="#a54"></a><em></em></font><br><br></td></tr> <tr><td colspan=2><br><h2>Variables</h2></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a11">_debug</a> = 0</td></tr> <tr><td nowrap align=right valign=top><a class="el" href="structMacroContext__s.html">MacroContext_s</a> </td><td valign=bottom><a class="el" href="macro_8c.html#a12">rpmGlobalMacroContext_s</a></td></tr> <tr><td nowrap align=right valign=top><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td><td valign=bottom><a class="el" href="macro_8c.html#a13">rpmGlobalMacroContext</a> = &<a class="el" href="macro_8c.html#a12">rpmGlobalMacroContext_s</a></td></tr> <tr><td nowrap align=right valign=top><a class="el" href="structMacroContext__s.html">MacroContext_s</a> </td><td valign=bottom><a class="el" href="macro_8c.html#a14">rpmCLIMacroContext_s</a></td></tr> <tr><td nowrap align=right valign=top><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td><td valign=bottom><a class="el" href="macro_8c.html#a15">rpmCLIMacroContext</a> = &<a class="el" href="macro_8c.html#a14">rpmCLIMacroContext_s</a></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a17">max_macro_depth</a> = 16</td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a18">print_macro_trace</a> = 0</td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="macro_8c.html#a19">print_expand_trace</a> = 0</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <p> <p> Definition in file <a class="el" href="macro_8c-source.html">macro.c</a>.<hr><h2>Define Documentation</h2> <a name="a10" doxytag="macro.c::COPYBODY"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define COPYBODY</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_be, <tr> <td></td> <td></td> <td class="md" nowrap>_s, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Value:</b><div class="fragment"><pre>{ <span class="keywordflow">while</span>(((_c) = *(_s)) && !<a class="code" href="macro_8c.html#a1">iseol</a>(_c)) { \ <span class="keywordflow">if</span> ((_c) == <span class="charliteral">'\\'</span>) \ (_s)++; \ *(_be)++ = *(_s)++; \ } \ *(_be) = <span class="charliteral">'\0'</span>; \ }</pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00448">448</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#l00600">doDefine</a>(). </td> </tr> </table> <a name="a8" doxytag="macro.c::COPYNAME"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define COPYNAME</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_ne, <tr> <td></td> <td></td> <td class="md" nowrap>_s, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Value:</b><div class="fragment"><pre>{ <a class="code" href="macro_8c.html#a6">SKIPBLANK</a>(_s,_c); \ <span class="keywordflow">while</span>(((_c) = *(_s)) && (<a class="code" href="rpmio_8h.html#a100">xisalnum</a>(_c) || (_c) == <span class="charliteral">'_'</span>)) \ *(_ne)++ = *(_s)++; \ *(_ne) = <span class="charliteral">'\0'</span>; \ }</pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00435">435</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#l00600">doDefine</a>(), and <a class="el" href="macro_8c-source.html#l00696">doUndefine</a>(). </td> </tr> </table> <a name="a9" doxytag="macro.c::COPYOPTS"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define COPYOPTS</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_oe, <tr> <td></td> <td></td> <td class="md" nowrap>_s, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Value:</b><div class="fragment"><pre>{ <span class="keywordflow">while</span>(((_c) = *(_s)) && (_c) != <span class="charliteral">')'</span>) \ *(_oe)++ = *(_s)++; \ *(_oe) = <span class="charliteral">'\0'</span>; \ }</pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00442">442</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#l00600">doDefine</a>(). </td> </tr> </table> <a name="a0" doxytag="macro.c::isblank"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define isblank</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> ((_c) == ' ' || (_c) == '\t') </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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#l00600">doDefine</a>(), <a class="el" href="macro_8c-source.html#l01026">doFoo</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l00852">grabArgs</a>(). </td> </tr> </table> <a name="a1" doxytag="macro.c::iseol"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define iseol</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> ((_c) == '\n' || (_c) == '\r') </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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#l00600">doDefine</a>(), <a class="el" href="macro_8c-source.html#l00560">doShellEscape</a>(), <a class="el" href="macro_8c-source.html#l00696">doUndefine</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), <a class="el" href="macro_8c-source.html#l00390">printExpansion</a>(), <a class="el" href="macro_8c-source.html#l00346">printMacro</a>(), and <a class="el" href="macro_8c-source.html#l00277">rdcl</a>(). </td> </tr> </table> <a name="a5" doxytag="macro.c::MACRO_CHUNK_SIZE"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define MACRO_CHUNK_SIZE 16 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00157">expandMacroTable</a>(). </td> </tr> </table> <a name="a4" doxytag="macro.c::MAX_MACRO_DEPTH"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define MAX_MACRO_DEPTH 16 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00087">87</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </td> </tr> </table> <a name="a3" doxytag="macro.c::SAVECHAR"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define SAVECHAR</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_mb, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; } </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00083">83</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#l00560">doShellEscape</a>(), and <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a6" doxytag="macro.c::SKIPBLANK"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define SKIPBLANK</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_s, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Value:</b><div class="fragment"><pre><span class="keywordflow">while</span> (((_c) = *(_s)) && <a class="code" href="macro_8c.html#a0">isblank</a>(_c)) \ (_s)++;</pre></div> <p> Definition at line <a class="el" href="macro_8c-source.html#l00427">427</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#l00600">doDefine</a>(), and <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a7" doxytag="macro.c::SKIPNONBLANK"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define SKIPNONBLANK</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_s, <tr> <td></td> <td></td> <td class="md" nowrap>_c </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Value:</b><div class="fragment"><pre><span class="keywordflow">while</span> (((_c) = *(_s)) && !(<a class="code" href="macro_8c.html#a0">isblank</a>(_c) || <a class="code" href="macro_8c.html#a1">iseol</a>(_c))) \ (_s)++;</pre></div> <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>. </td> </tr> </table> <a name="a2" doxytag="macro.c::STREQ"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define STREQ</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">_t, <tr> <td></td> <td></td> <td class="md" nowrap>_f, <tr> <td></td> <td></td> <td class="md" nowrap>_fn </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap> ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn))) </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00016">16</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#l01026">doFoo</a>(), and <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <hr><h2>Typedef Documentation</h2> <a name="a16" doxytag="macro.c::MacroBuf"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> typedef struct <a class="el" href="structMacroBuf__s.html">MacroBuf_s</a> * MacroBuf </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Macro expansion state. <p> </td> </tr> </table> <hr><h2>Function Documentation</h2> <a name="a21" doxytag="macro.c::_free"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void* _free </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const void * </td> <td class="mdname1" valign="top" nowrap> <em>p</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [inline, static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>p</em> </td><td> memory to free </td></tr> </table> </dl><dl compact><dt><b>Return values: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>NULL</em> </td><td> always </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00121">121</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </td> </tr> </table> <a name="a43" doxytag="macro.c::addMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void addMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>n</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>o</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>b</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>level</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Add macro to context. <p> <dl compact><dt><b>Deprecated: </b></dt><dd> Use <a class="el" href="macro_8c.html#a45">rpmDefineMacro</a>(). </dl><dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> <tr><td valign=top><em>n</em> </td><td> macro name </td></tr> <tr><td valign=top><em>o</em> </td><td> macro paramaters </td></tr> <tr><td valign=top><em>b</em> </td><td> macro body </td></tr> <tr><td valign=top><em>level</em> </td><td> macro recursion level (0 is entry API) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01490">1490</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00157">expandMacroTable</a>(), <a class="el" href="macro_8c-source.html#l00241">findEntry</a>(), <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00021">MacroContext_s::macrosAllocated</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="macro_8c-source.html#l00750">pushMacro</a>(), <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>, and <a class="el" href="macro_8c-source.html#l00179">sortMacroTable</a>(). <p> Referenced by <a class="el" href="spec_8c-source.html#l00246">addSource</a>(), <a class="el" href="build_8c-source.html#l00108">buildForTarget</a>(), <a class="el" href="rpmmodule_8c-source.html#l00582">doAddMacro</a>(), <a class="el" href="macro_8c-source.html#l00600">doDefine</a>(), <a class="el" href="rpmrc_8c-source.html#l00552">doReadRC</a>(), <a class="el" href="build_2build_8c-source.html#l00057">doScript</a>(), <a class="el" href="parsePrep_8c-source.html#l00275">doSetupMacro</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), <a class="el" href="macro_8c-source.html#l00852">grabArgs</a>(), <a class="el" href="parsePreamble_8c-source.html#l00445">handlePreambleTag</a>(), <a class="el" href="rpminject_8c-source.html#l00524">main</a>(), <a class="el" href="signature_8c-source.html#l00357">makeGPGSignature</a>(), <a class="el" href="signature_8c-source.html#l00245">makePGPSignature</a>(), <a class="el" href="parseSpec_8c-source.html#l00379">parseSpec</a>(), <a class="el" href="psm_8c-source.html#l00267">rpmInstallLoadMacros</a>(), <a class="el" href="macro_8c-source.html#l01547">rpmLoadMacros</a>(), <a class="el" href="rpmrc_8c-source.html#l01403">rpmRebuildTargetVars</a>(), <a class="el" href="rpmrc_8c-source.html#l00513">setDefaults</a>(), <a class="el" href="rpmrc_8c-source.html#l00461">setPathDefault</a>(), <a class="el" href="rpmrc_8c-source.html#l00446">setVarDefault</a>(), <a class="el" href="signature_8c-source.html#l00689">verifyGPGSignature</a>(), and <a class="el" href="signature_8c-source.html#l00544">verifyPGPSignature</a>(). </td> </tr> </table> <a name="a22" doxytag="macro.c::compareMacroName"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int compareMacroName </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const void * </td> <td class="mdname" nowrap> <em>ap</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const void * </td> <td class="mdname" nowrap> <em>bp</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>ap</em> </td><td> 1st macro entry </td></tr> <tr><td valign=top><em>bp</em> </td><td> 2nd macro entry </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> result of comparison </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00137">137</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00241">findEntry</a>(), and <a class="el" href="macro_8c-source.html#l00179">sortMacroTable</a>(). </td> </tr> </table> <a name="a44" doxytag="macro.c::delMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void delMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>n</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> <tr><td valign=top><em>n</em> </td><td> macro name </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01516">1516</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00241">findEntry</a>(), <a class="el" href="macro_8c-source.html#l00779">popMacro</a>(), <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>, and <a class="el" href="macro_8c-source.html#l00179">sortMacroTable</a>(). <p> Referenced by <a class="el" href="rpmmodule_8c-source.html#l00596">doDelMacro</a>(), <a class="el" href="build_2build_8c-source.html#l00057">doScript</a>(), <a class="el" href="macro_8c-source.html#l00696">doUndefine</a>(), <a class="el" href="parsePreamble_8c-source.html#l00445">handlePreambleTag</a>(), <a class="el" href="signature_8c-source.html#l00357">makeGPGSignature</a>(), <a class="el" href="signature_8c-source.html#l00245">makePGPSignature</a>(), <a class="el" href="parseSpec_8c-source.html#l00379">parseSpec</a>(), <a class="el" href="rpmrc_8c-source.html#l01403">rpmRebuildTargetVars</a>(), <a class="el" href="signature_8c-source.html#l00689">verifyGPGSignature</a>(), and <a class="el" href="signature_8c-source.html#l00544">verifyPGPSignature</a>(). </td> </tr> </table> <a name="a34" doxytag="macro.c::doDefine"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* doDefine </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>se</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>level</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>expandbody</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>se</em> </td><td> macro definition to parse </td></tr> <tr><td valign=top><em>level</em> </td><td> macro recursion level </td></tr> <tr><td valign=top><em>expandbody</em> </td><td> should body be expanded? </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> address to continue parsing </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00600">600</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="macro_8c-source.html#l00448">COPYBODY</a>, <a class="el" href="macro_8c-source.html#l00435">COPYNAME</a>, <a class="el" href="macro_8c-source.html#l00442">COPYOPTS</a>, <a class="el" href="macro_8c-source.html#l00520">expandU</a>(), <a class="el" href="macro_8c-source.html#l00012">isblank</a>, <a class="el" href="macro_8c-source.html#l00014">iseol</a>, <a class="el" href="macro_8c-source.html#l00320">matchchar</a>(), <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, <a class="el" href="macro_8c-source.html#l00427">SKIPBLANK</a>, and <a class="el" href="rpmio_8h-source.html#l00621">xisalpha</a>(). <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l01532">rpmDefineMacro</a>(). </td> </tr> </table> <a name="a41" doxytag="macro.c::doFoo"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void doFoo </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>negate</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>f</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>fn</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>g</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>gn</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Execute macro primitives. <p> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>negate</em> </td><td> should logic be inverted? </td></tr> <tr><td valign=top><em>f</em> </td><td> beginning of field f </td></tr> <tr><td valign=top><em>fn</em> </td><td> length of field f </td></tr> <tr><td valign=top><em>g</em> </td><td> beginning of field g </td></tr> <tr><td valign=top><em>gn</em> </td><td> length of field g </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01026">1026</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h.html#a32a15">COMPRESSED_OTHER</a>, <a class="el" href="macro_8c-source.html#l00465">expandT</a>(), <a class="el" href="macro_8c-source.html#l00520">expandU</a>(), <a class="el" href="macro_8c-source.html#l00012">isblank</a>, <a class="el" href="macro_8c-source.html#l01668">isCompressed</a>(), <a class="el" href="rpmmacro_8h.html#a13">rpmCompressedMagic</a>, <a class="el" href="rpmmessages_8h-source.html#l00029">rpmIsVerbose</a>, <a class="el" href="macro_8c-source.html#l00016">STREQ</a>, <a class="el" href="url_8c-source.html#l00360">urlPath</a>(), and <a class="el" href="rpmio_8h-source.html#l00624">xisdigit</a>(). <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a40" doxytag="macro.c::doOutput"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void doOutput </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>waserror</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>msg</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>msglen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>waserror</em> </td><td> use <a class="el" href="rpmerr_8h.html#a5">rpmError</a>()? </td></tr> <tr><td valign=top><em>msg</em> </td><td> message to ouput </td></tr> <tr><td valign=top><em>msglen</em> </td><td> no. of bytes in message </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00999">999</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00520">expandU</a>(), <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, and <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a33" doxytag="macro.c::doShellEscape"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int doShellEscape </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>cmd</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>clen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>cmd</em> </td><td> shell command </td></tr> <tr><td valign=top><em>clen</em> </td><td> no. bytes in shell command </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> result of expansion </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00560">560</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00520">expandU</a>(), <a class="el" href="macro_8c-source.html#l00014">iseol</a>, <a class="el" href="macro_8c-source.html#l00075">MacroBuf_s::nb</a>, <a class="el" href="macro_8c-source.html#l00083">SAVECHAR</a>, and <a class="el" href="macro_8c-source.html#l00074">MacroBuf_s::t</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a35" doxytag="macro.c::doUndefine"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* doUndefine </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>se</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context </td></tr> <tr><td valign=top><em>se</em> </td><td> macro name to undefine </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> address to continue parsing </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00696">696</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l00435">COPYNAME</a>, <a class="el" href="macro_8c-source.html#l01516">delMacro</a>(), <a class="el" href="macro_8c-source.html#l00014">iseol</a>, <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, and <a class="el" href="rpmio_8h-source.html#l00621">xisalpha</a>(). <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a20" doxytag="macro.c::expandMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int expandMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname1" valign="top" nowrap> <em>mb</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> The main macro recursion loop. <p> <dl compact><dt><b><a class="el" href="todo.html#_todo000072">Todo: </a></b></dt><dd> Dynamically reallocate target buffer.</dl> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mb</em> </td><td> macro expansion state </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> 0 on success, 1 on failure </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01126">1126</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, <a class="el" href="macro_8c-source.html#l00600">doDefine</a>(), <a class="el" href="macro_8c-source.html#l01026">doFoo</a>(), <a class="el" href="macro_8c-source.html#l00999">doOutput</a>(), <a class="el" href="macro_8c-source.html#l00560">doShellEscape</a>(), <a class="el" href="macro_8c-source.html#l00696">doUndefine</a>(), <a class="el" href="macro_8c-source.html#l00078">MacroBuf_s::expand_trace</a>, <a class="el" href="macro_8c-source.html#l00465">expandT</a>(), <a class="el" href="macro_8c-source.html#l00241">findEntry</a>(), <a class="el" href="macro_8c-source.html#l00801">freeArgs</a>(), <a class="el" href="macro_8c-source.html#l00852">grabArgs</a>(), <a class="el" href="macro_8c-source.html#l00012">isblank</a>, <a class="el" href="macro_8c-source.html#l00014">iseol</a>, <a class="el" href="macro_8c-source.html#l00077">MacroBuf_s::macro_trace</a>, <a class="el" href="macro_8c-source.html#l00320">matchchar</a>(), <a class="el" href="macro_8c-source.html#l00089">max_macro_depth</a>, <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="macro_8c-source.html#l00075">MacroBuf_s::nb</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, <a class="el" href="macro_8c-source.html#l00100">print_expand_trace</a>, <a class="el" href="macro_8c-source.html#l00098">print_macro_trace</a>, <a class="el" href="macro_8c-source.html#l00390">printExpansion</a>(), <a class="el" href="macro_8c-source.html#l00346">printMacro</a>(), <a class="el" href="rpmmacro_8h-source.html#l00054">RMIL_GLOBAL</a>, <a class="el" href="macro_8c-source.html#l00200">rpmDumpMacroTable</a>(), <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, <a class="el" href="macro_8c-source.html#l00073">MacroBuf_s::s</a>, <a class="el" href="macro_8c-source.html#l00083">SAVECHAR</a>, <a class="el" href="macro_8c-source.html#l00016">STREQ</a>, <a class="el" href="macro_8c-source.html#l00074">MacroBuf_s::t</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::used</a>, and <a class="el" href="rpmio_8h-source.html#l00627">xisalnum</a>(). <p> Referenced by <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(), <a class="el" href="macro_8c-source.html#l00465">expandT</a>(), and <a class="el" href="macro_8c-source.html#l00520">expandU</a>(). </td> </tr> </table> <a name="a42" doxytag="macro.c::expandMacros"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int expandMacros </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">void * </td> <td class="mdname" nowrap> <em>spec</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>sbuf</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>slen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Expand macro into buffer. <p> <dl compact><dt><b>Deprecated: </b></dt><dd> Use <a class="el" href="macro_8c.html#a50">rpmExpand</a>(). </dl><dl compact><dt><b><a class="el" href="todo.html#_todo000074">Todo: </a></b></dt><dd> Eliminate from API.</dl> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>spec</em> </td><td> cookie (unused) </td></tr> <tr><td valign=top><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> </table> </dl><dl compact><dt><b>Return values: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>sbuf</em> </td><td> input macro to expand, output expansion </td></tr> </table> </dl><dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>slen</em> </td><td> size of buffer </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> 0 on success </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01451">1451</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, <a class="el" href="macro_8c-source.html#l00078">MacroBuf_s::expand_trace</a>, <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), <a class="el" href="macro_8c-source.html#l00077">MacroBuf_s::macro_trace</a>, <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, <a class="el" href="macro_8c-source.html#l00075">MacroBuf_s::nb</a>, <a class="el" href="macro_8c-source.html#l00100">print_expand_trace</a>, <a class="el" href="macro_8c-source.html#l00098">print_macro_trace</a>, <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>, <a class="el" href="macro_8c-source.html#l00073">MacroBuf_s::s</a>, <a class="el" href="macro_8c-source.html#l00079">MacroBuf_s::spec</a>, and <a class="el" href="macro_8c-source.html#l00074">MacroBuf_s::t</a>. <p> Referenced by <a class="el" href="pack_8c-source.html#l00123">addFileToTagAux</a>(), <a class="el" href="parseSpec_8c-source.html#l00119">copyNextLine</a>(), <a class="el" href="files_8c-source.html#l01740">processPackageFiles</a>(), <a class="el" href="macro_8c-source.html#l01720">rpmExpand</a>(), and <a class="el" href="macro_8c-source.html#l01858">rpmGetPath</a>(). </td> </tr> </table> <a name="a23" doxytag="macro.c::expandMacroTable"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void expandMacroTable </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname1" valign="top" nowrap> <em>mc</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Enlarge macro table. <p> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mc</em> </td><td> macro context </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00157">157</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="macro_8c-source.html#l00104">MACRO_CHUNK_SIZE</a>, <a class="el" href="rpmmacro_8h-source.html#l00021">MacroContext_s::macrosAllocated</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">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#l01490">addMacro</a>(). </td> </tr> </table> <a name="a31" doxytag="macro.c::expandT"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int expandT </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>f</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>flen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>f</em> </td><td> field </td></tr> <tr><td valign=top><em>flen</em> </td><td> no. bytes in field </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> result of expansion </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00465">465</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l00073">MacroBuf_s::s</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01026">doFoo</a>(), and <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a32" doxytag="macro.c::expandU"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int expandU </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>u</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>ulen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>u</em> </td><td> input macro, output expansion </td></tr> <tr><td valign=top><em>ulen</em> </td><td> no. bytes in u buffer </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> result of expansion </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00520">520</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), <a class="el" href="macro_8c-source.html#l00075">MacroBuf_s::nb</a>, <a class="el" href="macro_8c-source.html#l00073">MacroBuf_s::s</a>, and <a class="el" href="macro_8c-source.html#l00074">MacroBuf_s::t</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l00600">doDefine</a>(), <a class="el" href="macro_8c-source.html#l01026">doFoo</a>(), <a class="el" href="macro_8c-source.html#l00999">doOutput</a>(), <a class="el" href="macro_8c-source.html#l00560">doShellEscape</a>(), and <a class="el" href="macro_8c-source.html#l00852">grabArgs</a>(). </td> </tr> </table> <a name="a26" doxytag="macro.c::findEntry"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> <a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a>* findEntry </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>name</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>namelen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context </td></tr> <tr><td valign=top><em>name</em> </td><td> macro name </td></tr> <tr><td valign=top><em>namelen</em> </td><td> no. of byes </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> address of slot in macro table with name (or NULL) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00241">241</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00137">compareMacroName</a>(), <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, and <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="macro_8c-source.html#l01516">delMacro</a>(), <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), <a class="el" href="header_8c-source.html#l01822">headerAddI18NString</a>(), <a class="el" href="header_8c-source.html#l01792">headerAddOrAppendEntry</a>(), <a class="el" href="header_8c-source.html#l01745">headerAppendEntry</a>(), <a class="el" href="header_8c-source.html#l01445">headerFindI18NString</a>(), <a class="el" href="header_8c-source.html#l01606">headerGetRawEntry</a>(), <a class="el" href="header_8c-source.html#l01231">headerIsEntry</a>(), <a class="el" href="header_8c-source.html#l01967">headerModifyEntry</a>(), <a class="el" href="header_8c-source.html#l00819">headerRemoveEntry</a>(), <a class="el" href="rpmhash_8c-source.html#l00169">htGetEntry</a>(), <a class="el" href="rpmhash_8c-source.html#l00162">htHasEntry</a>(), and <a class="el" href="header_8c-source.html#l01499">intGetEntry</a>(). </td> </tr> </table> <a name="a38" doxytag="macro.c::freeArgs"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void freeArgs </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname1" valign="top" nowrap> <em>mb</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00801">801</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::level</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="macro_8c-source.html#l00779">popMacro</a>(), <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, <a class="el" href="macro_8c-source.html#l00179">sortMacroTable</a>(), and <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::used</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a39" doxytag="macro.c::grabArgs"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* grabArgs </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const <a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> </td> <td class="mdname" nowrap> <em>me</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>se</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char </td> <td class="mdname" nowrap> <em>lastc</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Parse arguments (to next new line) for parameterized macro. <p> <dl compact><dt><b><a class="el" href="todo.html#_todo000071">Todo: </a></b></dt><dd> Use popt rather than getopt to parse args.</dl> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>me</em> </td><td> macro entry slot </td></tr> <tr><td valign=top><em>se</em> </td><td> arguments to parse </td></tr> <tr><td valign=top><em>lastc</em> </td><td> stop parsing at lastc </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> address to continue parsing </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00852">852</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, <a class="el" href="macro_8c-source.html#l00520">expandU</a>(), <a class="el" href="macro_8c-source.html#l00012">isblank</a>, <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>, and <a class="el" href="system_8h.html#a32">stpcpy</a>(). <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a49" doxytag="macro.c::isCompressed"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int isCompressed </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>file</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap><a class="el" href="rpmmacro_8h.html#a13">rpmCompressedMagic</a> * </td> <td class="mdname" nowrap> <em>compressed</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>file</em> </td><td> name of file </td></tr> </table> </dl><dl compact><dt><b>Return values: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>compressed</em> </td><td> address of compression type </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> 0 on success, 1 on I/O error </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01668">1668</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="rpmmacro_8h.html#a32a16">COMPRESSED_BZIP2</a>, <a class="el" href="rpmmacro_8h.html#a32a14">COMPRESSED_NOT</a>, <a class="el" href="rpmmacro_8h.html#a32a15">COMPRESSED_OTHER</a>, <a class="el" href="rpmmacro_8h.html#a32a17">COMPRESSED_ZIP</a>, <a class="el" href="rpmio_8c-source.html#l02685">Fclose</a>(), <a class="el" href="rpmio_8c-source.html#l03045">Ferror</a>(), <a class="el" href="rpmio_8c-source.html#l02948">Fopen</a>(), <a class="el" href="rpmio_8c-source.html#l02599">Fread</a>(), <a class="el" href="rpmio_8c-source.html#l02588">Fstrerror</a>(), <a class="el" href="rpmmacro_8h.html#a13">rpmCompressedMagic</a>, <a class="el" href="rpmerr_8h.html#a91a60">RPMERR_BADSPEC</a>, and <a class="el" href="rpmerr_8h-source.html#l00140">rpmError</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00108">buildForTarget</a>(), <a class="el" href="macro_8c-source.html#l01026">doFoo</a>(), <a class="el" href="parsePrep_8c-source.html#l00067">doPatch</a>(), and <a class="el" href="parsePrep_8c-source.html#l00157">doUntar</a>(). </td> </tr> </table> <a name="a28" doxytag="macro.c::matchchar"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* matchchar </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>p</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char </td> <td class="mdname" nowrap> <em>pl</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char </td> <td class="mdname" nowrap> <em>pr</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>p</em> </td><td> start of text </td></tr> <tr><td valign=top><em>pl</em> </td><td> left char, i.e. '[', '(', '{', etc. </td></tr> <tr><td valign=top><em>pr</em> </td><td> right char, i.e. ']', ')', '}', etc. </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> address of last char before pr (or NULL) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00320">320</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#l00600">doDefine</a>(), and <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a37" doxytag="macro.c::popMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void popMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> * </td> <td class="mdname1" valign="top" nowrap> <em>mep</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mep</em> </td><td> address of macro entry slot </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00779">779</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, and <a class="el" href="rpmmacro_8h-source.html#l00010">MacroEntry_s::prev</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01516">delMacro</a>(), and <a class="el" href="macro_8c-source.html#l00801">freeArgs</a>(). </td> </tr> </table> <a name="a30" doxytag="macro.c::printExpansion"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void printExpansion </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>t</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>te</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>t</em> </td><td> current expansion string result </td></tr> <tr><td valign=top><em>te</em> </td><td> end of string </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00390">390</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, and <a class="el" href="macro_8c-source.html#l00014">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a29" doxytag="macro.c::printMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void printMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="macro_8c.html#a16">MacroBuf</a> </td> <td class="mdname" nowrap> <em>mb</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>se</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mb</em> </td><td> macro expansion state </td></tr> <tr><td valign=top><em>s</em> </td><td> current expansion string </td></tr> <tr><td valign=top><em>se</em> </td><td> end of string </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00346">346</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="macro_8c-source.html#l00076">MacroBuf_s::depth</a>, and <a class="el" href="macro_8c-source.html#l00014">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(). </td> </tr> </table> <a name="a36" doxytag="macro.c::pushMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void pushMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a8">MacroEntry</a> * </td> <td class="mdname" nowrap> <em>mep</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>n</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>o</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>b</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>level</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mep</em> </td><td> address of macro entry slot </td></tr> <tr><td valign=top><em>n</em> </td><td> macro name </td></tr> <tr><td valign=top><em>o</em> </td><td> macro parameters (NULL if none) </td></tr> <tr><td valign=top><em>b</em> </td><td> macro body (NULL becomes "") </td></tr> <tr><td valign=top><em>level</em> </td><td> macro recursion level </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00750">750</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::level</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, <a class="el" href="rpmmacro_8h-source.html#l00010">MacroEntry_s::prev</a>, <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::used</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#l01490">addMacro</a>(). </td> </tr> </table> <a name="a27" doxytag="macro.c::rdcl"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* rdcl </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>size</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap><a class="el" href="group__rpmio.html#a1">FD_t</a> </td> <td class="mdname" nowrap> <em>fd</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>escapes</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> fgets(3) analogue that reads \ continuations. <p> Last newline always trimmed. <p> Definition at line <a class="el" href="macro_8c-source.html#l00277">277</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmio_8c-source.html#l00092">fdGetFILE</a>, and <a class="el" href="macro_8c-source.html#l00014">iseol</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a52" doxytag="macro.c::rpmCleanPath"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* rpmCleanPath </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>path</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Canonicalize file path. <p> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>path</em> </td><td> path to canonicalize (in-place) </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> canonicalized path (malloc'ed) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01770">1770</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="rpmio__internal_8h-source.html#l00045">begin</a>. <p> Referenced by <a class="el" href="fprint_8c-source.html#l00055">doLookup</a>(), <a class="el" href="rpmdb_8c-source.html#l00951">openDatabase</a>(), <a class="el" href="rpmdb_8c-source.html#l03237">rpmdbMoveDatabase</a>(), <a class="el" href="rpmdb_8c-source.html#l03173">rpmdbRemoveDatabase</a>(), <a class="el" href="macro_8c-source.html#l01858">rpmGetPath</a>(), and <a class="el" href="query_8c-source.html#l00581">rpmQueryVerify</a>(). </td> </tr> </table> <a name="a45" doxytag="macro.c::rpmDefineMacro"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int rpmDefineMacro </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>macro</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>level</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> <tr><td valign=top><em>macro</em> </td><td> macro name, options, body </td></tr> <tr><td valign=top><em>level</em> </td><td> macro recursion level (0 is entry API) </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> </dl><dl compact><dt><b><a class="el" href="todo.html#_todo000075">Todo: </a></b></dt><dd> Document. </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01532">1532</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l00600">doDefine</a>(), <a class="el" href="macro_8c-source.html#l00080">MacroBuf_s::mc</a>, and <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="rpmqv_8c-source.html#l00284">main</a>(), <a class="el" href="rpmdb_8c-source.html#l03369">rpmdbRebuild</a>(), and <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a25" doxytag="macro.c::rpmDumpMacroTable"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void rpmDumpMacroTable </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>FILE * </td> <td class="mdname" nowrap> <em>fp</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> <tr><td valign=top><em>fp</em> </td><td> file stream (NULL uses stderr). </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00200">200</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="system_8h-source.html#l00370">_</a>, <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00015">MacroEntry_s::level</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>, and <a class="el" href="rpmmacro_8h-source.html#l00014">MacroEntry_s::used</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), and <a class="el" href="rpmrc_8c-source.html#l01688">rpmShowRC</a>(). </td> </tr> </table> <a name="a50" doxytag="macro.c::rpmExpand"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* rpmExpand </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>arg</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>... </td> <td class="mdname" nowrap> </td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>arg</em> </td><td> macro(s) to expand (NULL terminates list) </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> macro expansion (malloc'ed) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01720">1720</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(), <a class="el" href="system_8h.html#a32">stpcpy</a>(), and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup</a>(). <p> Referenced by <a class="el" href="parsePreamble_8c-source.html#l00218">checkForValidArchitectures</a>(), <a class="el" href="signature_8c-source.html#l00783">checkPassPhrase</a>(), <a class="el" href="pack_8c-source.html#l00048">cpio_doio</a>(), <a class="el" href="dbconfig_8c-source.html#l00337">db3New</a>(), <a class="el" href="rpmdb_8c-source.html#l00118">dbiTagsInit</a>(), <a class="el" href="expression_8c-source.html#l00329">doPrimary</a>(), <a class="el" href="build_2build_8c-source.html#l00057">doScript</a>(), <a class="el" href="parsePrep_8c-source.html#l00275">doSetupMacro</a>(), <a class="el" href="parsePreamble_8c-source.html#l00324">fillOutMainPackage</a>(), <a class="el" href="files_8c-source.html#l02402">generateDepends</a>(), <a class="el" href="formats_8c-source.html#l00588">i18nTag</a>(), <a class="el" href="depends_8c-source.html#l01659">ignoreDep</a>(), <a class="el" href="rpmqv_8c-source.html#l00284">main</a>(), <a class="el" href="signature_8c-source.html#l00357">makeGPGSignature</a>(), <a class="el" href="signature_8c-source.html#l00245">makePGPSignature</a>(), <a class="el" href="rpmdb_8c-source.html#l00903">newRpmdb</a>(), <a class="el" href="pack_8c-source.html#l00689">packageBinaries</a>(), <a class="el" href="files_8c-source.html#l00783">parseForRegexLang</a>(), <a class="el" href="files_8c-source.html#l00827">parseForRegexMultiLib</a>(), <a class="el" href="parseSpec_8c-source.html#l00379">parseSpec</a>(), <a class="el" href="expression_8c-source.html#l00184">rdToken</a>(), <a class="el" href="parseSpec_8c-source.html#l00179">readLine</a>(), <a class="el" href="rpmdb_8c-source.html#l01820">rpmdbSetIteratorRE</a>(), <a class="el" href="macro_8c-source.html#l01743">rpmExpandNumeric</a>(), <a class="el" href="signature_8c-source.html#l00883">rpmGetPassPhrase</a>(), <a class="el" href="signature_8c-source.html#l00035">rpmLookupSignatureType</a>(), <a class="el" href="rpmrc_8c-source.html#l01663">rpmReadConfigFiles</a>(), <a class="el" href="rpminstall_8c-source.html#l00905">rpmRollback</a>(), <a class="el" href="psm_8c-source.html#l00825">runScript</a>(), <a class="el" href="transaction_8c-source.html#l01250">skipFiles</a>(), <a class="el" href="url_8c-source.html#l00190">urlFind</a>(), <a class="el" href="signature_8c-source.html#l00689">verifyGPGSignature</a>(), <a class="el" href="signature_8c-source.html#l00544">verifyPGPSignature</a>(), and <a class="el" href="pack_8c-source.html#l00385">writeRPM</a>(). </td> </tr> </table> <a name="a51" doxytag="macro.c::rpmExpandNumeric"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int rpmExpandNumeric </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>arg</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>arg</em> </td><td> macro to expand </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> numeric value </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01743">1743</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), and <a class="el" href="macro_8c-source.html#l01720">rpmExpand</a>(). <p> Referenced by <a class="el" href="rpmdb_8c-source.html#l00388">dbiOpen</a>(), <a class="el" href="files_8c-source.html#l01083">genCpioListAndHeader</a>(), <a class="el" href="rpmqv_8c-source.html#l00284">main</a>(), <a class="el" href="rpmdb_8c-source.html#l00903">newRpmdb</a>(), <a class="el" href="rpmdb_8c-source.html#l00951">openDatabase</a>(), <a class="el" href="parseReqs_8c-source.html#l00035">parseRCPOT</a>(), <a class="el" href="parseSpec_8c-source.html#l00379">parseSpec</a>(), <a class="el" href="files_8c-source.html#l01740">processPackageFiles</a>(), <a class="el" href="rpmdb_8c-source.html#l01112">rpmdbInit</a>(), <a class="el" href="rpmdb_8c-source.html#l01104">rpmdbOpen</a>(), <a class="el" href="rpmdb_8c-source.html#l03369">rpmdbRebuild</a>(), <a class="el" href="rpmdb_8c-source.html#l01133">rpmdbVerify</a>(), <a class="el" href="pack_8c-source.html#l00364">rpmLeadVersion</a>(), and <a class="el" href="transaction_8c-source.html#l01250">skipFiles</a>(). </td> </tr> </table> <a name="a48" doxytag="macro.c::rpmFreeMacros"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void rpmFreeMacros </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname1" valign="top" nowrap> <em>mc</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Destroy macro context. <p> <dl compact><dt><b>Parameters: </b></dt><dd> <table border=0 cellspacing=2 cellpadding=0> <tr><td valign=top><em>mc</em> </td><td> macro context (NULL uses global context). </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01641">1641</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, <a class="el" href="rpmmacro_8h-source.html#l00010">MacroEntry_s::prev</a>, and <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="build_8c-source.html#l00301">build</a>(), and <a class="el" href="rpmqv_8c-source.html#l00284">main</a>(). </td> </tr> </table> <a name="a54" doxytag="macro.c::rpmGenPath"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* rpmGenPath </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>urlroot</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>urlmdir</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>urlfile</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>urlroot</em> </td><td> root URL (often path to chroot, or NULL) </td></tr> <tr><td valign=top><em>urlmdir</em> </td><td> directory URL (often a directory, or NULL) </td></tr> <tr><td valign=top><em>urlfile</em> </td><td> file URL (often a file, or NULL) </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> expanded, merged, canonicalized path (malloc'ed) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01889">1889</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), <a class="el" href="system_8h.html#a36">alloca</a>(), <a class="el" href="macro_8c-source.html#l01858">rpmGetPath</a>(), <a class="el" href="rpmurl_8h.html#a30a15">URL_IS_DASH</a>, and <a class="el" href="url_8c-source.html#l00360">urlPath</a>(). <p> Referenced by <a class="el" href="build_8c-source.html#l00108">buildForTarget</a>(), <a class="el" href="db1_8c-source.html#l00476">db1close</a>(), <a class="el" href="db1_8c-source.html#l00522">db1open</a>(), <a class="el" href="db3_8c-source.html#l00657">db3close</a>(), <a class="el" href="db3_8c-source.html#l00805">db3open</a>(), <a class="el" href="db3_8c-source.html#l00161">db_init</a>(), <a class="el" href="build_2build_8c-source.html#l00057">doScript</a>(), <a class="el" href="parsePrep_8c-source.html#l00275">doSetupMacro</a>(), <a class="el" href="parsePreamble_8c-source.html#l00445">handlePreambleTag</a>(), <a class="el" href="lib_2misc_8c-source.html#l00170">makeTempFile</a>(), <a class="el" href="files_8c-source.html#l01665">processBinaryFile</a>(), <a class="el" href="files_8c-source.html#l01740">processPackageFiles</a>(), <a class="el" href="psm_8c-source.html#l01345">psmStage</a>(), <a class="el" href="rpminstall_8c-source.html#l00204">rpmInstall</a>(), and <a class="el" href="psm_8c-source.html#l00612">rpmInstallSourcePackage</a>(). </td> </tr> </table> <a name="a53" doxytag="macro.c::rpmGetPath"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const char* rpmGetPath </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>path</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>... </td> <td class="mdname" nowrap> </td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>path</em> </td><td> macro(s) to expand (NULL terminates list) </td></tr> </table> </dl><dl compact><dt><b>Returns :</b></dt><dd> canonicalized path (malloc'ed) </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01858">1858</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(), <a class="el" href="macro_8c-source.html#l01770">rpmCleanPath</a>(), <a class="el" href="system_8h.html#a32">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#l00123">addFileToTagAux</a>(), <a class="el" href="spec_8c-source.html#l00246">addSource</a>(), <a class="el" href="build_8c-source.html#l00108">buildForTarget</a>(), <a class="el" href="build_8c-source.html#l00019">checkSpec</a>(), <a class="el" href="db3_8c-source.html#l00657">db3close</a>(), <a class="el" href="db3_8c-source.html#l00805">db3open</a>(), <a class="el" href="parsePrep_8c-source.html#l00067">doPatch</a>(), <a class="el" href="rpmrc_8c-source.html#l00552">doReadRC</a>(), <a class="el" href="build_2build_8c-source.html#l00022">doRmSource</a>(), <a class="el" href="parsePrep_8c-source.html#l00157">doUntar</a>(), <a class="el" href="rpmdb_8c-source.html#l00903">newRpmdb</a>(), <a class="el" href="pack_8c-source.html#l00689">packageBinaries</a>(), <a class="el" href="pack_8c-source.html#l00788">packageSources</a>(), <a class="el" href="parseFiles_8c-source.html#l00026">parseFiles</a>(), <a class="el" href="files_8c-source.html#l00885">parseForSimple</a>(), <a class="el" href="parseSpec_8c-source.html#l00379">parseSpec</a>(), <a class="el" href="files_8c-source.html#l01740">processPackageFiles</a>(), <a class="el" href="files_8c-source.html#l02068">processSourceFiles</a>(), <a class="el" href="psm_8c-source.html#l01345">psmStage</a>(), <a class="el" href="parsePreamble_8c-source.html#l00342">readIcon</a>(), <a class="el" href="rpmdb_8c-source.html#l03369">rpmdbRebuild</a>(), <a class="el" href="signature_8c-source.html#l00072">rpmDetectPGPVersion</a>(), <a class="el" href="rpminstall_8c-source.html#l00596">rpmErase</a>(), <a class="el" href="macro_8c-source.html#l01889">rpmGenPath</a>(), <a class="el" href="fs_8c-source.html#l00247">rpmGetFilesystemUsage</a>(), <a class="el" href="rpminstall_8c-source.html#l00204">rpmInstall</a>(), <a class="el" href="rpmrc_8c-source.html#l00461">setPathDefault</a>(), <a class="el" href="signature_8c-source.html#l00689">verifyGPGSignature</a>(), and <a class="el" href="signature_8c-source.html#l00544">verifyPGPSignature</a>(). </td> </tr> </table> <a name="a47" doxytag="macro.c::rpmInitMacros"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void rpmInitMacros </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>macrofiles</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Initialize global 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><em>mc</em> </td><td> (unused) </td></tr> <tr><td valign=top><em>macrofiles</em> </td><td> colon separated list of macro files (NULL does nothing) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01568">1568</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="poptint_8h-source.html#l00018">_free</a>(), <a class="el" href="rpmio_8c-source.html#l02685">Fclose</a>(), <a class="el" href="rpmio_8c-source.html#l03045">Ferror</a>(), <a class="el" href="rpmio_8c-source.html#l02948">Fopen</a>(), <a class="el" href="system_8h.html#a34">getenv</a>(), <a class="el" href="macro_8c-source.html#l00089">max_macro_depth</a>, <a class="el" href="macro_8c-source.html#l00277">rdcl</a>(), <a class="el" href="rpmmacro_8h-source.html#l00050">RMIL_CMDLINE</a>, <a class="el" href="rpmmacro_8h-source.html#l00047">RMIL_MACROFILES</a>, <a class="el" href="macro_8c-source.html#l00066">rpmCLIMacroContext</a>, <a class="el" href="macro_8c-source.html#l01532">rpmDefineMacro</a>(), <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>, <a class="el" href="macro_8c-source.html#l01547">rpmLoadMacros</a>(), <a class="el" href="macro_8c-source.html#l00427">SKIPBLANK</a>, and <a class="el" href="rpmmalloc_8c-source.html#l00055">xstrdup</a>(). <p> Referenced by <a class="el" href="rpmrc_8c-source.html#l01572">rpmReadRC</a>(). </td> </tr> </table> <a name="a46" doxytag="macro.c::rpmLoadMacros"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void rpmLoadMacros </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname" nowrap> <em>mc</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>level</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context (NULL does nothing). </td></tr> <tr><td valign=top><em>level</em> </td><td> macro recursion level (0 is entry API) </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l01547">1547</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="rpmmacro_8h-source.html#l00013">MacroEntry_s::body</a>, <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>, <a class="el" href="rpmmacro_8h-source.html#l00011">MacroEntry_s::name</a>, <a class="el" href="rpmmacro_8h-source.html#l00012">MacroEntry_s::opts</a>, and <a class="el" href="macro_8c-source.html#l00061">rpmGlobalMacroContext</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a24" doxytag="macro.c::sortMacroTable"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void sortMacroTable </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> </td> <td class="mdname1" valign="top" nowrap> <em>mc</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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><em>mc</em> </td><td> macro context </td></tr> </table> </dl> <p> Definition at line <a class="el" href="macro_8c-source.html#l00179">179</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. <p> References <a class="el" href="macro_8c-source.html#l00137">compareMacroName</a>(), <a class="el" href="rpmmacro_8h-source.html#l00022">MacroContext_s::firstFree</a>, and <a class="el" href="rpmmacro_8h-source.html#l00020">MacroContext_s::macroTable</a>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01490">addMacro</a>(), <a class="el" href="macro_8c-source.html#l01516">delMacro</a>(), and <a class="el" href="macro_8c-source.html#l00801">freeArgs</a>(). </td> </tr> </table> <hr><h2>Variable Documentation</h2> <a name="a11" doxytag="macro.c::_debug"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int _debug = 0<code> [static]</code> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00006">6</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </td> </tr> </table> <a name="a17" doxytag="macro.c::max_macro_depth"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int max_macro_depth = 16 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00089">89</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#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a19" doxytag="macro.c::print_expand_trace"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int print_expand_trace = 0 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <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>. <p> Referenced by <a class="el" href="macro_8c-source.html#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(). </td> </tr> </table> <a name="a18" doxytag="macro.c::print_macro_trace"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int print_macro_trace = 0 </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00098">98</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#l01126">expandMacro</a>(), and <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(). </td> </tr> </table> <a name="a15" doxytag="macro.c::rpmCLIMacroContext"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> <a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> rpmCLIMacroContext = &<a class="el" href="macro_8c.html#a14">rpmCLIMacroContext_s</a> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00066">66</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#l01568">rpmInitMacros</a>(). </td> </tr> </table> <a name="a14" doxytag="macro.c::rpmCLIMacroContext_s"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> rpmCLIMacroContext_s<code> [static]</code> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00064">64</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </td> </tr> </table> <a name="a13" doxytag="macro.c::rpmGlobalMacroContext"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> <a class="el" href="rpmmacro_8h.html#a9">MacroContext</a> rpmGlobalMacroContext = &<a class="el" href="macro_8c.html#a12">rpmGlobalMacroContext_s</a> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00061">61</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#l01490">addMacro</a>(), <a class="el" href="macro_8c-source.html#l01516">delMacro</a>(), <a class="el" href="macro_8c-source.html#l01451">expandMacros</a>(), <a class="el" href="macro_8c-source.html#l00241">findEntry</a>(), <a class="el" href="macro_8c-source.html#l01532">rpmDefineMacro</a>(), <a class="el" href="macro_8c-source.html#l00200">rpmDumpMacroTable</a>(), <a class="el" href="macro_8c-source.html#l01641">rpmFreeMacros</a>(), <a class="el" href="macro_8c-source.html#l01568">rpmInitMacros</a>(), and <a class="el" href="macro_8c-source.html#l01547">rpmLoadMacros</a>(). </td> </tr> </table> <a name="a12" doxytag="macro.c::rpmGlobalMacroContext_s"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> struct <a class="el" href="structMacroContext__s.html">MacroContext_s</a> rpmGlobalMacroContext_s<code> [static]</code> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <p> Definition at line <a class="el" href="macro_8c-source.html#l00059">59</a> of file <a class="el" href="macro_8c-source.html">macro.c</a>. </td> </tr> </table> <hr><address style="align: right;"><small>Generated on Thu Sep 12 22:15:07 2002 for rpm by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.17 </small></address> </body> </html>