Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 2269bb274471fd2722517c2c0b740d7f > files > 96

rpm-devel-4.0.4-19mdk.i586.rpm

<!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>popt/findme.c Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.17 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>popt/findme.c</h1><a href="findme_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 
00005 <span class="comment">/* (C) 1998-2000 Red Hat, Inc. -- Licensing details are in the COPYING</span>
00006 <span class="comment">   file accompanying popt source distributions, available from </span>
00007 <span class="comment">   ftp://ftp.rpm.org/pub/rpm/dist. */</span>
00008 
00009 <span class="preprocessor">#include "<a class="code" href="system_8h.html">system.h</a>"</span>
00010 <span class="preprocessor">#include "<a class="code" href="findme_8h.html">findme.h</a>"</span>
00011 
<a name="l00012"></a><a class="code" href="findme_8c.html#a0">00012</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="findme_8c.html#a0">findProgramPath</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * argv0) {
00013     <span class="keywordtype">char</span> * path = <a class="code" href="system_8h.html#a34">getenv</a>(<span class="stringliteral">"PATH"</span>);
00014     <span class="keywordtype">char</span> * pathbuf;
00015     <span class="keywordtype">char</span> * start, * chptr;
00016     <span class="keywordtype">char</span> * buf;
00017 
00018     <span class="keywordflow">if</span> (argv0 == NULL) <span class="keywordflow">return</span> NULL;     <span class="comment">/* XXX can't happen */</span>
00019     <span class="comment">/* If there is a / in the argv[0], it has to be an absolute path */</span>
00020     <span class="keywordflow">if</span> (strchr(argv0, <span class="charliteral">'/'</span>))
00021         <span class="keywordflow">return</span> <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a>(argv0);
00022 
00023     <span class="keywordflow">if</span> (path == NULL) <span class="keywordflow">return</span> NULL;
00024 
00025     start = pathbuf = <a class="code" href="system_8h.html#a36">alloca</a>(strlen(path) + 1);
00026     buf = malloc(strlen(path) + strlen(argv0) + <span class="keyword">sizeof</span>(<span class="stringliteral">"/"</span>));
00027     <span class="keywordflow">if</span> (buf == NULL) <span class="keywordflow">return</span> NULL;       <span class="comment">/* XXX can't happen */</span>
00028     strcpy(pathbuf, path);
00029 
00030     chptr = NULL;
00031     <span class="comment">/*@-branchstate@*/</span>
00032     <span class="keywordflow">do</span> {
00033         <span class="keywordflow">if</span> ((chptr = strchr(start, <span class="charliteral">':'</span>)))
00034             *chptr = <span class="charliteral">'\0'</span>;
00035         sprintf(buf, <span class="stringliteral">"%s/%s"</span>, start, argv0);
00036 
00037         <span class="keywordflow">if</span> (!access(buf, <a class="code" href="system_8h.html#a8">X_OK</a>))
00038             <span class="keywordflow">return</span> buf;
00039 
00040         <span class="keywordflow">if</span> (chptr) 
00041             start = chptr + 1;
00042         <span class="keywordflow">else</span>
00043             start = NULL;
00044     } <span class="keywordflow">while</span> (start &amp;&amp; *start);
00045     <span class="comment">/*@=branchstate@*/</span>
00046 
00047     free(buf);
00048 
00049     <span class="keywordflow">return</span> NULL;
00050 }
</pre></div><hr><address style="align: right;"><small>Generated on Thu Sep 12 22:14:59 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>