diff options
-rw-r--r-- | src/main.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c index ca1f4e2d3..a6bf56bb6 100644 --- a/src/main.c +++ b/src/main.c @@ -859,6 +859,7 @@ int main(int argc, char *argv[]) char errorbuffer[URLGET_ERROR_SIZE]; struct OutStruct outs; + struct OutStruct heads; char *url = NULL; #ifdef GLOBURL @@ -1086,14 +1087,12 @@ int main(int argc, char *argv[]) /* open file for output: */ if(strcmp(config.headerfile,"-")) { - headerfilep=(FILE *) fopen(config.headerfile, "wb"); - if (!headerfilep) { - helpf("Can't open '%s'!\n", config.headerfile); - return URG_WRITE_ERROR; - } + heads.filename = config.headerfile; + headerfilep=NULL; } else headerfilep=stdout; + heads.stream = headerfilep; } if(outs.stream && isatty(fileno(outs.stream)) && @@ -1147,7 +1146,7 @@ int main(int argc, char *argv[]) URGTAG_CRLF, config.crlf, URGTAG_QUOTE, config.quote, URGTAG_POSTQUOTE, config.postquote, - URGTAG_WRITEHEADER, headerfilep, + URGTAG_WRITEHEADER, &heads, URGTAG_COOKIEFILE, config.cookiefile, URGTAG_SSLVERSION, config.ssl_version, URGTAG_TIMECONDITION, config.timecond, @@ -1165,6 +1164,9 @@ int main(int argc, char *argv[]) /* it wasn't directed to stdout or stderr so close the file! */ fclose(config.errors); + if(!headerfilep && heads.stream) + fclose(heads.stream); + if(urlbuffer) free(urlbuffer); if (config.outfile && outs.stream) |