viking

webkit based web browser for Enlightenment
Log | Files | Refs | LICENSE

commit 655f746c76840a718b0c6cc5176f72e87c4dbf08
parent 5d5b90082829e3ce1072250355588739e38be346
Author: Kyle Milz <kmilz@ucalgary.ca>
Date:   Sat, 13 Oct 2012 20:37:42 -0600

convert process_line to use stringshares

Diffstat:
Msrc/utilities.c | 32++++++++++++++------------------
Msrc/utilities.h | 4++--
2 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/src/utilities.c b/src/utilities.c @@ -83,24 +83,21 @@ search_word(int whichword) return c; } -void save_command_history(char *line, void *data) +void save_command_history(Eina_Stringshare *line, Window_Data *wd) { - char *c = line; - Window_Data *wd = data; + const char *c = line; while (isspace(*c) && *c) c++; if (!strlen(c)) return; - // if (COMMANDHISTSIZE <= g_list_length(commandhistory)) { if (COMMANDHISTSIZE <= eina_list_count(wd->commandhistory)) { /* if list is too long - remove items from beginning */ - // commandhistory = g_list_delete_link(commandhistory, g_list_first(commandhistory)); wd->commandhistory = eina_list_remove(wd->commandhistory, eina_list_nth(wd->commandhistory, 0)); } - // commandhistory = g_list_append(commandhistory, g_strdup(c)); - wd->commandhistory = eina_list_append(wd->commandhistory, strdup(c)); + + wd->commandhistory = eina_list_append(wd->commandhistory, c); } /* @@ -265,7 +262,8 @@ parse_colour(char *color) { Eina_Bool process_line_arg(const Arg *arg, void *data) { - return process_line(arg->s, data); + Window_Data *wd = data; + return process_line(arg->s, wd); } #if 0 @@ -753,12 +751,11 @@ char *find_uri_for_searchengine(const char *handle) } Eina_Bool -process_line(const char *line, void *data) +process_line(const char *line, Window_Data *wd) { - const char *c = line; - char *command_hist; + Eina_Stringshare *cmd_hist; int i; - Window_Data *wd = data; + const char *c = line; size_t len, length = strlen(line); Eina_Bool found = EINA_FALSE, success = EINA_FALSE; Arg a; @@ -769,7 +766,7 @@ process_line(const char *line, void *data) if (c[0] == '\0') return EINA_TRUE; - command_hist = strdup(c); + cmd_hist = eina_stringshare_add(c); for (i = 0; i < LENGTH(commands); i++) { if (commands[i].cmd == NULL) break; @@ -785,19 +782,18 @@ process_line(const char *line, void *data) a.s = strdup(commands[i].arg.s); else a.s = NULL; - success = commands[i].func(&a, data); + success = commands[i].func(&a, wd); free(a.s); break; } } - save_command_history(command_hist, data); - free(command_hist); + save_command_history(cmd_hist, wd); if (!found) { a.i = Error; a.s = strdup_printf("Not a browser command: %s", c); - echo(&a, data); + echo(&a, wd); free(a.s); } else if (!success) { a.i = Error; @@ -808,7 +804,7 @@ process_line(const char *line, void *data) } else { a.s = strdup_printf("Unknown error. Please file a bug report!"); } - echo(&a, data); + echo(&a, wd); free(a.s); } return success; diff --git a/src/utilities.h b/src/utilities.h @@ -12,7 +12,7 @@ char *strdup_printf(const char *, ...); enum ConfigFileError read_rcfile(const char *config, void *); -void save_command_history(char *line, void *); +void save_command_history(const char*, Window_Data*); // Eina_Bool process_save_qmark(const char *bm, WebKitWebView *webview); KeyList *make_keyslist(void); Eina_Bool parse_colour(char *color); @@ -20,7 +20,7 @@ Eina_Bool mappings(const Arg *, void *); Eina_Bool process_mapping(char *keystring, int maprecord, char *cmd); Eina_Bool process_map_line(char *line); Eina_Bool changemapping(Key *search_key, int maprecord, char *cmd); -Eina_Bool process_line(const char *line, void *); +Eina_Bool process_line(const char *line, Window_Data*); Eina_Bool process_line_arg(const Arg *, void *); Eina_Bool build_taglist(const Arg *arg, FILE *f); void set_error(const char *error, void *);