+ g_free(pattern);
+ g_dir_close (dir);
+ g_pattern_spec_free(pspec);
+ g_free(rawfilename);
+
+ g_free(basename);
+ g_free(dirname);
+
+ g_ptr_array_sort(array, (GCompareFunc)hb_filename_backup_list_sort_func);
+
+ return array;
+}
+
+
+gchar *hb_filename_backup_get_filtername(gchar *filename)
+{
+gchar *dirname, *basename;
+gchar *rawfilename, *pattern;
+
+ DB( g_print("\n[util] filename backup get filtername\n") );
+
+ dirname = g_path_get_dirname(filename);
+ basename = g_path_get_basename(filename);
+
+ DB( g_print(" dir='%s' base='%s'\n", dirname, basename) );
+
+ rawfilename = hb_filename_new_without_extension(basename);
+
+ pattern = g_strdup_printf("%s*.[Bb][Aa][Kk]", rawfilename);
+
+ g_free(rawfilename);
+ g_free(basename);
+ g_free(dirname);
+
+ return pattern;
+}
+
+
+gchar *hb_filename_new_for_backup(gchar *filename)
+{
+gchar *rawfilename, *newfilename;
+GDate date;
+
+ DB( g_print("\n[util] filename new for backup\n") );
+
+ rawfilename = hb_filename_new_without_extension(filename);
+
+ g_date_clear(&date, 1);
+ g_date_set_julian (&date, GLOBALS->today);
+
+ newfilename = g_strdup_printf("%s-%04d%02d%02d.bak",
+ rawfilename,
+ g_date_get_year(&date),
+ g_date_get_month(&date),
+ g_date_get_day(&date)
+ );
+
+ g_free(rawfilename);
+
+ DB( g_print(" - '%s' => '%s'\n", filename, newfilename) );
+
+ return newfilename;
+}
+
+
+gchar *hb_filename_new_with_extension(gchar *filename, const gchar *extension)
+{
+gchar *rawfilename, *newfilename;
+
+ DB( g_print("\n[util] filename new with extension\n") );
+
+ rawfilename = hb_filename_new_without_extension(filename);
+ newfilename = g_strdup_printf("%s.%s", rawfilename, extension);
+ g_free(rawfilename);