From: Jinhyung Choi Date: Thu, 22 Jan 2015 05:19:25 +0000 (+0900) Subject: fixed: exit status of package installation X-Git-Tag: submit/tizen/20150527.025434^2~10^2~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee5763e3ca0f1bc750d05b4773b1b9819373c322;p=platform%2Fadaptation%2Femulator%2Femulator-daemon.git fixed: exit status of package installation Change-Id: I5b1049bde133a09dd774e70cc67e6c7dafc07c03 Signed-off-by: Jinhyung Choi --- diff --git a/packaging/emuld.spec b/packaging/emuld.spec index 0c91149..609db3b 100644 --- a/packaging/emuld.spec +++ b/packaging/emuld.spec @@ -1,5 +1,5 @@ Name: emuld -Version: 0.8.7 +Version: 0.8.8 Release: 0 Summary: Emulator daemon License: Apache-2.0 diff --git a/src/common.cpp b/src/common.cpp index becc17b..7cdc241 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -186,55 +186,37 @@ void send_default_suspend_req(void) send_to_ecs(IJTYPE_SUSPEND, 5, 15, NULL); } -static bool do_validate(char* pkgs) +static bool do_rpm_execute(char* pkgs) { char buf[MAX_PKGS_BUF]; + int ret = 0; FILE* fp = popen(pkgs, "r"); if (fp == NULL) { - LOGERR("Failed to popen %s", pkgs); + LOGERR("[rpm] Failed to popen %s", pkgs); return false; } memset(buf, 0, sizeof(buf)); while(fgets(buf, sizeof(buf), fp)) { LOGINFO("[rpm]%s", buf); - if (!strncmp(buf, IJTYPE_PACKAGE, 7)) { - pclose(fp); - return false; - } memset(buf, 0, sizeof(buf)); } - pclose(fp); - return true; -} - -static bool do_install(char* pkgs) -{ - char buf[MAX_PKGS_BUF]; - int ret = 0; - - FILE* fp = popen(pkgs, "r"); - if (fp == NULL) { - LOGERR("Failed to popen %s", pkgs); + ret = pclose(fp); + if (ret == -1) { + LOGINFO("[rpm] pclose error: %d", errno); return false; } - memset(buf, 0, sizeof(buf)); - while(fgets(buf, sizeof(buf), fp)) { - LOGINFO("[rpm] %s", buf); - memset(buf, 0, sizeof(buf)); + if (ret >= 0 && WIFEXITED(ret) && WEXITSTATUS(ret) == 0) { + LOGINFO("[rpm] RPM execution success: %s", pkgs); + return true; } - ret = pclose(fp); - LOGINFO("[rpm] return value: %d", ret); - - if (ret != 0) { - return false; - } + LOGINFO("[rpm] RPM execution fail: [%x,%x,%x] %s", ret, WIFEXITED(ret), WEXITSTATUS(ret), pkgs); - return true; + return false; } static void remove_package(char* data) @@ -305,10 +287,8 @@ static bool do_package(int action, char* data) strcat(pkg_list, " "); strcat(pkg_list, "2>&1"); - LOGINFO("[cmd]%s", pkg_list); - if (action == 1 && do_validate(pkg_list)) { - return true; - } else if (action == 2 && do_install(pkg_list)) { + LOGINFO("[cmd] %s", pkg_list); + if ((action == 1 || action == 2) && do_rpm_execute(pkg_list)) { return true; }