aboutsummaryrefslogtreecommitdiff
path: root/src/spm.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2020-06-08 16:41:55 -0400
committerGitHub <noreply@github.com>2020-06-08 16:41:55 -0400
commitc8ec7fd47c65fdda5d2c32002173789d7381d0d1 (patch)
treea23ab1b0a90f19ad6807687923b99d1ac3173e09 /src/spm.c
parenta9163234b166945a6d62efedf35940455ef6e138 (diff)
parentcca2365909b3c61c8bb9e83439a7a184c4802b4e (diff)
downloadspmc-c8ec7fd47c65fdda5d2c32002173789d7381d0d1.tar.gz
Merge pull request #46 from jhunkeler/package-info
Package info
Diffstat (limited to 'src/spm.c')
-rw-r--r--src/spm.c72
1 files changed, 14 insertions, 58 deletions
diff --git a/src/spm.c b/src/spm.c
index 265986e..bb03094 100644
--- a/src/spm.c
+++ b/src/spm.c
@@ -288,74 +288,30 @@ int main(int argc, char *argv[], char *arge[]) {
}
if (RUNTIME_SEARCH || RUNTIME_LIST) {
- char name[255];
- char op[25];
- char ver[255];
- memset(name, '\0', sizeof(name));
- memset(op, '\0', sizeof(op));
- memset(ver, '\0', sizeof(ver));
-
- // Parse the argument string
- int c = 0;
-
- // Populate name
- for (int j = 0; package_search_str[c] != '\0'; j++, c++) {
- if (isrelational(package_search_str[c])) {
- break;
- }
- name[j] = package_search_str[c];
- }
-
- if (RUNTIME_SEARCH) {
- // Populate op
- for (int j = 0; package_search_str[c] != '\0'; j++, c++) {
- if (!isrelational(package_search_str[c])) {
- break;
- }
- op[j] = package_search_str[c];
- }
-
- if (strlen(op)) {
- // Populate version
- for (int j = 0; package_search_str[c] != '\0'; j++, c++) {
- ver[j] = package_search_str[c];
- }
- } else {
- // No operator, so find all versions instead
- strcpy(op, ">=");
- ver[0] = '0';
- }
-
- }
-
int banner_size = 79;
putchar('#');
print_banner("-", banner_size);
- printf("# %-20s %-10s %-10s %-10s %-20s\n", "name", "version", "revision", "size", "origin");
+ printf("# %-18s %s %11s %10s\n", "name", "version", "size", "origin");
putchar('#');
print_banner("-", banner_size);
- for (size_t m = 0; m < manifestlist_count(mf); m++) {
- Manifest *info = manifestlist_item(mf, m);
- if (RUNTIME_SEARCH) {
- ManifestPackage **package = find_by_spec(info, name, op, ver);
- for (int p = 0; package[p] != NULL; p++) {
- char *package_hsize = human_readable_size(package[p]->size);
- printf(" %-20s %-10s %-10s %-10s %20s\n", package[p]->name, package[p]->version, package[p]->revision,
- package_hsize, info->packages[p]->origin);
- free(package_hsize);
- }
- } else if (RUNTIME_LIST) {
- for (size_t p = 0; p < info->records; p++) {
- char *package_hsize = human_readable_size(info->packages[p]->size);
- printf(" %-20s %-10s %-10s %-10s %20s\n", info->packages[p]->name, info->packages[p]->version,
- info->packages[p]->revision, package_hsize, info->packages[p]->origin);
- free(package_hsize);
- }
+ if (RUNTIME_SEARCH) {
+ // Search all known packages
+ for (size_t m = 0; m < manifestlist_count(mf); m++) {
+ Manifest *info = manifestlist_item(mf, m);
+ ManifestPackage *package = find_by_strspec(info, package_search_str);
+ spm_show_package(package);
}
+ } else if (RUNTIME_LIST) {
+ // List all known packages
+ spm_show_packages(mf);
}
}
+ if (spmerrno != 0) {
+ spm_perror("Last error");
+ }
+
runtime_free(rt);
free_global_config();
strlist_free(packages);