int gfm_tifiles_group(const char **filenames, int type) { char **ptr; gchar *input; gchar *target = NULL; gchar *dirname = g_path_get_dirname(filenames[0]); // gchar *basename = g_path_get_basename(filenames[0]); int err = 0; // Check for selection consistency for(ptr = (char **)filenames; *ptr; ptr++) { if(tifiles_file_is_group(*ptr) || tifiles_file_is_tigroup(*ptr)) { msgbox_one(MSGBOX_ERROR, _("Group files are not allowed in selection.")); return -1; } if(tifiles_file_is_flash(*ptr) && type != TIFILE_TIGROUP) { msgbox_one(MSGBOX_ERROR, _("FLASH files are not allowed in group files.")); return -1; } } // Ask for group name input = msgbox_input(_("Group files"), "group", _("Group name: ")); if(input == NULL) return -1; // And group if(type == TIFILE_GROUP) { target = g_strconcat(dirname, G_DIR_SEPARATOR_S, input, ".", tifiles_fext_of_group(tifiles_file_get_model(filenames[0])), NULL); g_free(input); err = tifiles_group_files((char **)filenames, target); } else if(type == TIFILE_TIGROUP) { target = g_strconcat(dirname, G_DIR_SEPARATOR_S, input, ".tig", NULL); g_free(input); err = tifiles_tigroup_files((char **)filenames, target); } if(err) { gchar *str; tifiles_error_get(err, &str); msgbox_one(MSGBOX_ERROR, str); g_free(str); } g_free(target); return 0; }
static int test_tigroup() { TigContent *content = NULL; TigEntry te = { NULL, 0, { NULL } }; int ret = -1; // SVN can't handle file like 'pépé'. You will have to rename it from pepe to pépé and // uncomment line below and another line. //char *name = g_filename_from_utf8("tig/p\xC3\xA9p\xC3\xA9.tig", -1, NULL, NULL, NULL); char *array[2]; char files[2][1024]; printf("--> Testing TiGroup support (r/w)...\n"); tifiles_file_display_tigroup(PATH("tig/test.tig")); content = tifiles_content_create_tigroup(CALC_NONE, 0); if (content != NULL) { ret = tifiles_file_read_tigroup(PATH("tig/test2.tig"), content); if (!ret) { ret = tifiles_file_write_tigroup(PATH("tig/test2_.tig"), content); } tifiles_content_delete_tigroup(content); } if (!ret) { content = tifiles_content_create_tigroup(CALC_NONE, 0); if (content != NULL) { ret = tifiles_file_read_tigroup(PATH("tig/test.tig"), content); if (!ret) { ret = tifiles_file_write_tigroup(PATH("tig/test_.tig"), content); if (!ret) { ret = compare_files(PATH("tig/test.tig"), PATH2("tig/test_.tig")); } } tifiles_content_delete_tigroup(content); } } if (!ret) { printf("--> Testing add/del from TiGroup support (r/w)...\n"); ret = tifiles_tigroup_add_file(PATH("tig/C.8Xn"), PATH2("tig/test2.tig")); if (!ret) { ret = tifiles_tigroup_add_file(PATH("tig/D.8Xn"), PATH2("tig/test2.tig")); if (!ret) { te.filename = strdup("C.8Xn"); ret = tifiles_tigroup_del_file(&te, PATH("tig/test2.tig")); if (!ret) { te.filename = strdup("D.8Xn"); ret = tifiles_tigroup_del_file(&te, PATH("tig/test2.tig")); if (!ret) { tifiles_file_display_tigroup(PATH("tig/test2.tig")); ret = compare_files(PATH("tig/test.tig"), PATH2("tig/test2.tig")); } } } } } if (!ret) { printf("--> Testing TiGroup support (group/ungroup)...\n"); strncpy(files[0], PATH("tig/str.89s"), 1023); files[0][1023] = 0; strncpy(files[1], PATH("tig/ticabfra.89k"), 1023); files[1][1023] = 0; array[0] = files[0]; array[1] = files[1]; ret = tifiles_tigroup_files(array, PATH("tig/test_.tig")); if (!ret) { tifiles_file_display(PATH("tig/test_.tig")); ret = tifiles_untigroup_file(PATH("tig/test.tig"), NULL); if (!ret) { move_file("A.8Xn", "tig/AA.8Xn"); move_file("B.8Xn", "tig/BB.8Xn"); ret = compare_files(PATH("tig/A.8Xn"), PATH2("tig/AA.8Xn")); if (!ret) { ret = compare_files(PATH("tig/B.8Xn"), PATH2("tig/BB.8Xn")); } } } } return ret; }