From: Sangyoon Jang Date: Mon, 14 Sep 2015 09:56:51 +0000 (+0900) Subject: Check and make bin directory for ug packages X-Git-Tag: submit/tizen/20150914.121938^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd1d141bcc660a125c9e381d7e4bc1d6af542d0b;p=platform%2Fcore%2Fappfw%2Fslp-pkgmgr.git Check and make bin directory for ug packages Change-Id: Ic6a37a1bc5291d8bdc2a2f60a4b31d3a08324ead Signed-off-by: Sangyoon Jang --- diff --git a/tool/pkg_install_ug.c b/tool/pkg_install_ug.c index 37d2bbd..66d2013 100644 --- a/tool/pkg_install_ug.c +++ b/tool/pkg_install_ug.c @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include @@ -11,7 +13,27 @@ #define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER) #define UG_CLIENT tzplatform_mkpath(TZ_SYS_BIN, "ug-client") -static int _install_ug(const char *manifest) +static int _check_bin_directory(const char *pkgid) +{ + const char *path; + char buf[PATH_MAX]; + + path = tzplatform_mkpath(TZ_SYS_RO_APP, pkgid); + snprintf(buf, sizeof(buf), "%s/bin", path); + + if (access(buf, F_OK) == 0) + return 0; + + if (mkdir(buf, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH)) { + printf("create bin directory(%s) failed: %s\n", buf, + strerror(errno)); + return -1; + } + + return 0; +} + +static int _install_ug(char *manifest) { manifest_x *mfx; uiapplication_x *tmp; @@ -28,6 +50,9 @@ static int _install_ug(const char *manifest) strcasecmp(tmp->ui_gadget, "true") != 0) continue; + if (_check_bin_directory(mfx->package)) + continue; + ret = symlink(UG_CLIENT, tmp->exec); if (ret != 0) printf("failed to install ug %s: %s\n", tmp->exec,