From 10cda70020f58f71cd49349911aae79818896743 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=AB=8F=E8=A8=AA=E5=AD=90?= Date: Sun, 12 May 2024 13:35:48 +0900 Subject: [PATCH] =?utf8?q?1=E3=81=A4=E4=BB=A5=E4=B8=8A=E3=81=AE=E3=83=95?= =?utf8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=8C=E3=83=80=E3=82=A6=E3=83=B3?= =?utf8?q?=E3=83=AD=E3=83=BC=E3=83=89=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=99?= =?utf8?q?=E3=82=8B=E5=A0=B4=E5=90=88=E3=80=81=E6=AD=A3=E3=81=97=E3=81=8F?= =?utf8?q?=E7=8A=B6=E6=B3=81=E3=82=92=E7=9F=A5=E3=82=89=E3=81=9B=E3=82=8B?= =?utf8?q?=E6=A7=98=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + main.c | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbc1908..349752d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * NetBSDは「/usr/pkg」→「/usr/local」 * HTTPステータス200だけの場合をダウンロードする様に * ダウンロードに失敗する場合、ファイルを消す +* 1つ以上のファイルがダウンロードに失敗する場合、正しく状況を知らせる様に # 0.2.0 * ファイル名はパラメートルを付いたら、ファイル名は拡張子に diff --git a/main.c b/main.c index ee4b234..107522f 100644 --- a/main.c +++ b/main.c @@ -16,6 +16,8 @@ int output_flag = 0; int version_flag = 0; int already_flag = 0; int err_flag = 0; +int dlstat = 0; +int onedlsuc = 0; char* get_filename(const char* url) { char* fn_start = strrchr(url, '/'); @@ -157,14 +159,12 @@ int downloader(CURL* curl, char* filename, const char* url) { if (res != CURLE_OK) { unlink(filename); fprintf(stderr, "\nダウンロードに失敗: %s\n", curl_easy_strerror(res)); - curl_easy_cleanup(curl); return -1; } if (res == CURLE_ABORTED_BY_CALLBACK || httpcode != 200) { unlink(filename); - fprintf(stderr, "\nダウンロードに失敗: HTTP CODE: %ld\n", httpcode); - curl_easy_cleanup(curl); + fprintf(stderr, "\n%sをダウンロードに失敗: HTTP CODE: %ld\n", filename, httpcode); return -1; } @@ -212,12 +212,16 @@ int main(int argc, char* argv[]) { filename = argv[optind]; const char* url = argv[optind+1]; - downloader(curl, filename, url); + dlstat = downloader(curl, filename, url); + if (dlstat == 0) onedlsuc = 1; curl_easy_cleanup(curl); - printf("\nダウンロードに完了しました。\n"); + if (onedlsuc == 1) { + printf("\nダウンロードに完了しました。\n"); + return 0; + } - return 0; + return 1; } // 複数ファイル名可能 @@ -229,11 +233,15 @@ int main(int argc, char* argv[]) { continue; } - downloader(curl, filename, url); + dlstat = downloader(curl, filename, url); + if (dlstat == 0) onedlsuc = 1; } curl_easy_cleanup(curl); - printf("\nダウンロードに完了しました。\n"); + if (onedlsuc == 1) { + printf("\nダウンロードに完了しました。\n"); + return 0; + } - return 0; + return 1; } -- 2.43.0