void read_color_scheme_file() { FILE *fp; char config_file[PATH_MAX]; char line[MAX_LEN]; char *s1 = NULL; char *s2 = NULL; char *s3 = NULL; char *sx = NULL; int args; struct stat stat_buf; snprintf(config_file, sizeof(config_file), "%s/colorschemes", cfg.config_dir); if(stat(config_file, &stat_buf) == 0) curr_stats.colorscheme_file_mtime = stat_buf.st_mtime; else curr_stats.config_file_mtime = 0; if((fp = fopen(config_file, "r")) == NULL) { load_default_colors(); cfg.color_scheme_num++; cfg.color_pairs_num = 12; return; } while(fgets(line, MAX_LEN, fp)) { args = 0; if(line[0] == '#') continue; if((sx = s1 = strchr(line, '=')) != NULL) { s1++; chomp(s1); *sx = '\0'; args = 1; } else continue; if((sx = s2 = strchr(s1, '=')) != NULL) { s2++; chomp(s2); *sx = '\0'; args = 2; } if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL)) { s3++; chomp(s3); *sx = '\0'; args = 3; } if(args == 1) { if(!strcmp(line, "COLORSCHEME")) { //check if last colorscheme is complete and pad it before starting // a new scheme // verify_scheme(); //col_schemes = (Col_scheme *)realloc(col_schemes, // sizeof(Col_scheme *) +1); snprintf(col_schemes[cfg.color_scheme_num].name, NAME_MAX, "%s", s1); cfg.color_scheme_num++; if (cfg.color_scheme_num > 8) break; continue; } if(!strcmp(line, "DIRECTORY")) { snprintf(col_schemes[cfg.color_scheme_num - 1].dir, PATH_MAX, "%s", s1); continue; } } if(!strcmp(line, "COLOR") && args == 3) { add_color(s1, s2, s3); } } fclose(fp); //verify_color_schemes(); return; }
static void read_color_scheme_file(const char *config_file) { FILE *fp; char line[MAX_LEN]; char *s1 = NULL; char *s2 = NULL; char *s3 = NULL; char *sx = NULL; if((fp = fopen(config_file, "r")) == NULL) { load_default_colors(); cs.count = 1; return; } while(fgets(line, MAX_LEN, fp)) { int args; if(line[0] == '#') continue; if((sx = s1 = strchr(line, '=')) != NULL) { s1++; chomp(s1); *sx = '\0'; args = 1; } else continue; if((sx = s2 = strchr(s1, '=')) != NULL) { s2++; chomp(s2); *sx = '\0'; args = 2; } if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL)) { s3++; chomp(s3); *sx = '\0'; args = 3; } if(args == 1) { if(!strcmp(line, "COLORSCHEME")) { cs.count++; if(cs.count > MAX_COLOR_SCHEMES) break; init_color_scheme(&cs.array[cs.count - 1]); snprintf(cs.array[cs.count - 1].name, NAME_MAX, "%s", s1); continue; } if(!strcmp(line, "DIRECTORY")) { col_scheme_t* c; c = &cs.array[cs.count - 1]; snprintf(c->dir, PATH_MAX, "%s", s1); continue; } } if(!strcmp(line, "COLOR") && args == 3) add_color(s1, s2, s3); } fclose(fp); }