nkiss

WIP
git clone git://git.nihaljere.xyz/nkiss
Log | Files | Refs

commit 7e6ac1b215a431bdc45a6a5d295d21515a37ca5a
parent a6d417232fac62843657d7106e289af252fd31ca
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Sat, 20 Feb 2021 22:37:27 -0600

kiss.c: add kiss_checksum_names

Diffstat:
Mkiss.c | 27+++++++++++++++++++++++++++
1 file changed, 27 insertions(+), 0 deletions(-)

diff --git a/kiss.c b/kiss.c @@ -38,6 +38,31 @@ kiss_download_names(char *kiss_path, char *names[], int len) } void +kiss_checksum_names(char *kiss_path, char *names[], int len) +{ + char *repo, kp[strlen(kiss_path)], path[PATH_LEN]; + int count; + struct source_t sources[64]; + for (int i = 0; i < len; i++) { + /* iterate through KISS_PATH */ + memccpy(kp, kiss_path, '\0', strlen(kiss_path)); + + if ((repo = strtok(kp, ":")) == NULL) + die("Invalid KISS_PATH."); + + do { + if (pkg_exists(repo, names[i], path)) { + memset(sources, 0, sizeof(sources)); + count = pkg_sources(repo, names[i], sources); + pkg_retrieve(sources, count); + pkg_checksums_gen(repo, names[i], sources); + break; + } + } while ((repo = strtok(NULL, ":")) != NULL); + } +} + +void kiss_list_all() { DIR *db; @@ -142,6 +167,8 @@ main(int argc, char *argv[]) kiss_search(kiss_path, argv[2]); } else if (strcmp(argv[1], "download") == 0 && argc > 2) { kiss_download_names(kiss_path, &argv[2], argc-2); + } else if (strcmp(argv[1], "checksum") == 0 && argc > 2) { + kiss_checksum_names(kiss_path, &argv[2], argc-2); } return 0;