Bool File_Read( void* file, const char* const fileName ) { File* self = (File*)file; Bool result; if( !(result = self->_read( self, fileName )) ) { /* If the file failed to read, try prepending the search paths (if its not an absolute path) */ if( strlen(fileName) >= 1 && fileName[0] != '/' ) { int i; for( i = 0; i < Stg_ObjectList_Count( _stgFilePaths ); i++ ) { char* path = (char*)Stg_ObjectAdaptor_Object( (Stg_ObjectAdaptor*)Stg_ObjectList_At( _stgFilePaths, i ) ); char newFileName[FILENAME_MAX]; strncpy( newFileName, path, FILENAME_MAX-1 ); strncat( newFileName, "/", FILENAME_MAX-1 - 1 ); strncat( newFileName, fileName, FILENAME_MAX-1 - 1 - strlen(path) ); if( (result = self->_read( self, newFileName )) ) { break; } } } } if( result ) { /* File opened, set the name. */ Stg_Object_SetName( self, (char*)fileName ); self->_opened = True; self->_lastOpenedAs = 1; } return result; }
Bool JournalFile_Append( void* file, char* fileName ) { JournalFile* self = (JournalFile*)file; Bool result = self->_append( self, fileName ); if ( result ) { /* File opened, set the name. */ Stg_Object_SetName( self, fileName ); self->_opened = True; } return result; }
Bool File_Append( void* file, const char* const fileName ) { File* self = (File*)file; Bool result = self->_append( self, fileName ); if ( result ) { /* File opened, set the name. */ Stg_Object_SetName( self, (char*)fileName ); self->_opened = True; self->_lastOpenedAs = 3; } return result; }