From 500f8d4a7d7b17871647392e79e4c7a17c210534 Mon Sep 17 00:00:00 2001 From: Timo Teräs Date: Sat, 29 Oct 2011 05:18:21 +0300 Subject: solver, db: implement repository pinning Improves /etc/apk/repositories format so you can say: http://nl.alpinelinux.org/alpine/v2.3/main @edge http://nl.alpinelinux.org/alpine/edge/main @testing http://nl.alpinelinux.org/alpine/edge/testing After which you can pin dependencies to these tags using: apk add stableapp newapp@edge bleedingapp@testing Apk will now by default only use the untagged repositories, but adding a tag to specific dependency: 1. will prefer that tag for the name 2. allowing pulling in dependencies from that tag (though, it prefers untagged packages to satisfy deps if possible) fixes #575 --- src/blob.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/blob.c') diff --git a/src/blob.c b/src/blob.c index aaaa377..8cf4076 100644 --- a/src/blob.c +++ b/src/blob.c @@ -44,8 +44,10 @@ int apk_blob_spn(apk_blob_t blob, const char *accept, apk_blob_t *l, apk_blob_t for (i = 0; i < blob.len; i++) { if (strchr(accept, blob.ptr[i]) == NULL) { - *l = APK_BLOB_PTR_LEN(blob.ptr, i); - *r = APK_BLOB_PTR_LEN(blob.ptr+i, blob.len-i); + if (l != NULL) + *l = APK_BLOB_PTR_LEN(blob.ptr, i); + if (r != NULL) + *r = APK_BLOB_PTR_LEN(blob.ptr+i, blob.len-i); return 1; } } @@ -58,8 +60,10 @@ int apk_blob_cspn(apk_blob_t blob, const char *reject, apk_blob_t *l, apk_blob_t for (i = 0; i < blob.len; i++) { if (strchr(reject, blob.ptr[i]) != NULL) { - *l = APK_BLOB_PTR_LEN(blob.ptr, i); - *r = APK_BLOB_PTR_LEN(blob.ptr+i, blob.len-i); + if (l != NULL) + *l = APK_BLOB_PTR_LEN(blob.ptr, i); + if (r != NULL) + *r = APK_BLOB_PTR_LEN(blob.ptr+i, blob.len-i); return 1; } } -- cgit v1.2.3-70-g09d2