diff -r 97f767832c52 -r 5701b7859a31 util.c --- a/util.c Tue Sep 13 22:16:11 2011 -0700 +++ b/util.c Wed Sep 14 16:49:28 2011 -0700 @@ -37,13 +37,11 @@ void usage( char *prg ) { - printf( "%s [-vh] [-d ] [-a ]\n", prg ); + printf( "%s [-vh] [-f ] [-d ]\n", prg ); printf( " -v Display version\n" ); printf( " -d Show debug information on stderr\n" ); printf( " -h Usage (you're lookin' at it)\n" ); - printf( " -a Perform an action, being one of:\n" ); - printf( " init: Initialize a new, empty database\n" ); - printf( " dump: DUMP IT\n" ); + printf( " -f Specify the database to use (default is 'volta.db' in the cwd.)\n"); printf( "\n" ); return; } @@ -62,7 +60,7 @@ void debug( int level, char *file, int line, const char *fmt, ... ) { - if ( debugmode < level ) return; + if ( v.debugmode < level ) return; char timestamp[20]; time_t t = time( NULL ); @@ -114,9 +112,48 @@ } else { line = line_realloc; - memcpy( line + offset, buf, strlen(buf) ); + memcpy( line + offset, buf, LINE_BUFSIZE - 1 ); } return( line ); } + +/* + * Read an entire file into memory, returning a pointer the contents. + * Returns NULL on error. + * + */ +char * +slurp_file( char *file ) +{ + FILE *fh = NULL; + char *contents = NULL; + struct stat sb; + + if ( stat( file, &sb ) != 0 ) { + debug( 1, LOC, "Unable to stat() file '%s': %s\n", + file, strerror(errno) ); + return( NULL ); + } + + if ( (contents = malloc( sb.st_size + 1 )) == NULL ) { + debug( 1, LOC, "Unable to allocate memory for file '%s': %s\n", + file, strerror(errno) ); + return( NULL ); + } + + if ( (fh = fopen( file, "r" )) == NULL ) { + debug( 1, LOC, "Could not open file for reading '%s': %s\n", + file, strerror(errno) ); + return( NULL ); + } + + fread( contents, sizeof(char), sb.st_size, fh ); + fclose( fh ); + + return( contents ); +} + + +