Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>rpm: rpmio/argv.c Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<h1>rpmio/argv.c</h1><a href="argv_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="system_8h.html">system.h</a>"</span>
<a name="l00006"></a>00006 
<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;<a class="code" href="argv_8h.html">argv.h</a>&gt;</span>
<a name="l00008"></a>00008 
<a name="l00009"></a>00009 <span class="preprocessor">#include "<a class="code" href="debug_8h.html">debug.h</a>"</span>
<a name="l00010"></a>00010 
<a name="l00011"></a>00011 <span class="comment">/*@-bounds@*/</span>
<a name="l00017"></a>00017 <span class="comment">/*@unused@*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="comment">/*@null@*/</span>
<a name="l00018"></a><a class="code" href="argv_8c.html#2574a8c557fe9a6754ff3b3656943f23">00018</a> <span class="keywordtype">void</span> * <a class="code" href="rpmlib_8h.html#2574a8c557fe9a6754ff3b3656943f23">_free</a>(<span class="comment">/*@only@*/</span> <span class="comment">/*@null@*/</span> <span class="comment">/*@out@*/</span> <span class="keyword">const</span> <span class="keywordtype">void</span> * p)
<a name="l00019"></a>00019         <span class="comment">/*@modifies p @*/</span>
<a name="l00020"></a>00020 {
<a name="l00021"></a>00021     <span class="keywordflow">if</span> (p != NULL)      free((<span class="keywordtype">void</span> *)p);
<a name="l00022"></a>00022     <span class="keywordflow">return</span> NULL;
<a name="l00023"></a>00023 }
<a name="l00024"></a>00024 
<a name="l00025"></a><a class="code" href="argv_8h.html#41f86ffb7d26c6f32740a2569a4a1b2f">00025</a> <span class="keywordtype">void</span> <a class="code" href="argv_8c.html#41f86ffb7d26c6f32740a2569a4a1b2f">argvPrint</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * msg, <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>, FILE * fp)
<a name="l00026"></a>00026 {
<a name="l00027"></a>00027     <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> av;
<a name="l00028"></a>00028 
<a name="l00029"></a>00029     <span class="keywordflow">if</span> (fp == NULL) fp = stderr;
<a name="l00030"></a>00030 
<a name="l00031"></a>00031     <span class="keywordflow">if</span> (msg)
<a name="l00032"></a>00032         fprintf(fp, <span class="stringliteral">"===================================== %s\n"</span>, msg);
<a name="l00033"></a>00033 
<a name="l00034"></a>00034     <span class="keywordflow">if</span> (argv)
<a name="l00035"></a>00035     <span class="keywordflow">for</span> (av = argv; *av; av++)
<a name="l00036"></a>00036         fprintf(fp, <span class="stringliteral">"%s\n"</span>, *av);
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 }
<a name="l00039"></a>00039 
<a name="l00040"></a><a class="code" href="argv_8h.html#c6f8d58b4b3bc7708fb81987f4929d41">00040</a> <a class="code" href="structARGI__s.html">ARGI_t</a> <a class="code" href="argv_8c.html#c6f8d58b4b3bc7708fb81987f4929d41">argiFree</a>(<a class="code" href="structARGI__s.html">ARGI_t</a> argi)
<a name="l00041"></a>00041 {
<a name="l00042"></a>00042     <span class="keywordflow">if</span> (argi) {
<a name="l00043"></a>00043         argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a> = 0;
<a name="l00044"></a>00044         argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a> = <a class="code" href="rpmlib_8h.html#2574a8c557fe9a6754ff3b3656943f23">_free</a>(argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>);
<a name="l00045"></a>00045     }
<a name="l00046"></a>00046     argi = <a class="code" href="rpmlib_8h.html#2574a8c557fe9a6754ff3b3656943f23">_free</a>(argi);
<a name="l00047"></a>00047     <span class="keywordflow">return</span> NULL;
<a name="l00048"></a>00048 }
<a name="l00049"></a>00049 
<a name="l00050"></a><a class="code" href="argv_8h.html#f7f6facbab9d4789000448d5d605f5bb">00050</a> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="argv_8c.html#f7f6facbab9d4789000448d5d605f5bb">argvFree</a>(<span class="comment">/*@only@*/</span> <span class="comment">/*@null@*/</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>)
<a name="l00051"></a>00051 {
<a name="l00052"></a>00052     <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> av;
<a name="l00053"></a>00053     
<a name="l00054"></a>00054 <span class="comment">/*@-branchstate@*/</span>
<a name="l00055"></a>00055     <span class="keywordflow">if</span> (argv)
<a name="l00056"></a>00056     <span class="keywordflow">for</span> (av = argv; *av; av++)
<a name="l00057"></a>00057         *av = <a class="code" href="rpmlib_8h.html#2574a8c557fe9a6754ff3b3656943f23">_free</a>(*av);
<a name="l00058"></a>00058 <span class="comment">/*@=branchstate@*/</span>
<a name="l00059"></a>00059     argv = <a class="code" href="rpmlib_8h.html#2574a8c557fe9a6754ff3b3656943f23">_free</a>(argv);
<a name="l00060"></a>00060     <span class="keywordflow">return</span> NULL;
<a name="l00061"></a>00061 }
<a name="l00062"></a>00062 
<a name="l00063"></a><a class="code" href="argv_8h.html#4ff25ab18537dc18371c34029bfce829">00063</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#bb8f5461a376e74c6faf6ac41c877075">argiCount</a>(<a class="code" href="structARGI__s.html">ARGI_t</a> argi)
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065     <span class="keywordtype">int</span> nvals = 0;
<a name="l00066"></a>00066     <span class="keywordflow">if</span> (argi)
<a name="l00067"></a>00067         nvals = argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a>;
<a name="l00068"></a>00068     <span class="keywordflow">return</span> nvals;
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070 
<a name="l00071"></a><a class="code" href="argv_8h.html#b712aa42b253b1d38251e3c128ae1b22">00071</a> <span class="keyword">const</span> <a class="code" href="argv_8h.html#40a03b55993d2496796615f9f3cc3707">ARGint_t</a> <a class="code" href="argv_8c.html#b712aa42b253b1d38251e3c128ae1b22">argiData</a>(<span class="keyword">const</span> <a class="code" href="structARGI__s.html">ARGI_t</a> argi)
<a name="l00072"></a>00072 {
<a name="l00073"></a>00073     <a class="code" href="argv_8h.html#40a03b55993d2496796615f9f3cc3707">ARGint_t</a> vals = NULL;
<a name="l00074"></a>00074     <span class="keywordflow">if</span> (argi &amp;&amp; argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a> &gt; 0)
<a name="l00075"></a>00075         vals = argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>;
<a name="l00076"></a>00076     <span class="keywordflow">return</span> vals;
<a name="l00077"></a>00077 }
<a name="l00078"></a>00078 
<a name="l00079"></a><a class="code" href="argv_8h.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">00079</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(<span class="keyword">const</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>)
<a name="l00080"></a>00080 {
<a name="l00081"></a>00081     <span class="keywordtype">int</span> argc = 0;
<a name="l00082"></a>00082     <span class="keywordflow">if</span> (argv)
<a name="l00083"></a>00083     <span class="keywordflow">while</span> (argv[argc] != NULL)
<a name="l00084"></a>00084         argc++;
<a name="l00085"></a>00085     <span class="keywordflow">return</span> argc;
<a name="l00086"></a>00086 }
<a name="l00087"></a>00087 
<a name="l00088"></a><a class="code" href="argv_8h.html#357f4537007fcbe0ac247601ac8e13e5">00088</a> <span class="keyword">const</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="argv_8c.html#357f4537007fcbe0ac247601ac8e13e5">argvData</a>(<span class="keyword">const</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>)
<a name="l00089"></a>00089 {
<a name="l00090"></a>00090 <span class="comment">/*@-retalias -temptrans @*/</span>
<a name="l00091"></a>00091     <span class="keywordflow">return</span> argv;
<a name="l00092"></a>00092 <span class="comment">/*@=retalias =temptrans @*/</span>
<a name="l00093"></a>00093 }
<a name="l00094"></a>00094 
<a name="l00095"></a><a class="code" href="argv_8h.html#5f59356b9dd49b0c1672e402395ab3c6">00095</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#5f59356b9dd49b0c1672e402395ab3c6">argvCmp</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> * a, <span class="keyword">const</span> <span class="keywordtype">void</span> * b)
<a name="l00096"></a>00096 {
<a name="l00097"></a>00097 <span class="comment">/*@-boundsread@*/</span>
<a name="l00098"></a>00098     <a class="code" href="argv_8h.html#1bceaf8f8b9fef305b87d6c13798a7e9">ARGstr_t</a> astr = *(<a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a>)a;
<a name="l00099"></a>00099     <a class="code" href="argv_8h.html#1bceaf8f8b9fef305b87d6c13798a7e9">ARGstr_t</a> bstr = *(<a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a>)b;
<a name="l00100"></a>00100 <span class="comment">/*@=boundsread@*/</span>
<a name="l00101"></a>00101     <span class="keywordflow">return</span> strcmp(astr, bstr);
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103 
<a name="l00104"></a><a class="code" href="argv_8h.html#25c48e5e59650ad5bfc1a3b41484b6e1">00104</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#25c48e5e59650ad5bfc1a3b41484b6e1">argvSort</a>(<a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>, <span class="keywordtype">int</span> (*compar)(<span class="keyword">const</span> <span class="keywordtype">void</span> *, <span class="keyword">const</span> <span class="keywordtype">void</span> *))
<a name="l00105"></a>00105 {
<a name="l00106"></a>00106     <span class="keywordflow">if</span> (compar == NULL)
<a name="l00107"></a>00107         compar = <a class="code" href="argv_8c.html#5f59356b9dd49b0c1672e402395ab3c6">argvCmp</a>;
<a name="l00108"></a>00108     qsort(argv, <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(argv), <span class="keyword">sizeof</span>(*argv), compar);
<a name="l00109"></a>00109     <span class="keywordflow">return</span> 0;
<a name="l00110"></a>00110 }
<a name="l00111"></a>00111 
<a name="l00112"></a><a class="code" href="argv_8h.html#c1273921ec4bd08f80727c29a6bd5ef6">00112</a> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> <a class="code" href="argv_8c.html#c1273921ec4bd08f80727c29a6bd5ef6">argvSearch</a>(<a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> argv, <a class="code" href="argv_8h.html#1bceaf8f8b9fef305b87d6c13798a7e9">ARGstr_t</a> <a class="code" href="structheaderTagTableEntry__s.html#888ace80bb881217b0a311728fab5da4">val</a>,
<a name="l00113"></a>00113                 <span class="keywordtype">int</span> (*compar)(<span class="keyword">const</span> <span class="keywordtype">void</span> *, <span class="keyword">const</span> <span class="keywordtype">void</span> *))
<a name="l00114"></a>00114 {
<a name="l00115"></a>00115     <span class="keywordflow">if</span> (argv == NULL)
<a name="l00116"></a>00116         <span class="keywordflow">return</span> NULL;
<a name="l00117"></a>00117     <span class="keywordflow">if</span> (compar == NULL)
<a name="l00118"></a>00118         compar = <a class="code" href="argv_8c.html#5f59356b9dd49b0c1672e402395ab3c6">argvCmp</a>;
<a name="l00119"></a>00119     <span class="keywordflow">return</span> bsearch(&amp;val, argv, <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(argv), <span class="keyword">sizeof</span>(*argv), compar);
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121 
<a name="l00122"></a><a class="code" href="argv_8h.html#aa44b9308dd060b2d6b384bbd55282b1">00122</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#aa44b9308dd060b2d6b384bbd55282b1">argiAdd</a>(<span class="comment">/*@out@*/</span> <a class="code" href="structARGI__s.html">ARGI_t</a> * argip, <span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> val)
<a name="l00123"></a>00123 {
<a name="l00124"></a>00124     <a class="code" href="structARGI__s.html">ARGI_t</a> argi;
<a name="l00125"></a>00125 
<a name="l00126"></a>00126     <span class="keywordflow">if</span> (argip == NULL)
<a name="l00127"></a>00127         <span class="keywordflow">return</span> -1;
<a name="l00128"></a>00128     <span class="keywordflow">if</span> (*argip == NULL)
<a name="l00129"></a>00129         *argip = <a class="code" href="system_8h.html#cf4d2a0b6c4f9229a0f4687202abed54">xcalloc</a>(1, <span class="keyword">sizeof</span>(**argip));
<a name="l00130"></a>00130     argi = *argip;
<a name="l00131"></a>00131     <span class="keywordflow">if</span> (ix &lt; 0)
<a name="l00132"></a>00132         ix = argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a>;
<a name="l00133"></a>00133     <span class="keywordflow">if</span> (ix &gt;= argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a>) {
<a name="l00134"></a>00134         argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a> = <a class="code" href="system_8h.html#93a8ec6e8a6eef0f62b7e5b50d0bf9e4">xrealloc</a>(argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>, (ix + 1) * <span class="keyword">sizeof</span>(*argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>));
<a name="l00135"></a>00135         memset(argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a> + argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a>, 0,
<a name="l00136"></a>00136                 (ix - argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a>) * <span class="keyword">sizeof</span>(*argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>));
<a name="l00137"></a>00137         argi-&gt;<a class="code" href="structARGI__s.html#ff31448fe3425077e3148f90872bba3a">nvals</a> = ix + 1;
<a name="l00138"></a>00138     }
<a name="l00139"></a>00139     argi-&gt;<a class="code" href="structARGI__s.html#2b1365462ad123f984c4cec3d8f42911">vals</a>[ix] = val;
<a name="l00140"></a>00140     <span class="keywordflow">return</span> 0;
<a name="l00141"></a>00141 }
<a name="l00142"></a>00142 
<a name="l00143"></a><a class="code" href="argv_8h.html#33c73efcc3d663d305c74dc475ed3501">00143</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#33c73efcc3d663d305c74dc475ed3501">argvAdd</a>(<span class="comment">/*@out@*/</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> * argvp, <a class="code" href="argv_8h.html#1bceaf8f8b9fef305b87d6c13798a7e9">ARGstr_t</a> val)
<a name="l00144"></a>00144 {
<a name="l00145"></a>00145     <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> argv;
<a name="l00146"></a>00146     <span class="keywordtype">int</span> argc;
<a name="l00147"></a>00147 
<a name="l00148"></a>00148     <span class="keywordflow">if</span> (argvp == NULL)
<a name="l00149"></a>00149         <span class="keywordflow">return</span> -1;
<a name="l00150"></a>00150     argc = <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(*argvp);
<a name="l00151"></a>00151 <span class="comment">/*@-unqualifiedtrans@*/</span>
<a name="l00152"></a>00152     *argvp = <a class="code" href="system_8h.html#93a8ec6e8a6eef0f62b7e5b50d0bf9e4">xrealloc</a>(*argvp, (argc + 1 + 1) * <span class="keyword">sizeof</span>(**argvp));
<a name="l00153"></a>00153 <span class="comment">/*@=unqualifiedtrans@*/</span>
<a name="l00154"></a>00154     argv = *argvp;
<a name="l00155"></a>00155     argv[argc++] = <a class="code" href="system_8h.html#d6142d091f00b2d4543ce7a43e5d0eba">xstrdup</a>(val);
<a name="l00156"></a>00156     argv[argc  ] = NULL;
<a name="l00157"></a>00157     <span class="keywordflow">return</span> 0;
<a name="l00158"></a>00158 }
<a name="l00159"></a>00159 
<a name="l00160"></a><a class="code" href="argv_8h.html#85efb0eff226a663ba15969a05490010">00160</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#85efb0eff226a663ba15969a05490010">argvAppend</a>(<span class="comment">/*@out@*/</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> * argvp, <span class="keyword">const</span> <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> av)
<a name="l00161"></a>00161 {
<a name="l00162"></a>00162     <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> argv = *argvp;
<a name="l00163"></a>00163     <span class="keywordtype">int</span> argc = <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(argv);
<a name="l00164"></a>00164     <span class="keywordtype">int</span> ac = <a class="code" href="argv_8c.html#38b3d17ed988f0ba0b9b8fe6d2f07ea3">argvCount</a>(av);
<a name="l00165"></a>00165     <span class="keywordtype">int</span> i;
<a name="l00166"></a>00166 
<a name="l00167"></a>00167     argv = <a class="code" href="system_8h.html#93a8ec6e8a6eef0f62b7e5b50d0bf9e4">xrealloc</a>(argv, (argc + ac + 1) * <span class="keyword">sizeof</span>(*argv));
<a name="l00168"></a>00168     <span class="keywordflow">for</span> (i = 0; i &lt; ac; i++)
<a name="l00169"></a>00169         argv[argc + i] = <a class="code" href="system_8h.html#d6142d091f00b2d4543ce7a43e5d0eba">xstrdup</a>(av[i]);
<a name="l00170"></a>00170     argv[argc + ac] = NULL;
<a name="l00171"></a>00171     *argvp = argv;
<a name="l00172"></a>00172     <span class="keywordflow">return</span> 0;
<a name="l00173"></a>00173 }
<a name="l00174"></a>00174 
<a name="l00175"></a><a class="code" href="argv_8h.html#2f9a5c4c0f0c5a091eb39644988520df">00175</a> <span class="keywordtype">int</span> <a class="code" href="argv_8c.html#2f9a5c4c0f0c5a091eb39644988520df">argvSplit</a>(<a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> * argvp, <span class="keyword">const</span> <span class="keywordtype">char</span> * str, <span class="keyword">const</span> <span class="keywordtype">char</span> * seps)
<a name="l00176"></a>00176 {
<a name="l00177"></a>00177     <span class="keywordtype">char</span> * dest = <a class="code" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca</a>(strlen(str) + 1);
<a name="l00178"></a>00178     <a class="code" href="argv_8h.html#6f7961fd856ecb27d6b220a2bbba3bef">ARGV_t</a> argv;
<a name="l00179"></a>00179     <span class="keywordtype">int</span> argc = 1;
<a name="l00180"></a>00180     <span class="keyword">const</span> <span class="keywordtype">char</span> * s;
<a name="l00181"></a>00181     <span class="keywordtype">char</span> * t;
<a name="l00182"></a>00182     <span class="keywordtype">int</span> c;
<a name="l00183"></a>00183 
<a name="l00184"></a>00184     <span class="keywordflow">for</span> (argc = 1, s = str, t = dest; (c = *s); s++, t++) {
<a name="l00185"></a>00185         <span class="keywordflow">if</span> (strchr(seps, c)) {
<a name="l00186"></a>00186             argc++;
<a name="l00187"></a>00187             c = <span class="charliteral">'\0'</span>;
<a name="l00188"></a>00188         }
<a name="l00189"></a>00189         *t = c;
<a name="l00190"></a>00190     }
<a name="l00191"></a>00191     *t = <span class="charliteral">'\0'</span>;
<a name="l00192"></a>00192 
<a name="l00193"></a>00193     argv = <a class="code" href="system_8h.html#42ccfa6fc49cc4ce90cc44cd05052490">xmalloc</a>( (argc + 1) * <span class="keyword">sizeof</span>(*argv));
<a name="l00194"></a>00194 
<a name="l00195"></a>00195     <span class="keywordflow">for</span> (c = 0, s = dest; s &lt; t; s+= strlen(s) + 1) {
<a name="l00196"></a>00196         <span class="keywordflow">if</span> (*s == <span class="charliteral">'\0'</span>)
<a name="l00197"></a>00197             <span class="keywordflow">continue</span>;
<a name="l00198"></a>00198         argv[c] = <a class="code" href="system_8h.html#d6142d091f00b2d4543ce7a43e5d0eba">xstrdup</a>(s);
<a name="l00199"></a>00199         c++;
<a name="l00200"></a>00200     }
<a name="l00201"></a>00201     argv[c] = NULL;
<a name="l00202"></a>00202     *argvp = argv;
<a name="l00203"></a>00203 <span class="comment">/*@-nullstate@*/</span>
<a name="l00204"></a>00204     <span class="keywordflow">return</span> 0;
<a name="l00205"></a>00205 <span class="comment">/*@=nullstate@*/</span>
<a name="l00206"></a>00206 }
<a name="l00207"></a>00207 <span class="comment">/*@=bounds@*/</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on 1 Oct 2013 for rpm by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>