diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-06-18 15:33:33 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-06-18 16:10:33 -0400 |
commit | 9d3d3de1ae62d103cadf56d437d0e4d66e8740b3 (patch) | |
tree | e31fa3ed199ecd99f8690701c2d11dca8c624297 /src | |
parent | 1fe4dec61c0599335bf1357fda527722a90fb491 (diff) | |
download | stasis-9d3d3de1ae62d103cadf56d437d0e4d66e8740b3.tar.gz |
Handle download() errors
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/core/conda.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/lib/core/conda.c b/src/lib/core/conda.c index 2b73862..268b433 100644 --- a/src/lib/core/conda.c +++ b/src/lib/core/conda.c @@ -24,7 +24,12 @@ int micromamba(const struct MicromambaInfo *info, char *command, ...) { sprintf(installer_path, "%s/latest", getenv("TMPDIR") ? getenv("TMPDIR") : "/tmp"); if (access(installer_path, F_OK)) { - download(url, installer_path, NULL); + char *errmsg = NULL; + const long http_code = download(url, installer_path, &errmsg); + if (HTTP_ERROR(http_code)) { + fprintf(stderr, "download failed: %ld: %s\n", http_code, errmsg); + return -1; + } } char mmbin[PATH_MAX]; @@ -552,7 +557,15 @@ int conda_env_create_from_uri(char *name, char *uri, char *python_version) { // We'll create a new file with the same random bits, ending with .yml strcat(tempfile, ".yml"); char *errmsg = NULL; - download(uri_fs ? uri_fs : uri, tempfile, &errmsg); + const long http_code = download(uri_fs ? uri_fs : uri, tempfile, &errmsg); + if (HTTP_ERROR(http_code)) { + if (errmsg) { + fprintf(stderr, "download failed: %ld: %s\n", http_code, errmsg); + guard_free(errmsg); + } + guard_free(uri_fs); + return -1; + } guard_free(uri_fs); // Rewrite python version |