summaryrefslogtreecommitdiff
path: root/src/app_fetch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/app_fetch.c')
-rw-r--r--src/app_fetch.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/app_fetch.c b/src/app_fetch.c
index 1f05a80..f9fdcf1 100644
--- a/src/app_fetch.c
+++ b/src/app_fetch.c
@@ -191,10 +191,10 @@ static int fetch_package(struct apk_database *db, const char *match, struct apk_
os = apk_ostream_to_fd(STDOUT_FILENO);
} else {
if ((ctx->flags & FETCH_LINK) && urlfd >= 0) {
- if (linkat(urlfd, url,
- ctx->outdir_fd, filename,
- AT_SYMLINK_FOLLOW) == 0)
- return 0;
+ const char *urlfile = apk_url_local_file(url);
+ if (urlfile &&
+ linkat(urlfd, urlfile, ctx->outdir_fd, filename, AT_SYMLINK_FOLLOW) == 0)
+ goto done;
}
os = apk_ostream_to_file(ctx->outdir_fd, filename, 0644);
if (IS_ERR(os)) {
@@ -214,13 +214,13 @@ static int fetch_package(struct apk_database *db, const char *match, struct apk_
apk_istream_close(is);
r = apk_ostream_close(os);
if (r) goto err;
-
- ctx->done += pkg->size;
- return 0;
+ goto done;
err:
apk_err(out, PKG_VER_FMT ": %s", PKG_VER_PRINTF(pkg), apk_error_str(r));
ctx->errors++;
+done:
+ ctx->done += pkg->size;
return 0;
}