aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/install.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/install.c b/lib/install.c
index 9fb80c2..282c662 100644
--- a/lib/install.c
+++ b/lib/install.c
@@ -201,16 +201,24 @@ int spm_do_install(SPM_Hierarchy *fs, ManifestList *mf, StrList *packages) {
ManifestPackage **requirements = NULL;
char source[PATH_MAX];
char *tmpdir = NULL;
+ size_t package_count;
+
+ package_count = strlist_count(packages);
+ if (package_count == 0) {
+ spmerrno = SPM_ERR_PKG_NOT_FOUND;
+ spmerrno_cause("EMPTY PACKAGE LIST");
+ return -1;
+ }
// Produce a dependency tree from requested package(s)
- for (size_t i = 0; i < strlist_count(packages); i++) {
+ for (size_t i = 0; i < package_count; i++) {
char *item = strlist_item(packages, i);
// Does the package exist in the manifest?
if (manifestlist_search(mf, item) == NULL) {
spmerrno = SPM_ERR_PKG_NOT_FOUND;
spmerrno_cause(item);
- break;
+ return -1;
}
requirements = resolve_dependencies(mf, item);
@@ -221,10 +229,6 @@ int spm_do_install(SPM_Hierarchy *fs, ManifestList *mf, StrList *packages) {
}
}
- if (spmerrno) {
- return -1;
- }
-
tmpdir = spm_mkdtemp(TMP_DIR, "spm_destroot", NULL);
if (tmpdir == NULL) {
perror("Could not create temporary destination root");