X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwgtpkg-permissions.c;h=362b1c11e7e34ab30ff755f31ec2787992a9cb3e;hb=69df60bd6622a56200d2d03e1b7d899569adf650;hp=9e061c8a16a6f9831fc247f33e6cbc655dabf75a;hpb=2c6fcae14552ab6e7addc82516617a135f86b5ca;p=src%2Fapp-framework-main.git diff --git a/src/wgtpkg-permissions.c b/src/wgtpkg-permissions.c index 9e061c8..362b1c1 100644 --- a/src/wgtpkg-permissions.c +++ b/src/wgtpkg-permissions.c @@ -1,5 +1,5 @@ /* - Copyright 2015 IoT.bzh + Copyright 2015, 2016 IoT.bzh author: José Bollo @@ -32,18 +32,10 @@ struct permission { unsigned level: 3; }; -static const char prefix_of_permissions[] = FWK_PREFIX_PERMISSION; - static unsigned int nrpermissions = 0; static struct permission *permissions = NULL; static unsigned int indexiter = 0; -/* check is the name has the correct prefix for permissions */ -int is_standard_permission(const char *name) -{ - return 0 == memcmp(name, prefix_of_permissions, sizeof(prefix_of_permissions) - 1); -} - /* retrieves the permission of name */ static struct permission *get_permission(const char *name) { @@ -81,7 +73,15 @@ void reset_permissions() { unsigned int i; for (i = 0 ; i < nrpermissions ; i++) - permissions[i].granted = 0; + permissions[i].granted = permissions[i].requested = 0; +} + +/* remove any requested permission */ +void reset_requested_permissions() +{ + unsigned int i; + for (i = 0 ; i < nrpermissions ; i++) + permissions[i].requested = 0; } /* remove any granting */ @@ -94,7 +94,7 @@ void crop_permissions(unsigned level) } /* add permissions granted for installation */ -void grant_permission_list(const char *list) +int grant_permission_list(const char *list) { struct permission *p; char *iter, c; @@ -109,14 +109,15 @@ void grant_permission_list(const char *list) iter[n] = 0; p = add_permission(iter); if (!p) { - ERROR("Can't allocate permission"); - exit(1); + errno = ENOMEM; + return -1; } p->granted = 1; iter += n; *iter =c; iter += strspn(iter, separators); } + return 0; } /* checks if the permission 'name' is recorded */