X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwgtpkg-install.c;h=836b136b6da007638f02c43c478ae5b23a799e92;hb=fcc925c4a6d7bc82106f6c8da13b1a58a7b23115;hp=93c2bbc4f12443ebc6c2f813dce17af0fda000fe;hpb=de02ff4734caf96658f40a9e352245f5046a183a;p=src%2Fapp-framework-main.git diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c index 93c2bbc..836b136 100644 --- a/src/wgtpkg-install.c +++ b/src/wgtpkg-install.c @@ -39,6 +39,7 @@ #include "wgtpkg-install.h" #include "secmgr-wrap.h" #include "utils-dir.h" +#include "wgtpkg-unit.h" static const char* exec_type_strings[] = { "application/x-executable", @@ -104,25 +105,30 @@ static int set_required_permissions(struct wgt_desc_param *params, int required) int optional; while (params) { - /* check the value */ - if (!strcmp(params->value, string_required)) - optional = !required; - else if (!strcmp(params->value, string_optional)) - optional = 1; - else { - ERROR("unexpected parameter value: %s found for %s", params->value, params->name); - errno = EPERM; - return -1; - } - /* set the permission */ - if (request_permission(params->name)) { - DEBUG("granted permission: %s", params->name); - } else if (optional) { - INFO("optional permission ungranted: %s", params->name); + /* check if target */ + if (!strcmp(params->name, string_sharp_target)) { + /* do nothing when #target */ } else { - ERROR("ungranted permission required: %s", params->name); - errno = EPERM; - return -1; + /* check the value */ + if (!strcmp(params->value, string_required)) + optional = !required; + else if (!strcmp(params->value, string_optional)) + optional = 1; + else { + ERROR("unexpected parameter value: %s found for %s", params->value, params->name); + errno = EPERM; + return -1; + } + /* set the permission */ + if (request_permission(params->name)) { + DEBUG("granted permission: %s", params->name); + } else if (optional) { + INFO("optional permission ungranted: %s", params->name); + } else { + ERROR("ungranted permission required: %s", params->name); + errno = EPERM; + return -1; + } } params = params->next; } @@ -322,15 +328,21 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force if (install_icon(desc)) goto error3; + if (install_security(desc)) + goto error4; + if (install_exec_flag(desc)) - goto error3; + goto error4; - if (install_security(desc)) - goto error3; + if (unit_install(ifo, installdir, FWK_ICON_DIR, 1234/*TODO*/)) + goto error4; file_reset(); return ifo; +error4: + /* todo: cleanup */ + error3: wgt_info_unref(ifo);