Some more platform unification

This commit is contained in:
Berke Viktor 2012-11-04 21:40:59 +01:00
parent 5c9283fc68
commit d0b5d53f92
3 changed files with 24 additions and 66 deletions

View File

@ -310,40 +310,32 @@ get_reg_str (const char *sub, const char *name, char *out, DWORD len)
return FALSE;
}
#endif
char *
get_xdir (void)
{
if (!xdir)
{
char out[256];
#ifdef WIN32
char out[256];
if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData", out, sizeof (out)))
{
xdir = g_strdup (".\\config");
}
else
{
xdir = g_strdup_printf ("%s\\" "HexChat", out);
}
if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData", out, sizeof (out)))
{
xdir = g_strdup (".\\config");
}
else
{
xdir = g_strdup_printf ("%s\\" "HexChat", out);
}
#else
xdir = g_strdup_printf ("%s/.config/" HEXCHAT_DIR, g_get_home_dir ());
#endif
}
return xdir;
}
#else
char *
get_xdir (void)
{
if (!xdir)
xdir = g_strdup_printf ("%s/.config/" HEXCHAT_DIR, g_get_home_dir ());
return xdir;
}
#endif /* !WIN32 */
static void
check_prefs_dir (void)
{

View File

@ -132,7 +132,7 @@ static const GOptionEntry gopt_entries[] =
{"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL},
{"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"},
{"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL},
{"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin auto-load directory"), NULL},
{"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin/script auto-load directory"), NULL},
{"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL},
{"url", 0, 0, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"},
#ifndef WIN32 /* uses DBUS */
@ -223,53 +223,31 @@ fe_args (int argc, char *argv[])
if (arg_show_version)
{
#ifdef WIN32
buffer = g_strdup_printf (DISPLAY_NAME " " PACKAGE_VERSION "\n");
gtk_init (&argc, &argv);
create_msg_dialog ("Version Information", buffer);
g_free (buffer);
#else
printf (PACKAGE_TARNAME" "PACKAGE_VERSION"\n");
#endif
return 0;
}
if (arg_show_autoload)
{
#ifdef WIN32
/* see the chdir() below */
char *sl, *exe = strdup (argv[0]);
sl = strrchr (exe, '\\');
if (sl)
{
*sl = 0;
buffer = g_strdup_printf ("%s\\plugins\n", exe);
gtk_init (&argc, &argv);
create_msg_dialog ("Plugin Auto-load Directory", buffer);
}
else
{
buffer = g_strdup(".\\plugins\n");
gtk_init (&argc, &argv);
create_msg_dialog ("Plugin Auto-load Directory", buffer);
}
buffer = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "addons\n", get_xdir ());
gtk_init (&argc, &argv);
create_msg_dialog ("Plugin/Script Auto-load Directory", buffer);
g_free (buffer);
#else
printf ("%s\n", HEXCHATLIBDIR"/plugins");
#endif
return 0;
}
if (arg_show_config)
{
#ifdef WIN32
buffer = g_strdup_printf ("%s\n", get_xdir ());
buffer = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "\n", get_xdir ());
gtk_init (&argc, &argv);
create_msg_dialog ("User Config Directory", buffer);
g_free (buffer);
#else
printf ("%s\n", get_xdir ());
#endif
return 0;
}
@ -282,7 +260,7 @@ fe_args (int argc, char *argv[])
char *tmp = strdup (argv[0]);
char *sl;
sl = strrchr (tmp, '\\');
sl = strrchr (tmp, G_DIR_SEPARATOR);
if (sl)
{
*sl = 0;
@ -292,18 +270,6 @@ fe_args (int argc, char *argv[])
}
#endif
if (arg_cfgdir)
{
if (xdir)
g_free (xdir);
xdir = strdup (arg_cfgdir);
if (xdir[strlen (xdir) - 1] == '/')
{
xdir[strlen (xdir) - 1] = 0;
}
g_free (arg_cfgdir);
}
gtk_init (&argc, &argv);
#ifdef USE_XLIB

View File

@ -457,7 +457,7 @@ static const GOptionEntry gopt_entries[] =
{"no-auto", 'a', 0, G_OPTION_ARG_NONE, &arg_dont_autoconnect, N_("Don't auto connect to servers"), NULL},
{"cfgdir", 'd', 0, G_OPTION_ARG_STRING, &arg_cfgdir, N_("Use a different config directory"), "PATH"},
{"no-plugins", 'n', 0, G_OPTION_ARG_NONE, &arg_skip_plugins, N_("Don't auto load any plugins"), NULL},
{"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin auto-load directory"), NULL},
{"plugindir", 'p', 0, G_OPTION_ARG_NONE, &arg_show_autoload, N_("Show plugin/script auto-load directory"), NULL},
{"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL},
{"url", 0, 0, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"},
{"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL},