X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fconf.c;h=ae362f142d67f6363e3eceec352b6afde1f2e254;hb=a9ea2ab4bad5e5044e95e1037ea8f676b75a4db8;hp=0f7a494ed969d9f0c091338e5d3980f38e788acd;hpb=60b550ebc0e9d88aceb5f5eb4788349fb6c1a68a;p=ncmpc.git diff --git a/src/conf.c b/src/conf.c index 0f7a494..ae362f1 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1,5 +1,5 @@ /* ncmpc (Ncurses MPD Client) - * (c) 2004-2010 The Music Player Daemon Project + * (c) 2004-2017 The Music Player Daemon Project * Project homepage: http://musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -24,15 +24,14 @@ #include "command.h" #include "colors.h" #include "screen_list.h" +#include "options.h" #include #include #include #include #include -#include #include -#include #include #include @@ -85,6 +84,28 @@ #define CONF_CHAT_PREFIX "chat-prefix" #define CONF_SECOND_COLUMN "second-column" +gcc_const +static bool +is_space_not_null(char ch) +{ + unsigned char uch = (unsigned char)ch; + return uch <= 0x20 && uch > 0; +} + +/** + * Returns the first non-space character (or a pointer to the null + * terminator). Similar to g_strchug(), but just moves the pointer + * forward without modifying the string contents. + */ +gcc_pure +static char * +skip_spaces(char *p) +{ + while (is_space_not_null(*p)) + ++p; + return p; +} + static bool str2bool(char *str) { @@ -207,15 +228,15 @@ separate_value(char *p) *value++ = 0; g_strchomp(p); - return g_strchug(value); + return skip_spaces(value); } -static int +static bool parse_color(char *str) { char *value = separate_value(str); if (value == NULL) - return -1; + return false; return colors_assign(str, value); } @@ -232,7 +253,7 @@ after_comma(char *p) if (comma != NULL) { *comma++ = 0; - comma = g_strchug(comma); + comma = skip_spaces(comma); } else comma = p + strlen(p); @@ -240,19 +261,19 @@ after_comma(char *p) return comma; } -static int +static bool parse_color_definition(char *str) { char *value = separate_value(str); if (value == NULL) - return -1; + return false; /* get the command name */ short color = colors_str2color(str); if (color < 0) { char buf[MAX_LINE_LENGTH]; print_error(_("Bad color name"), buf); - return -1; + return false; } /* parse r,g,b values */ @@ -262,13 +283,13 @@ parse_color_definition(char *str) char *next = after_comma(value), *endptr; if (*value == 0) { print_error(_("Incomplete color definition"), str); - return -1; + return false; } rgb[i] = strtol(value, &endptr, 0); if (endptr == value || *endptr != 0) { print_error(_("Invalid number"), value); - return -1; + return false; } value = next; @@ -276,7 +297,7 @@ parse_color_definition(char *str) if (*value != 0) { print_error(_("Malformed color definition"), str); - return -1; + return false; } return colors_define(str, rgb[0], rgb[1], rgb[2]); @@ -502,11 +523,8 @@ parse_line(char *line) g_free(options.scroll_sep); options.scroll_sep = get_format(value); } else if (!strcasecmp(CONF_DISPLAY_TIME, name)) -#ifdef NCMPC_MINI + /* obsolete, ignore */ {} -#else - options.display_time = str2bool(value); -#endif else if (!strcasecmp(CONF_JUMP_PREFIX_ONLY, name)) #ifdef NCMPC_MINI {} @@ -573,7 +591,7 @@ read_rc_file(char *filename) char line[MAX_LINE_LENGTH]; while (fgets(line, sizeof(line), file) != NULL) { - char *p = g_strchug(line); + char *p = skip_spaces(line); if (*p != 0 && *p != COMMENT_TOKEN) parse_line(g_strchomp(p)); @@ -583,19 +601,19 @@ read_rc_file(char *filename) return 0; } -int +bool check_user_conf_dir(void) { char *directory = g_build_filename(g_get_home_dir(), "." PACKAGE, NULL); if (g_file_test(directory, G_FILE_TEST_IS_DIR)) { g_free(directory); - return 0; + return true; } - int retval = g_mkdir(directory, 0755); + bool success = g_mkdir(directory, 0755) == 0; g_free(directory); - return retval; + return success; } char *