diff options
Diffstat (limited to 'src/block-parser.c')
| -rw-r--r-- | src/block-parser.c | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/src/block-parser.c b/src/block-parser.c index 57eae8c..9166e0c 100644 --- a/src/block-parser.c +++ b/src/block-parser.c @@ -31,18 +31,18 @@ -#define BUFFER_SIZE 65536 /* lines cannot be longer than this */ +#define BUFFER_SIZE 65536 /* line cannot be longer than this */ struct BlockParser { GHashTable *table; GQueue *active_tree; - char *current_line; + gchar *current_line; }; typedef struct { - char *replace_key; - char *data; + gchar *replace_key; + gchar *data; gboolean used; gboolean finished; } BlockData; @@ -93,7 +93,7 @@ block_parser_free (BlockParser *parser) * */ void -block_parser_register_key (BlockParser *parser, const char *key, const char *replace_key) +block_parser_register_key (BlockParser *parser, const gchar *key, const gchar *replace_key) { BlockData *data; @@ -112,8 +112,8 @@ block_parser_register_key (BlockParser *parser, const char *key, const char *rep * returns newly allocated string, caller is responsible for freeing * */ -char * -block_parser_get_data (BlockParser *parser, const char *key) +gchar * +block_parser_get_data (BlockParser *parser, const gchar *key) { BlockData *data = NULL; @@ -133,7 +133,7 @@ block_parser_get_data (BlockParser *parser, const char *key) * */ gboolean -block_parser_has_unused_data (BlockParser *parser, const char *key) +block_parser_has_unused_data (BlockParser *parser, const gchar *key) { BlockData *data = NULL; @@ -153,10 +153,10 @@ block_parser_has_unused_data (BlockParser *parser, const char *key) /* -------------------------------------------------------------------------------------------------------- */ static void -push_string (BlockParser *parser, const char *piece) +push_string (BlockParser *parser, const gchar *piece) { BlockData *data; - char *s; + gchar *s; data = g_queue_peek_head (parser->active_tree); if (data) { @@ -186,14 +186,14 @@ push_string (BlockParser *parser, const char *piece) * - returns newly allocated string, caller is responsible for freeing * */ -char * +gchar * block_parser_read_and_parse (BlockParser *parser, FILE *stream) { - char *buffer; - char *b; - char *token; - char *start, *end; - char *s; + gchar *buffer; + gchar *b; + gchar *token; + gchar *start, *end; + gchar *s; GList *keys; GList *l; BlockData *data; @@ -201,8 +201,7 @@ block_parser_read_and_parse (BlockParser *parser, FILE *stream) g_return_val_if_fail (parser != NULL, NULL); - buffer = malloc (BUFFER_SIZE); - memset (buffer, 0, BUFFER_SIZE); + buffer = g_malloc0 (BUFFER_SIZE); parser->current_line = g_strdup (""); if (! fgets (buffer, BUFFER_SIZE, stream) || strlen (buffer) == 0) return NULL; @@ -222,9 +221,9 @@ block_parser_read_and_parse (BlockParser *parser, FILE *stream) /* match known tags */ for (l = keys; l != NULL; l = l->next) { /* test BEGIN_ tokens */ - s = g_strdup_printf ("BEGIN_%s", (char *) l->data); + s = g_strdup_printf ("BEGIN_%s", (gchar *) l->data); if (strcmp (s, token) == 0) { - data = g_hash_table_lookup (parser->table, (char *) l->data); + data = g_hash_table_lookup (parser->table, (gchar *) l->data); if (data) { g_queue_push_head (parser->active_tree, data); handled = TRUE; @@ -233,11 +232,11 @@ block_parser_read_and_parse (BlockParser *parser, FILE *stream) g_free (s); /* test END_ tokens */ - s = g_strdup_printf ("END_%s", (char *) l->data); + s = g_strdup_printf ("END_%s", (gchar *) l->data); if (strcmp (s, token) == 0) { - data = g_hash_table_lookup (parser->table, (char *) l->data); + data = g_hash_table_lookup (parser->table, (gchar *) l->data); if (data == NULL || data != g_queue_peek_head (parser->active_tree)) { - log_error ("block_parser_read_and_parse: something is wrong with the parser table: expected '%s'\n", (char *) l->data); + log_error ("block_parser_read_and_parse: something is wrong with the parser table: expected '%s'\n", (gchar *) l->data); } else { @@ -267,6 +266,6 @@ block_parser_read_and_parse (BlockParser *parser, FILE *stream) push_string (parser, b); g_list_free (keys); - free (buffer); + g_free (buffer); return parser->current_line; } |
