bug-wget
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-wget] Patch: Make wget abort if post-file does not exist


From: Giuseppe Scrivano
Subject: Re: [Bug-wget] Patch: Make wget abort if post-file does not exist
Date: Thu, 14 Mar 2013 21:41:15 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)

Darshit Shah <address@hidden> writes:

> The original patch caused a SIGABRT that I missed.
> wget now returns with an exit status of 3.
>
> Uploading the updated patch file and another with the test to ensure the 
> correct return code.

Thanks!  I have amended some small changes (missing ChangeLog, trailing
whitespaces, forgot to add the test to run-px) and this is the version I
pushed:

>From 50238e49b9e97acc1edf3b4355a2cd44f75660e5 Mon Sep 17 00:00:00 2001
From: Darshit Shah <address@hidden>
Date: Tue, 12 Mar 2013 13:11:04 +0530
Subject: [PATCH 1/2] Make wget abort if --post-file does not exist

Signed-off-by: Darshit Shah <address@hidden>
---
 src/ChangeLog |   11 ++++++++++-
 src/exits.c   |    2 +-
 src/http.c    |    3 ++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index c37fb85..8e1213f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,6 +1,15 @@
+2013-03-12  Darshit Shah <address@hidden>
+
+       * http.c (gethttp): Make wget return FILEBADFILE error and abort if
+       post-file does not exist.
+
+       * http.c (http_loop): Handle FILEBADFILE as a valid err.
+
+       * exits.c (get_status_for_err): Mark FILEBADFILE as an IO error.
+
 2013-02-15  Darshit Shah <address@hidden>
 
-       * cookies.c (cookie_handle_set_cookie): Set cookie-descard_requested
+       * cookies.c (cookie_handle_set_cookie): Set cookie->discard_requested
        to true on domain mismatch.
 
 2012-12-20  Tim Ruehsen  <address@hidden>
diff --git a/src/exits.c b/src/exits.c
index e23fc1c..cea38d5 100644
--- a/src/exits.c
+++ b/src/exits.c
@@ -58,7 +58,7 @@ get_status_for_err (uerr_t err)
     case RETROK:
       return WGET_EXIT_SUCCESS;
     case FOPENERR: case FOPEN_EXCL_ERR: case FWRITEERR: case WRITEFAILED:
-    case UNLINKERR: case CLOSEFAILED:
+    case UNLINKERR: case CLOSEFAILED: case FILEBADFILE:
       return WGET_EXIT_IO_FAIL;
     case NOCONERROR: case HOSTERR: case CONSOCKERR: case CONERROR:
     case CONSSLERR: case CONIMPOSSIBLE: case FTPRERR: case FTPINVPASV:
diff --git a/src/http.c b/src/http.c
index fdb0d7e..b393e24 100644
--- a/src/http.c
+++ b/src/http.c
@@ -1865,7 +1865,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, 
struct url *proxy,
             {
               logprintf (LOG_NOTQUIET, _("POST data file %s missing: %s\n"),
                          quote (opt.post_file_name), strerror (errno));
-              post_data_size = 0;
+              return FILEBADFILE;
             }
         }
       request_set_header (req, "Content-Length",
@@ -3119,6 +3119,7 @@ Spider mode enabled. Check if remote file exists.\n"));
                      quote (hstat.local_file), strerror (errno));
         case HOSTERR: case CONIMPOSSIBLE: case PROXERR: case AUTHFAILED:
         case SSLINITFAILED: case CONTNOTSUPPORTED: case VERIFCERTERR:
+        case FILEBADFILE:
           /* Fatal errors just return from the function.  */
           ret = err;
           goto exit;
-- 
1.7.10.4


>From e3b3ea51205b5d9852783dfde526a05100144682 Mon Sep 17 00:00:00 2001
From: Darshit Shah <address@hidden>
Date: Tue, 12 Mar 2013 12:21:07 +0530
Subject: [PATCH 2/2] Add test to ensure correct return code on --post-file
 failure

Signed-off-by: Darshit Shah <address@hidden>
---
 tests/ChangeLog          |    6 ++++++
 tests/Makefile.am        |    1 +
 tests/Test--post-file.px |   23 +++++++++++++++++++++++
 tests/run-px             |    1 +
 4 files changed, 31 insertions(+)
 create mode 100755 tests/Test--post-file.px

diff --git a/tests/ChangeLog b/tests/ChangeLog
index 3650f82..8cd4864 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2013-03-12  Darshit Shah <address@hidden>
+
+       * Makefile.am (EXTRA_DIST): Add Test--post-file.px.
+       * run-px (tests): Likewise.
+       * Test--post-file.px: New file.
+
 2012-11-09  Tim Ruehsen  <address@hidden>
 
        * HTTPServer.pm: added check for must-not-match request-header
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9ff302c..ac6a663 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -119,6 +119,7 @@ EXTRA_DIST = FTPServer.pm FTPTest.pm HTTPServer.pm 
HTTPTest.pm \
              Test-O--no-content-disposition-trivial.px \
              Test-O-nonexisting.px \
              Test-O.px \
+             Test--post-file.px \
              Test-proxied-https-auth.px \
              Test-proxy-auth-basic.px \
              Test-restrict-ascii.px \
diff --git a/tests/Test--post-file.px b/tests/Test--post-file.px
new file mode 100755
index 0000000..1c017b7
--- /dev/null
+++ b/tests/Test--post-file.px
@@ -0,0 +1,23 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $cmdline = $WgetTest::WGETPATH . " -d --post-file=nofile 
http://localhost:{{port}}/";;
+
+my $expected_error_code = 3;
+
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-missing-file",
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
diff --git a/tests/run-px b/tests/run-px
index 657194f..3c35d6f 100755
--- a/tests/run-px
+++ b/tests/run-px
@@ -70,6 +70,7 @@ my @tests = (
     'Test-O--no-content-disposition-trivial.px',
     'Test-O-nonexisting.px',
     'Test-O.px',
+    'Test--post-file.px',
     'Test-O-nc.px',
     'Test-restrict-ascii.px',
     'Test-Restrict-Lowercase.px',
-- 
1.7.10.4


--
Giuseppe



reply via email to

[Prev in Thread] Current Thread [Next in Thread]