g_hash_table_foreach(table, hash_free_strings_func, NULL);
}
+static void hash_free_value_mem_func(gpointer key, gpointer value,
+ gpointer data)
+{
+ g_free(value);
+}
+
+void hash_free_value_mem(GHashTable *table)
+{
+ g_hash_table_foreach(table, hash_free_value_mem_func, NULL);
+}
+
void ptr_array_free_strings(GPtrArray *array)
{
gint i;
{
va_list args;
gchar buf[BUFFSIZE];
+ gchar *logbuf;
+ gchar timestr[6];
+ time_t t;
va_start(args, format);
g_vsnprintf(buf, sizeof(buf), format, args);
va_end(args);
+
+ time(&t);
+ strftime(timestr, 6, "%H:%M", localtime(&t));
+ logbuf = g_strdup_printf("[%s] %s", timestr, buf);
- if (debug_mode) fputs(buf, stdout);
- log_window_append(buf, LOG_NORMAL);
+ if (debug_mode) fputs(logbuf, stdout);
+ log_window_append(logbuf, LOG_NORMAL);
if (log_fp) {
- fputs(buf, log_fp);
+ fputs(logbuf, log_fp);
fflush(log_fp);
}
statusbar_puts_all(buf);
+
+ g_free(logbuf);
}
void log_message(const gchar *format, ...)
g_warning("%s", buf);
log_window_append(buf, LOG_ERROR);
+ if (log_fp) {
+ fputs("*** error: ", log_fp);
+ fputs(buf, log_fp);
+ fflush(log_fp);
+ }
}