package w3m
tag 299462 patch
tag 208378 patch
thanks
This patch implements better support for Content-Encoding in w3m, so
that -dump-source and saving of files should work as expected.
Regards,
--
Karsten Schölzel | Email: [EMAIL PROTECTED]
Väderleden 9 4:98 | Jabber: [EMAIL PROTECTED]
97633 Luleå | VoIP: sip:[EMAIL PROTECTED]
Sweden | sip:[EMAIL PROTECTED]
| Tel: +4918015855857712
| Mobile: +46706725974
Decode Content-Encoding when
1) following a link and w3m wants to save the file
2) explicitly saving the file accessed by a link with SAVE_LINK.
Still to do: SAVE command and -dump-source
---
commit 4b44c159e8a8edddb085ed1b76befb495ad36143
tree fbfcd463f67beadfedf5deb12640b2a682a226a6
parent 488d2a9493ff726f5c23ec8cf8ac7148469dc23b
author Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 21:45:38 +0200
committer Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 21:45:38 +0200
file.c | 12 ++++++++++++
html.h | 1 +
url.c | 2 +-
3 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/file.c b/file.c
index 7e861a2..3d1a97c 100644
--- a/file.c
+++ b/file.c
@@ -745,6 +745,7 @@ readHeader(URLFile *uf, Buffer *newBuf,
if (uf->compression != CMP_NOCOMPRESS)
break;
}
+ uf->content_encoding = uf->compression;
}
#ifdef USE_COOKIE
else if (use_cookie && accept_cookie &&
@@ -7797,6 +7798,7 @@ doFileSave(URLFile uf, char *defstr)
char *p, *q;
pid_t pid;
char *lock;
+ char *tmpf = NULL;
#if !(defined(HAVE_SYMLINK) && defined(HAVE_LSTAT))
FILE *f;
#endif
@@ -7837,6 +7839,11 @@ doFileSave(URLFile uf, char *defstr)
flush_tty();
pid = fork();
if (!pid) {
+ if (uf.content_encoding != CMP_NOCOMPRESS) {
+ uncompress_stream(&uf, &tmpf);
+ if (tmpf)
+ unlink(tmpf);
+ }
setup_child(FALSE, 0, UFfileno(&uf));
if (!save2tmp(uf, p) && PreserveTimestamp && uf.modtime != -1)
setModtime(p, uf.modtime);
@@ -7869,6 +7876,11 @@ doFileSave(URLFile uf, char *defstr)
printf("Can't save. Load file and %s are identical.", p);
return -1;
}
+ if (uf.content_encoding != CMP_NOCOMPRESS) {
+ uncompress_stream(&uf, &tmpf);
+ if (tmpf)
+ unlink(tmpf);
+ }
if (save2tmp(uf, p) < 0) {
/* FIXME: gettextize? */
printf("Can't save to %s\n", p);
diff --git a/html.h b/html.h
index 28d1599..705e9ee 100644
--- a/html.h
+++ b/html.h
@@ -69,6 +69,7 @@ typedef struct {
InputStream stream;
char *ext;
int compression;
+ int content_encoding;
char *guess_type;
#ifdef USE_SSL
char *ssl_certificate;
diff --git a/url.c b/url.c
index 9d8c5df..ec1cda1 100644
--- a/url.c
+++ b/url.c
@@ -1453,7 +1453,7 @@ init_stream(URLFile *uf, int scheme, Inp
uf->scheme = scheme;
uf->encoding = ENC_7BIT;
uf->is_cgi = FALSE;
- uf->compression = 0;
+ uf->compression = CMP_NOCOMPRESS;
uf->guess_type = NULL;
uf->ext = NULL;
uf->modtime = -1;
!-------------------------------------------------------------flip-
If the file is transferred with Content-Encoding use a uncompressed version
as sourcefile. With this both -dump-source and SAVE work as expected.
---
commit 93726748970efa43ca71de264a682c1ea8aa70dd
tree a81af9d8e99bfd093863da8e75ced7f8c37d7d62
parent 4b44c159e8a8edddb085ed1b76befb495ad36143
author Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 22:46:54 +0200
committer Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 22:46:54 +0200
file.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/file.c b/file.c
index 3d1a97c..d537c8d 100644
--- a/file.c
+++ b/file.c
@@ -2124,7 +2124,10 @@ loadGeneralFile(char *path, ParsedURL *v
return NO_BUFFER;
}
- if (f.compression != CMP_NOCOMPRESS) {
+ if (f.content_encoding != CMP_NOCOMPRESS) {
+ uncompress_stream(&f, &pu.real_file);
+ }
+ else if (f.compression != CMP_NOCOMPRESS) {
if (!(w3m_dump & DUMP_SOURCE) &&
(w3m_dump & ~DUMP_FRAME || is_text_type(t)
|| searchExtViewer(t))) {
!-------------------------------------------------------------flip-
Forgot the initialization of content_encoding :-(
---
commit dd586d2f53a7917967602d22073484e0ad420a62
tree 8017d1908c1098ce9ce3f5ae005d7e62b847b384
parent 93726748970efa43ca71de264a682c1ea8aa70dd
author Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 23:55:43 +0200
committer Karsten Schoelzel <[EMAIL PROTECTED]> Mon, 01 May 2006 23:55:43 +0200
url.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/url.c b/url.c
index ec1cda1..b34d535 100644
--- a/url.c
+++ b/url.c
@@ -1454,6 +1454,7 @@ init_stream(URLFile *uf, int scheme, Inp
uf->encoding = ENC_7BIT;
uf->is_cgi = FALSE;
uf->compression = CMP_NOCOMPRESS;
+ uf->content_encoding = CMP_NOCOMPRESS;
uf->guess_type = NULL;
uf->ext = NULL;
uf->modtime = -1;
!-------------------------------------------------------------flip-