/*
- Copyright (C) 2015-2019 IoT.bzh
+ Copyright (C) 2015-2020 IoT.bzh
author: José Bollo <jose.bollo@iot.bzh>
/* 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;
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);
/* 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;
}
uconf.installdir = path;
uconf.icondir = FWK_ICON_DIR;
- uconf.port = 0;
+ uconf.new_afid = 0;
+ uconf.base_http_ports = 0;
unit_uninstall(ifo, &uconf);
wgt_info_unref(ifo);
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);
* 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;