diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-02-22 13:55:03 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-02-22 13:55:03 +0100 |
| commit | 9caacb6270bd4b4836c751cf86a25073f776986a (patch) | |
| tree | 4769f246c7aa8edd0faa119f2a67da5c5ea45488 /generators-replace-table.c | |
| parent | a985af97b7a1e208ea0379308cc0e03db28787dc (diff) | |
| download | cataract-9caacb6270bd4b4836c751cf86a25073f776986a.tar.xz | |
Introduce tag replace table, part II.
Things might be little faster in some cases and slower in others.
Most of the CPU time is lost in image handling anyway.
Diffstat (limited to 'generators-replace-table.c')
| -rw-r--r-- | generators-replace-table.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/generators-replace-table.c b/generators-replace-table.c index 562f9af..6a84c17 100644 --- a/generators-replace-table.c +++ b/generators-replace-table.c @@ -1,5 +1,5 @@ /* Cataract - Static web photo gallery generator - * Copyright (C) 2008 Tomas Bzatek <tbzatek@users.sourceforge.net> + * Copyright (C) 2009 Tomas Bzatek <tbzatek@users.sourceforge.net> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -23,6 +23,7 @@ #include <unistd.h> #include <glib.h> +#include <glib/gprintf.h> #include "generators-replace-table.h" #include "gallery-utils.h" @@ -30,7 +31,7 @@ - +#if 0 static void replace_table_destroy_notify (gpointer data) { @@ -39,11 +40,12 @@ replace_table_destroy_notify (gpointer data) if ((gchar *) data) g_free ((gchar *) data); } +#endif ReplaceTable * replace_table_new () { - return (ReplaceTable *) g_hash_table_new_full (g_str_hash, g_str_equal, replace_table_destroy_notify, replace_table_destroy_notify); + return (ReplaceTable *) g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); } void @@ -51,7 +53,7 @@ replace_table_free (ReplaceTable *table) { g_return_if_fail (table != NULL); - g_hash_table_destroy (table); + g_hash_table_destroy (table); } @@ -79,6 +81,22 @@ replace_table_add_key_int (ReplaceTable *table, const gchar *tag, gint value) g_hash_table_replace (table, g_strdup (tag), g_strdup_printf ("%d", value)); } +void +replace_table_add_key_printf (ReplaceTable *table, const gchar *tag, const gchar *format, ...) +{ + va_list args; + gchar *s = NULL; + + g_return_if_fail (table != NULL); + + if (tag != NULL && format != NULL) { + va_start (args, format); + g_vasprintf (&s, format, args); + g_hash_table_replace (table, g_strdup (tag), s); + va_end (args); + } +} + static void @@ -112,6 +130,7 @@ replace_table_process_value (gpointer key, gpointer value, gpointer user_data) /* TODO: do something with tag_value? */ /* fix_entities (&s1); */ /* s1 = g_markup_escape_text (s4, -1); */ +/* line endings */ /* remove all tags as we're tag value */ while (strstr (*buffer, tag)) { str_replace (buffer, tag, tag_value, NULL); |
