aboutsummaryrefslogtreecommitdiffstats
path: root/src/wgtpkg-install.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-03-14 10:26:49 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2017-03-17 13:01:40 +0100
commitfcc925c4a6d7bc82106f6c8da13b1a58a7b23115 (patch)
tree0432ba71b4449325f54caedfebfe8511f1e7a278 /src/wgtpkg-install.c
parentde02ff4734caf96658f40a9e352245f5046a183a (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.c54
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);