aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2020-02-04 15:16:44 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2020-02-04 15:29:30 -0500
commite9eb84cdf69ca9868c6f11ebcdb101f5ad2a8bfa (patch)
tree6b02210ed1fb958979439650ba380a083aa3343b
parent3bc3558ee85ba9259f1595016166876490b65241 (diff)
downloadspmc-e9eb84cdf69ca9868c6f11ebcdb101f5ad2a8bfa.tar.gz
Transition away from find_package
-rw-r--r--src/manifest.c29
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