int load_primary_color_scheme(const char name[]) { col_scheme_t prev_cs; char full[PATH_MAX]; if(!color_scheme_exists(name)) { show_error_msgf("Color Scheme", "Invalid color scheme name: \"%s\"", name); return 0; } prev_cs = cfg.cs; curr_stats.cs_base = DCOLOR_BASE; curr_stats.cs = &cfg.cs; cfg.cs.state = CSS_LOADING; snprintf(full, sizeof(full), "%s/colors/%s", cfg.config_dir, name); if(source_file(full) != 0) { restore_primary_color_scheme(&prev_cs); show_error_msgf("Color Scheme Sourcing", "Errors loading colors cheme: \"%s\"", name); cfg.cs.state = CSS_NORMAL; return 0; } copy_str(cfg.cs.name, sizeof(cfg.cs.name), name); check_color_scheme(&cfg.cs); update_attributes(); if(curr_stats.load_stage >= 2 && cfg.cs.state == CSS_DEFAULTED) { restore_primary_color_scheme(&prev_cs); show_error_msg("Color Scheme Error", "Not supported by the terminal"); return 0; } cfg.cs.state = CSS_NORMAL; return 0; }
int load_primary_color_scheme(const char name[]) { col_scheme_t prev_cs = {}; if(!color_scheme_exists(name)) { show_error_msgf("Color Scheme", "Invalid color scheme name: \"%s\"", name); return 0; } assign_color_scheme(&prev_cs, &cfg.cs); curr_stats.cs = &cfg.cs; cfg.cs.state = CSS_LOADING; if(source_cs(name) != 0) { restore_primary_color_scheme(&prev_cs); show_error_msgf("Color Scheme Sourcing", "An error occurred on loading color scheme: \"%s\"", name); cfg.cs.state = CSS_NORMAL; return 0; } copy_str(cfg.cs.name, sizeof(cfg.cs.name), name); check_color_scheme(&cfg.cs); update_attributes(); if(cfg.cs.state == CSS_DEFAULTED) { restore_primary_color_scheme(&prev_cs); show_error_msgf("Color Scheme Error", "\"%s\" color scheme is not supported by the terminal, restored \"%s\"", name, prev_cs.name); return 0; } free_color_scheme_highlights(&prev_cs); cfg.cs.state = CSS_NORMAL; return 0; }