123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- /*
- Copyright (C) 2004-2005 Michael Liebscher <johnnycanuck@users.sourceforge.net>
- Copyright (C) 1997-2001 Id Software, Inc.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- /*
- * filestring.c: Portable file path/name manipulation methods.
- *
- * Author: Michael Liebscher <johnnycanuck@users.sourceforge.net>
- *
- * Acknowledgement:
- * This code was derived from Quake II, and was originally
- * written by Id Software, Inc.
- *
- */
- #include "../wolfiphone.h"
- /*
- -----------------------------------------------------------------------------
- Function: FS_CreatePath -Creates given path.
-
- Parameters: path -[in] Pointer to NULL terminated string that contains directory
- path.
-
- Returns: Nothing.
-
- Notes: Creates any directories needed to store the given filename.
- -----------------------------------------------------------------------------
- */
- PUBLIC void FS_CreatePath( char *path )
- {
- char *ofs;
-
- for( ofs = path + 1; *ofs; ofs++ )
- {
- if( *ofs == '/' )
- { // create the directory
- *ofs = '\0';
- FS_CreateDirectory( path );
- *ofs = '/';
- }
- }
- }
- PUBLIC void FS_FilePath( char *in, char *out )
- {
- char *s;
-
- s = in + strlen( in ) - 1;
-
- while( s != in && *s != '/' )
- {
- s--;
- }
- strncpy( out, in, s-in );
- out[ s - in ] = '\0'; // NUL-terminate string.
- }
- PUBLIC char *FS_SkipPath( char *pathname )
- {
- char *last;
-
- last = pathname;
- while( *pathname )
- {
- if( *pathname == '/' )
- {
- last = pathname + 1;
- }
- pathname++;
- }
- return last;
- }
- PUBLIC void FS_StripExtension( char *in, char *out )
- {
- while( *in && *in != '.' )
- {
- *out++ = *in++;
- }
- *out = '\0'; // NUL-terminate string.
- }
- PUBLIC char *FS_FileExtension( char *in )
- {
- static char exten[ 8 ];
- int i;
- while( *in && *in != '.' )
- {
- in++;
- }
- if( ! *in )
- {
- return "";
- }
- in++;
- for( i = 0 ; i < 7 && *in ; i++, in++ )
- {
- exten[ i ] = *in;
- }
- exten[ i ] = '\0'; // NUL-terminate string.
- return exten;
- }
- PUBLIC void FS_FileBase( char *in, char *out )
- {
- char *s, *s2;
-
- s = in + strlen( in ) - 1;
-
- while( s != in && *s != '.' )
- {
- s--;
- }
-
- for( s2 = s ; s2 != in && *s2 != '/' ; s2-- )
- {
- ;
- }
-
- if( s - s2 < 2 )
- {
- out[ 0 ] = '\0'; // NUL-terminate string.
- }
- else
- {
- s--;
- strncpy( out, s2 + 1, s - s2 );
- out[ s - s2 ] = '\0'; // NUL-terminate string.
- }
- }
|