5 bool get_record( struct file_buffer *buffer, struct hash *record );
6 void put_record( struct hash *record );
8 int main( int argc, char *argv[] )
12 struct file_buffer *buffer = NULL;
13 struct hash *record = NULL;
17 buffer = read_open_buffer( file );
19 record = hash_new( 5 );
23 while ( ( get_record( buffer, record ) ) != FALSE )
30 fprintf( stderr, "Count: %d\n", count );
32 hash_destroy( record );
34 buffer_destroy( buffer );
40 bool get_record( struct file_buffer *buffer, struct hash *record )
42 /* Martin A. Hansen, June 2008 */
44 /* Get next record from the stream. */
53 while ( ( line = buffer_gets( buffer ) ) )
57 //printf( "LINE->%s<-", line );
59 if ( strcmp( line, "---\n" ) == 0 )
61 // printf( "found\n" );
73 if ( i < len - 1 && line[ i ] == ':' && line[ i + 1 ] == ' ' )
90 die( "Could not locate key." );
93 val = mem_get( len - i );
95 memcpy( val, &line[ i ], len - i - 1 );
97 val[ len - i ] = '\0';
99 // printf( "key: ->%s<- val: ->%s<-\n", key, val );
101 hash_add( record, key, val );
109 void put_record( struct hash *record )
111 /* Martin A. Hansen, June 2008 */
113 /* Output a record to the stream. */
116 struct hash_elem *bucket;
118 for ( i = 0; i < record->table_size; i++ )
120 for ( bucket = record->table[ i ]; bucket != NULL; bucket = bucket->next ) {
121 printf( "%s: %s\n", ( char * ) bucket->key, ( char * ) bucket->val );