When wget is called with -r or -p it will look for resource tags in the
output file, and since -O- redirects to stdout, the program hangs, waiting
for input. The same happens with pipes or FIFO files.

My proposed solution is to disallow calling wget with '-p' or '-r' and
output redirection to either stdout or a FIFO file.

--- src/main.c.origin 2015-03-13 03:59:39.000000000 +0100
+++ src/main.c 2015-03-13 04:10:59.000000000 +0100
@@ -42,6 +42,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <time.h>
+#include <sys/stat.h>

 #include "exits.h"
 #include "utils.h"
@@ -1335,6 +1336,18 @@
                          opt.output_document);
               exit (WGET_EXIT_GENERIC_ERROR);
            }
+      if (opt.recursive || opt.page_requisites)
+      {
+        struct stat status;
+        stat (opt.output_document, &status);
+        if (HYPHENP (opt.output_document) || status.st_mode & S_IFIFO)
+          {
+            fprintf (stderr, _("Can't do \
+recursive download with output redirected to stdout, pipe or FIFO
file\n"));
+            print_usage (1);
+            exit (WGET_EXIT_GENERIC_ERROR);
+          }
+      }
     }

   if (opt.warc_filename != 0)


Miquel Llobet

Reply via email to