1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-11-04 08:17:17 -05:00

Merge branch 'elinks-0.12' into elinks-0.13

Conflicts:

	src/document/css/stylesheet.c
	src/document/css/stylesheet.h
This commit is contained in:
Kalle Olavi Niemitalo 2008-01-26 18:15:33 +02:00 committed by Kalle Olavi Niemitalo
commit 4138b401ca
18 changed files with 42 additions and 28 deletions

1
NEWS
View File

@ -328,6 +328,7 @@ To be released as 0.11.4.
* minor bug 461: ensure contrast in blank areas, to keep the cursor visible * minor bug 461: ensure contrast in blank areas, to keep the cursor visible
* minor bug 928: properly display no-break spaces in a UTF-8 document * minor bug 928: properly display no-break spaces in a UTF-8 document
if the terminal uses some other charset if the terminal uses some other charset
* minor: don't assume sizeof(int)==4 in bittorrent
* trivial bug 947: document.html.wrap_nbsp also affects text in tables * trivial bug 947: document.html.wrap_nbsp also affects text in tables
* trivial bug 997: fix unlikely stack corruption in active FTP * trivial bug 997: fix unlikely stack corruption in active FTP
* build bug 950: fix ``config/install-sh: No such file or directory'' * build bug 950: fix ``config/install-sh: No such file or directory''

View File

@ -150,7 +150,7 @@ import_css(struct css_stylesheet *css, struct uri *uri)
static void static void
import_css_file(struct css_stylesheet *css, struct uri *base_uri, import_css_file(struct css_stylesheet *css, struct uri *base_uri,
unsigned char *url, int urllen) const unsigned char *url, int urllen)
{ {
struct string string, filename; struct string string, filename;

View File

@ -158,7 +158,7 @@ scan_css_token(struct scanner *scanner, struct scanner_token *token)
type = CSS_TOKEN_NUMBER; type = CSS_TOKEN_NUMBER;
} else { } else {
unsigned char *ident = string; const unsigned char *ident = string;
scan_css(scanner, string, CSS_CHAR_IDENT); scan_css(scanner, string, CSS_CHAR_IDENT);
type = map_scanner_string(scanner, ident, string, type = map_scanner_string(scanner, ident, string,
@ -251,7 +251,7 @@ scan_css_token(struct scanner *scanner, struct scanner_token *token)
} else if (first_char == '@') { } else if (first_char == '@') {
/* Compose token containing @<ident> */ /* Compose token containing @<ident> */
if (is_css_ident_start(*string)) { if (is_css_ident_start(*string)) {
unsigned char *ident = string; const unsigned char *ident = string;
/* Scan both ident start and ident */ /* Scan both ident start and ident */
scan_css(scanner, string, CSS_CHAR_IDENT); scan_css(scanner, string, CSS_CHAR_IDENT);

View File

@ -50,7 +50,7 @@ struct css_selector *
init_css_selector(struct css_selector_set *sels, init_css_selector(struct css_selector_set *sels,
enum css_selector_type type, enum css_selector_type type,
enum css_selector_relation relation, enum css_selector_relation relation,
unsigned char *name, int namelen) const unsigned char *name, int namelen)
{ {
struct css_selector *selector; struct css_selector *selector;
@ -97,7 +97,7 @@ struct css_selector *
get_css_selector(struct css_selector_set *sels, get_css_selector(struct css_selector_set *sels,
enum css_selector_type type, enum css_selector_type type,
enum css_selector_relation rel, enum css_selector_relation rel,
unsigned char *name, int namelen) const unsigned char *name, int namelen)
{ {
struct css_selector *selector = NULL; struct css_selector *selector = NULL;

View File

@ -96,7 +96,7 @@ struct css_selector {
struct css_stylesheet; struct css_stylesheet;
typedef void (*css_stylesheet_importer_T)(struct css_stylesheet *, struct uri *, typedef void (*css_stylesheet_importer_T)(struct css_stylesheet *, struct uri *,
unsigned char *url, int urllen); const unsigned char *url, int urllen);
/** The struct css_stylesheet describes all the useful data that was extracted /** The struct css_stylesheet describes all the useful data that was extracted
* from the CSS source. Currently we don't cache anything but the default user * from the CSS source. Currently we don't cache anything but the default user
@ -140,7 +140,7 @@ void done_css_stylesheet(struct css_stylesheet *css);
struct css_selector *get_css_selector(struct css_selector_set *set, struct css_selector *get_css_selector(struct css_selector_set *set,
enum css_selector_type type, enum css_selector_type type,
enum css_selector_relation rel, enum css_selector_relation rel,
unsigned char *name, int namelen); const unsigned char *name, int namelen);
#define get_css_base_selector(stylesheet, type, rel, name, namelen) \ #define get_css_base_selector(stylesheet, type, rel, name, namelen) \
get_css_selector((stylesheet) ? &(stylesheet)->selectors : NULL, \ get_css_selector((stylesheet) ? &(stylesheet)->selectors : NULL, \
@ -161,7 +161,7 @@ struct css_selector *find_css_selector(struct css_selector_set *set,
struct css_selector *init_css_selector(struct css_selector_set *set, struct css_selector *init_css_selector(struct css_selector_set *set,
enum css_selector_type type, enum css_selector_type type,
enum css_selector_relation relation, enum css_selector_relation relation,
unsigned char *name, int namelen); const unsigned char *name, int namelen);
/** Add all properties from the list to the given @a selector. */ /** Add all properties from the list to the given @a selector. */
void add_selector_properties(struct css_selector *selector, void add_selector_properties(struct css_selector *selector,

View File

@ -40,7 +40,7 @@ css_parse_color_value(struct css_property_info *propinfo,
/* The first two args are terminated by ',' and the /* The first two args are terminated by ',' and the
* last one by ')'. */ * last one by ')'. */
unsigned char paskynator = shift ? ',' : ')'; unsigned char paskynator = shift ? ',' : ')';
unsigned char *nstring = token->string; const unsigned char *nstring = token->string;
int part; int part;
/* Are the current and next token valid? */ /* Are the current and next token valid? */

View File

@ -143,6 +143,6 @@ unsigned char *get_target(struct document_options *options, unsigned char *a);
void void
import_css_stylesheet(struct css_stylesheet *css, struct uri *base_uri, import_css_stylesheet(struct css_stylesheet *css, struct uri *base_uri,
unsigned char *url, int len); const unsigned char *unterminated_url, int len);
#endif #endif

View File

@ -188,9 +188,10 @@ add_fragment_identifier(struct html_context *html_context,
#ifdef CONFIG_CSS #ifdef CONFIG_CSS
void void
import_css_stylesheet(struct css_stylesheet *css, struct uri *base_uri, import_css_stylesheet(struct css_stylesheet *css, struct uri *base_uri,
unsigned char *url, int len) const unsigned char *unterminated_url, int len)
{ {
struct html_context *html_context = css->import_data; struct html_context *html_context = css->import_data;
unsigned char *url;
unsigned char *import_url; unsigned char *import_url;
struct uri *uri; struct uri *uri;
@ -201,7 +202,9 @@ import_css_stylesheet(struct css_stylesheet *css, struct uri *base_uri,
|| !html_context->options->css_import) || !html_context->options->css_import)
return; return;
url = memacpy(url, len); /* unterminated_url might not end with '\0', but join_urls
* requires that, so make a copy. */
url = memacpy(unterminated_url, len);
if (!url) return; if (!url) return;
/* HTML <head> urls should already be fine but we can.t detect them. */ /* HTML <head> urls should already be fine but we can.t detect them. */

View File

@ -327,7 +327,7 @@ check_bencoding_dictionary_entry(struct scanner *scanner,
static off_t static off_t
parse_bencoding_integer(struct scanner_token *token) parse_bencoding_integer(struct scanner_token *token)
{ {
unsigned char *string = token->string; const unsigned char *string = token->string;
int pos = 0, length = token->length; int pos = 0, length = token->length;
off_t integer = 0; off_t integer = 0;
int sign = 1; int sign = 1;
@ -340,9 +340,13 @@ parse_bencoding_integer(struct scanner_token *token)
} }
for (; pos < length && isdigit(string[pos]); pos++) { for (; pos < length && isdigit(string[pos]); pos++) {
if (integer > (off_t) integer * 10) off_t newint = integer * 10 + string[pos] - '0';
/* Check for overflow. This assumes wraparound,
* even though C does not guarantee that. */
if (newint / 10 != integer)
return 0; return 0;
integer = (off_t) integer * 10 + string[pos] - '0'; integer = newint;
} }
if (sign == -1) if (sign == -1)
@ -352,7 +356,8 @@ parse_bencoding_integer(struct scanner_token *token)
} }
static unsigned char * static unsigned char *
normalize_bencoding_path(unsigned char *path, int pathlen, int *malicious) normalize_bencoding_path(const unsigned char *path, int pathlen,
int *malicious)
{ {
struct string string; struct string string;
@ -735,7 +740,7 @@ parse_bittorrent_metafile(struct bittorrent_meta *meta, struct string *metafile)
case BENCODING_TOKEN_INFO: case BENCODING_TOKEN_INFO:
{ {
unsigned char *start = value->string; const unsigned char *start = value->string;
struct scanner_token *token; struct scanner_token *token;
enum bittorrent_state state; enum bittorrent_state state;
@ -881,8 +886,9 @@ parse_bencoding_peers_string(struct bittorrent_connection *bittorrent,
struct scanner *scanner) struct scanner *scanner)
{ {
struct scanner_token *token = get_scanner_token(scanner); struct scanner_token *token = get_scanner_token(scanner);
unsigned char *pos; const unsigned char *pos;
unsigned char *last_peer_info_start = token->string + token->length - 6; const unsigned char *last_peer_info_start
= token->string + token->length - 6;
enum bittorrent_state state = BITTORRENT_STATE_OK; enum bittorrent_state state = BITTORRENT_STATE_OK;
assert(get_scanner_token(scanner)->type == BENCODING_TOKEN_STRING); assert(get_scanner_token(scanner)->type == BENCODING_TOKEN_STRING);

View File

@ -213,7 +213,7 @@ get_peer_from_bittorrent_pool(struct bittorrent_connection *bittorrent,
enum bittorrent_state enum bittorrent_state
add_peer_to_bittorrent_pool(struct bittorrent_connection *bittorrent, add_peer_to_bittorrent_pool(struct bittorrent_connection *bittorrent,
bittorrent_id_T id, int port, bittorrent_id_T id, int port,
unsigned char *ip, int iplen) const unsigned char *ip, int iplen)
{ {
struct bittorrent_peer *peer; struct bittorrent_peer *peer;

View File

@ -368,7 +368,7 @@ bittorrent_id_is_known(struct bittorrent_connection *bittorrent,
enum bittorrent_state enum bittorrent_state
add_peer_to_bittorrent_pool(struct bittorrent_connection *bittorrent, add_peer_to_bittorrent_pool(struct bittorrent_connection *bittorrent,
bittorrent_id_T id, int port, bittorrent_id_T id, int port,
unsigned char *ip, int iplen); const unsigned char *ip, int iplen);
struct bittorrent_peer * struct bittorrent_peer *
get_peer_from_bittorrent_pool(struct bittorrent_connection *bittorrent, get_peer_from_bittorrent_pool(struct bittorrent_connection *bittorrent,

View File

@ -1080,7 +1080,7 @@ bittorrent_resume_writer(void *data, int fd)
uint32_t piece; uint32_t piece;
memcpy(&metafile.length, data, sizeof(metafile.length)); memcpy(&metafile.length, data, sizeof(metafile.length));
metafile.source = (unsigned char *) data + 4; metafile.source = (unsigned char *) data + sizeof(metafile.length);
if (parse_bittorrent_metafile(&meta, &metafile) != BITTORRENT_STATE_OK) { if (parse_bittorrent_metafile(&meta, &metafile) != BITTORRENT_STATE_OK) {
done_bittorrent_meta(&meta); done_bittorrent_meta(&meta);

View File

@ -82,7 +82,7 @@ free_colors_lookup(void)
} }
int int
decode_color(unsigned char *str, int slen, color_T *color) decode_color(const unsigned char *str, int slen, color_T *color)
{ {
if (*str == '#' && (slen == 7 || slen == 4)) { if (*str == '#' && (slen == 7 || slen == 4)) {
unsigned char buffer[7]; unsigned char buffer[7];

View File

@ -13,7 +13,7 @@ struct color_pair {
/** Decode the color string. /** Decode the color string.
* The color string can either contain '@#FF0044' style declarations or * The color string can either contain '@#FF0044' style declarations or
* color names. */ * color names. */
int decode_color(unsigned char *str, int slen, color_T *color); int decode_color(const unsigned char *str, int slen, color_T *color);
/** Returns a string containing the color info. If no 'English' name can be /** Returns a string containing the color info. If no 'English' name can be
* found the hex color (@#rrggbb) is returned in the given buffer. */ * found the hex color (@#rrggbb) is returned in the given buffer. */

View File

@ -590,7 +590,8 @@ return_error:
} while (0) } while (0)
void * void *
fastfind_search(struct fastfind_index *index, unsigned char *key, int key_len) fastfind_search(struct fastfind_index *index,
const unsigned char *key, int key_len)
{ {
struct ff_node *current; struct ff_node *current;
struct fastfind_info *info; struct fastfind_info *info;

View File

@ -49,7 +49,8 @@ struct fastfind_index *fastfind_index(struct fastfind_index *index, enum fastfin
/** Search the index for @a key with length @a key_len using the /** Search the index for @a key with length @a key_len using the
* @a index' handle created with fastfind_index(). * @a index' handle created with fastfind_index().
* @relates fastfind_index */ * @relates fastfind_index */
void *fastfind_search(struct fastfind_index *index, unsigned char *key, int key_len); void *fastfind_search(struct fastfind_index *index,
const unsigned char *key, int key_len);
/** Fastfind cleanup. It frees the given @a index. /** Fastfind cleanup. It frees the given @a index.
* Must be called once per list. * Must be called once per list.

View File

@ -17,7 +17,8 @@
int int
map_scanner_string(struct scanner *scanner, map_scanner_string(struct scanner *scanner,
unsigned char *ident, unsigned char *end, int base_type) const unsigned char *ident, const unsigned char *end,
int base_type)
{ {
const struct scanner_string_mapping *mappings = scanner->info->mappings; const struct scanner_string_mapping *mappings = scanner->info->mappings;
int length = end - ident; int length = end - ident;

View File

@ -190,7 +190,8 @@ skip_scanner_tokens(struct scanner *scanner, int skipto, int precedence);
* @relates scanner */ * @relates scanner */
int int
map_scanner_string(struct scanner *scanner, map_scanner_string(struct scanner *scanner,
unsigned char *ident, unsigned char *end, int base_type); const unsigned char *ident, const unsigned char *end,
int base_type);
#ifdef DEBUG_SCANNER #ifdef DEBUG_SCANNER
/** @relates scanner */ /** @relates scanner */