From 8cdddbb0f1a8c6eb023cbe732e5701240a54ff3c Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Sat, 18 Apr 2020 15:28:54 -0400 Subject: Implement error handling * Die on bad root directory --- lib/purge.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/purge.c') diff --git a/lib/purge.c b/lib/purge.c index 997df51..da3e5e6 100644 --- a/lib/purge.c +++ b/lib/purge.c @@ -14,6 +14,7 @@ int spm_purge(SPM_Hierarchy *fs, const char *_package_name) { char *package_topdir = join((char *[]) {fs->dbrecdir, package_name, NULL}, DIRSEPS); char *descriptor = join((char *[]) {package_topdir, SPM_META_DESCRIPTOR, NULL}, DIRSEPS); char *filelist = join((char *[]) {package_topdir, SPM_META_FILELIST, NULL}, DIRSEPS); + char *rootrec = join((char *[]){path, "var", ".spm_root"}, DIRSEPS); if (spm_check_installed(fs, package_name) == 0) { // package is not installed in this root @@ -67,6 +68,11 @@ int spm_purge(SPM_Hierarchy *fs, const char *_package_name) { int spm_do_purge(SPM_Hierarchy *fs, StrList *packages) { int status_remove = 0; + if (spm_hierarchy_is_root(fs) < 0) { + spmerrno = SPM_ERR_ROOT_NO_RECORD; + return -1; + } + printf("Removing package(s):\n"); for (size_t i = 0; i < strlist_count(packages); i++) { char *package = strlist_item(packages, i); -- cgit