diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-01-16 15:38:04 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-01-16 15:38:04 +0200 |
commit | 82b9cb31fd6bbddc5878cc5bbebdf04b7f2d5649 (patch) | |
tree | 85eb656c174318602e50547e8e25d9a9a50f81e2 /src/database.c | |
parent | 1b5422fb4af4bb836d15e07c86128507147315d0 (diff) | |
download | apk-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.c | 15 |
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); |