summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJose Bollo <jose.bollo@iot.bzh>2020-01-24 14:49:23 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2020-02-14 09:04:56 +0000
commita855d14583b2ac2629dfac696fea788826bacc4d (patch)
tree5362c1843881e07a317094d132a9de86cc671fd8 /src
parent7f53b8188b6b4448dad771eeb8b03160aa314826 (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.c4
-rw-r--r--src/wgtpkg-install.c4
-rw-r--r--src/wgtpkg-uninstall.c13
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;