mirror of
https://github.com/MidnightCommander/mc
synced 2025-03-02 22:21:39 +03:00
* util.c (list_append_unique): New function - add text to GList
and remove duplicates. * main.c (directory_history_add): Use list_append_unique(). * widget.c (push_history): Likewise.
This commit is contained in:
parent
89e5cc319e
commit
738e33006b
@ -1,5 +1,10 @@
|
||||
2003-02-18 Pavel Roskin <proski@gnu.org>
|
||||
|
||||
* util.c (list_append_unique): New function - add text to GList
|
||||
and remove duplicates.
|
||||
* main.c (directory_history_add): Use list_append_unique().
|
||||
* widget.c (push_history): Likewise.
|
||||
|
||||
* panel.h: Convert directory history to GList.
|
||||
* widget.h: Convert input history to GList.
|
||||
Adjust all dependencies.
|
||||
|
@ -697,7 +697,7 @@ directory_history_add (struct WPanel *panel, char *s)
|
||||
text = g_strdup (s);
|
||||
strip_password (s, 1);
|
||||
|
||||
panel->dir_history = g_list_append (panel->dir_history, text);
|
||||
panel->dir_history = list_append_unique (panel->dir_history, text);
|
||||
}
|
||||
|
||||
/*
|
||||
|
19
src/util.c
19
src/util.c
@ -1163,6 +1163,25 @@ concat_dir_and_file (const char *dir, const char *file)
|
||||
return g_strconcat (dir, PATH_SEP_STR, file, NULL);
|
||||
}
|
||||
|
||||
|
||||
/* Append text to GList, remove all entries with the same text */
|
||||
GList *
|
||||
list_append_unique (GList *list, char *text)
|
||||
{
|
||||
GList *link, *newlink;
|
||||
|
||||
link = g_list_first (list);
|
||||
while (link) {
|
||||
newlink = g_list_next (link);
|
||||
if (!strcmp ((char *) link->data, text))
|
||||
list = g_list_remove_link (list, link);
|
||||
link = newlink;
|
||||
}
|
||||
|
||||
return g_list_append (list, text);
|
||||
}
|
||||
|
||||
|
||||
/* Following code heavily borrows from libiberty, mkstemps.c */
|
||||
|
||||
/* Number of attempts to create a temporary file */
|
||||
|
@ -125,6 +125,7 @@ void execute_hooks (Hook *hook_list);
|
||||
void delete_hook (Hook **hook_list, void (*hook_fn)(void *));
|
||||
int hook_present (Hook *hook_list, void (*hook_fn)(void *));
|
||||
|
||||
GList *list_append_unique (GList *list, char *text);
|
||||
|
||||
/* Position saving and restoring */
|
||||
|
||||
|
@ -1079,7 +1079,7 @@ push_history (WInput *in, char *text)
|
||||
strip_password (t, 1);
|
||||
}
|
||||
|
||||
in->history = g_list_append (in->history, t);
|
||||
in->history = list_append_unique (in->history, t);
|
||||
in->need_push = 0;
|
||||
|
||||
return 2;
|
||||
|
Loading…
x
Reference in New Issue
Block a user