Exemple #1
0
void core_preinit(const char *path)
{
	const char *home;
	char *str;
	int len;

	if (irssi_dir == NULL) {
		home = g_get_home_dir();
		if (home == NULL)
			home = ".";

		irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home);
	} else {
		str = irssi_dir;
		irssi_dir = fix_path(str);
		g_free(str);
		len = strlen(irssi_dir);
		if (irssi_dir[len-1] == G_DIR_SEPARATOR)
			irssi_dir[len-1] = '\0';
	}
	if (irssi_config_file == NULL)
		irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir);
	else {
		str = irssi_config_file;
		irssi_config_file = fix_path(str);
		g_free(str);
	}

	session_set_binary(path);
}
Exemple #2
0
void core_init_paths(int argc, char *argv[])
{
	static struct poptOption options[] = {
		{ "config", 0, POPT_ARG_STRING, NULL, 0, "Configuration file location (~/.irssi/config)", "PATH" },
		{ "home", 0, POPT_ARG_STRING, NULL, 0, "Irssi home dir location (~/.irssi)", "PATH" },
		{ NULL, '\0', 0, NULL }
	};
	const char *home;
	char *str;
	int n, len;

	for (n = 1; n < argc; n++) {
		if (strncmp(argv[n], "--home=", 7) == 0) {
                        g_free_not_null(irssi_dir);
                        irssi_dir = convert_home(argv[n]+7);
                        len = strlen(irssi_dir);
			if (irssi_dir[len-1] == G_DIR_SEPARATOR)
				irssi_dir[len-1] = '\0';
		} else if (strncmp(argv[n], "--config=", 9) == 0) {
                        g_free_not_null(irssi_config_file);
			irssi_config_file = convert_home(argv[n]+9);
		}
	}

	if (irssi_dir != NULL && !g_path_is_absolute(irssi_dir)) {
		str = irssi_dir;
		irssi_dir = g_strdup_printf("%s/%s", g_get_current_dir(), str);
		g_free(str);
	}

	if (irssi_config_file != NULL &&
	    !g_path_is_absolute(irssi_config_file)) {
		str = irssi_config_file;
		irssi_config_file =
			g_strdup_printf("%s/%s", g_get_current_dir(), str);
		g_free(str);
	}

	args_register(options);

	if (irssi_dir == NULL) {
		home = g_get_home_dir();
		if (home == NULL)
			home = ".";

		irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home);
	}
	if (irssi_config_file == NULL)
		irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir);

	session_set_binary(argv[0]);
}