summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
f8f2338)
Trying to uninstall a widget without an icon would remove the widget
files, but report an error, and the widget would not be removed from
the database until a reboot, preventing installation of a new version.
To fix this, the error handling in uninstall_widget has been reworked
to only explicitly return an error when the unlink of the icon file
fails for reasons other than the file not being present. This then
allows some code cleanup by removing the extra rc2 variable and fixing
some error checks where rc and rc2 were being mixed.
Bug-AGL: SPEC-3401
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ica4a91f41b2bd9e16e16dee4ce660f6fa1f7840b
/*
Copyright (C) 2015-2020 IoT.bzh
/*
Copyright (C) 2015-2020 IoT.bzh
+ Copyright (C) 2020 Konsulko Group
author: José Bollo <jose.bollo@iot.bzh>
author: José Bollo <jose.bollo@iot.bzh>
const char *at;
#endif
char path[PATH_MAX];
const char *at;
#endif
char path[PATH_MAX];
struct unitconf uconf;
struct wgt_info *ifo;
struct unitconf uconf;
struct wgt_info *ifo;
rc = snprintf(path, sizeof path, "%s/%s", FWK_ICON_DIR, idaver);
assert(rc < (int)sizeof path);
rc = unlink(path);
rc = snprintf(path, sizeof path, "%s/%s", FWK_ICON_DIR, idaver);
assert(rc < (int)sizeof path);
rc = unlink(path);
- if (rc < 0 && errno != ENOENT)
+ if (rc < 0 && errno != ENOENT) {
ERROR("can't remove '%s': %m", path);
ERROR("can't remove '%s': %m", path);
#if DISTINCT_VERSIONS
/* removes the parent directory if empty */
#if DISTINCT_VERSIONS
/* removes the parent directory if empty */
- rc2 = snprintf(path, sizeof path, "%s/%s", root, id);
- assert(rc2 < (int)sizeof path);
- rc2 = rmdir(path);
+ rc = snprintf(path, sizeof path, "%s/%s", root, id);
+ assert(rc < (int)sizeof path);
+ rc = rmdir(path);
if (rc < 0 && errno == ENOTEMPTY)
return rc;
if (rc < 0) {
if (rc < 0 && errno == ENOTEMPTY)
return rc;
if (rc < 0) {
* parent directory removed: last occurrence of the application
* uninstall it for the security-manager
*/
* parent directory removed: last occurrence of the application
* uninstall it for the security-manager
*/
- rc2 = secmgr_init(idaver);
+ rc = secmgr_init(idaver);
ERROR("can't init security manager context");
return -1;
}
ERROR("can't init security manager context");
return -1;
}
- rc2 = secmgr_uninstall();
- if (rc2) {
+ rc = secmgr_uninstall();
+ if (rc) {
ERROR("can't uninstall security manager context");
return -1;
}
ERROR("can't uninstall security manager context");
return -1;
}