rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=0008c1de4f44a6e075b01d8e174faa63f796b9e7
commit 0008c1de4f44a6e075b01d8e174faa63f796b9e7 Author: Vyacheslav Reutskiy <[email protected]> Date: Mon Sep 26 12:31:45 2016 +0300 project manager2: change the funcs return value For avoid not correct flow for project manager, change the return values for project manager API's and return false in any error. This helps terminate the project process and avoid not correct project state. Change-Id: Ie1da4880a17165146fa89c37916b24936ee18d23 --- m4/ac_attribute.m4 | 2 + src/bin/main.c | 6 +- src/bin/project_manager/project_manager2.c | 177 +++++++++++++++++++---------- src/bin/project_manager/project_manager2.h | 52 +++++---- src/bin/ui/project_close.c | 14 ++- src/bin/ui/project_export.c | 31 ++--- src/bin/ui/tab_home_common.c | 14 +-- src/bin/ui/tab_home_import_edc.c | 18 +-- src/bin/ui/tab_home_import_edj.c | 20 ++-- src/bin/ui/tab_home_new.c | 29 +++-- src/bin/ui/tab_home_open.c | 6 +- 11 files changed, 235 insertions(+), 134 deletions(-) diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4 index 7139f38..e4b82fd 100644 --- a/m4/ac_attribute.m4 +++ b/m4/ac_attribute.m4 @@ -38,8 +38,10 @@ AC_MSG_RESULT($ac_cv___attribute__) if test "x${ac_cv___attribute__}" = "xyes" ; then AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__]) AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused]) + AC_DEFINE([__UNUSED_RESULT__], [__attribute__((warn_unused_result))], [Macro declaring a function return value not used]) else AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused]) + AC_DEFINE([__UNUSED_RESULT__], [], [Macro declaring a function return value not used]) fi ]) diff --git a/src/bin/main.c b/src/bin/main.c index e97e218..fb522f9 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -82,14 +82,16 @@ static const Ecore_Getopt options = { static Eina_Bool _setup_open_splash(void *data, Splash_Status status __UNUSED__) { + Eina_Bool ret = true; Eina_Stringshare *path = data; assert(path != NULL); - pm_project_open(path, progress_print, _tabs_progress_end, NULL); + if (!pm_project_open(path, progress_print, _tabs_progress_end, NULL)) + ret = false; eina_stringshare_del(path); - return true; + return ret; } static Eina_Bool diff --git a/src/bin/project_manager/project_manager2.c b/src/bin/project_manager/project_manager2.c index ea89c0f..b0538fe 100644 --- a/src/bin/project_manager/project_manager2.c +++ b/src/bin/project_manager/project_manager2.c @@ -156,9 +156,10 @@ _project_process_data_cleanup(Project_Process_Data *ppd) free(ppd); } -static void +__UNUSED_RESULT__ static Eina_Bool _project_special_group_add(Project *project) { + Eina_Bool ret = true; Eina_List *groups; Evas_Object *obj; Ecore_Evas *ecore_evas; @@ -171,11 +172,17 @@ _project_special_group_add(Project *project) edje_object_file_set(obj, project->saved_edj, eina_list_data_get(groups)); you_shall_not_pass_editor_signals(NULL); - CRIT_ON_FAIL(editor_internal_group_add(obj)); + if (!editor_internal_group_add(obj)) + { + CRIT("Could not add Eflete spec group"); + ret = false; + } you_shall_pass_editor_signals(NULL); ecore_evas_free(ecore_evas); edje_edit_string_list_free(groups); + + return ret; } static Project * @@ -237,9 +244,10 @@ _project_create(Project_Process_Data *ppd) return pro; } -static void +__UNUSED_RESULT__ static Eina_Bool _project_dummy_sample_add(Project *project) { + Eina_Bool ret = true; char buf[PATH_MAX]; Eina_List *groups; Evas_Object *obj; @@ -254,19 +262,28 @@ _project_dummy_sample_add(Project *project) snprintf(buf, sizeof(buf), "%s"EFLETE_DUMMY_SAMPLE_NAME, ap.path.sound_path); you_shall_not_pass_editor_signals(NULL); - if (editor_sound_sample_add(obj, EFLETE_DUMMY_SAMPLE_NAME, buf, false)) + if (!editor_sound_sample_add(obj, EFLETE_DUMMY_SAMPLE_NAME, buf, false)) + { + CRIT("Could not add Efelte dummy sample"); + ret = false; + } + else if (!editor_save(obj)) { - CRIT_ON_FAIL(editor_save(obj)); + CRIT("Unable to save Eflete dummy sample"); + ret = false; } you_shall_pass_editor_signals(NULL); ecore_evas_free(ecore_evas); edje_edit_string_list_free(groups); + + return ret; } -static void +__UNUSED_RESULT__ static Eina_Bool _project_dummy_image_add(Project *project) { + Eina_Bool ret = true; char buf[PATH_MAX]; Eina_List *groups; Evas_Object *obj; @@ -281,14 +298,22 @@ _project_dummy_image_add(Project *project) snprintf(buf, sizeof(buf), "%s"EFLETE_DUMMY_IMAGE_NAME, ap.path.image_path); you_shall_not_pass_editor_signals(NULL); - if (editor_image_add(obj, buf, false)) + if (!editor_image_add(obj, buf, false)) + { + CRIT("Could not add eflete dummy image"); + ret = false; + } + else if (!editor_save(obj)) { - CRIT_ON_FAIL(editor_save(obj)); + CRIT("Unable to save Eflete dummy image"); + ret = false; } you_shall_pass_editor_signals(NULL); ecore_evas_free(ecore_evas); edje_edit_string_list_free(groups); + + return ret; } static Eina_Bool @@ -310,7 +335,7 @@ _project_edj_file_copy(Project_Process_Data *ppd) return result; } -static void +static Eina_Bool _copy_meta_data_to_pro(Project_Process_Data *ppd) { Eet_File *ef; @@ -325,14 +350,16 @@ _copy_meta_data_to_pro(Project_Process_Data *ppd) comment = eet_read(ef, PROJECT_KEY_COMMENT, NULL); eet_close(ef); - pm_project_meta_data_set(ppd->project, name, authors, - version, license, comment); + if (!pm_project_meta_data_set(ppd->project, name, authors, + version, license, comment)) + return false; if (name) free(name); if (authors) free(authors); if (version) free(version); if (license) free(license); if (comment) free(comment); + return true; } static Eina_Bool @@ -568,21 +595,24 @@ _project_open_internal(Project_Process_Data *ppd) { //message = eina_stringshare_add(_("Updating project files to version 3")); INFO("Updating project files to version 3"); - _project_special_group_add(ppd->project); + if (!_project_special_group_add(ppd->project)) + return false; ppd->project->version = 3; } if (ppd->project->version < 4) /* upgrade to version 4 */ { //message = eina_stringshare_add(_("Updating project files to version 4")); INFO("Updating project files to version 4"); - _project_dummy_image_add(ppd->project); + if (!_project_dummy_image_add(ppd->project)) + return false; ppd->project->version = 4; } if (ppd->project->version < 5) /* upgrade to version 4 */ { //message = eina_stringshare_add(_("Updating project files to version 5")); INFO("Updating project files to version 5"); - _project_dummy_sample_add(ppd->project); + if (!_project_dummy_sample_add(ppd->project)) + return false; ppd->project->version = 5; } TODO("Add crash recovery prompt here") @@ -629,7 +659,7 @@ _project_open_internal(Project_Process_Data *ppd) return true; } -void +Eina_Bool pm_project_open(const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -637,6 +667,7 @@ pm_project_open(const char *path, { Project_Process_Data *ppd; char *spath; + Eina_Bool ret = true; assert(path != NULL); @@ -651,9 +682,11 @@ pm_project_open(const char *path, if (!_project_open_internal(ppd)) { _project_process_data_cleanup(ppd); + ret = false; } free(spath); + return ret; } static Eina_Bool @@ -671,9 +704,10 @@ _edje_pick_finish_handler(void *data, _ecore_event_handlers_del(ppd); ecore_file_cp(ppd->edj, ppd->project->saved_edj); - _project_special_group_add(ppd->project); - _project_dummy_image_add(ppd->project); - _project_dummy_sample_add(ppd->project); + if (!_project_special_group_add(ppd->project) || + !_project_dummy_image_add(ppd->project) || + !_project_dummy_sample_add(ppd->project)) + return ECORE_CALLBACK_CANCEL; if (!_project_open_internal(ppd)) return ECORE_CALLBACK_CANCEL; @@ -681,7 +715,7 @@ _edje_pick_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -void +static Eina_Bool _project_import_edj(Project_Process_Data *ppd) { Eina_Stringshare *edj_in, *edj_out; @@ -697,20 +731,20 @@ _project_import_edj(Project_Process_Data *ppd) if (ppd->func_progress) ppd->func_progress(NULL, buf); //eina_stringshare_del(msg); - /* Replace void with ptd */ ppd->project = _project_create(ppd); - assert(ppd->project != NULL); - - TODO("Add correct error handling here (if project == NULL). Probably we should add negative TC where directory already exist"); - ppd->project->pro_path = eina_stringshare_printf("%s/%s/%s.pro", ppd->path, ppd->name, ppd->name); + if (!ppd->project) + { + CRIT("Could not create project"); + return false; + } if (!_lock_try(ppd->project->pro_path, true, &ppd->project->pro_fd)) { /* really this case is unlickly, but we need handle it */ ppd->result = PM_PROJECT_LOCKED; _end_send(ppd); - return; + return false; } groups = edje_file_collection_list(ppd->edj); @@ -732,26 +766,31 @@ _project_import_edj(Project_Process_Data *ppd) strbuf = eina_strbuf_new(); eina_strbuf_append_printf(strbuf, "edje_pick -o %s -i %s", edj_out, edj_in); + obj = edje_edit_object_add(evas_object_evas_get(ap.win)); EINA_LIST_FOREACH(ppd->widgets, l, group) { - if ((group[0] == 'c') && (group[1] == 'p') && (group[2] == '*') && (group[3] == '*') && (group[4] == '*')) + if ((group[0] == 'c') && + (group[1] == 'p') && + (group[2] == '*') && + (group[3] == '*') && + (group[4] == '*')) { char **arr = eina_str_split(group, "***", 0); you_shall_not_pass_editor_signals(NULL); /* load any group for coping */ - if (!obj) + if (!edje_object_file_set(obj, edj_in, arr[1])) { - obj = edje_edit_object_add(evas_object_evas_get(ap.win)); - if (!edje_object_file_set(obj, edj_in, arr[1])) - { - CRIT("Can't load object"); - abort(); - } + CRIT("Can't load object"); + free(arr[0]); + free(arr); + return false; } if (!editor_group_copy(obj, arr[1], arr[2], false)) { CRIT("Can not copy group %s, to %s", arr[1], arr[2]); - abort(); + free(arr[0]); + free(arr); + return false; } you_shall_pass_editor_signals(NULL); eina_strbuf_append_printf(strbuf, " -g %s", arr[2]); @@ -761,6 +800,7 @@ _project_import_edj(Project_Process_Data *ppd) else eina_strbuf_append_printf(strbuf, " -g %s", group); } + evas_object_del(obj); eina_stringshare_del(ppd->edj); ppd->edj = eina_stringshare_ref(edj_out); @@ -780,21 +820,22 @@ _project_import_edj(Project_Process_Data *ppd) eina_stringshare_del(ppd->path); ppd->path = eina_stringshare_ref(ppd->project->pro_path); - TODO("check result") - _project_edj_file_copy(ppd); - _copy_meta_data_to_pro(ppd); - _project_special_group_add(ppd->project); - _project_dummy_image_add(ppd->project); - _project_dummy_sample_add(ppd->project); + if (!_project_edj_file_copy(ppd) || + !_copy_meta_data_to_pro(ppd) || + !_project_special_group_add(ppd->project) || + !_project_dummy_image_add(ppd->project) || + !_project_dummy_sample_add(ppd->project)) + return false; if (!_project_open_internal(ppd)) { _project_process_data_cleanup(ppd); - return; + return false; } } + return true; } -void +Eina_Bool pm_project_import_edj(const char *name, const char *path, const char *edj, @@ -803,6 +844,7 @@ pm_project_import_edj(const char *name, PM_Project_End_Cb func_end , const void *data) { + Eina_Bool ret = true; Project_Process_Data *ppd; assert(name != NULL); @@ -822,10 +864,16 @@ pm_project_import_edj(const char *name, ppd->edj = eina_stringshare_add(sedj); ppd->widgets = list; - _project_import_edj(ppd); + if (!_project_import_edj(ppd)) + { + _project_process_data_cleanup(ppd); + ret = false; + } free(spath); free(sedj); + + return ret; } static Eina_Bool @@ -856,7 +904,7 @@ _finish_from_edje_cc(void *data, return ECORE_CALLBACK_DONE; } -void +static Eina_Bool _project_import_edc(void *data) { Project_Process_Data *ppd = data; @@ -877,10 +925,10 @@ _project_import_edc(void *data) ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _finish_from_edje_cc, ppd); - return; + return true; } -void +Eina_Bool pm_project_import_edc(const char *name, const char *path, const char *edc, @@ -889,6 +937,7 @@ pm_project_import_edc(const char *name, PM_Project_End_Cb func_end, const void *data) { + Eina_Bool ret = true; Project_Process_Data *ppd; assert(name != NULL); @@ -908,9 +957,15 @@ pm_project_import_edc(const char *name, ppd->edc = eina_stringshare_add(sedc); ppd->build_options = eina_stringshare_add(import_options); - _project_import_edc(ppd); + if (!_project_import_edc(ppd)) + { + _project_process_data_cleanup(ppd); + ret = false; + } free(spath); free(sedc); + + return ret; } Eina_Bool @@ -978,7 +1033,7 @@ _copy_progress(void *data, unsigned long long done, unsigned long long total) return true; } -void +Eina_Bool pm_project_save(Project *project, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, @@ -997,11 +1052,13 @@ pm_project_save(Project *project, ERR("Failed to save project."); ppd->result = PM_PROJECT_ERROR; _end_send(ppd); - return; + return false; } - //ecore_file_cp(ppd->project->dev, ppd->project->saved_edj); - eina_file_copy(ppd->project->dev, ppd->project->saved_edj, - EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, _copy_progress, ppd); + if (!eina_file_copy(ppd->project->dev, ppd->project->saved_edj, + EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, _copy_progress, ppd)) + return false; + + return true; } void @@ -1080,7 +1137,7 @@ _group_export_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -void +Eina_Bool pm_group_source_code_export(Project *project, Group2 *group, const char *path, @@ -1110,9 +1167,11 @@ pm_group_source_code_export(Project *project, ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _exe_output_handler, ppd); ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _group_export_finish_handler, ppd); + + return true; } -void +Eina_Bool pm_project_source_code_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, @@ -1141,6 +1200,8 @@ pm_project_source_code_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _group_export_finish_handler, ppd); + return true; + } static Eina_Bool @@ -1177,7 +1238,7 @@ _develop_export_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -void +Eina_Bool pm_project_develop_export(Project *project, const char *path, Eina_List *groups, @@ -1225,7 +1286,7 @@ pm_project_develop_export(Project *project, ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _develop_export_finish_handler, ppd); - return; + return true; } static Eina_Bool @@ -1272,7 +1333,7 @@ _release_export_finish_handler(void *data, return ECORE_CALLBACK_DONE; } -void +Eina_Bool pm_project_release_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, @@ -1305,6 +1366,8 @@ pm_project_release_export(Project *project, ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _exe_output_handler, ppd); ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error_handler, ppd); ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _release_export_finish_handler, ppd); + + return true; } Eina_Bool diff --git a/src/bin/project_manager/project_manager2.h b/src/bin/project_manager/project_manager2.h index 20b8bd8..cab5f80 100644 --- a/src/bin/project_manager/project_manager2.h +++ b/src/bin/project_manager/project_manager2.h @@ -202,16 +202,18 @@ typedef void * Project progress; * @param data The user data. * + * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * * @ingroup ProjectManager */ -void +Eina_Bool pm_project_import_edj(const char *name, const char *path, const char *edj, Eina_List *list, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data) EINA_ARG_NONNULL(1, 2, 3); + const void *data) EINA_ARG_NONNULL(1, 2, 3) __UNUSED_RESULT__; /** * Create a new project which base on the imported edc file. @@ -230,18 +232,20 @@ pm_project_import_edj(const char *name, * Project progress; * @param data The user data. * + * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * * @note Function will not check a edc file, and directories. * * @ingroup ProjectManager */ -void +Eina_Bool pm_project_import_edc(const char *name, const char *path, const char *edc, const char *import_options, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data) EINA_ARG_NONNULL(1, 2, 3, 4); + const void *data) EINA_ARG_NONNULL(1, 2, 3, 4) __UNUSED_RESULT__; /** * Open Eflete project. @@ -252,13 +256,15 @@ pm_project_import_edc(const char *name, * Project progress; * @param data The user data. * + * @return EINA_TRUE if project start open succesful, otherwise EINA_FALSE. + * * @ingroup ProjectManager */ -void +Eina_Bool pm_project_open(const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data); + const void *data) __UNUSED_RESULT__; /** * Save all changes in current project to the dev file. @@ -269,13 +275,15 @@ pm_project_open(const char *path, * Project progress; * @param data The user data. * + * @return EINA_TRUE if project start save succesful, otherwise EINA_FALSE. + * * @ingroup ProjectManager */ -void +Eina_Bool pm_project_save(Project *project, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data) EINA_ARG_NONNULL(1); + const void *data) EINA_ARG_NONNULL(1) __UNUSED_RESULT__; /** * Close the current project. Information about the project will be updated in @@ -288,7 +296,7 @@ pm_project_save(Project *project, * @ingroup ProjectManager */ Eina_Bool -pm_project_close(Project *project) EINA_ARG_NONNULL(1); +pm_project_close(Project *project) EINA_ARG_NONNULL(1) __UNUSED_RESULT__; /** * Get a meta data from Project. @@ -332,7 +340,7 @@ pm_project_meta_data_set(Project *project, const char *authors, const char *version, const char *license, - const char *comment) EINA_ARG_NONNULL(1); + const char *comment) EINA_ARG_NONNULL(1) __UNUSED_RESULT__; /** * Export the source code of Group (edje object) to file. @@ -344,15 +352,17 @@ pm_project_meta_data_set(Project *project, * @param func_end The user func for handle the end of export; * @param data The user data; * + * @return EINA_TRUE if project start export succesful, otherwise EINA_FALSE. + * * @ingroup ProjectManager. */ -void +Eina_Bool pm_group_source_code_export(Project *project, Group2 *group, const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data); + const void *data) __UNUSED_RESULT__; /** * Export the source code of Project (for each style edje objects) to a directory @@ -363,16 +373,16 @@ pm_group_source_code_export(Project *project, * @param pro The opened project; * @param dir_path directory path where source code would be exported; * - * @return EINA_TRUE on success, otherwise EINA_FALSE. + * @return EINA_TRUE if project start export succesful, otherwise EINA_FALSE. * * @ingroup ProjectManager. */ -void +Eina_Bool pm_project_source_code_export(Project *project, const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data); + const void *data) __UNUSED_RESULT__; /** * Export the edj develop file from current project. The develop edj file @@ -386,15 +396,17 @@ pm_project_source_code_export(Project *project, * Project progress; * @param data The user data. * + * @return EINA_TRUE on success, otherwise EINA_FALSE. + * * @ingroup ProjectManager. */ -void +Eina_Bool pm_project_develop_export(Project *pro, const char *path, Eina_List *groups, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data) EINA_ARG_NONNULL(1, 2); + const void *data) EINA_ARG_NONNULL(1, 2) __UNUSED_RESULT__; /** * Export the edj release file from current project. The develop edj file @@ -407,14 +419,16 @@ pm_project_develop_export(Project *pro, * Project progress; * @param data The user data. * + * @return EINA_TRUE on success, otherwise EINA_FALSE. + * * @ingroup ProjectManager. */ -void +Eina_Bool pm_project_release_export(Project *pro, const char *path, PM_Project_Progress_Cb func_progress, PM_Project_End_Cb func_end, - const void *data) EINA_ARG_NONNULL(1, 2); + const void *data) EINA_ARG_NONNULL(1, 2) __UNUSED__; /** diff --git a/src/bin/ui/project_close.c b/src/bin/ui/project_close.c index 2f0c643..7375ce0 100644 --- a/src/bin/ui/project_close.c +++ b/src/bin/ui/project_close.c @@ -96,10 +96,11 @@ _setup_save_splash(void *data, Splash_Status status __UNUSED__) else { #endif /* HAVE_ENVENTOR */ - pm_project_save(ap.project, - _progress_print, - _progress_end, - data); + if (!pm_project_save(ap.project, + _progress_print, + _progress_end, + data)) + return false; #ifdef HAVE_ENVENTOR } #endif /* HAVE_ENVENTOR */ @@ -191,6 +192,9 @@ project_close(void) return false; } #endif + project_to_close = ap.project; + if (!pm_project_close(project_to_close)) + return false; ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_BASE, true); ui_menu_items_list_disable_set(ap.menu, MENU_ITEMS_LIST_STYLE_ONLY, true); @@ -199,9 +203,7 @@ project_close(void) /* some code in close project callback checks ap.project for NULL, so we need to change it before closing project */ - project_to_close = ap.project; ap.project = NULL; - pm_project_close(project_to_close); elm_layout_text_set(ap.win_layout, "eflete.project.time", _("Last saved: none")); elm_layout_text_set(ap.win_layout, "eflete.project.part", _("Project path: none")); diff --git a/src/bin/ui/project_export.c b/src/bin/ui/project_export.c index 9f2d2c5..f70168c 100644 --- a/src/bin/ui/project_export.c +++ b/src/bin/ui/project_export.c @@ -36,7 +36,9 @@ _export_develop_setup(void *data, Splash_Status status __UNUSED__) assert(path != NULL); - pm_project_develop_export(ap.project, path, ap.project->groups, progress_print, progress_end, NULL); + if (!pm_project_develop_export(ap.project, path, ap.project->groups, + progress_print, progress_end, NULL)) + return false; return true; } @@ -112,7 +114,8 @@ _export_release_setup(void *data, Splash_Status status __UNUSED__) assert(path != NULL); - pm_project_release_export(ap.project, path, progress_print, progress_end, NULL); + if (!pm_project_release_export(ap.project, path, progress_print, progress_end, NULL)) + return false; return true; } @@ -190,11 +193,12 @@ _export_source_code_setup(void *data, Splash_Status status __UNUSED__) assert(path != NULL); - pm_project_source_code_export(ap.project, - path, - progress_print, - progress_end, - NULL); + if (!pm_project_source_code_export(ap.project, + path, + progress_print, + progress_end, + NULL)) + return false; return true; } @@ -262,12 +266,13 @@ _export_group_source_code_setup(void *data, Splash_Status status __UNUSED__) assert(path != NULL); - pm_group_source_code_export(ap.project, - tabs_current_group_get(), - path, - progress_print, - progress_end, - NULL); + if (!pm_group_source_code_export(ap.project, + tabs_current_group_get(), + path, + progress_print, + progress_end, + NULL)) + return false; return true; } diff --git a/src/bin/ui/tab_home_common.c b/src/bin/ui/tab_home_common.c index f39ac63..2ab0cbf 100644 --- a/src/bin/ui/tab_home_common.c +++ b/src/bin/ui/tab_home_common.c @@ -55,13 +55,13 @@ void meta_controls_data_save(Meta_Data_Controls *meta) { if (meta == NULL) return; - pm_project_meta_data_set(ap.project, - ap.project->name, - elm_entry_entry_get(meta->version), - elm_entry_entry_get(meta->authors), - elm_entry_entry_get(meta->licenses), - elm_entry_entry_get(meta->comment)); - + if (!pm_project_meta_data_set(ap.project, + ap.project->name, + elm_entry_entry_get(meta->version), + elm_entry_entry_get(meta->authors), + elm_entry_entry_get(meta->licenses), + elm_entry_entry_get(meta->comment))) + return; } void diff --git a/src/bin/ui/tab_home_import_edc.c b/src/bin/ui/tab_home_import_edc.c index 120a928..8a1e2b6 100644 --- a/src/bin/ui/tab_home_import_edc.c +++ b/src/bin/ui/tab_home_import_edc.c @@ -381,19 +381,21 @@ _progress_end(void *data, PM_Project_Result result, Project *project) static Eina_Bool _setup_open_splash(void *data __UNUSED__, Splash_Status status __UNUSED__) { + Eina_Bool ret = true; Eina_Strbuf *flags = _edje_cc_opt_build(); eina_strbuf_reset(tab_edc.log); - pm_project_import_edc(elm_entry_entry_get(tab_edc.name), - elm_entry_entry_get(tab_edc.path), - elm_entry_entry_get(tab_edc.edc), - eina_strbuf_string_get(flags), - _progress_print, - _progress_end, - &tab_edc.meta); + if (!pm_project_import_edc(elm_entry_entry_get(tab_edc.name), + elm_entry_entry_get(tab_edc.path), + elm_entry_entry_get(tab_edc.edc), + eina_strbuf_string_get(flags), + _progress_print, + _progress_end, + &tab_edc.meta)) + ret = false; eina_strbuf_free(flags); - return true; + return ret; } static Eina_Bool diff --git a/src/bin/ui/tab_home_import_edj.c b/src/bin/ui/tab_home_import_edj.c index 2690afe..3e22055 100644 --- a/src/bin/ui/tab_home_import_edj.c +++ b/src/bin/ui/tab_home_import_edj.c @@ -436,15 +436,17 @@ _progress_end(void *data, PM_Project_Result result, Project *project) static Eina_Bool _setup_open_splash(void *data __UNUSED__, Splash_Status status __UNUSED__) { - pm_project_import_edj(elm_entry_entry_get(tab_edj.name), - elm_entry_entry_get(tab_edj.path), - elm_entry_entry_get(tab_edj.edj), - tab_edj.widget_list, - progress_print, - _progress_end, - &tab_edj.meta); - - return true; + Eina_Bool ret = true; + if (!pm_project_import_edj(elm_entry_entry_get(tab_edj.name), + elm_entry_entry_get(tab_edj.path), + elm_entry_entry_get(tab_edj.edj), + tab_edj.widget_list, + progress_print, + _progress_end, + &tab_edj.meta)) + ret = false; + + return ret; } static Eina_Bool diff --git a/src/bin/ui/tab_home_new.c b/src/bin/ui/tab_home_new.c index 3229d28..613dd7e 100644 --- a/src/bin/ui/tab_home_new.c +++ b/src/bin/ui/tab_home_new.c @@ -448,6 +448,7 @@ _progress_end(void *data, PM_Project_Result result, Project *project) static Eina_Bool _setup_open_splash(void *data __UNUSED__, Splash_Status status __UNUSED__) { + Eina_Bool ret = true; Eina_Tmpstr *tmp_dir; Eina_Strbuf *edc, *flags; Eina_Stringshare *edc_path; @@ -461,6 +462,7 @@ _setup_open_splash(void *data __UNUSED__, Splash_Status status __UNUSED__) tab_new.tmp_dir_path = eina_stringshare_add(tmp_dir); eina_tmpstr_del(tmp_dir); + TODO("replace from eina_stringshare to char[]"); edc_path = eina_stringshare_printf("%s/new_project_tmp.edc", tab_new.tmp_dir_path); edc = _edc_code_generate(tab_new.tmp_dir_path); @@ -469,24 +471,29 @@ _setup_open_splash(void *data __UNUSED__, Splash_Status status __UNUSED__) if (!fp) { ERR("Failed to open file \"%s\"", edc_path); - return false; + ret = false; + goto exit; } fputs(eina_strbuf_string_get(edc), fp); - fclose(fp); flags = eina_strbuf_new(); eina_strbuf_append_printf(flags, "-id \"%s/template/images\" -sd \"%s/template/sounds\" -v", ap.path.edj_path, ap.path.edj_path); - pm_project_import_edc(elm_entry_entry_get(tab_new.name), - elm_entry_entry_get(tab_new.path), - edc_path, - eina_strbuf_string_get(flags), - progress_print, - _progress_end, - &tab_new.meta); - - return true; + if (!pm_project_import_edc(elm_entry_entry_get(tab_new.name), + elm_entry_entry_get(tab_new.path), + edc_path, + eina_strbuf_string_get(flags), + progress_print, + _progress_end, + &tab_new.meta)) + ret = false; + + eina_strbuf_free(flags); +exit: + eina_strbuf_free(edc); + fclose(fp); + return ret; } static Eina_Bool diff --git a/src/bin/ui/tab_home_open.c b/src/bin/ui/tab_home_open.c index 4fb1966..9bf85fa 100644 --- a/src/bin/ui/tab_home_open.c +++ b/src/bin/ui/tab_home_open.c @@ -45,14 +45,16 @@ _eflete_filter(const char *path, static Eina_Bool _setup_open_splash(void *data, Splash_Status status __UNUSED__) { + Eina_Bool ret = true; Eina_Stringshare *path = data; assert(path != NULL); - pm_project_open(path, progress_print, _tabs_progress_end, NULL); + if (!pm_project_open(path, progress_print, _tabs_progress_end, NULL)) + ret = false; eina_stringshare_del(path); - return true; + return ret; } static Eina_Bool --
