diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-05-25 01:18:05 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-05-25 01:18:05 -0400 |
commit | bb88ad38aacb40a9a3debcdcbeb21fef2e537dcd (patch) | |
tree | 6c9eed660272e1681296795e1795295ded1d4181 /lib/install.c | |
parent | 2d981c10be5f902442c885fb7e2cafa6154145c7 (diff) | |
download | spmc-bb88ad38aacb40a9a3debcdcbeb21fef2e537dcd.tar.gz |
Implement -F|--from-file argument
Diffstat (limited to 'lib/install.c')
-rw-r--r-- | lib/install.c | 16 |
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"); |