static lib_handle SearchPath( char *path_list, char *name ) { //=========================================================== char *p; lib_handle lp; char buff[2 * _MAX_PATH]; char c; lp = NULL; while( (c = *path_list) != '\0' ) { p = buff; do { ++path_list; if( IS_PATH_LIST_SEP( c ) ) break; *p++ = c; } while( (c = *path_list) != '\0' ); c = p[-1]; if( !IS_PATH_SEP( c ) ) { *p++ = DIR_SEP; } strcpy( p, name ); lp = FindSrcFile( buff ); if( lp != NULL ) { break; } } return( lp ); }
static int findInclude( const char *path, const char *filename, size_t len, char *fullfilename ) { char *p; char c; while( (c = *path) != '\0' ) { p = fullfilename; do { ++path; if( IS_PATH_LIST_SEP( c ) ) { break; } *p++ = c; } while( (c = *path) != '\0' ); c = p[-1]; if( !IS_PATH_SEP( c ) ) { *p++ = DIR_SEP; } memcpy( p, filename, len ); p[len] = '\0'; if( access( fullfilename, R_OK ) == 0 ) { return( 0 ); } } return( -1 ); }
int QMakeFileName( char **pos, char *name, char *fname ) /******************************************************/ { char *pathptr; size_t path_len; char *file_ptr; pathptr = *pos; if( pathptr == NULL ) return( 0 ); while( *pathptr != '\0' ) { if( IS_PATH_LIST_SEP( *pathptr ) ) *pos = ++pathptr; for( ;; ) { if( *pathptr == '\0' ) break; if( IS_PATH_LIST_SEP( *pathptr ) ) break; pathptr++; } path_len = pathptr - *pos; if( path_len != 0 ) { memcpy( fname, *pos, path_len ); file_ptr = fname + path_len; switch( file_ptr[ -1 ] ) { CASE_PATH_SEP: break; default: *file_ptr++ = PATH_SEP; break; } strcpy( file_ptr, name ); *pos = pathptr; return( 1 ); } *pos = pathptr; } return( 0 ); }
void HFileListNext( // GET NEXT H-FILE PREFIX char *prefix ) // - prefix location { char c; if( hfile_ptr != NULL ) { while( (c = *hfile_ptr) != '\0' ) { ++hfile_ptr; if( IS_PATH_LIST_SEP( c ) ) break; *prefix++ = c; } } *prefix = '\0'; }
static char *findFile( char *fullname, const char *name, char *path_list ) /************************************************************************/ { int fh; char *p; char c; fh = open( name, O_RDONLY | O_BINARY, S_IREAD ); if( fh != -1 ) { close( fh ); strcpy( fullname, name ); return( fullname ); } if( path_list != NULL ) { while( (c = *path_list) != NULLCHAR ) { p = fullname; do { ++path_list; if( IS_PATH_LIST_SEP( c ) ) break; *p = c; } while( (c = *path_list) != NULLCHAR ); c = p[-1]; if( !IS_PATH_SEP( c ) ) { *p++ = DIR_SEP; } strcat( p, name ); fh = open( fullname, O_RDONLY | O_BINARY, S_IREAD ); if( fh != -1 ) { close( fh ); return( fullname ); } } } *fullname = '\0'; return( NULL ); }