diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-04-28 14:15:53 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-05-02 11:01:25 +0200 |
commit | a9fb60ac4c40234fc3e1d183e3ec1bf98a02c48d (patch) | |
tree | 28904e5804e725e1a2e7bd1e5eec09058fdc3bf5 | |
parent | 17f9cdadca63005fe075d999e49154342fdd5086 (diff) |
Implement deinstallation of units
Change-Id: I7d9812211bb75f34d55b4035d5b4a3b7ea66f461
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r-- | src/wgtpkg-uninstall.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/wgtpkg-uninstall.c b/src/wgtpkg-uninstall.c index a89d863..653aea7 100644 --- a/src/wgtpkg-uninstall.c +++ b/src/wgtpkg-uninstall.c @@ -24,10 +24,14 @@ #include <stdio.h> #include <assert.h> #include <unistd.h> +#include <fcntl.h> #include "verbose.h" #include "utils-dir.h" #include "secmgr-wrap.h" +#include "wgtpkg-unit.h" +#include "wgt.h" +#include "wgt-info.h" /* uninstall the widget of idaver */ int uninstall_widget(const char *idaver, const char *root) @@ -37,6 +41,8 @@ int uninstall_widget(const char *idaver, const char *root) char path[PATH_MAX]; const char *at; int rc, rc2; + struct unitconf uconf; + struct wgt_info *ifo; NOTICE("-- UNINSTALLING widget of id %s from %s --", idaver, root); @@ -58,10 +64,22 @@ int uninstall_widget(const char *idaver, const char *root) return -1; } + /* removes the units */ + ifo = wgt_info_createat(AT_FDCWD, path, 1, 1, 1); + if (!ifo) { + ERROR("can't read widget config in directory '%s': %m", path); + return -1; + } + uconf.installdir = path; + uconf.icondir = FWK_ICON_DIR; + uconf.port = 0; + unit_uninstall(ifo, &uconf); + wgt_info_unref(ifo); + /* removes the directory of the application */ rc = remove_directory(path, 1); if (rc < 0) { - ERROR("error while removing directory '%s': %m", path); + ERROR("while removing directory '%s': %m", path); return -1; } |