summaryrefslogtreecommitdiff
path: root/src/database.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/database.c')
-rw-r--r--src/database.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/database.c b/src/database.c
index 25b076d..8d633b4 100644
--- a/src/database.c
+++ b/src/database.c
@@ -589,16 +589,20 @@ int apk_repo_format_cache_index(apk_blob_t to, struct apk_repository *repo)
int apk_repo_format_real_url(struct apk_database *db, struct apk_repository *repo,
struct apk_package *pkg, char *buf, size_t len)
{
+ apk_blob_t arch;
int r;
+ if (pkg && pkg->arch) arch = *pkg->arch;
+ else arch = *db->arch;
+
if (pkg != NULL)
r = snprintf(buf, len, "%s%s" BLOB_FMT "/" PKG_FILE_FMT,
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
- BLOB_PRINTF(*db->arch), PKG_FILE_PRINTF(pkg));
+ BLOB_PRINTF(arch), PKG_FILE_PRINTF(pkg));
else
r = snprintf(buf, len, "%s%s" BLOB_FMT "/%s",
repo->url, repo->url[strlen(repo->url)-1] == '/' ? "" : "/",
- BLOB_PRINTF(*db->arch), apkindex_tar_gz);
+ BLOB_PRINTF(arch), apkindex_tar_gz);
if (r >= len)
return -ENOBUFS;
return 0;