diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-02-04 15:16:44 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-02-04 15:29:30 -0500 |
commit | e9eb84cdf69ca9868c6f11ebcdb101f5ad2a8bfa (patch) | |
tree | 6b02210ed1fb958979439650ba380a083aa3343b /src | |
parent | 3bc3558ee85ba9259f1595016166876490b65241 (diff) | |
download | spmc-e9eb84cdf69ca9868c6f11ebcdb101f5ad2a8bfa.tar.gz |
Transition away from find_package
Diffstat (limited to 'src')
-rw-r--r-- | src/manifest.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/manifest.c b/src/manifest.c index d4f00fb..5a1eeb8 100644 --- a/src/manifest.c +++ b/src/manifest.c @@ -457,16 +457,39 @@ Manifest *manifest_read(char *file_or_url) { * @return found=`ManifestPackage`, not found=NULL */ ManifestPackage *manifest_search(Manifest *info, const char *_package) { + ManifestPackage *match = NULL; char package[PATH_MAX]; memset(package, '\0', PATH_MAX); strncpy(package, _package, PATH_MAX); - strcat(package, "*"); + //strcat(package, "*"); for (size_t i = 0; i < info->records; i++) { - if (fnmatch(package, info->packages[i]->archive, FNM_PATHNAME) == 0) { - return info->packages[i]; + if ((match = find_by_strspec(info, package)) != NULL) { + return match; } + //if (fnmatch(package, info->packages[i]->archive, FNM_PATHNAME) == 0) { + // return info->packages[i]; + //} } return NULL; } + +/** + * Duplicate a `ManifestPackage` + * @param manifest + * @return `ManifestPackage` + */ +ManifestPackage *manifest_package_copy(ManifestPackage *manifest) { + ManifestPackage *result = calloc(1, sizeof(ManifestPackage)); + memcpy(result, manifest, sizeof(ManifestPackage)); + + if (manifest->requirements_records > 0) { + result->requirements = (char **)calloc(manifest->requirements_records, sizeof(char *)); + for (size_t i = 0; i < manifest->requirements_records; i++) { + result->requirements[i] = strdup(manifest->requirements[i]); + } + } + + return result; +}
\ No newline at end of file |