diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-03-14 10:26:49 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-03-17 13:01:40 +0100 |
commit | fcc925c4a6d7bc82106f6c8da13b1a58a7b23115 (patch) | |
tree | 0432ba71b4449325f54caedfebfe8511f1e7a278 /src/wgtpkg-install.c | |
parent | de02ff4734caf96658f40a9e352245f5046a183a (diff) |
wgtpkg-install: creates the systemd units
Change-Id: Ia3cdcb76a9f7b3bda77a9d9fcb38dfd85eb85804
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/wgtpkg-install.c')
-rw-r--r-- | src/wgtpkg-install.c | 54 |
1 files changed, 33 insertions, 21 deletions
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); |