Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > dabb57319acb4393549d883bdd5bc220 > files > 59

libgdal0-devel-1.1.8-2mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>cpl_path.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.3-20001105 on Sat Dec 21 14:01:57 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>cpl_path.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/**********************************************************************</font>
00002 <font class="comment"> * $Id: cpl_path_cpp-source.html,v 1.13 2002/12/21 19:13:12 warmerda Exp $</font>
00003 <font class="comment"> *</font>
00004 <font class="comment"> * Project:  CPL - Common Portability Library</font>
00005 <font class="comment"> * Purpose:  Portable filename/path parsing, and forming ala "Glob API".</font>
00006 <font class="comment"> * Author:   Frank Warmerdam, warmerda@home.com</font>
00007 <font class="comment"> *</font>
00008 <font class="comment"> **********************************************************************</font>
00009 <font class="comment"> * Copyright (c) 1999, Frank Warmerdam</font>
00010 <font class="comment"> *</font>
00011 <font class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</font>
00012 <font class="comment"> * copy of this software and associated documentation files (the "Software"),</font>
00013 <font class="comment"> * to deal in the Software without restriction, including without limitation</font>
00014 <font class="comment"> * the rights to use, copy, modify, merge, publish, distribute, sublicense,</font>
00015 <font class="comment"> * and/or sell copies of the Software, and to permit persons to whom the</font>
00016 <font class="comment"> * Software is furnished to do so, subject to the following conditions:</font>
00017 <font class="comment"> * </font>
00018 <font class="comment"> * The above copyright notice and this permission notice shall be included</font>
00019 <font class="comment"> * in all copies or substantial portions of the Software.</font>
00020 <font class="comment"> * </font>
00021 <font class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</font>
00022 <font class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</font>
00023 <font class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL</font>
00024 <font class="comment"> * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</font>
00025 <font class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</font>
00026 <font class="comment"> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER </font>
00027 <font class="comment"> * DEALINGS IN THE SOFTWARE.</font>
00028 <font class="comment"> **********************************************************************</font>
00029 <font class="comment"> *</font>
00030 <font class="comment"> * $Log: cpl_path_cpp-source.html,v $
00030 <font class="comment"> * Revision 1.13  2002/12/21 19:13:12  warmerda
00030 <font class="comment"> * updated
00030 <font class="comment"> *</font>
00031 <font class="comment"> * Revision 1.12  2002/12/13 06:14:17  warmerda</font>
00032 <font class="comment"> * fixed bug with IsRelative function</font>
00033 <font class="comment"> *</font>
00034 <font class="comment"> * Revision 1.11  2002/12/13 06:00:54  warmerda</font>
00035 <font class="comment"> * added CPLProjectRelativeFilename() and CPLIsFilenameRelative()</font>
00036 <font class="comment"> *</font>
00037 <font class="comment"> * Revision 1.10  2002/08/15 09:23:24  dron</font>
00038 <font class="comment"> * Added CPLGetDirname() function</font>
00039 <font class="comment"> *</font>
00040 <font class="comment"> * Revision 1.9  2001/08/30 21:20:49  warmerda</font>
00041 <font class="comment"> * expand tabs</font>
00042 <font class="comment"> *</font>
00043 <font class="comment"> * Revision 1.8  2001/07/18 04:00:49  warmerda</font>
00044 <font class="comment"> * added CPL_CVSID</font>
00045 <font class="comment"> *</font>
00046 <font class="comment"> * Revision 1.7  2001/05/12 19:20:55  warmerda</font>
00047 <font class="comment"> * Fixed documentation of CPLGetExtension().</font>
00048 <font class="comment"> *</font>
00049 <font class="comment"> * Revision 1.6  2001/03/16 22:15:08  warmerda</font>
00050 <font class="comment"> * added CPLResetExtension</font>
00051 <font class="comment"> *</font>
00052 <font class="comment"> * Revision 1.5  2001/02/24 01:53:57  warmerda</font>
00053 <font class="comment"> * Added CPLFormCIFilename()</font>
00054 <font class="comment"> *</font>
00055 <font class="comment"> * Revision 1.4  2001/01/19 21:18:25  warmerda</font>
00056 <font class="comment"> * expanded tabs</font>
00057 <font class="comment"> *</font>
00058 <font class="comment"> * Revision 1.3  2000/01/26 17:53:36  warmerda</font>
00059 <font class="comment"> * Fixed CPLGetExtension() for filenames with no extension.</font>
00060 <font class="comment"> *</font>
00061 <font class="comment"> * Revision 1.2  2000/01/24 19:32:59  warmerda</font>
00062 <font class="comment"> * Fixed CPLGetExtension() to not include the dot.</font>
00063 <font class="comment"> *</font>
00064 <font class="comment"> * Revision 1.1  1999/10/14 19:23:39  warmerda</font>
00065 <font class="comment"> * New</font>
00066 <font class="comment"> *</font>
00067 <font class="comment"> **********************************************************************/</font>
00068 
00069 <font class="preprocessor">#include "<a class="code" href="cpl_conv_h.html">cpl_conv.h</a>"</font>
00070 <font class="preprocessor">#include "cpl_string.h"</font>
00071 
00072 CPL_CVSID(<font class="stringliteral">"$Id: cpl_path_cpp-source.html,v 1.13 2002/12/21 19:13:12 warmerda Exp $"</font>);
00073 
00074 
00075 <font class="keyword">static</font> <font class="keywordtype">char</font>     szStaticResult[2048]; <font class="comment">/* should be size of larged possible</font>
00076 <font class="comment">                                         filename */</font>
00077 
00078 <font class="preprocessor">#ifdef WIN32        </font>
00079 <font class="preprocessor"></font><font class="preprocessor">#define SEP_CHAR '\\'</font>
00080 <font class="preprocessor"></font><font class="preprocessor">#define SEP_STRING "\\"</font>
00081 <font class="preprocessor"></font><font class="preprocessor">#else</font>
00082 <font class="preprocessor"></font><font class="preprocessor">#define SEP_CHAR '/'</font>
00083 <font class="preprocessor"></font><font class="preprocessor">#define SEP_STRING "/"</font>
00084 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00085 <font class="preprocessor"></font>
00086 <font class="comment">/************************************************************************/</font>
00087 <font class="comment">/*                        CPLFindFilenameStart()                        */</font>
00088 <font class="comment">/************************************************************************/</font>
00089 
00090 <font class="keyword">static</font> <font class="keywordtype">int</font> CPLFindFilenameStart( <font class="keyword">const</font> <font class="keywordtype">char</font> * pszFilename )<font class="keyword"></font>
00091 <font class="keyword"></font>
00092 <font class="keyword"></font>{
00093     <font class="keywordtype">int</font>         iFileStart;
00094 
00095     <font class="keywordflow">for</font>( iFileStart = strlen(pszFilename);
00096          iFileStart &gt; 0
00097              &amp;&amp; pszFilename[iFileStart-1] != <font class="charliteral">'/'</font>
00098              &amp;&amp; pszFilename[iFileStart-1] != <font class="charliteral">'\\'</font>;
00099          iFileStart-- ) {}
00100 
00101     <font class="keywordflow">return</font> iFileStart;
00102 }
00103 
00104 <font class="comment">/************************************************************************/</font>
00105 <font class="comment">/*                             CPLGetPath()                             */</font>
00106 <font class="comment">/************************************************************************/</font>
00107 
00130 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a10">CPLGetPath</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFilename )<font class="keyword"></font>
00131 <font class="keyword"></font>
00132 <font class="keyword"></font>{
00133     <font class="keywordtype">int</font>         iFileStart = CPLFindFilenameStart(pszFilename);
00134 
00135     <font class="keywordflow">if</font>( iFileStart == 0 )
00136     {
00137         strcpy( szStaticResult, <font class="stringliteral">""</font> );
00138         <font class="keywordflow">return</font> szStaticResult;
00139     }
00140 
00141     strncpy( szStaticResult, pszFilename, iFileStart );
00142     szStaticResult[iFileStart] = <font class="charliteral">'\0'</font>;
00143 
00144     <font class="keywordflow">if</font>( iFileStart &gt; 1
00145         &amp;&amp; (szStaticResult[iFileStart-1] == <font class="charliteral">'/'</font>
00146             || szStaticResult[iFileStart-1] == <font class="charliteral">'\\'</font>) )
00147         szStaticResult[iFileStart-1] = <font class="charliteral">'\0'</font>;
00148 
00149     <font class="keywordflow">return</font> szStaticResult;
00150 }
00151 
00152 <font class="comment">/************************************************************************/</font>
00153 <font class="comment">/*                             CPLGetDirname()                          */</font>
00154 <font class="comment">/************************************************************************/</font>
00155 
00178 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a11">CPLGetDirname</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFilename )<font class="keyword"></font>
00179 <font class="keyword"></font>
00180 <font class="keyword"></font>{
00181     <font class="keywordtype">int</font>         iFileStart = CPLFindFilenameStart(pszFilename);
00182 
00183     <font class="keywordflow">if</font>( iFileStart == 0 )
00184     {
00185         strcpy( szStaticResult, <font class="stringliteral">"."</font> );
00186         <font class="keywordflow">return</font> szStaticResult;
00187     }
00188 
00189     strncpy( szStaticResult, pszFilename, iFileStart );
00190     szStaticResult[iFileStart] = <font class="charliteral">'\0'</font>;
00191 
00192     <font class="keywordflow">if</font>( iFileStart &gt; 1
00193         &amp;&amp; (szStaticResult[iFileStart-1] == <font class="charliteral">'/'</font>
00194             || szStaticResult[iFileStart-1] == <font class="charliteral">'\\'</font>) )
00195         szStaticResult[iFileStart-1] = <font class="charliteral">'\0'</font>;
00196 
00197     <font class="keywordflow">return</font> szStaticResult;
00198 }
00199 
00200 <font class="comment">/************************************************************************/</font>
00201 <font class="comment">/*                           CPLGetFilename()                           */</font>
00202 <font class="comment">/************************************************************************/</font>
00203 
00224 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a12">CPLGetFilename</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFullFilename )<font class="keyword"></font>
00225 <font class="keyword"></font>
00226 <font class="keyword"></font>{
00227     <font class="keywordtype">int</font> iFileStart = CPLFindFilenameStart( pszFullFilename );
00228 
00229     strcpy( szStaticResult, pszFullFilename + iFileStart );
00230 
00231     <font class="keywordflow">return</font> szStaticResult;
00232 }
00233 
00234 <font class="comment">/************************************************************************/</font>
00235 <font class="comment">/*                           CPLGetBasename()                           */</font>
00236 <font class="comment">/************************************************************************/</font>
00237 
00258 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a13">CPLGetBasename</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFullFilename )<font class="keyword"></font>
00259 <font class="keyword"></font>
00260 <font class="keyword"></font>{
00261     <font class="keywordtype">int</font> iFileStart = CPLFindFilenameStart( pszFullFilename );
00262     <font class="keywordtype">int</font> iExtStart, nLength;
00263 
00264     <font class="keywordflow">for</font>( iExtStart = strlen(pszFullFilename);
00265          iExtStart &gt; iFileStart &amp;&amp; pszFullFilename[iExtStart] != <font class="charliteral">'.'</font>;
00266          iExtStart-- ) {}
00267 
00268     <font class="keywordflow">if</font>( iExtStart == iFileStart )
00269         iExtStart = strlen(pszFullFilename);
00270 
00271     nLength = iExtStart - iFileStart;
00272 
00273     strncpy( szStaticResult, pszFullFilename + iFileStart, nLength );
00274     szStaticResult[nLength] = <font class="charliteral">'\0'</font>;
00275 
00276     <font class="keywordflow">return</font> szStaticResult;
00277 }
00278 
00279 
00280 <font class="comment">/************************************************************************/</font>
00281 <font class="comment">/*                           CPLGetExtension()                          */</font>
00282 <font class="comment">/************************************************************************/</font>
00283 
00303 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a14">CPLGetExtension</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFullFilename )<font class="keyword"></font>
00304 <font class="keyword"></font>
00305 <font class="keyword"></font>{
00306     <font class="keywordtype">int</font> iFileStart = CPLFindFilenameStart( pszFullFilename );
00307     <font class="keywordtype">int</font> iExtStart;
00308 
00309     <font class="keywordflow">for</font>( iExtStart = strlen(pszFullFilename);
00310          iExtStart &gt; iFileStart &amp;&amp; pszFullFilename[iExtStart] != <font class="charliteral">'.'</font>;
00311          iExtStart-- ) {}
00312 
00313     <font class="keywordflow">if</font>( iExtStart == iFileStart )
00314         iExtStart = strlen(pszFullFilename)-1;
00315 
00316     strcpy( szStaticResult, pszFullFilename+iExtStart+1 );
00317 
00318     <font class="keywordflow">return</font> szStaticResult;
00319 }
00320 
00321 <font class="comment">/************************************************************************/</font>
00322 <font class="comment">/*                         CPLResetExtension()                          */</font>
00323 <font class="comment">/************************************************************************/</font>
00324 
00336 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a17">CPLResetExtension</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszPath, <font class="keyword">const</font> <font class="keywordtype">char</font> *pszExt )<font class="keyword"></font>
00337 <font class="keyword"></font>
00338 <font class="keyword"></font>{
00339     <font class="keywordtype">int</font>         i;
00340 
00341 <font class="comment">/* -------------------------------------------------------------------- */</font>
00342 <font class="comment">/*      First, try and strip off any existing extension.                */</font>
00343 <font class="comment">/* -------------------------------------------------------------------- */</font>
00344     strcpy( szStaticResult, pszPath );
00345     <font class="keywordflow">for</font>( i = strlen(szStaticResult)-1; i &gt; 0; i-- )
00346     {
00347         <font class="keywordflow">if</font>( szStaticResult[i] == <font class="charliteral">'.'</font> )
00348         {
00349             szStaticResult[i] = <font class="charliteral">'\0'</font>;
00350             <font class="keywordflow">break</font>;
00351         }
00352 
00353         <font class="keywordflow">if</font>( szStaticResult[i] == <font class="charliteral">'/'</font> || szStaticResult[i] == <font class="charliteral">'\\'</font> 
00354             || szStaticResult[i] == <font class="charliteral">':'</font> )
00355             <font class="keywordflow">break</font>;
00356     }
00357 
00358 <font class="comment">/* -------------------------------------------------------------------- */</font>
00359 <font class="comment">/*      Append the new extension.                                       */</font>
00360 <font class="comment">/* -------------------------------------------------------------------- */</font>
00361     strcat( szStaticResult, <font class="stringliteral">"."</font> );
00362     strcat( szStaticResult, pszExt );
00363 
00364     <font class="keywordflow">return</font> szStaticResult;
00365 }
00366 
00367 <font class="comment">/************************************************************************/</font>
00368 <font class="comment">/*                          CPLFormFilename()                           */</font>
00369 <font class="comment">/************************************************************************/</font>
00370 
00399 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> * pszPath,
00400                              <font class="keyword">const</font> <font class="keywordtype">char</font> * pszBasename,
00401                              <font class="keyword">const</font> <font class="keywordtype">char</font> * pszExtension )<font class="keyword"></font>
00402 <font class="keyword"></font>
00403 <font class="keyword"></font>{
00404     <font class="keyword">const</font> <font class="keywordtype">char</font>  *pszAddedPathSep = <font class="stringliteral">""</font>;
00405     <font class="keyword">const</font> <font class="keywordtype">char</font>  *pszAddedExtSep = <font class="stringliteral">""</font>;
00406 
00407     <font class="keywordflow">if</font>( pszPath == NULL )
00408         pszPath = <font class="stringliteral">""</font>;
00409     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( strlen(pszPath) &gt; 0
00410              &amp;&amp; pszPath[strlen(pszPath)-1] != <font class="charliteral">'/'</font>
00411              &amp;&amp; pszPath[strlen(pszPath)-1] != <font class="charliteral">'\\'</font> )
00412         pszAddedPathSep = SEP_STRING;
00413 
00414     <font class="keywordflow">if</font>( pszExtension == NULL )
00415         pszExtension = <font class="stringliteral">""</font>;
00416     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( pszExtension[0] != <font class="charliteral">'.'</font> &amp;&amp; strlen(pszExtension) &gt; 0 )
00417         pszAddedExtSep = <font class="stringliteral">"."</font>;
00418 
00419     sprintf( szStaticResult, <font class="stringliteral">"%s%s%s%s%s"</font>,
00420              pszPath, pszAddedPathSep,
00421              pszBasename,
00422              pszAddedExtSep, pszExtension );
00423 
00424     <font class="keywordflow">return</font> szStaticResult;
00425 }
00426 
00427 <font class="comment">/************************************************************************/</font>
00428 <font class="comment">/*                          CPLFormCIFilename()                         */</font>
00429 <font class="comment">/************************************************************************/</font>
00430 
00455 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a16">CPLFormCIFilename</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> * pszPath,
00456                                <font class="keyword">const</font> <font class="keywordtype">char</font> * pszBasename,
00457                                <font class="keyword">const</font> <font class="keywordtype">char</font> * pszExtension )<font class="keyword"></font>
00458 <font class="keyword"></font>
00459 <font class="keyword"></font>{
00460 <font class="preprocessor">#ifdef WIN32</font>
00461 <font class="preprocessor"></font>    <font class="keywordflow">return</font> <a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( pszPath, pszBasename, pszExtension );
00462 <font class="preprocessor">#else</font>
00463 <font class="preprocessor"></font>    <font class="keyword">const</font> <font class="keywordtype">char</font>  *pszAddedExtSep = <font class="stringliteral">""</font>;
00464     <font class="keywordtype">char</font>        *pszFilename;
00465     <font class="keyword">const</font> <font class="keywordtype">char</font>  *pszFullPath;
00466     <font class="keywordtype">int</font>         nLen = strlen(pszBasename)+2, i;
00467     FILE        *fp;
00468 
00469     <font class="keywordflow">if</font>( pszExtension != NULL )
00470         nLen += strlen(pszExtension);
00471 
00472     pszFilename = (<font class="keywordtype">char</font> *) <a class="code" href="cpl_conv_h.html#a3">CPLMalloc</a>(nLen);
00473 
00474     <font class="keywordflow">if</font>( pszExtension == NULL )
00475         pszExtension = <font class="stringliteral">""</font>;
00476     <font class="keywordflow">else</font> <font class="keywordflow">if</font>( pszExtension[0] != <font class="charliteral">'.'</font> &amp;&amp; strlen(pszExtension) &gt; 0 )
00477         pszAddedExtSep = <font class="stringliteral">"."</font>;
00478 
00479     sprintf( pszFilename, <font class="stringliteral">"%s%s%s"</font>, 
00480              pszBasename, pszAddedExtSep, pszExtension );
00481 
00482     pszFullPath = <a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( pszPath, pszFilename, NULL );
00483     fp = VSIFOpen( pszFullPath, <font class="stringliteral">"r"</font> );
00484     <font class="keywordflow">if</font>( fp == NULL )
00485     {
00486         <font class="keywordflow">for</font>( i = 0; pszFilename[i] != <font class="charliteral">'\0'</font>; i++ )
00487         {
00488             <font class="keywordflow">if</font>( pszFilename[i] &gt;= <font class="charliteral">'a'</font> &amp;&amp; pszFilename[i] &lt;= <font class="charliteral">'z'</font> )
00489                 pszFilename[i] = pszFilename[i] + <font class="charliteral">'A'</font> - <font class="charliteral">'a'</font>;
00490         }
00491 
00492         pszFullPath = <a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( pszPath, pszFilename, NULL );
00493         fp = VSIFOpen( pszFullPath, <font class="stringliteral">"r"</font> );
00494     }
00495 
00496     <font class="keywordflow">if</font>( fp == NULL )
00497     {
00498         <font class="keywordflow">for</font>( i = 0; pszFilename[i] != <font class="charliteral">'\0'</font>; i++ )
00499         {
00500             <font class="keywordflow">if</font>( pszFilename[i] &gt;= <font class="charliteral">'A'</font> &amp;&amp; pszFilename[i] &lt;= <font class="charliteral">'Z'</font> )
00501                 pszFilename[i] = pszFilename[i] + <font class="charliteral">'a'</font> - <font class="charliteral">'A'</font>;
00502         }
00503 
00504         pszFullPath = <a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( pszPath, pszFilename, NULL );
00505         fp = VSIFOpen( pszFullPath, <font class="stringliteral">"r"</font> );
00506     }
00507 
00508     <font class="keywordflow">if</font>( fp != NULL )
00509         VSIFClose( fp );
00510     <font class="keywordflow">else</font>
00511         pszFullPath = <a class="code" href="cpl_conv_h.html#a15">CPLFormFilename</a>( pszPath, pszBasename, pszExtension );
00512 
00513     CPLFree( pszFilename );
00514 
00515     <font class="keywordflow">return</font> pszFullPath;
00516 <font class="preprocessor">#endif</font>
00517 <font class="preprocessor"></font>}
00518 
00519 <font class="comment">/************************************************************************/</font>
00520 <font class="comment">/*                     CPLProjectRelativeFilename()                     */</font>
00521 <font class="comment">/************************************************************************/</font>
00522 
00550 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="cpl_conv_h.html#a18">CPLProjectRelativeFilename</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszProjectDir, 
00551                                         <font class="keyword">const</font> <font class="keywordtype">char</font> *pszSecondaryFilename )<font class="keyword"></font>
00552 <font class="keyword"></font>
00553 <font class="keyword"></font>{
00554     <font class="keywordflow">if</font>( !<a class="code" href="cpl_conv_h.html#a19">CPLIsFilenameRelative</a>( pszSecondaryFilename ) )
00555         <font class="keywordflow">return</font> pszSecondaryFilename;
00556 
00557     <font class="keywordflow">if</font>( pszProjectDir == NULL || strlen(pszProjectDir) == 0 )
00558         <font class="keywordflow">return</font> pszSecondaryFilename;
00559 
00560     strcpy( szStaticResult, pszProjectDir );
00561     <font class="keywordflow">if</font>( pszProjectDir[strlen(pszProjectDir)-1] != <font class="charliteral">'/'</font> 
00562         &amp;&amp; pszProjectDir[strlen(pszProjectDir)-1] != <font class="charliteral">'\\'</font> )
00563         strcat( szStaticResult, SEP_STRING );
00564 
00565     strcat( szStaticResult, pszSecondaryFilename );
00566         
00567     <font class="keywordflow">return</font> szStaticResult;
00568 }
00569 
00570 <font class="comment">/************************************************************************/</font>
00571 <font class="comment">/*                       CPLIsFilenameRelative()                        */</font>
00572 <font class="comment">/************************************************************************/</font>
00573 
00586 <font class="keywordtype">int</font> <a class="code" href="cpl_conv_h.html#a19">CPLIsFilenameRelative</a>( <font class="keyword">const</font> <font class="keywordtype">char</font> *pszFilename )<font class="keyword"></font>
00587 <font class="keyword"></font>
00588 <font class="keyword"></font>{
00589     <font class="keywordflow">if</font>( (strlen(pszFilename) &gt; 2 &amp;&amp; strncmp(pszFilename+1,<font class="stringliteral">":\\"</font>,2) == 0)
00590         || pszFilename[0] == <font class="charliteral">'\\'</font>
00591         || pszFilename[0] == <font class="charliteral">'/'</font> )
00592         <font class="keywordflow">return</font> FALSE;
00593     <font class="keywordflow">else</font>
00594         <font class="keywordflow">return</font> TRUE;
00595 }
</div></pre><hr><address><small>Generated at Sat Dec 21 14:01:57 2002 for GDAL by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.3-20001105 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2000</small></address>
</body>
</html>