summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-07-23 12:06:43 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2012-07-23 12:06:43 +0100
commit26a92340e2f6b14fccc4fc28da35096b6eb7fbb1 (patch)
treecdd4a14be51ada0081873cd298f62b47250f2a17
parent6bbe68823c068c42d7a2d72a3cedc06603c570ed (diff)
downloadnetsurf-26a92340e2f6b14fccc4fc28da35096b6eb7fbb1.tar.gz
netsurf-26a92340e2f6b14fccc4fc28da35096b6eb7fbb1.tar.bz2
Compare interns instead of strings in html_forms.c
-rw-r--r--render/html_forms.c70
-rw-r--r--utils/corestrings.c41
-rw-r--r--utils/corestrings.h11
3 files changed, 85 insertions, 37 deletions
diff --git a/render/html_forms.c b/render/html_forms.c
index 586bda78b..9ae8138d6 100644
--- a/render/html_forms.c
+++ b/render/html_forms.c
@@ -40,19 +40,24 @@ parse_form_element(const char *docenc, dom_node *node)
struct form * ret = NULL;
/* Retrieve the attributes from the node */
- if (dom_html_form_element_get_action(formele, &ds_action) != DOM_NO_ERR)
+ if (dom_html_form_element_get_action(formele,
+ &ds_action) != DOM_NO_ERR)
goto out;
- if (dom_html_form_element_get_accept_charset(formele, &ds_charset) != DOM_NO_ERR)
+ if (dom_html_form_element_get_accept_charset(formele,
+ &ds_charset) != DOM_NO_ERR)
goto out;
- if (dom_html_form_element_get_target(formele, &ds_target) != DOM_NO_ERR)
+ if (dom_html_form_element_get_target(formele,
+ &ds_target) != DOM_NO_ERR)
goto out;
- if (dom_html_form_element_get_method(formele, &ds_method) != DOM_NO_ERR)
+ if (dom_html_form_element_get_method(formele,
+ &ds_method) != DOM_NO_ERR)
goto out;
- if (dom_html_form_element_get_enctype(formele, &ds_enctype) != DOM_NO_ERR)
+ if (dom_html_form_element_get_enctype(formele,
+ &ds_enctype) != DOM_NO_ERR)
goto out;
/* Extract the plain attributes ready for use. We have to do this
@@ -74,13 +79,13 @@ parse_form_element(const char *docenc, dom_node *node)
/* Determine the method */
method = method_GET;
if (ds_method != NULL) {
- if (strncasecmp("post", dom_string_data(ds_method),
- dom_string_byte_length(ds_method)) == 0) {
+ if (dom_string_caseless_lwc_isequal(ds_method,
+ corestring_lwc_post)) {
method = method_POST_URLENC;
if (ds_enctype != NULL) {
- if (strncasecmp("multipart/form-data",
- dom_string_data(ds_enctype),
- dom_string_byte_length(ds_enctype)) == 0) {
+ if (dom_string_caseless_lwc_isequal(ds_enctype,
+ corestring_lwc_multipart_form_data)) {
+
method = method_POST_MULTIPART;
}
}
@@ -180,7 +185,6 @@ parse_button_element(struct form *forms, dom_html_button_element *button)
dom_string *ds_type = NULL;
dom_string *ds_value = NULL;
dom_string *ds_name = NULL;
- char *type = NULL;
err = dom_html_button_element_get_form(button, &form);
if (err != DOM_NO_ERR)
@@ -193,11 +197,11 @@ parse_button_element(struct form *forms, dom_html_button_element *button)
if (ds_type == NULL) {
control = form_new_control(button, GADGET_SUBMIT);
} else {
- type = strndup(dom_string_data(ds_type),
- dom_string_byte_length(ds_type));
- if (strcasecmp(type, "submit") == 0) {
+ if (dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_submit)) {
control = form_new_control(button, GADGET_SUBMIT);
- } else if (strcasecmp(type, "reset") == 0) {
+ } else if (dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_reset)) {
control = form_new_control(button, GADGET_RESET);
} else {
control = form_new_control(button, GADGET_BUTTON);
@@ -250,8 +254,6 @@ out:
dom_string_unref(ds_value);
if (ds_name != NULL)
dom_string_unref(ds_name);
- if (type != NULL)
- free(type);
return control;
}
@@ -265,7 +267,6 @@ parse_input_element(struct form *forms, dom_html_input_element *input)
dom_string *ds_name = NULL;
dom_string *ds_value = NULL;
- char *type = NULL;
char *name = NULL;
if (dom_html_input_element_get_form(input, &form) != DOM_NO_ERR)
@@ -274,10 +275,6 @@ parse_input_element(struct form *forms, dom_html_input_element *input)
if (dom_html_input_element_get_type(input, &ds_type) != DOM_NO_ERR)
goto out;
- if (ds_type != NULL)
- type = strndup(dom_string_data(ds_type),
- dom_string_byte_length(ds_type));
-
if (dom_html_input_element_get_name(input, &ds_name) != DOM_NO_ERR)
goto out;
@@ -285,23 +282,32 @@ parse_input_element(struct form *forms, dom_html_input_element *input)
name = strndup(dom_string_data(ds_name),
dom_string_byte_length(ds_name));
- if (type != NULL && strcasecmp(type, "password") == 0) {
+ if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_password)) {
control = form_new_control(input, GADGET_PASSWORD);
- } else if (type != NULL && strcasecmp(type, "file") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_file)) {
control = form_new_control(input, GADGET_FILE);
- } else if (type != NULL && strcasecmp(type, "hidden") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_hidden)) {
control = form_new_control(input, GADGET_HIDDEN);
- } else if (type != NULL && strcasecmp(type, "checkbox") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_checkbox)) {
control = form_new_control(input, GADGET_CHECKBOX);
- } else if (type != NULL && strcasecmp(type, "radio") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_radio)) {
control = form_new_control(input, GADGET_RADIO);
- } else if (type != NULL && strcasecmp(type, "submit") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_submit)) {
control = form_new_control(input, GADGET_SUBMIT);
- } else if (type != NULL && strcasecmp(type, "reset") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_reset)) {
control = form_new_control(input, GADGET_RESET);
- } else if (type != NULL && strcasecmp(type, "button") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_button)) {
control = form_new_control(input, GADGET_BUTTON);
- } else if (type != NULL && strcasecmp(type, "image") == 0) {
+ } else if (ds_type != NULL && dom_string_caseless_lwc_isequal(ds_type,
+ corestring_lwc_image)) {
control = form_new_control(input, GADGET_IMAGE);
} else {
control = form_new_control(input, GADGET_TEXTBOX);
@@ -384,8 +390,6 @@ out:
if (ds_value != NULL)
dom_string_unref(ds_value);
- if (type != NULL)
- free(type);
if (name != NULL)
free(name);
diff --git a/utils/corestrings.c b/utils/corestrings.c
index 5def4e07f..f460753e0 100644
--- a/utils/corestrings.c
+++ b/utils/corestrings.c
@@ -38,11 +38,13 @@ lwc_string *corestring_lwc_bottom;
lwc_string *corestring_lwc_button;
lwc_string *corestring_lwc_caption;
lwc_string *corestring_lwc_center;
+lwc_string *corestring_lwc_checkbox;
lwc_string *corestring_lwc_circle;
lwc_string *corestring_lwc_col;
lwc_string *corestring_lwc_default;
lwc_string *corestring_lwc_div;
lwc_string *corestring_lwc_embed;
+lwc_string *corestring_lwc_file;
lwc_string *corestring_lwc_font;
lwc_string *corestring_lwc_h1;
lwc_string *corestring_lwc_h2;
@@ -51,33 +53,40 @@ lwc_string *corestring_lwc_h4;
lwc_string *corestring_lwc_h5;
lwc_string *corestring_lwc_h6;
lwc_string *corestring_lwc_head;
+lwc_string *corestring_lwc_hidden;
lwc_string *corestring_lwc_hr;
lwc_string *corestring_lwc_html;
lwc_string *corestring_lwc_iframe;
+lwc_string *corestring_lwc_image;
lwc_string *corestring_lwc_img;
lwc_string *corestring_lwc_input;
lwc_string *corestring_lwc_justify;
lwc_string *corestring_lwc_left;
lwc_string *corestring_lwc_link;
lwc_string *corestring_lwc_middle;
+lwc_string *corestring_lwc_multipart_form_data;
lwc_string *corestring_lwc_object;
lwc_string *corestring_lwc_p;
lwc_string *corestring_lwc_password;
lwc_string *corestring_lwc_poly;
lwc_string *corestring_lwc_polygon;
+lwc_string *corestring_lwc_post;
+lwc_string *corestring_lwc_radio;
lwc_string *corestring_lwc_rect;
lwc_string *corestring_lwc_rectangle;
+lwc_string *corestring_lwc_reset;
lwc_string *corestring_lwc_right;
+lwc_string *corestring_lwc_submit;
lwc_string *corestring_lwc_table;
lwc_string *corestring_lwc_tbody;
lwc_string *corestring_lwc_td;
lwc_string *corestring_lwc_text;
lwc_string *corestring_lwc_textarea;
lwc_string *corestring_lwc_texttop;
-lwc_string *corestring_lwc_title;
lwc_string *corestring_lwc_tfoot;
lwc_string *corestring_lwc_th;
lwc_string *corestring_lwc_thead;
+lwc_string *corestring_lwc_title;
lwc_string *corestring_lwc_top;
lwc_string *corestring_lwc_tr;
lwc_string *corestring_lwc__blank;
@@ -152,11 +161,13 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(button);
CSS_LWC_STRING_UNREF(caption);
CSS_LWC_STRING_UNREF(center);
+ CSS_LWC_STRING_UNREF(checkbox);
CSS_LWC_STRING_UNREF(circle);
CSS_LWC_STRING_UNREF(col);
CSS_LWC_STRING_UNREF(default);
CSS_LWC_STRING_UNREF(div);
CSS_LWC_STRING_UNREF(embed);
+ CSS_LWC_STRING_UNREF(file);
CSS_LWC_STRING_UNREF(font);
CSS_LWC_STRING_UNREF(h1);
CSS_LWC_STRING_UNREF(h2);
@@ -165,39 +176,47 @@ void corestrings_fini(void)
CSS_LWC_STRING_UNREF(h5);
CSS_LWC_STRING_UNREF(h6);
CSS_LWC_STRING_UNREF(head);
+ CSS_LWC_STRING_UNREF(hidden);
CSS_LWC_STRING_UNREF(hr);
CSS_LWC_STRING_UNREF(html);
CSS_LWC_STRING_UNREF(iframe);
+ CSS_LWC_STRING_UNREF(image);
CSS_LWC_STRING_UNREF(img);
CSS_LWC_STRING_UNREF(input);
CSS_LWC_STRING_UNREF(justify);
CSS_LWC_STRING_UNREF(left);
CSS_LWC_STRING_UNREF(link);
CSS_LWC_STRING_UNREF(middle);
+ CSS_LWC_STRING_UNREF(multipart_form_data);
CSS_LWC_STRING_UNREF(object);
CSS_LWC_STRING_UNREF(p);
CSS_LWC_STRING_UNREF(password);
CSS_LWC_STRING_UNREF(poly);
CSS_LWC_STRING_UNREF(polygon);
+ CSS_LWC_STRING_UNREF(post);
+ CSS_LWC_STRING_UNREF(radio);
CSS_LWC_STRING_UNREF(rect);
CSS_LWC_STRING_UNREF(rectangle);
+ CSS_LWC_STRING_UNREF(reset);
CSS_LWC_STRING_UNREF(right);
+ CSS_LWC_STRING_UNREF(submit);
CSS_LWC_STRING_UNREF(table);
CSS_LWC_STRING_UNREF(tbody);
CSS_LWC_STRING_UNREF(td);
CSS_LWC_STRING_UNREF(text);
CSS_LWC_STRING_UNREF(textarea);
CSS_LWC_STRING_UNREF(texttop);
- CSS_LWC_STRING_UNREF(title);
CSS_LWC_STRING_UNREF(tfoot);
CSS_LWC_STRING_UNREF(th);
CSS_LWC_STRING_UNREF(thead);
+ CSS_LWC_STRING_UNREF(title);
CSS_LWC_STRING_UNREF(top);
CSS_LWC_STRING_UNREF(tr);
CSS_LWC_STRING_UNREF(_blank);
CSS_LWC_STRING_UNREF(_parent);
CSS_LWC_STRING_UNREF(_self);
CSS_LWC_STRING_UNREF(_top);
+
#undef CSS_LWC_STRING_UNREF
#define CSS_DOM_STRING_UNREF(NAME) \
@@ -285,11 +304,13 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(button);
CSS_LWC_STRING_INTERN(caption);
CSS_LWC_STRING_INTERN(center);
+ CSS_LWC_STRING_INTERN(checkbox);
CSS_LWC_STRING_INTERN(circle);
CSS_LWC_STRING_INTERN(col);
CSS_LWC_STRING_INTERN(default);
CSS_LWC_STRING_INTERN(div);
CSS_LWC_STRING_INTERN(embed);
+ CSS_LWC_STRING_INTERN(file);
CSS_LWC_STRING_INTERN(font);
CSS_LWC_STRING_INTERN(h1);
CSS_LWC_STRING_INTERN(h2);
@@ -298,9 +319,11 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(h5);
CSS_LWC_STRING_INTERN(h6);
CSS_LWC_STRING_INTERN(head);
+ CSS_LWC_STRING_INTERN(hidden);
CSS_LWC_STRING_INTERN(hr);
CSS_LWC_STRING_INTERN(html);
CSS_LWC_STRING_INTERN(iframe);
+ CSS_LWC_STRING_INTERN(image);
CSS_LWC_STRING_INTERN(img);
CSS_LWC_STRING_INTERN(input);
CSS_LWC_STRING_INTERN(justify);
@@ -312,19 +335,23 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(password);
CSS_LWC_STRING_INTERN(poly);
CSS_LWC_STRING_INTERN(polygon);
+ CSS_LWC_STRING_INTERN(post);
+ CSS_LWC_STRING_INTERN(radio);
CSS_LWC_STRING_INTERN(rect);
CSS_LWC_STRING_INTERN(rectangle);
+ CSS_LWC_STRING_INTERN(reset);
CSS_LWC_STRING_INTERN(right);
+ CSS_LWC_STRING_INTERN(submit);
CSS_LWC_STRING_INTERN(table);
CSS_LWC_STRING_INTERN(tbody);
CSS_LWC_STRING_INTERN(td);
CSS_LWC_STRING_INTERN(text);
CSS_LWC_STRING_INTERN(textarea);
CSS_LWC_STRING_INTERN(texttop);
- CSS_LWC_STRING_INTERN(title);
CSS_LWC_STRING_INTERN(tfoot);
CSS_LWC_STRING_INTERN(th);
CSS_LWC_STRING_INTERN(thead);
+ CSS_LWC_STRING_INTERN(title);
CSS_LWC_STRING_INTERN(top);
CSS_LWC_STRING_INTERN(tr);
CSS_LWC_STRING_INTERN(_blank);
@@ -333,6 +360,14 @@ nserror corestrings_init(void)
CSS_LWC_STRING_INTERN(_top);
#undef CSS_LWC_STRING_INTERN
+ lerror = lwc_intern_string("multipart/form-data",
+ SLEN("multipart/form-data"),
+ &corestring_lwc_multipart_form_data);
+ if ((lerror != lwc_error_ok) ||
+ (corestring_lwc_multipart_form_data == NULL))
+ goto error;
+
+
#define CSS_DOM_STRING_INTERN(NAME) \
do { \
exc = dom_string_create_interned( \
diff --git a/utils/corestrings.h b/utils/corestrings.h
index 19c264006..4eb73b65b 100644
--- a/utils/corestrings.h
+++ b/utils/corestrings.h
@@ -42,11 +42,13 @@ extern lwc_string *corestring_lwc_bottom;
extern lwc_string *corestring_lwc_button;
extern lwc_string *corestring_lwc_caption;
extern lwc_string *corestring_lwc_center;
+extern lwc_string *corestring_lwc_checkbox;
extern lwc_string *corestring_lwc_circle;
extern lwc_string *corestring_lwc_col;
extern lwc_string *corestring_lwc_default;
extern lwc_string *corestring_lwc_div;
extern lwc_string *corestring_lwc_embed;
+extern lwc_string *corestring_lwc_file;
extern lwc_string *corestring_lwc_font;
extern lwc_string *corestring_lwc_h1;
extern lwc_string *corestring_lwc_h2;
@@ -55,33 +57,40 @@ extern lwc_string *corestring_lwc_h4;
extern lwc_string *corestring_lwc_h5;
extern lwc_string *corestring_lwc_h6;
extern lwc_string *corestring_lwc_head;
+extern lwc_string *corestring_lwc_hidden;
extern lwc_string *corestring_lwc_hr;
extern lwc_string *corestring_lwc_html;
extern lwc_string *corestring_lwc_iframe;
+extern lwc_string *corestring_lwc_image;
extern lwc_string *corestring_lwc_img;
extern lwc_string *corestring_lwc_input;
extern lwc_string *corestring_lwc_justify;
extern lwc_string *corestring_lwc_left;
extern lwc_string *corestring_lwc_link;
extern lwc_string *corestring_lwc_middle;
+extern lwc_string *corestring_lwc_multipart_form_data;
extern lwc_string *corestring_lwc_object;
extern lwc_string *corestring_lwc_p;
extern lwc_string *corestring_lwc_password;
extern lwc_string *corestring_lwc_poly;
extern lwc_string *corestring_lwc_polygon;
+extern lwc_string *corestring_lwc_post;
+extern lwc_string *corestring_lwc_radio;
extern lwc_string *corestring_lwc_rect;
extern lwc_string *corestring_lwc_rectangle;
+extern lwc_string *corestring_lwc_reset;
extern lwc_string *corestring_lwc_right;
+extern lwc_string *corestring_lwc_submit;
extern lwc_string *corestring_lwc_table;
extern lwc_string *corestring_lwc_tbody;
extern lwc_string *corestring_lwc_td;
extern lwc_string *corestring_lwc_text;
extern lwc_string *corestring_lwc_textarea;
extern lwc_string *corestring_lwc_texttop;
-extern lwc_string *corestring_lwc_title;
extern lwc_string *corestring_lwc_tfoot;
extern lwc_string *corestring_lwc_th;
extern lwc_string *corestring_lwc_thead;
+extern lwc_string *corestring_lwc_title;
extern lwc_string *corestring_lwc_top;
extern lwc_string *corestring_lwc_tr;
extern lwc_string *corestring_lwc__blank;