From: 諏訪子 Date: Sun, 12 May 2024 04:35:48 +0000 (+0900) Subject: 1つ以上のファイルがダウンロードに失敗する場合、正しく状況を知らせる様に X-Git-Tag: odl-0.3.0~4 X-Git-Url: http://10.10.0.4:5575/?a=commitdiff_plain;h=10cda70020f58f71cd49349911aae79818896743;p=odl.git 1つ以上のファイルがダウンロードに失敗する場合、正しく状況を知らせる様に --- 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; }