/* This is just a safety check so that vifm will still load and run if * the configuration file is not present. */ static void load_default_configuration(void) { cfg.using_default_config = 1; cfg.use_trash = 1; cfg.vi_command = strdup("vim"); /*_SZ_BEGIN_*/ cfg.fuse_home = strdup("/tmp/vifm_FUSE"); /*_SZ_END_*/ cfg.use_screen = 0; cfg.history_len = 15; cfg.use_vim_help = 0; strncpy(lwin.regexp, "\\..~$", sizeof(lwin.regexp) -1); lwin.filename_filter = (char *)realloc(lwin.filename_filter, strlen(DEFAULT_FILENAME_FILTER) +1); strcpy(lwin.filename_filter, DEFAULT_FILENAME_FILTER); lwin.prev_filter = (char *)realloc(lwin.prev_filter, strlen(DEFAULT_FILENAME_FILTER) +1); strcpy(lwin.prev_filter, DEFAULT_FILENAME_FILTER); lwin.invert = TRUE; strncpy(rwin.regexp, "\\..~$", sizeof(rwin.regexp) -1); rwin.filename_filter = (char *)realloc(rwin.filename_filter, strlen(DEFAULT_FILENAME_FILTER) +1); strcpy(rwin.filename_filter, DEFAULT_FILENAME_FILTER); rwin.prev_filter = (char *)realloc(rwin.prev_filter, strlen(DEFAULT_FILENAME_FILTER) +1); strcpy(rwin.prev_filter, DEFAULT_FILENAME_FILTER); rwin.invert = TRUE; lwin.sort_type = SORT_BY_NAME; rwin.sort_type = SORT_BY_NAME; read_color_scheme_file(); }
int read_config_file(void) { 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; snprintf(config_file, sizeof(config_file), "%s/vifmrc", cfg.config_dir); if((fp = fopen(config_file, "r")) == NULL) { fprintf(stdout, "Unable to find configuration file.\n Using defaults."); load_default_configuration(); return 0; } 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; } /* COMMAND is handled here so that the command can have an '=' */ if(!strcmp(line, "COMMAND")) add_command(s1, s2); else if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL)) { s3++; chomp(s3); *sx = '\0'; args = 3; } if(args == 1) { if(!strcmp(line, "VI_COMMAND")) { if(cfg.vi_command != NULL) free(cfg.vi_command); cfg.vi_command = strdup(s1); continue; } if(!strcmp(line, "USE_TRASH")) { cfg.use_trash = atoi(s1); continue; } if(!strcmp(line, "USE_ONE_WINDOW")) { cfg.show_one_window = atoi(s1); continue; } if(!strcmp(line, "USE_SCREEN")) { cfg.use_screen = atoi(s1); continue; } if(!strcmp(line, "HISTORY_LENGTH")) { cfg.history_len = atoi(s1); continue; } if(!strcmp(line, "LEFT_WINDOW_SORT_TYPE")) { lwin.sort_type = atoi(s1); continue; } if(!strcmp(line, "RIGHT_WINDOW_SORT_TYPE")) { rwin.sort_type = atoi(s1); continue; } if(!strcmp(line, "LWIN_FILTER")) { lwin.filename_filter = (char *)realloc(lwin.filename_filter, strlen(s1) +1); strcpy(lwin.filename_filter, s1); lwin.prev_filter = (char *)realloc(lwin.prev_filter, strlen(s1) +1); strcpy(lwin.prev_filter, s1); continue; } if(!strcmp(line, "LWIN_INVERT")) { lwin.invert = atoi(s1); continue; } if(!strcmp(line, "RWIN_FILTER")) { rwin.filename_filter = (char *)realloc(rwin.filename_filter, strlen(s1) +1); strcpy(rwin.filename_filter, s1); rwin.prev_filter = (char *)realloc(rwin.prev_filter, strlen(s1) +1); strcpy(rwin.prev_filter, s1); continue; } if(!strcmp(line, "RWIN_INVERT")) { rwin.invert = atoi(s1); continue; } if(!strcmp(line, "USE_VIM_HELP")) { cfg.use_vim_help = atoi(s1); continue; } if(!strcmp(line, "RUN_EXECUTABLE")) { cfg.auto_execute = atoi(s1); continue; } /*_SZ_BEGIN_*/ if(!strcmp(line, "FUSE_HOME")) { if(cfg.fuse_home != NULL) free(cfg.fuse_home); cfg.fuse_home = strdup(s1); continue; } /*_SZ_END_*/ } if(args == 3) { if(!strcmp(line, "FILETYPE")) { add_filetype(s1, s2, s3); continue; } if(!strcmp(line, "BOOKMARKS")) { if(isalnum(*s1)) add_bookmark(*s1, s2, s3); continue; } } } fclose(fp); read_color_scheme_file(); return 1; }
static void convert_color_schemes(const char *colorschemes_file, const char *colors_dir) { read_color_scheme_file(colorschemes_file); write_color_schemes(colors_dir); }