On 20/03/12 22:41, Giuseppe Scrivano wrote:
> AIDA Shinra <[email protected]> writes:
>> --- wget-1.13.4/src/http.c.orig 2011-09-07 10:58:01.000000000 +0000
>> +++ wget-1.13.4/src/http.c 2012-03-19 13:58:29.000000000 +0000
>> @@ -3517,7 +3517,7 @@
>> char *last_period_in_local_filename = strrchr (hs->local_file, '.');
>> char shortext[8];
>> int len = strlen (ext);
>> - if (len == 5)
>> + if (len == 4)
> I am not sure the patch is correct. `ext' includes the dot '.'
> character so 5 seems ok there. In any case, I wasn't able to reproduce
> the problem, at least in my locale. What locale are you using? Can you
> please provide a test case?
>
> Thanks,
> Giuseppe
It also looked incorrect to me (and couldn't reproduce it). I don't like
the way that
function is coded, though. Passing the two suitable extensions as
parameters
would have been much cleaner.
I have attached some tests with the current behavior, just so this would
be catched
if it ever happened.
Test-adjust-extension-multiple-files.px seems to be exposing a bug in
the adjust
extension naming of repeated filenames. See the pattern of expected files:
dummy.css, dummy.css.1.css, dummy.css.1.1.css, dummy.css.1.2.css,
dummy.css.1.3.css...
=== added file 'tests/Test-adjust-extension-css.px'
--- tests/Test-adjust-extension-css.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-css.px 2012-03-20 22:42:46 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.css' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/css",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.css";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.css' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-htm.px'
--- tests/Test-adjust-extension-htm.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-htm.px 2012-03-20 22:37:53 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.htm' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/html",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.htm";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.htm' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-html.px'
--- tests/Test-adjust-extension-html.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-html.px 2012-03-20 22:38:30 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.html' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/html",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.html";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.html' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-jpg-css.px'
--- tests/Test-adjust-extension-jpg-css.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-jpg-css.px 2012-03-20 22:41:29 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.jpg' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/css",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.jpg";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.jpg.css' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-jpg-html.px'
--- tests/Test-adjust-extension-jpg-html.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-jpg-html.px 2012-03-20 22:39:55 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.jpg' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/html",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.jpg";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.jpg.html' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-multiple-files.px'
--- tests/Test-adjust-extension-multiple-files.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-multiple-files.px 2012-03-20 23:05:52 +0000
@@ -0,0 +1,59 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy.css' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/css",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy.css http://localhost:{{port}}/dummy.css http://localhost:{{port}}/dummy.css http://localhost:{{port}}/dummy.css http://localhost:{{port}}/dummy.css";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.css' => {
+ content => $dummyfile,
+ },
+ 'dummy.css.1.css' => {
+ content => $dummyfile,
+ },
+ 'dummy.css.1.1.css' => {
+ content => $dummyfile,
+ },
+ 'dummy.css.1.2.css' => {
+ content => $dummyfile,
+ },
+ 'dummy.css.1.3.css' => {
+ content => $dummyfile,
+ },
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== added file 'tests/Test-adjust-extension-no-ext.px'
--- tests/Test-adjust-extension-no-ext.px 1970-01-01 00:00:00 +0000
+++ tests/Test-adjust-extension-no-ext.px 2012-03-20 22:40:31 +0000
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+my $dummyfile = <<EOF;
+Don't care.
+EOF
+
+# code, msg, headers, content
+my %urls = (
+ '/dummy' => {
+ code => "200",
+ msg => "Dontcare",
+ headers => {
+ "Content-type" => "text/html",
+ },
+ content => $dummyfile
+ },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " --adjust-extension http://localhost:{{port}}/dummy";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+ 'dummy.html' => {
+ content => $dummyfile,
+ }
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-O-HTTP-Content-Disposition",
+ input => \%urls,
+ cmdline => $cmdline,
+ errcode => $expected_error_code,
+ output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
+
=== modified file 'tests/run-px'
--- tests/run-px 2011-07-26 07:27:08 +0000
+++ tests/run-px 2012-03-20 22:54:50 +0000
@@ -79,6 +79,13 @@
'Test--spider-r--no-content-disposition.px',
'Test--spider-r--no-content-disposition-trivial.px',
'Test--spider-r.px',
+ 'Test-adjust-extension-htm.px',
+ 'Test-adjust-extension-html.px',
+ 'Test-adjust-extension-css.px',
+ 'Test-adjust-extension-jpg-html.px',
+ 'Test-adjust-extension-jpg-css.px',
+ 'Test-adjust-extension-no-ext.px',
+ 'Test-adjust-extension-multiple-files.px',
);
foreach my $var (qw(SYSTEM_WGETRC WGETRC)) {