int ReadIni::readIniInteger( char const *IniFile, char const *Section, char const *Ident, int defint ) { char defstr[LINEMAXCHARS], sItem[LINEMAXCHARS], *ptr; sprintf( defstr, "%d", defint ); ptr = readIniString( IniFile, Section, Ident, sItem, defstr ); if ( ptr == NULL ) return( defint ); else return( atoi( sItem ) ); }
unsigned int ReadIni::readIniUInteger( char const *IniFile, char const *Section, char const *Ident, int defint ) { char defstr[LINEMAXCHARS], sItem[LINEMAXCHARS], *ptr; unsigned int i; sprintf( defstr, "%d", defint ); ptr = readIniString( IniFile, Section, Ident, sItem, defstr ); if ( ptr == NULL ) return( defint ); else sscanf(sItem,"%u",&i); return( i ); }
void handleArchivedLogFiles( const char* PLUGIN_PATH ) { char* filename = (char*)malloc( MAX_PATH ); const unsigned int pluginPathLength = strlen( PLUGIN_PATH ); memcpy( filename, PLUGIN_PATH, pluginPathLength ); memcpy( filename + pluginPathLength, "\\rfdynhud.ini", 14 ); char* buffer = (char*)malloc( 16 ); readIniString( filename, "GENERAL", "numArchivedLogFiles", "5", buffer, 16 ); unsigned int numArchivedLogFiles = (unsigned int)max( 0, atoi( buffer ) ); free( buffer ); buffer = NULL; const unsigned int folderLength = findLastSeparator( LOG_FILENAME ); memcpy( filename, LOG_FILENAME, folderLength + 1 ); memcpy( filename + folderLength + 1, "rfdynhud_editor-*.log", 22 ); char** files = (char**)malloc( 64 * sizeof( char* ) ); unsigned int numFiles = 0; WIN32_FIND_DATA data; HANDLE hFile = FindFirstFile( filename, &data ); if ( hFile != INVALID_HANDLE_VALUE ) { do { if ( ( ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) == 0 ) && ( data.cFileName[0] != '.' ) ) { unsigned int len = strlen( data.cFileName ); char* filename2 = (char*)malloc( len + 1 ); memcpy( filename2, data.cFileName, len + 1 ); files[numFiles++] = filename2; } } while ( FindNextFile( hFile, &data ) && ( numFiles < 64 ) ); } unsigned int numFiles2 = numFiles; while ( numFiles2 > numArchivedLogFiles ) { unsigned int smallestIndex = -1; for ( unsigned int i = 0; i < numFiles; i++ ) { if ( files[i] != NULL ) { smallestIndex = i; break; } } for ( unsigned int i = smallestIndex + 1; i < numFiles; i++ ) { if ( ( files[i] != NULL ) && ( strcmp( files[i], files[smallestIndex] ) < 0 ) ) smallestIndex = i; } memcpy( filename + folderLength + 1, files[smallestIndex], strlen( files[smallestIndex] ) + 1 ); _unlink( filename ); free( files[smallestIndex] ); files[smallestIndex] = NULL; numFiles2--; } for ( unsigned int i = 0; i < numFiles; i++ ) { if ( files[i] != NULL ) { free( files[i] ); files[i] = NULL; } } free( files ); free( filename ); }