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:
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 *);