#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",
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;
}
return 0;
}
-static int check_widget(const struct wgt_desc *desc)
+static int check_permissions(const struct wgt_desc *desc)
{
int result;
const struct wgt_desc_feature *feature;
- result = check_temporary_constraints(desc);
+ result = 0;
feature = desc->features;
while(result >= 0 && feature) {
if (!strcmp(feature->name, feature_required_permission))
return result;
}
+static int check_widget(const struct wgt_desc *desc)
+{
+ int result;
+
+ result = check_temporary_constraints(desc);
+ if (result >= 0)
+ result = check_permissions(desc);
+ return result;
+}
+
static int get_target_directory(char target[PATH_MAX], const char *root, const struct wgt_desc *desc)
{
int rc;
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);