mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Merge branch 'elinks-0.12' into elinks-0.13
This commit is contained in:
commit
af9ed54c0f
@ -54,7 +54,7 @@ ASCIIDOC_FLAGS = @ASCIIDOC_FLAGS@
|
||||
AWK = @AWK@
|
||||
CATALOGS = @CATALOGS@
|
||||
CC = @CC@
|
||||
CG_COMMIT_ID = @CG_COMMIT_ID@
|
||||
GIT = @GIT@
|
||||
CONFDIR = @CONFDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
GLIBC21 = @GLIBC21@
|
||||
|
2
NEWS
2
NEWS
@ -321,6 +321,8 @@ To be released as 0.11.4.
|
||||
* critical bugs 613, 714, 961: ``assertion list_empty(form_controls)
|
||||
failed''
|
||||
* critical bug 945: don't crash if a Lua script calls e.g. error(nil)
|
||||
* critical bug 1003: don't crash if a smart URI rewrite template gets
|
||||
too few parameters
|
||||
* major bug 956: don't reuse pointers to SpiderMonkey objects that may
|
||||
have been collected as garbage. This fix causes bug 954.
|
||||
* CVE-2007-2027: check if the program path contains "src/" before
|
||||
|
@ -61,7 +61,7 @@ AC_PATH_PROGS(AWK, "$AWK")
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_PATH_PROGS(CG_COMMIT_ID, "cg-commit-id")
|
||||
AC_PATH_PROGS(GIT, "git")
|
||||
AC_PATH_PROGS(SPARSE, "sparse")
|
||||
|
||||
CONFIG_ASCIIDOC="no"
|
||||
|
@ -17,4 +17,4 @@ Description: advanced text-mode WWW browser
|
||||
language, IPV6 and has many other features. ELinks is linked against
|
||||
GNUTLS to prevent license issues.
|
||||
.
|
||||
Homepage: http://elinks.or.cz/
|
||||
Homepage: http://elinks.cz/
|
||||
|
@ -1,7 +1,7 @@
|
||||
This package was debianized by Peter Gervai <grin@tolna.net> on
|
||||
Mon, 29 Nov 1999 12:16:46 +0100.
|
||||
|
||||
It was downloaded from http://elinks.or.cz/
|
||||
It was downloaded from http://elinks.cz/
|
||||
|
||||
Upstream Author: Petr Baudis <pasky@ucw.cz>
|
||||
|
||||
|
@ -4,8 +4,8 @@ version=2
|
||||
# Line continuations are performed with \
|
||||
|
||||
# The master download directory
|
||||
http://elinks.or.cz/download/elinks-([\d]+.*).tar.bz2
|
||||
http://elinks.cz/download/elinks-([\d]+.*).tar.bz2
|
||||
|
||||
# This is a variant HTTP format with more possibilities:
|
||||
# Homepage Pattern [Version [Action]]
|
||||
#http://elinks.or.cz/download/ elinks-([\d]+.*).tar.bz2 debian uupdate
|
||||
#http://elinks.cz/download/ elinks-([\d]+.*).tar.bz2 debian uupdate
|
||||
|
@ -19,6 +19,8 @@ cd "$GIT_DIR"
|
||||
echo "[grafthistory] Downloading the history"
|
||||
mkdir -p objects/pack
|
||||
cd objects/pack
|
||||
echo "ELinks history converted from CVS. Keep this pack separate to speed up git gc." \
|
||||
> pack-0d6c5c67aab3b9d5d9b245da5929c15d79124a48.keep
|
||||
# pack-0d6c5c67aab3b9d5d9b245da5929c15d79124a48.idx is 3163784 bytes long.
|
||||
# Downloading it takes less than 6 seconds here, whereas generating it
|
||||
# with git index-pack takes over 4 minutes (750 MHz Duron, git 1.5.4.1).
|
||||
|
@ -39,7 +39,7 @@ h1 {
|
||||
color: lightgoldenrod !important;
|
||||
}
|
||||
|
||||
/* The following specifies colors used in the HTML highligting. */
|
||||
/* The following specifies colors used in the HTML highlighting. */
|
||||
document { color: yellow }
|
||||
element { color: lightgreen }
|
||||
entity-reference { color: red }
|
||||
|
@ -28,6 +28,13 @@ squote=@squote@
|
||||
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
|
||||
{0#</citerefentry>}
|
||||
|
||||
# No interlinking between elinks manpages
|
||||
[otherman-inlinemacro]
|
||||
{0%{target}}
|
||||
{0#<citerefentry>}
|
||||
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
|
||||
{0#</citerefentry>}
|
||||
|
||||
# For manpages use less verbose linking
|
||||
ifdef::doctype-manpage[]
|
||||
[link-inlinemacro]
|
||||
@ -54,7 +61,9 @@ squote='
|
||||
|
||||
# Use the man:[] macro to link between elinks manpages
|
||||
[man-inlinemacro]
|
||||
{eval:re.match("elinks", "{target}") != None}<a href="{target}.{0}.html">{target}({0})</a>
|
||||
{eval:re.match("elinks", "{target}") == None}<b>{target}({0})</b>
|
||||
<a href="{target}.{0}.html">{target}({0})</a>
|
||||
|
||||
[otherman-inlinemacro]
|
||||
<b>{target}({0})</b>
|
||||
|
||||
endif::backend-xhtml11[]
|
||||
|
@ -78,7 +78,7 @@ HOME::
|
||||
|
||||
WWW_HOME::
|
||||
|
||||
Homepage location (as in man:lynx[1]).
|
||||
Homepage location (as in otherman:lynx[1]).
|
||||
|
||||
FILES
|
||||
-----
|
||||
@ -167,8 +167,8 @@ was done by Jonas Fonseca mailto:fonseca@diku.dk[].
|
||||
SEE ALSO
|
||||
--------
|
||||
|
||||
man:elinkskeys[5], man:elinks.conf[5], man:links[1], man:lynx[1], man:w3m[1],
|
||||
man:wget[1]
|
||||
man:elinkskeys[5], man:elinks.conf[5], otherman:links[1], otherman:lynx[1],
|
||||
otherman:w3m[1], otherman:wget[1]
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
# vim: tabstop=4 shiftwidth=4 textwidth=76
|
||||
|
@ -211,7 +211,8 @@ CONFIG_BZIP2=yes
|
||||
#
|
||||
# To use this, first install http://tukaani.org/lzma/[LZMA Utils].
|
||||
# Version 4.32.5 works; 4.42.2alpha also works and understands a
|
||||
# newer LZMA file format. ELinks cannot use LZMA SDK from 7-Zip.
|
||||
# newer LZMA file format. This version of ELinks does not support
|
||||
# LZMA SDK from 7-Zip.
|
||||
#
|
||||
# Default: enabled if the library is installed
|
||||
|
||||
|
@ -28,8 +28,10 @@ SUBDIRS = \
|
||||
viewer
|
||||
|
||||
# Get the GIT HEAD ID if possible
|
||||
ifdef CG_COMMIT_ID
|
||||
BUILD_ID=$(shell GIT_DIR=$(top_srcdir)/.git $(CG_COMMIT_ID) 2> /dev/null)
|
||||
ifdef GIT
|
||||
GITDESC = $(shell $(GIT) --git-dir=$(top_srcdir)/.git rev-parse HEAD 2>/dev/null)
|
||||
WTDIRTY = $(shell cd "$(top_srcdir)" && $(GIT) diff-index HEAD 2>/dev/null)
|
||||
BUILD_ID = $(subst elinks-,,$(GITDESC))$(if $(WTDIRTY),-dirty)
|
||||
endif
|
||||
INCLUDES += -DBUILD_ID="\"$(BUILD_ID)\""
|
||||
|
||||
|
@ -38,7 +38,7 @@ struct deflate_enc_data {
|
||||
};
|
||||
|
||||
static int
|
||||
deflate_open(struct stream_encoded *stream, int fd)
|
||||
deflate_open(int window_size, struct stream_encoded *stream, int fd)
|
||||
{
|
||||
/* A zero-initialized z_stream. The compiler ensures that all
|
||||
* pointer members in it are null. (Can't do this with memset
|
||||
@ -60,7 +60,7 @@ deflate_open(struct stream_encoded *stream, int fd)
|
||||
data->fdread = fd;
|
||||
data->last_read = 0;
|
||||
|
||||
err = inflateInit2(&data->deflate_stream, MAX_WBITS | 32);
|
||||
err = inflateInit2(&data->deflate_stream, window_size);
|
||||
if (err != Z_OK) {
|
||||
mem_free(data);
|
||||
return -1;
|
||||
@ -70,6 +70,20 @@ deflate_open(struct stream_encoded *stream, int fd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
deflate_raw_open(struct stream_encoded *stream, int fd)
|
||||
{
|
||||
/* raw DEFLATE with neither zlib nor gzip header */
|
||||
return deflate_open(-MAX_WBITS, stream, fd);
|
||||
}
|
||||
|
||||
static int
|
||||
deflate_gzip_open(struct stream_encoded *stream, int fd)
|
||||
{
|
||||
/* detect gzip header, else assume zlib header */
|
||||
return deflate_open(MAX_WBITS + 32, stream, fd);
|
||||
}
|
||||
|
||||
static int
|
||||
deflate_read(struct stream_encoded *stream, unsigned char *buf, int len)
|
||||
{
|
||||
@ -117,7 +131,7 @@ deflate_read(struct stream_encoded *stream, unsigned char *buf, int len)
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
deflate_decode_buffer(unsigned char *data, int len, int *new_len)
|
||||
deflate_decode_buffer(int window_size, unsigned char *data, int len, int *new_len)
|
||||
{
|
||||
z_stream stream;
|
||||
unsigned char *buffer = NULL;
|
||||
@ -130,7 +144,7 @@ deflate_decode_buffer(unsigned char *data, int len, int *new_len)
|
||||
stream.next_in = data;
|
||||
stream.avail_in = len;
|
||||
|
||||
if (inflateInit2(&stream, MAX_WBITS | 32) != Z_OK)
|
||||
if (inflateInit2(&stream, window_size) != Z_OK)
|
||||
return NULL;
|
||||
|
||||
do {
|
||||
@ -165,6 +179,20 @@ deflate_decode_buffer(unsigned char *data, int len, int *new_len)
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
deflate_raw_decode_buffer(unsigned char *data, int len, int *new_len)
|
||||
{
|
||||
/* raw DEFLATE with neither zlib nor gzip header */
|
||||
return deflate_decode_buffer(-MAX_WBITS, data, len, new_len);
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
deflate_gzip_decode_buffer(unsigned char *data, int len, int *new_len)
|
||||
{
|
||||
/* detect gzip header, else assume zlib header */
|
||||
return deflate_decode_buffer(MAX_WBITS + 32, data, len, new_len);
|
||||
}
|
||||
|
||||
static void
|
||||
deflate_close(struct stream_encoded *stream)
|
||||
{
|
||||
@ -183,9 +211,9 @@ static const unsigned char *const deflate_extensions[] = { NULL };
|
||||
const struct decoding_backend deflate_decoding_backend = {
|
||||
"deflate",
|
||||
deflate_extensions,
|
||||
deflate_open,
|
||||
deflate_raw_open,
|
||||
deflate_read,
|
||||
deflate_decode_buffer,
|
||||
deflate_raw_decode_buffer,
|
||||
deflate_close,
|
||||
};
|
||||
|
||||
@ -194,8 +222,8 @@ static const unsigned char *const gzip_extensions[] = { ".gz", ".tgz", NULL };
|
||||
const struct decoding_backend gzip_decoding_backend = {
|
||||
"gzip",
|
||||
gzip_extensions,
|
||||
deflate_open,
|
||||
deflate_gzip_open,
|
||||
deflate_read,
|
||||
deflate_decode_buffer,
|
||||
deflate_gzip_decode_buffer,
|
||||
deflate_close,
|
||||
};
|
||||
|
@ -344,30 +344,3 @@ read_encoded_file(struct string *filename, struct string *page)
|
||||
close(fd);
|
||||
return state;
|
||||
}
|
||||
|
||||
void
|
||||
accept_encoding_header(struct string *header)
|
||||
{
|
||||
#if defined(CONFIG_GZIP) || defined(CONFIG_BZIP2) || defined(CONFIG_LZMA)
|
||||
int comma = 0;
|
||||
|
||||
add_to_string(header, "Accept-Encoding: ");
|
||||
|
||||
#ifdef CONFIG_BZIP2
|
||||
add_to_string(header, "bzip2");
|
||||
comma = 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_GZIP
|
||||
if (comma) add_to_string(header, ", ");
|
||||
add_to_string(header, "deflate, gzip");
|
||||
comma = 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LZMA
|
||||
if (comma) add_to_string(header, ", ");
|
||||
add_to_string(header, "lzma");
|
||||
#endif
|
||||
add_crlf_to_string(header);
|
||||
#endif
|
||||
}
|
||||
|
@ -45,6 +45,4 @@ read_file(struct stream_encoded *stream, int readsize, struct string *page);
|
||||
/* Reads the file with the given @filename into the string @source. */
|
||||
enum connection_state read_encoded_file(struct string *filename, struct string *source);
|
||||
|
||||
void accept_encoding_header(struct string *header);
|
||||
|
||||
#endif
|
||||
|
@ -128,6 +128,7 @@ parse_time(const unsigned char **time, struct tm *tm, unsigned char *end)
|
||||
|
||||
tm->tm_hour = (h1 - '0') * 10 + h2 - '0';
|
||||
tm->tm_min = (m1 - '0') * 10 + m2 - '0';
|
||||
tm->tm_sec = 0;
|
||||
|
||||
/* Eat :SS or [PA]M or nothing */
|
||||
if (end && date + 2 >= end) {
|
||||
|
@ -20,7 +20,6 @@ main(int argc, char *argv[])
|
||||
{
|
||||
struct ftp_file_info ftp_info = INIT_FTP_FILE_INFO;
|
||||
unsigned char *response = "";
|
||||
int responselen = 0;
|
||||
int i;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
@ -33,18 +32,30 @@ main(int argc, char *argv[])
|
||||
|
||||
if (get_test_opt(&arg, "response", &i, argc, argv, "a string")) {
|
||||
response = arg;
|
||||
responselen = strlen(response);
|
||||
|
||||
} else {
|
||||
die("Unknown argument '%s'", arg - 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (!responselen)
|
||||
if (!*response)
|
||||
die("Usage: %s --response \"string\"", argv[0]);
|
||||
|
||||
if (parse_ftp_file_info(&ftp_info, response, responselen))
|
||||
return 0;
|
||||
while (*response) {
|
||||
unsigned char *start = response;
|
||||
|
||||
response = strchr(response, '\n');
|
||||
if (!response) {
|
||||
response = start + strlen(start);
|
||||
} else {
|
||||
if (response > start && response[-1] == '\r')
|
||||
response[-1] = 0;
|
||||
*response++ = 0;
|
||||
}
|
||||
|
||||
if (!parse_ftp_file_info(&ftp_info, start, strlen(start)))
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -346,7 +346,7 @@ parse_ftp_unix_response(struct ftp_file_info *info, unsigned char *src, int len)
|
||||
break;
|
||||
}
|
||||
|
||||
pos = memchr(pos, ' ', end - pos);
|
||||
pos = memchr(pos + 1, ' ', end - pos);
|
||||
}
|
||||
|
||||
if (!info->symlink.source)
|
||||
|
@ -61,6 +61,11 @@ test_ftp_response_expect_success \
|
||||
"
|
||||
-rwxrwxrwx 1 noone nogroup 322 Aug 19 1996 message.ftp\r\n"
|
||||
|
||||
test_ftp_response_expect_success \
|
||||
'Response from FreeBSD with symbolic link' \
|
||||
"
|
||||
lrwxrwx--x 1 110 1002 13 Oct 24 2006 5.3 has moved to ftp-archive -> ../README.TXT\r\n"
|
||||
|
||||
test_ftp_response_expect_success \
|
||||
'Response from NetWare' \
|
||||
"
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "cache/cache.h"
|
||||
#include "config/options.h"
|
||||
#include "cookies/cookies.h"
|
||||
#include "encoding/encoding.h"
|
||||
#include "intl/charsets.h"
|
||||
#include "intl/gettext/libintl.h"
|
||||
#include "main/module.h"
|
||||
@ -561,6 +560,33 @@ init_http_connection_info(struct connection *conn, int major, int minor, int clo
|
||||
return http;
|
||||
}
|
||||
|
||||
static void
|
||||
accept_encoding_header(struct string *header)
|
||||
{
|
||||
#if defined(CONFIG_GZIP) || defined(CONFIG_BZIP2) || defined(CONFIG_LZMA)
|
||||
int comma = 0;
|
||||
|
||||
add_to_string(header, "Accept-Encoding: ");
|
||||
|
||||
#ifdef CONFIG_BZIP2
|
||||
add_to_string(header, "bzip2");
|
||||
comma = 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_GZIP
|
||||
if (comma) add_to_string(header, ", ");
|
||||
add_to_string(header, "deflate, gzip");
|
||||
comma = 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LZMA
|
||||
if (comma) add_to_string(header, ", ");
|
||||
add_to_string(header, "lzma");
|
||||
#endif
|
||||
add_crlf_to_string(header);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
http_send_header(struct socket *socket)
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ rewrite_uri(unsigned char *url, struct uri *current_uri, unsigned char *arg)
|
||||
case '8':
|
||||
case '9':
|
||||
value = *url - '0';
|
||||
if (value > argc) break;
|
||||
if (value >= argc) break;
|
||||
encode_uri_string(&n, args[value],
|
||||
argslen[value], 1);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user