#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include "os.h"
extern FILE *out_stream;
static const char *get_next_filename( const char *directory )
{
static char filename[256];
DIR *dp = NULL;
struct dirent *de = NULL;
int high_num = 1000;
*filename = '\0';
if( !( dp = opendir( directory ) ) )
{
perror( directory );
return filename;
}
while( ( de = readdir( dp ) ) != NULL )
{
if( de->d_name[0] != '.' )
{
int current_number = strtol( de->d_name, 0, 10 );
high_num = current_number > high_num ? current_number : high_num;
}
}
++high_num;
snprintf( filename, 256, "%s%d.log", directory, high_num );
return filename;
}
void os_setup( void )
{
out_stream = fopen( get_next_filename( "log/" ), "w" );
if( !out_stream )
{
fprintf( stderr, "Failed to open new log file.\n" );
perror( strerror( errno ) );
exit( 1 );
}
}
void os_cleanup( void )
{
if( out_stream )
{
fclose( out_stream );
}
}
int set_nonblocking( SOCKET sock )
{
return fcntl( sock, F_SETFL, O_NONBLOCK );
}