summaryrefslogtreecommitdiff
path: root/src/database.c
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-01-16 15:38:04 +0200
committerTimo Teras <timo.teras@iki.fi>2009-01-16 15:38:04 +0200
commit82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649 (patch)
tree85eb656c174318602e50547e8e25d9a9a50f81e2 /src/database.c
parent1b5422fb4af4bb836d15e07c86128507147315d0 (diff)
downloadapk-tools-82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649.tar.gz
apk-tools-82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649.tar.bz2
apk-tools-82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649.tar.xz
apk-tools-82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649.zip
db: make fetching from other than first repository work
Diffstat (limited to 'src/database.c')
-rw-r--r--src/database.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/database.c b/src/database.c
index 92b87b7..4366223 100644
--- a/src/database.c
+++ b/src/database.c
@@ -1076,7 +1076,7 @@ int apk_db_install_pkg(struct apk_database *db,
struct install_ctx ctx;
csum_t csum;
char file[256];
- int r;
+ int r, i;
if (fchdir(db->root_fd) < 0)
return errno;
@@ -1097,9 +1097,20 @@ int apk_db_install_pkg(struct apk_database *db,
/* Install the new stuff */
if (newpkg->filename == NULL) {
+ for (i = 0; i < APK_MAX_REPOS; i++)
+ if (newpkg->repos & BIT(i))
+ break;
+
+ if (i >= APK_MAX_REPOS) {
+ apk_error("%s-%s: not present in any repository",
+ newpkg->name->name, newpkg->version);
+ return -1;
+ }
+
snprintf(file, sizeof(file),
"%s/%s-%s.apk",
- db->repos[0].url, newpkg->name->name, newpkg->version);
+ db->repos[i].url,
+ newpkg->name->name, newpkg->version);
bs = apk_bstream_from_url(file);
} else
bs = apk_bstream_from_file(newpkg->filename);