Skip to content
Snippets Groups Projects
Commit 27291bd5 authored by Timo Teräs's avatar Timo Teräs
Browse files

fetch: improve --link handling

Handle file: URLs correctly, and don't do linkat() syscall if
it is a remote repository.

Also account the file size to progress always.
parent c1d34a07
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment