diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config_global.c | 9 | ||||
-rw-r--r-- | src/manifest.c | 22 | ||||
-rw-r--r-- | src/mirrors.c | 12 | ||||
-rw-r--r-- | src/spm.c | 6 | ||||
-rw-r--r-- | src/strings.c | 4 |
5 files changed, 39 insertions, 14 deletions
diff --git a/src/config_global.c b/src/config_global.c index 5ef6faa..bda63d6 100644 --- a/src/config_global.c +++ b/src/config_global.c @@ -292,6 +292,15 @@ void free_global_config(void) { if (SPM_GLOBAL.config) { config_free(SPM_GLOBAL.config); } + if (SPM_GLOBAL.repo_target) { + free(SPM_GLOBAL.repo_target); + } + if (SPM_GLOBAL.mirror_config) { + free(SPM_GLOBAL.mirror_config); + } + if (SPM_GLOBAL.mirror_list) { + mirror_list_free(SPM_GLOBAL.mirror_list); + } } /** diff --git a/src/manifest.c b/src/manifest.c index 9926fa5..90c8087 100644 --- a/src/manifest.c +++ b/src/manifest.c @@ -100,19 +100,25 @@ Manifest *manifest_from(const char *package_dir) { */ void manifest_free(Manifest *info) { for (size_t i = 0; i < info->records; i++) { - if (info->packages[i]->requirements != NULL) { - for (int j = 0; info->packages[i]->requirements[j] != NULL; j++) { - free(info->packages[i]->requirements[j]); - } - free(info->packages[i]->requirements); - } - free(info->packages[i]); + manifest_package_free(info->packages[i]); } free(info->packages); free(info); } /** + * Free a `ManifestPackage` structure + * @param info `ManifestPackage` + */ +void manifest_package_free(ManifestPackage *info) { + for (size_t i = 0; i < info->requirements_records; i++) { + free(info->requirements[i]); + } + free(info->requirements); + free(info); +} + +/** * Write a `Manifest` to the configuration directory * @param info * @param outfile @@ -219,7 +225,7 @@ int fetch(const char *url, const char *dest) { handle = url_fopen(url, "r"); if(!handle) { - printf("couldn't url_fopen() %s\n", url); + fprintf(stderr, "couldn't url_fopen() %s\n", url); return 2; } diff --git a/src/mirrors.c b/src/mirrors.c index d551842..2275be4 100644 --- a/src/mirrors.c +++ b/src/mirrors.c @@ -70,6 +70,16 @@ char **mirror_list(const char *filename) { return result; } +void mirror_list_free(char **m) { + if (m == NULL) { + return; + } + for (size_t i = 0; m[i] != NULL; i++) { + free(m[i]); + } + free(m); +} + void mirror_clone(Manifest *info, char *_dest) { char *dest = NULL; if (endswith(_dest, SPM_GLOBAL.repo_target) != 0) { @@ -96,7 +106,7 @@ void mirror_clone(Manifest *info, char *_dest) { char *checksum = sha256sum(path); if (strcmp(checksum, info->packages[i]->checksum_sha256) == 0) { printf("Skipped: %s\n", archive); - //free(checksum); + free(checksum); free(archive); free(path); continue; @@ -277,7 +277,7 @@ int main(int argc, char *argv[], char *arge[]) { runtime_free(rt); exit(errno); } - free(match); + manifest_free(manifest); } dep_free(&deps); } @@ -347,10 +347,10 @@ int main(int argc, char *argv[], char *arge[]) { } } - runtime_free(rt); - exit(0); + manifest_free(info); } + runtime_free(rt); free_global_config(); return 0; } diff --git a/src/strings.c b/src/strings.c index 46ef9ea..29d5b65 100644 --- a/src/strings.c +++ b/src/strings.c @@ -451,12 +451,12 @@ char *lstrip(char *sptr) { * @return truncated string */ char *strip(char *sptr) { - size_t len = strlen(sptr); + size_t len = strlen(sptr) - 1; if (len < 1) { *sptr = '\0'; return sptr; } - for (size_t i = len - 1; ; i--) { + for (size_t i = len; ; i--) { if (isspace(sptr[i]) || isblank(sptr[i])) { sptr[i] = '\0'; } |