diff --git a/src/prefs.c b/src/prefs.c index fdd028c..13cce52 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -34,207 +34,212 @@ gchar _default_theme_name[] = "Default"; gchar *_theme_name = NULL; gint pref_get_show_next_colors(void) { - return _show_next_colors; + return _show_next_colors; } void pref_set_show_next_colors(gint val) { - _show_next_colors = val; + _show_next_colors = val; } gint pref_get_show_path(void) { - return _show_path; + return _show_path; } void pref_set_show_path(gint val) { - _show_path = val; + _show_path = val; } gint pref_get_show_footprints(void) { - return _show_footprints; + return _show_footprints; } void pref_set_show_footprints(gint val) { - _show_footprints = val; + _show_footprints = val; } gint pref_get_show_destroy(void) { - return _show_destroy; + return _show_destroy; } void pref_set_show_destroy(gint val) { - _show_destroy = val; + _show_destroy = val; } gint pref_get_show_highlight(void) { - return _show_highlight; + return _show_highlight; } void pref_set_show_highlight(gint val) { - _show_highlight = val; + _show_highlight = val; } gint prefs_get_hl_dr(void) { - return _hl_dr; + return _hl_dr; } void prefs_set_hl_dr(gint dr) { - _hl_dr = dr; + _hl_dr = dr; } gint prefs_get_hl_dg(void) { - return _hl_dg; + return _hl_dg; } void prefs_set_hl_dg(gint dg) { - _hl_dg = dg; + _hl_dg = dg; } gint prefs_get_hl_db(void) { - return _hl_db; + return _hl_db; } void prefs_set_hl_db(gint db) { - _hl_db = db; + _hl_db = db; } gchar *pref_get_theme_name(void) { - return _theme_name; + return _theme_name; } gchar *pref_get_default_theme_name(void) { - return _default_theme_name; + return _default_theme_name; } void pref_set_theme_name(gchar *name) { - if(_theme_name) { - g_free(_theme_name); - } - _theme_name = g_strdup(name); + if (_theme_name) { + g_free(_theme_name); + } + _theme_name = g_strdup(name); } gchar *find_rc_file(void) { - gchar *rc_file = NULL; + gchar *rc_file = NULL; - if(getenv("HOME")) { - rc_file = g_strdup_printf("%s/%s", getenv ("HOME"), CONFIG_FILE_NAME); - } else { /* unable to find $HOME, assuming current directory */ - rc_file = g_strdup(CONFIG_FILE_NAME); - } + if (getenv("HOME")) { + rc_file = g_strdup_printf("%s/%s", getenv ("HOME"), CONFIG_FILE_NAME); + } else { /* unable to find $HOME, assuming current directory */ + rc_file = g_strdup(CONFIG_FILE_NAME); + } - return rc_file; + return rc_file; } /* converts string to TRUE/FALSE. "true", "yes" or "1" is TRUE, otherwise - FALSE */ gboolean pref_str_to_bool(gchar *val) { - if(!g_ascii_strcasecmp(val, "true") || - !g_ascii_strcasecmp(val, "yes") || - !g_ascii_strcasecmp(val, "1")) { - return TRUE; - } - return FALSE; + if (!g_ascii_strcasecmp(val, "true") || + !g_ascii_strcasecmp(val, "yes") || + !g_ascii_strcasecmp(val, "1")) { + return TRUE; + } + return FALSE; } /* converts boolean to string returns _pointer_ to "yes" or "no". returned string should NOT be free()'d! */ gchar *pref_bool_to_str(gboolean val) { - return val ? "yes" : "no"; + return val ? "yes" : "no"; } /* we use very lame preferences file format: ``property=value\n''. so - there must be no whitespaces on begin/end of line =) */ -void load_preferences(void) { - FILE *fp; - gchar *rc_file; - gchar buffer[BUFFER_SIZE]; - gchar **prop_val; +void load_preferences(void) +{ + FILE *fp; + gchar *rc_file; + gchar buffer[BUFFER_SIZE]; + gchar **prop_val; - if(!_theme_name) { - _theme_name = g_strdup(_default_theme_name); - } - rc_file = find_rc_file(); - if((fp = fopen(rc_file, "r"))) { - while(fgets(buffer, BUFFER_SIZE, fp)) { - g_strchomp(buffer); - prop_val = g_strsplit(buffer, "=", 2); - if(prop_val[0] && prop_val[0][0] && prop_val[1] && prop_val[1][0]) { - if(!g_ascii_strcasecmp(prop_val[0], "show_hints")) { - _show_next_colors = pref_str_to_bool(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "show_path")) { - _show_path = pref_str_to_bool(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "show_footprints")) { - _show_footprints = pref_str_to_bool(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "show_destroy")) { - _show_destroy = pref_str_to_bool(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "show_highlight")) { - _show_highlight = pref_str_to_bool(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "theme_name")) { - if(_theme_name) { - g_free(_theme_name); - } - _theme_name = g_strdup(prop_val[1]); - } else if(!g_ascii_strcasecmp(prop_val[0], "rules_xsize")) { - rules_set_width(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "rules_ysize")) { - rules_set_height(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "rules_colors")) { - rules_set_colors(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "rules_next")) { - rules_set_next(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "rules_destroy")) { - rules_set_destroy(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "time_limit")) { - timer_set_limit(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "highlight_dr")) { - prefs_set_hl_dr(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "highlight_dg")) { - prefs_set_hl_dg(atoi(prop_val[1])); - } else if(!g_ascii_strcasecmp(prop_val[0], "highlight_db")) { - prefs_set_hl_db(atoi(prop_val[1])); - } - } - g_strfreev(prop_val); - } - fclose(fp); - } - g_free(rc_file); + if (!_theme_name) { + _theme_name = g_strdup(_default_theme_name); + } + rc_file = find_rc_file(); + if ((fp = fopen(rc_file, "r"))) + { + while(fgets(buffer, BUFFER_SIZE, fp)) + { + g_strchomp(buffer); + prop_val = g_strsplit(buffer, "=", 2); + if (prop_val[0] && prop_val[0][0] && prop_val[1] && prop_val[1][0]) + { + if (!g_ascii_strcasecmp(prop_val[0], "show_hints")) { + _show_next_colors = pref_str_to_bool(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "show_path")) { + _show_path = pref_str_to_bool(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "show_footprints")) { + _show_footprints = pref_str_to_bool(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "show_destroy")) { + _show_destroy = pref_str_to_bool(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "show_highlight")) { + _show_highlight = pref_str_to_bool(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "theme_name")) { + if (_theme_name) { + g_free(_theme_name); + } + _theme_name = g_strdup(prop_val[1]); + } else if (!g_ascii_strcasecmp(prop_val[0], "rules_xsize")) { + rules_set_width(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "rules_ysize")) { + rules_set_height(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "rules_colors")) { + rules_set_colors(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "rules_next")) { + rules_set_next(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "rules_destroy")) { + rules_set_destroy(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "time_limit")) { + timer_set_limit(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "highlight_dr")) { + prefs_set_hl_dr(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "highlight_dg")) { + prefs_set_hl_dg(atoi(prop_val[1])); + } else if (!g_ascii_strcasecmp(prop_val[0], "highlight_db")) { + prefs_set_hl_db(atoi(prop_val[1])); + } + } + g_strfreev(prop_val); + } + fclose(fp); + } + g_free(rc_file); } /* writes ``property=value\n'' to fp. why i made it separate function? for "feature purposes" =) */ void write_pref_string(FILE *fp, gchar *property, gchar *value) { - fprintf(fp, "%s=%s\n", property, value); + fprintf (fp, "%s=%s\n", property, value); } void write_pref_int(FILE *fp, gchar *property, gint value) { - fprintf(fp, "%s=%d\n", property, value); + fprintf (fp, "%s=%d\n", property, value); } -gchar *save_preferences(void) { - FILE *fp; - gchar *rc_file/*, *err*/; - gchar *ret = NULL; +gchar *save_preferences (void) +{ + FILE *fp; + gchar *rc_file/*, *err*/; + gchar *ret = NULL; - rc_file = find_rc_file(); - if((fp = fopen(rc_file, "w"))) { - write_pref_string(fp, "show_hints", pref_bool_to_str(_show_next_colors)); - write_pref_string(fp, "show_path", pref_bool_to_str(_show_path)); - write_pref_string(fp, "show_footprints", pref_bool_to_str(_show_footprints)); - write_pref_string(fp, "show_destroy", pref_bool_to_str(_show_destroy)); - write_pref_string(fp, "show_highlight", pref_bool_to_str(_show_highlight)); - write_pref_string(fp, "theme_name", _theme_name); - write_pref_int(fp, "rules_xsize", rules_get_width()); - write_pref_int(fp, "rules_ysize", rules_get_height()); - write_pref_int(fp, "rules_colors", rules_get_colors()); - write_pref_int(fp, "rules_next", rules_get_next()); - write_pref_int(fp, "rules_destroy", rules_get_destroy()); - write_pref_int(fp, "time_limit", timer_get_limit()); - write_pref_int(fp, "highlight_dr", prefs_get_hl_dr()); - write_pref_int(fp, "highlight_dg", prefs_get_hl_dg()); - write_pref_int(fp, "highlight_db", prefs_get_hl_db()); - fclose(fp); - } else { - ret = g_strdup_printf(_("Can't write to %s: %s"), rc_file, strerror(errno)); - } - g_free(rc_file); - return ret; + rc_file = find_rc_file(); + if ((fp = fopen(rc_file, "w"))) { + write_pref_string(fp, "show_hints", pref_bool_to_str(_show_next_colors)); + write_pref_string(fp, "show_path", pref_bool_to_str(_show_path)); + write_pref_string(fp, "show_footprints", pref_bool_to_str(_show_footprints)); + write_pref_string(fp, "show_destroy", pref_bool_to_str(_show_destroy)); + write_pref_string(fp, "show_highlight", pref_bool_to_str(_show_highlight)); + write_pref_string(fp, "theme_name", _theme_name); + write_pref_int(fp, "rules_xsize", rules_get_width()); + write_pref_int(fp, "rules_ysize", rules_get_height()); + write_pref_int(fp, "rules_colors", rules_get_colors()); + write_pref_int(fp, "rules_next", rules_get_next()); + write_pref_int(fp, "rules_destroy", rules_get_destroy()); + write_pref_int(fp, "time_limit", timer_get_limit()); + write_pref_int(fp, "highlight_dr", prefs_get_hl_dr()); + write_pref_int(fp, "highlight_dg", prefs_get_hl_dg()); + write_pref_int(fp, "highlight_db", prefs_get_hl_db()); + fclose(fp); + } else { + ret = g_strdup_printf(_("Can't write to %s: %s"), rc_file, strerror(errno)); + } + g_free(rc_file); + return ret; }