diff options
author | Jose Bollo <jose.bollo@iot.bzh> | 2020-01-24 14:49:23 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2020-02-14 09:04:56 +0000 |
commit | a855d14583b2ac2629dfac696fea788826bacc4d (patch) | |
tree | 5362c1843881e07a317094d132a9de86cc671fd8 /src | |
parent | 7f53b8188b6b4448dad771eeb8b03160aa314826 (diff) |
Remove distinction of widget's version
This removes the distinction between the different
versions of a widget. The boolean CMAKE option
DISTINCT_VERSIONS allows to switch between the two
possibilities:
DISTINCT_VERSIONS=OFF (default)
Widget installed in {afm_appdir}/{id}
Ids of applications have no version part: {id}
DISTINCT_VERSIONS=ON (legacy, old default)
Widget installed in {afm_appdir}/{id}/{ver}
Ids of applications have no version part: {id}@{ver}
Bug-AGL: SPEC-2538
Change-Id: I7cb54d4b296b740c553be8a627e66175107e5a4b
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src')
-rw-r--r-- | src/wgt-info.c | 4 | ||||
-rw-r--r-- | src/wgtpkg-install.c | 4 | ||||
-rw-r--r-- | src/wgtpkg-uninstall.c | 13 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/wgt-info.c b/src/wgt-info.c index 3b7cb36..ade3830 100644 --- a/src/wgt-info.c +++ b/src/wgt-info.c @@ -102,6 +102,7 @@ static char *mkver(char *version) static char *mkidaver(char *id, char *ver) { +#if DISTINCT_VERSIONS size_t lid, lver; char *r; if (id && ver) { @@ -117,6 +118,9 @@ static char *mkidaver(char *id, char *ver) } } return NULL; +#else + return strdup(id); +#endif } static void make_lowercase(char *s) diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c index 57c17b8..386d70b 100644 --- a/src/wgtpkg-install.c +++ b/src/wgtpkg-install.c @@ -398,7 +398,11 @@ static int get_target_directory(char target[PATH_MAX], const char *root, const s { int rc; +#if DISTINCT_VERSIONS rc = snprintf(target, PATH_MAX, "%s/%s/%s", root, desc->id, desc->ver); +#else + rc = snprintf(target, PATH_MAX, "%s/%s", root, desc->id); +#endif if (rc < PATH_MAX) rc = 0; else { diff --git a/src/wgtpkg-uninstall.c b/src/wgtpkg-uninstall.c index bb7739f..dba667c 100644 --- a/src/wgtpkg-uninstall.c +++ b/src/wgtpkg-uninstall.c @@ -36,10 +36,12 @@ /* uninstall the widget of idaver */ int uninstall_widget(const char *idaver, const char *root) { +#if DISTINCT_VERSIONS char *id; char *ver; - char path[PATH_MAX]; const char *at; +#endif + char path[PATH_MAX]; int rc, rc2; struct unitconf uconf; struct wgt_info *ifo; @@ -47,6 +49,7 @@ int uninstall_widget(const char *idaver, const char *root) NOTICE("-- UNINSTALLING widget of id %s from %s --", idaver, root); /* find the last '@' of the id */ +#if DISTINCT_VERSIONS at = strrchr(idaver, '@'); if (at == NULL) { ERROR("bad widget id '%s', no @", idaver); @@ -58,6 +61,10 @@ int uninstall_widget(const char *idaver, const char *root) /* compute the path */ rc = snprintf(path, sizeof path, "%s/%s/%s", root, id, ver); +#else + rc = snprintf(path, sizeof path, "%s/%s", root, idaver); +#endif + if (rc >= (int)sizeof path) { ERROR("bad widget id '%s', too long", idaver); errno = EINVAL; @@ -91,6 +98,7 @@ int uninstall_widget(const char *idaver, const char *root) if (rc < 0 && errno != ENOENT) ERROR("can't remove '%s': %m", path); +#if DISTINCT_VERSIONS /* removes the parent directory if empty */ rc2 = snprintf(path, sizeof path, "%s/%s", root, id); assert(rc2 < (int)sizeof path); @@ -107,6 +115,9 @@ int uninstall_widget(const char *idaver, const char *root) * uninstall it for the security-manager */ rc2 = secmgr_init(id); +#else + rc2 = secmgr_init(idaver); +#endif if (rc2) { ERROR("can't init security manager context"); return -1; |