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,12 +310,14 @@ get_reg_str (const char *sub, const char *name, char *out, DWORD len)
return FALSE; return FALSE;
} }
#endif
char * char *
get_xdir (void) get_xdir (void)
{ {
if (!xdir) if (!xdir)
{ {
#ifdef WIN32
char out[256]; char out[256];
if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData", out, sizeof (out))) if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData", out, sizeof (out)))
@ -326,24 +328,14 @@ get_xdir (void)
{ {
xdir = g_strdup_printf ("%s\\" "HexChat", out); xdir = g_strdup_printf ("%s\\" "HexChat", out);
} }
#else
xdir = g_strdup_printf ("%s/.config/" HEXCHAT_DIR, g_get_home_dir ());
#endif
} }
return xdir; 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 static void
check_prefs_dir (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}, {"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"}, {"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}, {"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}, {"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"}, {"url", 0, 0, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel URL"), "URL"},
#ifndef WIN32 /* uses DBUS */ #ifndef WIN32 /* uses DBUS */
@ -223,53 +223,31 @@ fe_args (int argc, char *argv[])
if (arg_show_version) if (arg_show_version)
{ {
#ifdef WIN32
buffer = g_strdup_printf (DISPLAY_NAME " " PACKAGE_VERSION "\n"); buffer = g_strdup_printf (DISPLAY_NAME " " PACKAGE_VERSION "\n");
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
create_msg_dialog ("Version Information", buffer); create_msg_dialog ("Version Information", buffer);
g_free (buffer); g_free (buffer);
#else
printf (PACKAGE_TARNAME" "PACKAGE_VERSION"\n");
#endif
return 0; return 0;
} }
if (arg_show_autoload) if (arg_show_autoload)
{ {
#ifdef WIN32 buffer = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "addons\n", get_xdir ());
/* 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); gtk_init (&argc, &argv);
create_msg_dialog ("Plugin Auto-load Directory", buffer); create_msg_dialog ("Plugin/Script Auto-load Directory", buffer);
}
else
{
buffer = g_strdup(".\\plugins\n");
gtk_init (&argc, &argv);
create_msg_dialog ("Plugin Auto-load Directory", buffer);
}
g_free (buffer); g_free (buffer);
#else
printf ("%s\n", HEXCHATLIBDIR"/plugins");
#endif
return 0; return 0;
} }
if (arg_show_config) if (arg_show_config)
{ {
#ifdef WIN32 buffer = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "\n", get_xdir ());
buffer = g_strdup_printf ("%s\n", get_xdir ());
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
create_msg_dialog ("User Config Directory", buffer); create_msg_dialog ("User Config Directory", buffer);
g_free (buffer); g_free (buffer);
#else
printf ("%s\n", get_xdir ());
#endif
return 0; return 0;
} }
@ -282,7 +260,7 @@ fe_args (int argc, char *argv[])
char *tmp = strdup (argv[0]); char *tmp = strdup (argv[0]);
char *sl; char *sl;
sl = strrchr (tmp, '\\'); sl = strrchr (tmp, G_DIR_SEPARATOR);
if (sl) if (sl)
{ {
*sl = 0; *sl = 0;
@ -292,18 +270,6 @@ fe_args (int argc, char *argv[])
} }
#endif #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); gtk_init (&argc, &argv);
#ifdef USE_XLIB #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}, {"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"}, {"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}, {"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}, {"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"}, {"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}, {"version", 'v', 0, G_OPTION_ARG_NONE, &arg_show_version, N_("Show version information"), NULL},