static int test_tixx_ungroup_support(const char * message, const char * input_group, const char * input_file_1, const char * dest_file_1, const char * input_file_2, const char * dest_file_2, const char * input_file_3, const char * input_file_4) { int ret; printf("%s", message); ret = tifiles_ungroup_file(PATH(input_group), NULL); if (!ret) { move_file(input_file_1, dest_file_1); move_file(input_file_2, dest_file_2); ret = compare_files(PATH(dest_file_1), PATH2(input_file_3)); if (!ret) { ret = compare_files(PATH(dest_file_2), PATH2(input_file_3)); } } return ret; }
int gfm_tifiles_ungroup(const char *filename, int type) { gchar *dirname = g_path_get_dirname(filename); gchar *basename = g_path_get_basename(filename); gchar *src_file; gchar *dst_file; gchar *folder, *tmp; gchar *input; gchar *e; int err = 0; // Ask for folder folder = g_strdup(basename); e = strrchr(folder, '.'); if(e) *e = '\0'; input = msgbox_input(_("Create new directory"), folder, _("Directory where files will be ungrouped: ")); g_free(folder); if (input == NULL) return -1; tmp = g_filename_from_utf8(input, -1, NULL, NULL, NULL); g_free(input); folder = g_strconcat(dirname, G_DIR_SEPARATOR_S, tmp, NULL); g_free(tmp); // Check for folder existence if(!strcmp(dirname, ".") || !strcmp(dirname, "")) { msgbox_one(MSGBOX_ERROR, _("You can't ungroup in this folder.")); g_free(basename); g_free(dirname); return -1; } // Create folder if(file_mkdir(folder)) { g_free(basename); g_free(dirname); return -1; } file_chdir(folder); // Copy file to target src_file = g_strdup(filename); dst_file = g_strconcat(folder, G_DIR_SEPARATOR_S, basename, NULL); file_copy(src_file, dst_file); // Ungroup if(type == TIFILE_GROUP) err = tifiles_ungroup_file(dst_file, NULL); else if(type == TIFILE_TIGROUP) err = tifiles_untigroup_file(dst_file, NULL); if(err) { gchar *str; tifiles_error_get(err, &str); msgbox_one(MSGBOX_ERROR, str); g_free(str); } file_chdir(".."); // And release g_free(basename); g_free(dirname); g_free(src_file); g_free(dst_file); return 0; }