# HG changeset patch # User ib # Date 1310035078 0 # Node ID 962dc701989d15a570f70d7ed53d023584e58570 # Parent 2c02269701bd3b6490a222bc6a8e1db27547a1c3 Create new file list.c for list related functions. Move gaddlist() and greplace() from interface.c to list.c. diff -r 2c02269701bd -r 962dc701989d Makefile --- a/Makefile Thu Jul 07 10:16:22 2011 +0000 +++ b/Makefile Thu Jul 07 10:37:58 2011 +0000 @@ -541,6 +541,7 @@ gui/ui/sub.c \ gui/ui/widgets.c \ gui/util/cut.c \ + gui/util/list.c \ gui/util/string.c \ gui/wm/ws.c \ gui/wm/wsxdnd.c \ diff -r 2c02269701bd -r 962dc701989d gui/interface.c --- a/gui/interface.c Thu Jul 07 10:16:22 2011 +0000 +++ b/gui/interface.c Thu Jul 07 10:37:58 2011 +0000 @@ -24,6 +24,7 @@ #include "skin/skin.h" #include "ui/gmplayer.h" #include "ui/widgets.h" +#include "util/list.h" #include "util/mem.h" #include "util/string.h" #include "wm/ws.h" @@ -77,51 +78,6 @@ static int initialized; -/** - * \brief This actually creates a new list containing only one element... - */ -void gaddlist(char ***list, const char *entry) -{ - int i; - - if (*list) { - for (i = 0; (*list)[i]; i++) - free((*list)[i]); - - free(*list); - } - - *list = malloc(2 * sizeof(char **)); - (*list)[0] = gstrdup(entry); - (*list)[1] = NULL; -} - -/** - * \brief This replaces a string starting with search by replace. - * If not found, replace is appended. - */ -static void greplace(char ***list, const char *search, const char *replace) -{ - int i = 0; - int len = (search ? strlen(search) : 0); - - if (*list) { - for (i = 0; (*list)[i]; i++) { - if (search && (strncmp((*list)[i], search, len) == 0)) { - free((*list)[i]); - (*list)[i] = gstrdup(replace); - return; - } - } - - *list = realloc(*list, (i + 2) * sizeof(char *)); - } else - *list = malloc(2 * sizeof(char *)); - - (*list)[i] = gstrdup(replace); - (*list)[i + 1] = NULL; -} - void guiInit(void) { int i; diff -r 2c02269701bd -r 962dc701989d gui/interface.h --- a/gui/interface.h Thu Jul 07 10:16:22 2011 +0000 +++ b/gui/interface.h Thu Jul 07 10:37:58 2011 +0000 @@ -211,7 +211,6 @@ extern float gtkEquChannels[6][10]; -void gaddlist(char ***list, const char *entry); void gmp_msg(int mod, int lev, const char *format, ...); void *gtkSet(int cmd, float fparam, void *vparam); void guiDone(void); diff -r 2c02269701bd -r 962dc701989d gui/ui/gtk/preferences.c --- a/gui/ui/gtk/preferences.c Thu Jul 07 10:16:22 2011 +0000 +++ b/gui/ui/gtk/preferences.c Thu Jul 07 10:37:58 2011 +0000 @@ -44,6 +44,7 @@ #include "gui/interface.h" #include "gui/ui/gmplayer.h" #include "gui/ui/widgets.h" +#include "gui/util/list.h" #include "gui/util/mem.h" #include "gui/util/string.h" #include "preferences.h" diff -r 2c02269701bd -r 962dc701989d gui/util/list.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gui/util/list.c Thu Jul 07 10:37:58 2011 +0000 @@ -0,0 +1,68 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include + +#include "list.h" +#include "string.h" + +/** + * \brief This actually creates a new list containing only one element... + */ +void gaddlist(char ***list, const char *entry) +{ + int i; + + if (*list) { + for (i = 0; (*list)[i]; i++) + free((*list)[i]); + + free(*list); + } + + *list = malloc(2 * sizeof(char **)); + (*list)[0] = gstrdup(entry); + (*list)[1] = NULL; +} + +/** + * \brief This replaces a string starting with search by replace. + * If not found, replace is appended. + */ +void greplace(char ***list, const char *search, const char *replace) +{ + int i = 0; + int len = (search ? strlen(search) : 0); + + if (*list) { + for (i = 0; (*list)[i]; i++) { + if (search && (strncmp((*list)[i], search, len) == 0)) { + free((*list)[i]); + (*list)[i] = gstrdup(replace); + return; + } + } + + *list = realloc(*list, (i + 2) * sizeof(char *)); + } else + *list = malloc(2 * sizeof(char *)); + + (*list)[i] = gstrdup(replace); + (*list)[i + 1] = NULL; +} diff -r 2c02269701bd -r 962dc701989d gui/util/list.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gui/util/list.h Thu Jul 07 10:37:58 2011 +0000 @@ -0,0 +1,25 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_GUI_LIST_H +#define MPLAYER_GUI_LIST_H + +void gaddlist(char ***list, const char *entry); +void greplace(char ***list, const char *search, const char *replace); + +#endif /* MPLAYER_GUI_LIST_H */