summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/fetch.c5
-rw-r--r--css/css.c8
-rw-r--r--css/css.h2
-rw-r--r--render/box.c4
-rw-r--r--render/layout.c46
-rw-r--r--riscos/font.c4
-rw-r--r--riscos/htmlredraw.c8
-rw-r--r--utils/url.c37
8 files changed, 55 insertions, 59 deletions
diff --git a/content/fetch.c b/content/fetch.c
index 1ea20a8a0..a468a05a9 100644
--- a/content/fetch.c
+++ b/content/fetch.c
@@ -863,11 +863,10 @@ bool fetch_can_fetch(const char *url)
{
unsigned int i;
const char *semi;
- unsigned int len;
+ size_t len;
curl_version_info_data *data;
- semi = strchr(url, ':');
- if (!semi)
+ if ((semi = strchr(url, ':')) == NULL)
return false;
len = semi - url;
diff --git a/css/css.c b/css/css.c
index 97779e62b..7d634c7ba 100644
--- a/css/css.c
+++ b/css/css.c
@@ -948,7 +948,7 @@ bool css_match_detail(const struct css_selector *detail,
bool match = false;
char *s = 0;
char *space, *word;
- unsigned int length;
+ size_t length;
switch (detail->type) {
case CSS_SELECTOR_ID:
@@ -2396,12 +2396,12 @@ unsigned int css_hash(const char *s, int length)
* Convert a struct css_length to pixels.
*/
-float len(struct css_length * length, struct css_style * style)
+float css_len2px(struct css_length * length, struct css_style * style)
{
assert(!((length->unit == CSS_UNIT_EM || length->unit == CSS_UNIT_EX) && style == 0));
switch (length->unit) {
- case CSS_UNIT_EM: return length->value * len(&style->font_size.value.length, 0);
- case CSS_UNIT_EX: return length->value * len(&style->font_size.value.length, 0) * 0.6;
+ case CSS_UNIT_EM: return length->value * css_len2px(&style->font_size.value.length, 0);
+ case CSS_UNIT_EX: return length->value * css_len2px(&style->font_size.value.length, 0) * 0.6;
case CSS_UNIT_PX: return length->value;
case CSS_UNIT_IN: return length->value * 90.0;
case CSS_UNIT_CM: return length->value * 35.0;
diff --git a/css/css.h b/css/css.h
index c96b2a250..41772dcab 100644
--- a/css/css.h
+++ b/css/css.h
@@ -538,6 +538,6 @@ colour named_colour(const char *name);
void css_dump_style(const struct css_style * const style);
void css_dump_stylesheet(const struct css_stylesheet * stylesheet);
-float len(struct css_length * length, struct css_style * style);
+float css_len2px(struct css_length * length, struct css_style * style);
#endif
diff --git a/render/box.c b/render/box.c
index 03f0117bf..e707e680f 100644
--- a/render/box.c
+++ b/render/box.c
@@ -124,10 +124,10 @@ static void add_option(xmlNode* n, struct form_control* current_select,
const char *text);
static void box_normalise_block(struct box *block, pool box_pool);
static void box_normalise_table(struct box *table, pool box_pool);
-void box_normalise_table_row_group(struct box *row_group,
+static void box_normalise_table_row_group(struct box *row_group,
unsigned int **row_span, unsigned int *table_columns,
pool box_pool);
-void box_normalise_table_row(struct box *row,
+static void box_normalise_table_row(struct box *row,
unsigned int **row_span, unsigned int *table_columns,
pool box_pool);
static void box_normalise_inline_container(struct box *cont, pool box_pool);
diff --git a/render/layout.c b/render/layout.c
index 5b08a11d5..f7717f0df 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -307,7 +307,7 @@ void layout_block_find_dimensions(int available_width, struct box *box)
/* calculate box width */
switch (style->width.width) {
case CSS_WIDTH_LENGTH:
- width = len(&style->width.value.length, style);
+ width = (int)css_len2px(&style->width.value.length, style);
break;
case CSS_WIDTH_PERCENT:
width = available_width * style->width.value.percent / 100;
@@ -321,7 +321,7 @@ void layout_block_find_dimensions(int available_width, struct box *box)
/* height */
switch (style->height.height) {
case CSS_HEIGHT_LENGTH:
- box->height = len(&style->height.length, style);
+ box->height = (int)css_len2px(&style->height.length, style);
break;
case CSS_HEIGHT_AUTO:
default:
@@ -429,7 +429,7 @@ void layout_float_find_dimensions(int available_width,
/* calculate box width */
switch (style->width.width) {
case CSS_WIDTH_LENGTH:
- box->width = len(&style->width.value.length, style);
+ box->width = (int)css_len2px(&style->width.value.length, style);
break;
case CSS_WIDTH_PERCENT:
box->width = available_width *
@@ -444,7 +444,7 @@ void layout_float_find_dimensions(int available_width,
/* height */
switch (style->height.height) {
case CSS_HEIGHT_LENGTH:
- box->height = len(&style->height.length, style);
+ box->height = (int)css_len2px(&style->height.length, style);
break;
case CSS_HEIGHT_AUTO:
default:
@@ -495,7 +495,7 @@ void layout_find_dimensions(int available_width,
for (i = 0; i != 4; i++) {
switch (style->margin[i].margin) {
case CSS_MARGIN_LENGTH:
- margin[i] = len(&style->margin[i].value.length, style);
+ margin[i] = (int)css_len2px(&style->margin[i].value.length, style);
break;
case CSS_MARGIN_PERCENT:
margin[i] = available_width *
@@ -514,7 +514,7 @@ void layout_find_dimensions(int available_width,
break;
case CSS_PADDING_LENGTH:
default:
- padding[i] = len(&style->padding[i].value.length, style);
+ padding[i] = (int)css_len2px(&style->padding[i].value.length, style);
break;
}
@@ -523,7 +523,7 @@ void layout_find_dimensions(int available_width,
/* spec unclear: following Mozilla */
border[i] = 0;
else
- border[i] = len(&style->border[i].width.value, style);
+ border[i] = (int)css_len2px(&style->border[i].width.value, style);
}
}
@@ -648,13 +648,13 @@ int line_height(struct css_style *style)
style->line_height.size == CSS_LINE_HEIGHT_PERCENT);
/* take account of minimum font size option */
- if ((font_len = len(&style->font_size.value.length, 0)) <
+ if ((font_len = css_len2px(&style->font_size.value.length, 0)) <
((float)(option_font_min_size * 9.0 / 72.0)))
font_len = (float)(option_font_min_size * 9.0 / 72.0);
switch (style->line_height.size) {
case CSS_LINE_HEIGHT_LENGTH:
- return len(&style->line_height.value.length, style);
+ return (int)css_len2px(&style->line_height.value.length, style);
case CSS_LINE_HEIGHT_ABSOLUTE:
return style->line_height.value.absolute * font_len;
@@ -766,7 +766,7 @@ bool layout_line(struct box *first, int width, int *y,
/* calculate box width */
switch (b->style->width.width) {
case CSS_WIDTH_LENGTH:
- b->width = len(&b->style->width.value.length,
+ b->width = (int)css_len2px(&b->style->width.value.length,
b->style);
break;
case CSS_WIDTH_PERCENT:
@@ -783,7 +783,7 @@ bool layout_line(struct box *first, int width, int *y,
/* height */
switch (b->style->height.height) {
case CSS_HEIGHT_LENGTH:
- b->height = len(&b->style->height.length,
+ b->height = (int)css_len2px(&b->style->height.length,
b->style);
break;
case CSS_HEIGHT_AUTO:
@@ -1076,7 +1076,7 @@ int layout_text_indent(struct css_style *style, int width)
{
switch (style->text_indent.size) {
case CSS_TEXT_INDENT_LENGTH:
- return len(&style->text_indent.value.length, style);
+ return (int)css_len2px(&style->text_indent.value.length, style);
case CSS_TEXT_INDENT_PERCENT:
return width * style->text_indent.value.percent / 100;
default:
@@ -1205,7 +1205,7 @@ bool layout_table(struct box *table, int available_width,
switch (style->width.width) {
case CSS_WIDTH_LENGTH:
- table_width = len(&style->width.value.length, style);
+ table_width = (int)css_len2px(&style->width.value.length, style);
auto_width = table_width;
break;
case CSS_WIDTH_PERCENT:
@@ -1376,7 +1376,7 @@ bool layout_table(struct box *table, int available_width,
/* some sites use height="1" or similar to attempt
* to make cells as small as possible, so treat
* it as a minimum */
- int h = len(&c->style->height.length, c->style);
+ int h = (int)css_len2px(&c->style->height.length, c->style);
if (c->height < h)
c->height = h;
}
@@ -1493,17 +1493,17 @@ bool calculate_widths(struct box *box)
if (style) {
for (side = 1; side != 5; side += 2) { /* RIGHT, LEFT */
if (style->padding[side].padding == CSS_PADDING_LENGTH)
- extra_fixed += len(&style->padding[side].value.length,
+ extra_fixed += (int)css_len2px(&style->padding[side].value.length,
style);
else if (style->padding[side].padding == CSS_PADDING_PERCENT)
extra_frac += style->padding[side].value.percent * 0.01;
if (style->border[side].style != CSS_BORDER_STYLE_NONE)
- extra_fixed += len(&style->border[side].width.value,
+ extra_fixed += (int)css_len2px(&style->border[side].width.value,
style);
if (style->margin[side].margin == CSS_MARGIN_LENGTH)
- extra_fixed += len(&style->margin[side].value.length,
+ extra_fixed += (int)css_len2px(&style->margin[side].value.length,
style);
else if (style->margin[side].margin == CSS_MARGIN_PERCENT)
extra_frac += style->margin[side].value.percent * 0.01;
@@ -1545,7 +1545,7 @@ bool calculate_block_widths(struct box *box, int *min, int *max,
}
if (box->style->width.width == CSS_WIDTH_LENGTH) {
- width = len(&box->style->width.value.length, box->style);
+ width = (int)css_len2px(&box->style->width.value.length, box->style);
if (*min < width) *min = width;
if (*max < width) *max = width;
if (max_sum) *max_sum += width;
@@ -1555,7 +1555,7 @@ bool calculate_block_widths(struct box *box, int *min, int *max,
width = box->object->width;
else
width = box->object->width *
- (float) len(&box->style->height.length,
+ css_len2px(&box->style->height.length,
box->style) / box->object->height;
if (*min < width) *min = width;
if (*max < width) *max = width;
@@ -1640,7 +1640,7 @@ void calculate_inline_replaced_widths(struct box *box, int *min,
int width;
if (box->style->width.width == CSS_WIDTH_LENGTH) {
- box->width = len(&box->style->width.value.length, box->style);
+ box->width = (int)css_len2px(&box->style->width.value.length, box->style);
*line_max += box->width;
if (*min < box->width)
*min = box->width;
@@ -1649,7 +1649,7 @@ void calculate_inline_replaced_widths(struct box *box, int *min,
width = box->object->width;
else
width = box->object->width *
- (float) len(&box->style->height.length,
+ css_len2px(&box->style->height.length,
box->style) / box->object->height;
if (*min < width) *min = width;
if (*max < width) *max = width;
@@ -1756,7 +1756,7 @@ bool calculate_table_widths(struct box *table)
cell->style->width.width ==
CSS_WIDTH_LENGTH) {
col[i].type = COLUMN_WIDTH_FIXED;
- col[i].width = len(&cell->style->
+ col[i].width = (int)css_len2px(&cell->style->
width.value.length,
cell->style);
continue;
@@ -1812,7 +1812,7 @@ bool calculate_table_widths(struct box *table)
}
if (cell->style->width.width == CSS_WIDTH_LENGTH) {
- width = len(&cell->style->width.value.length,
+ width = (int)css_len2px(&cell->style->width.value.length,
cell->style);
if (cell_min < width)
cell_min = width;
diff --git a/riscos/font.c b/riscos/font.c
index ef2ecb5a6..c56c85ad7 100644
--- a/riscos/font.c
+++ b/riscos/font.c
@@ -208,8 +208,8 @@ struct font_data *nsfont_open(struct font_set *set, struct css_style *style)
assert(style != NULL);
if (style->font_size.size == CSS_FONT_SIZE_LENGTH)
- size = len(&style->font_size.value.length, style) *
- 72.0 / 90.0 * 16;
+ size = (int)(css_len2px(&style->font_size.value.length,
+ style) * 72.0 / 90.0 * 16.);
if (size < option_font_min_size * 1.6)
size = option_font_min_size * 1.6;
if (1600 < size)
diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c
index d9060563d..a3ecce1c6 100644
--- a/riscos/htmlredraw.c
+++ b/riscos/htmlredraw.c
@@ -954,7 +954,7 @@ bool html_redraw_background(int xi, int yi, int width, int height,
x += ((state.visible.x1 - state.visible.x0) - (image_size.x * 2)) * multiplier;
break;
case CSS_BACKGROUND_POSITION_LENGTH:
- x += 2 * len(&box->style->background_position.horz.value.length, box->style) * scale;
+ x += (int)(2. * css_len2px(&box->style->background_position.horz.value.length, box->style) * scale);
break;
default:
break;
@@ -966,7 +966,7 @@ bool html_redraw_background(int xi, int yi, int width, int height,
y -= ((state.visible.y1 - state.visible.y0 - toolbar_height) - (image_size.y * 2)) * multiplier;
break;
case CSS_BACKGROUND_POSITION_LENGTH:
- y -= 2 * len(&box->style->background_position.vert.value.length, box->style) * scale;
+ y -= (int)(2. * css_len2px(&box->style->background_position.vert.value.length, box->style) * scale);
break;
default:
break;
@@ -984,7 +984,7 @@ bool html_redraw_background(int xi, int yi, int width, int height,
x += 2 * (box->width + box->padding[LEFT] + box->padding[RIGHT] - image_size.x) * multiplier;
break;
case CSS_BACKGROUND_POSITION_LENGTH:
- x += 2 * len(&box->style->background_position.horz.value.length, box->style) * scale;
+ x += (int)(2. * css_len2px(&box->style->background_position.horz.value.length, box->style) * scale);
break;
default:
break;
@@ -996,7 +996,7 @@ bool html_redraw_background(int xi, int yi, int width, int height,
y -= 2 * (box->height + box->padding[TOP] + box->padding[BOTTOM] - image_size.y) * multiplier;
break;
case CSS_BACKGROUND_POSITION_LENGTH:
- y -= 2 * len(&box->style->background_position.vert.value.length, box->style) * scale;
+ y -= (int)(2. * css_len2px(&box->style->background_position.vert.value.length, box->style) * scale);
break;
default:
break;
diff --git a/utils/url.c b/utils/url.c
index b1da7ce28..1ea8a7c72 100644
--- a/utils/url.c
+++ b/utils/url.c
@@ -62,14 +62,13 @@ url_func_result url_normalize(const char *url, char **result)
char c;
int m;
int i;
- int len;
+ size_t len;
bool http = false;
regmatch_t match[10];
- (*result) = 0;
+ *result = NULL;
- m = regexec(&url_re, url, 10, match, 0);
- if (m) {
+ if ((m = regexec(&url_re, url, 10, match, 0)) != NULL) {
LOG(("url '%s' failed to match regex", url));
return URL_FUNC_FAILED;
}
@@ -79,27 +78,24 @@ url_func_result url_normalize(const char *url, char **result)
if (match[1].rm_so == -1) {
/* scheme missing: add http:// and reparse */
LOG(("scheme missing: using http"));
- (*result) = malloc(strlen(url) + 13);
- if (!(*result)) {
+ if ((*result = malloc(len + 13)) == NULL) {
LOG(("malloc failed"));
return URL_FUNC_NOMEM;
}
- strcpy((*result), "http://");
- strcpy((*result) + 7, url);
- m = regexec(&url_re, (*result), 10, match, 0);
- if (m) {
+ strcpy(*result, "http://");
+ strcpy(*result + sizeof("http://")-1, url);
+ if ((m = regexec(&url_re, *result, 10, match, 0)) != NULL) {
LOG(("url '%s' failed to match regex", (*result)));
- free((*result));
+ free(*result);
return URL_FUNC_FAILED;
}
- len += 7;
+ len += sizeof("http://")-1;
} else {
- (*result) = malloc(len + 6);
- if (!(*result)) {
+ if ((*result = malloc(len + 6)) == NULL) {
LOG(("strdup failed"));
return URL_FUNC_FAILED;
}
- strcpy((*result), url);
+ strcpy(*result, url);
}
/*for (unsigned int i = 0; i != 10; i++) {
@@ -115,9 +111,11 @@ url_func_result url_normalize(const char *url, char **result)
if (match[2].rm_so != -1) {
for (i = match[2].rm_so; i != match[2].rm_eo; i++)
(*result)[i] = tolower((*result)[i]);
- if (match[2].rm_eo == 4 && (*result)[0] == 'h' &&
- (*result)[1] == 't' && (*result)[2] == 't' &&
- (*result)[3] == 'p')
+ if (match[2].rm_eo == 4
+ && (*result)[0] == 'h'
+ && (*result)[1] == 't'
+ && (*result)[2] == 't'
+ && (*result)[3] == 'p')
http = true;
}
@@ -174,8 +172,7 @@ url_func_result url_normalize(const char *url, char **result)
else
continue;
- if (m <= 0x20 || strchr(";/?:@&=+$," "<>#%\""
- "{}|\\^[]`", m)) {
+ if (m <= 0x20 || strchr(";/?:@&=+$," "<>#%\"{}|\\^[]`", m)) {
i += 2;
continue;
}