Exemplo n.º 1
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 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;
}
Exemplo n.º 2
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;
}