Alright, maybe I should have just posted the whole glob of code in the first place (usually I would have, it's 4am, I'm hardly thinking straight).
Code:
#include <iostream>
struct LOGENTRY{
char txt[256];
};
struct LOGSTRUCT{
int iNumLogs;
LOGENTRY* entries;
};
int LogAddEntry( LOGSTRUCT* sLog, char* entry ){
if( strlen( entry ) > 0 ){
LOGENTRY* tmp;
sLog->iNumLogs++;
tmp = (LOGENTRY*)realloc( sLog->entries, sizeof(LOGENTRY)*sLog->iNumLogs );
sLog->entries = tmp;
strncpy( sLog->entries[sLog->iNumLogs-1].txt, entry, 256 );
}else
return -1;
return sLog->iNumLogs;
}
void LogInit( LOGSTRUCT* sLog ){
sLog->iNumLogs = 0;
sLog->entries = (LOGENTRY*)malloc( sizeof(LOGENTRY) );
}
bool LogSave( LOGSTRUCT* sLog, char* file ){
FILE* f = fopen( file, "w+" );
if( f == NULL )
return false;
if( fwrite( &sLog->iNumLogs, sizeof( int ), 1, f ) != 1 ){
fclose( f );
return false;
}
if( fwrite( sLog->entries, sizeof( LOGENTRY ), sLog->iNumLogs, f ) != sLog->iNumLogs ){
fclose( f );
return false;
}
fclose( f );
return true;
}