int main(int argc, char **argv) { char *home_dir; char dir_name[6] = ".vifm"; char config_dir[PATH_MAX]; char config_file[PATH_MAX], config_file_bak[PATH_MAX]; char startup_file[PATH_MAX]; char vifminfo_file[PATH_MAX], vifminfo_file_bak[PATH_MAX]; char colorschemes_file[PATH_MAX], colors_dir[PATH_MAX]; int vifm_like; char *vifmrc_arg, *vifminfo_arg; (void)setlocale(LC_ALL, ""); if(argc != 2 && argc != 4) { puts("Usage: vifmrc-converter 0|1|2 [vifmrc_file vifminfo_file]\n\n" "1 means comment commands in vifmrc and put more things to vifminfo\n" "2 means convert colorscheme file only"); return 1; } if(argv[1][1] != '\0' || (argv[1][0] != '0' && argv[1][0] != '1' && argv[1][0] != '2')) { puts("Usage: vifmrc-converter 0|1|2 [vifmrc_file vifminfo_file]\n\n" "1 means comment commands in vifmrc and put more things to vifminfo\n" "2 means convert colorscheme file only"); return 1; } vifm_like = atoi(argv[1]); home_dir = getenv("HOME"); #ifdef _WIN32 snprintf(config_dir, sizeof(config_dir), "%s/Vifm", getenv("APPDATA")); if(home_dir == NULL || home_dir[0] == '\0' || is_dir(config_dir)) { home_dir = getenv("APPDATA"); strcpy(dir_name, "Vifm"); } #endif if(home_dir == NULL || home_dir[0] == '\0') { puts("Can't find configuration directory"); return 1; } snprintf(config_dir, sizeof(config_dir), "%s/%s", home_dir, dir_name); snprintf(config_file, sizeof(config_file), "%s/vifmrc", config_dir); snprintf(config_file_bak, sizeof(config_file_bak), "%s/vifmrc.bak", config_dir); snprintf(startup_file, sizeof(startup_file), "%s/startup", config_dir); snprintf(vifminfo_file, sizeof(startup_file), "%s/vifminfo", config_dir); snprintf(vifminfo_file_bak, sizeof(vifminfo_file_bak), "%s/vifminfo.bak", config_dir); snprintf(colorschemes_file, sizeof(colorschemes_file), "%s/colorschemes", config_dir); snprintf(colors_dir, sizeof(colors_dir), "%s/colors", config_dir); #ifdef _WIN32 change_slashes(config_dir); change_slashes(config_file); change_slashes(config_file_bak); change_slashes(startup_file); change_slashes(vifminfo_file); change_slashes(vifminfo_file_bak); change_slashes(colorschemes_file); change_slashes(colors_dir); #endif if(vifm_like == 2) { convert_color_schemes(colorschemes_file, colors_dir); return 0; } if(argc == 4) { vifmrc_arg = argv[2]; vifminfo_arg = argv[3]; } else { vifmrc_arg = config_file; vifminfo_arg = vifminfo_file; } if(!vifm_like) vifminfo = VIFMINFO_BOOKMARKS; read_config_file(config_file); read_config_file(vifminfo_file); if(access(config_file, F_OK) == 0) { if(access(config_file_bak, F_OK) == 0) unlink(config_file_bak); if(rename(config_file, config_file_bak) != 0) { fprintf(stderr, "Can't move vifmrc file to make a backup copy " "(from \"%s\" to \"%s\")\n", config_file, config_file_bak); exit(1); } } if(access(vifminfo_file, F_OK) == 0) { if(access(vifminfo_file_bak, F_OK) == 0) unlink(vifminfo_file_bak); if(rename(vifminfo_file, vifminfo_file_bak) != 0) { fprintf(stderr, "Can't move vifminfo file to make a backup copy " "(from \"%s\" to \"%s\")\n", vifminfo_file, vifminfo_file_bak); exit(1); } } write_vifmrc(vifmrc_arg, vifm_like); append_vifmrc(vifmrc_arg, vifm_like); append_vifminfo_option(vifmrc_arg, vifm_like); append_startup(vifmrc_arg, startup_file); write_vifminfo(vifminfo_arg, vifm_like); convert_color_schemes(colorschemes_file, colors_dir); return 0; }
int main(int argc, char **argv) { char *home_dir; char dir_name[6] = ".vifm"; char config_dir[PATH_MAX]; char config_file[PATH_MAX], config_file_bak[PATH_MAX]; char startup_file[PATH_MAX]; char vifminfo_file[PATH_MAX], vifminfo_file_bak[PATH_MAX]; char colorschemes_file[PATH_MAX], colors_dir[PATH_MAX]; int mode; char *vifmrc_arg, *vifminfo_arg; int err; (void)setlocale(LC_ALL, ""); if(argc != 2 && argc != 4) { puts(USAGE); return 1; } if(argv[1][1] != '\0' || (argv[1][0] != '0' && argv[1][0] != '1' && argv[1][0] != '2' && argv[1][0] != '3')) { puts(USAGE); return 1; } mode = atoi(argv[1]); home_dir = getenv("HOME"); #ifdef _WIN32 snprintf(config_dir, sizeof(config_dir), "%s/Vifm", getenv("APPDATA")); if(home_dir == NULL || home_dir[0] == '\0' || is_dir(config_dir)) { home_dir = getenv("APPDATA"); strcpy(dir_name, "Vifm"); } #endif if(home_dir == NULL || home_dir[0] == '\0') { puts("Can't find configuration directory"); return 1; } snprintf(config_dir, sizeof(config_dir), "%s/%s", home_dir, dir_name); snprintf(config_file, sizeof(config_file), "%s/vifmrc", config_dir); snprintf(config_file_bak, sizeof(config_file_bak), "%s/vifmrc.bak", config_dir); snprintf(startup_file, sizeof(startup_file), "%s/startup", config_dir); snprintf(vifminfo_file, sizeof(startup_file), "%s/vifminfo", config_dir); snprintf(vifminfo_file_bak, sizeof(vifminfo_file_bak), "%s/vifminfo.bak", config_dir); snprintf(colorschemes_file, sizeof(colorschemes_file), "%s/colorschemes", config_dir); snprintf(colors_dir, sizeof(colors_dir), "%s/colors", config_dir); #ifdef _WIN32 change_slashes(config_dir); change_slashes(config_file); change_slashes(config_file_bak); change_slashes(startup_file); change_slashes(vifminfo_file); change_slashes(vifminfo_file_bak); change_slashes(colorschemes_file); change_slashes(colors_dir); #endif if(mode == 2) { convert_color_schemes(colorschemes_file, colors_dir); return 0; } if(mode == 3) { rename_color_schemes(colors_dir); return 0; } if(argc == 4) { vifmrc_arg = argv[2]; vifminfo_arg = argv[3]; } else { vifmrc_arg = config_file; vifminfo_arg = vifminfo_file; } if(!mode) { vifminfo = VIFMINFO_BOOKMARKS; } read_config_file(config_file); read_config_file(vifminfo_file); (void)unlink(config_file_bak); err = rename(config_file, config_file_bak); if(err != 0 && errno != ENOENT) { fprintf(stderr, "Can't move vifmrc file to make a backup copy " "(from \"%s\" to \"%s\")\n", config_file, config_file_bak); exit(1); } (void)unlink(vifminfo_file_bak); err = rename(vifminfo_file, vifminfo_file_bak); if(err != 0 && errno != ENOENT) { fprintf(stderr, "Can't move vifminfo file to make a backup copy " "(from \"%s\" to \"%s\")\n", vifminfo_file, vifminfo_file_bak); exit(1); } write_vifmrc(vifmrc_arg, mode); append_vifmrc(vifmrc_arg, mode); append_vifminfo_option(vifmrc_arg, mode); append_startup(vifmrc_arg, startup_file); write_vifminfo(vifminfo_arg, mode); convert_color_schemes(colorschemes_file, colors_dir); return 0; }