diff --git a/src/conf.c b/src/conf.c
index 1dc1a4333c9d99b918643854ca9b6ee5af083756..6c93e1e3a8692c53b0e17c7d13d4f7a5d816d81b 100644 (file)
--- a/src/conf.c
+++ b/src/conf.c
/* ncmpc (Ncurses MPD Client)
- * (c) 2004-2009 The Music Player Daemon Project
+ * (c) 2004-2010 The Music Player Daemon Project
* Project homepage: http://musicpd.org
* This program is free software; you can redistribute it and/or modify
/* configuration field names */
#define CONF_ENABLE_COLORS "enable-colors"
+#define CONF_SCROLL_OFFSET "scroll-offset"
#define CONF_AUTO_CENTER "auto-center"
#define CONF_WIDE_CURSOR "wide-cursor"
-#define CONF_ENABLE_BELL "enable-bell"
#define CONF_KEY_DEFINITION "key"
#define CONF_COLOR "color"
#define CONF_COLOR_DEFINITION "colordef"
#define CONF_PORT "port"
#define CONF_PASSWORD "password"
#define CONF_LYRICS_TIMEOUT "lyrics-timeout"
-#define CONF_SHOW_SPLASH "show-splash"
#define CONF_SCROLL "scroll"
#define CONF_SCROLL_SEP "scroll-sep"
#define CONF_VISIBLE_BITRATE "visible-bitrate"
#define CONF_WELCOME_SCREEN_LIST "welcome-screen-list"
#define CONF_DISPLAY_TIME "display-time"
+#define CONF_JUMP_PREFIX_ONLY "jump-prefix-only"
+#define CONF_LYRICS_AUTOSAVE "lyrics-autosave"
+#define CONF_LYRICS_SHOW_PLUGIN "lyrics-show-plugin"
+#define CONF_SECOND_COLUMN "second-column"
static bool
str2bool(char *str)
return assign_keys(cmd, keys);
}
-static const char *
+static bool
parse_timedisplay_type(const char *str)
{
- if (!strcmp(str,"elapsed") || !strcmp(str,"remaining"))
- return str;
+ if (strcmp(str, "elapsed") == 0)
+ return false;
+ else if (strcmp(str, "remaining") == 0)
+ return true;
else {
/* translators: ncmpc supports displaying the
"elapsed" or "remaining" time of a song being
played; in this case, the configuration file
contained an invalid setting */
print_error(_("Bad time display type"), str);
- return DEFAULT_TIMEDISPLAY_TYPE;
+ return false;
}
}
{
char **tmp = g_strsplit_set(value, " \t,", 100);
char **screen = NULL;
- int i,j;
+ int i = 0, j = 0;
- i=0;
- j=0;
while( tmp && tmp[i] ) {
char *name = g_ascii_strdown(tmp[i], -1);
- if (screen_lookup_name(name) == NULL) {
- /* an unknown screen name was specified in the
- configuration file */
- print_error(_("Unknown screen name"), name);
- free(name);
- } else {
- screen = g_realloc(screen, (j+2)*sizeof(char *));
- screen[j++] = name;
- screen[j] = NULL;
+ if (*name != '\0') {
+ if (screen_lookup_name(name) == NULL) {
+ /* an unknown screen name was specified in the
+ configuration file */
+ print_error(_("Unknown screen name"), name);
+ free(name);
+ } else {
+ screen = g_realloc(screen, (j+2)*sizeof(char *));
+ screen[j++] = name;
+ screen[j] = NULL;
+ }
}
i++;
}
return screen;
}
+static int
+get_search_mode(char *value)
+{
+ char * test;
+ int mode;
+ mode= strtol(value, &test, 10);
+ if (*test == '\0')
+ {
+ if (0 <= mode && mode <= 4)
+ return mode;
+ else
+ {
+ print_error(_("Invalid search mode"),value);
+ return 0;
+ }
+ }
+ else
+ {
+ for (int i = 0; value[i] != '\0'; i++)
+ value[i] = tolower(value[i]);
+
+ // TODO: modify screen_search so that its own list of modes can be used
+ // for comparison instead of specifying them here
+ if (strcmp(value, "title") == 0)
+ return 0;
+ else if (strcmp(value, "artist") == 0)
+ return 1;
+ else if (strcmp(value, "album") == 0)
+ return 2;
+ else if (strcmp(value, "filename") == 0)
+ return 3;
+ else if (strcmp(value, "artist+album") == 0)
+ return 4;
+ else
+ {
+ print_error(_("Unknown search mode"),value);
+ return 0;
+ }
+ }
+}
+
static bool
parse_line(char *line)
{
- size_t len = strlen(line), i = 0, j;
+ size_t len = strlen(line), i = 0, j = 0;
char name[MAX_LINE_LENGTH];
char value[MAX_LINE_LENGTH];
bool match_found;
/* get the name part */
- j = 0;
while (i < len && line[i] != '=' &&
!g_ascii_isspace(line[i])) {
name[j++] = line[i++];
#else
{}
#endif
+ else if (!strcasecmp(CONF_SCROLL_OFFSET, name))
+ options.scroll_offset = atoi(value);
/* auto center */
else if (!strcasecmp(CONF_AUTO_CENTER, name))
options.auto_center = str2bool(value);
/* wide cursor */
else if (!strcasecmp(CONF_WIDE_CURSOR, name))
options.wide_cursor = str2bool(value);
+ else if (strcasecmp(name, "hardware-cursor") == 0)
+ options.hardware_cursor = str2bool(value);
/* welcome screen list */
else if (!strcasecmp(CONF_WELCOME_SCREEN_LIST, name))
options.welcome_screen_list = str2bool(value);
else if (!strcasecmp(CONF_VISIBLE_BITRATE, name))
options.visible_bitrate = str2bool(value);
/* timer display type */
- else if (!strcasecmp(CONF_TIMEDISPLAY_TYPE, name)) {
- g_free(options.timedisplay_type);
- options.timedisplay_type=g_strdup(parse_timedisplay_type(value));
+ else if (!strcasecmp(CONF_TIMEDISPLAY_TYPE, name))
+ options.display_remaining_time = parse_timedisplay_type(value);
/* color definition */
- } else if (!strcasecmp(CONF_COLOR_DEFINITION, name))
+ else if (!strcasecmp(CONF_COLOR_DEFINITION, name))
#ifdef ENABLE_COLORS
parse_color_definition(value);
#else
else if (!strcasecmp(CONF_CROSSFADE_TIME, name))
options.crossfade_time = atoi(value);
else if (!strcasecmp(CONF_SEARCH_MODE, name))
- options.search_mode = atoi(value);
+ options.search_mode = get_search_mode(value);
else if (!strcasecmp(CONF_HIDE_CURSOR, name))
options.hide_cursor = atoi(value);
else if (!strcasecmp(CONF_SEEK_TIME, name))
else if (!strcasecmp(CONF_SCREEN_LIST, name)) {
g_strfreev(options.screen_list);
options.screen_list = check_screen_list(value);
- } else if (!strcasecmp(CONF_SHOW_SPLASH, name)) {
- /* the splash screen was removed */
} else if (!strcasecmp(CONF_HOST, name))
options.host = get_format(value);
else if (!strcasecmp(CONF_PORT, name))
{}
#else
options.display_time = str2bool(value);
+#endif
+ else if (!strcasecmp(CONF_JUMP_PREFIX_ONLY, name))
+#ifdef NCMPC_MINI
+ {}
+#else
+ options.jump_prefix_only = str2bool(value);
+#endif
+ else if (!strcasecmp(CONF_LYRICS_AUTOSAVE, name))
+#ifdef ENABLE_LYRICS_SCREEN
+ options.lyrics_autosave = str2bool(value);
+#else
+ {}
+#endif
+ else if (!strcasecmp(CONF_LYRICS_SHOW_PLUGIN, name))
+#ifdef ENABLE_LYRICS_SCREEN
+ options.lyrics_show_plugin = str2bool(value);
+#else
+ {}
+#endif
+ else if (!strcasecmp(CONF_SECOND_COLUMN, name))
+#ifdef NCMPC_MINI
+ {}
+#else
+ options.second_column = str2bool(value);
#endif
else
match_found = false;