Handle extraneous cli args as urls

This commit is contained in:
TingPing 2013-07-01 13:43:58 -04:00
parent 73c9321361
commit aab55d8cff
4 changed files with 22 additions and 6 deletions

View File

@ -21,10 +21,11 @@ Comment[fr]=Discutez avec tout le monde sur l'Internet Relay Chat
Comment[de]=Sich über Internet Relay Chat mit andern Leuten unterhalten Comment[de]=Sich über Internet Relay Chat mit andern Leuten unterhalten
Comment[it]=Chiacchierare con la gente sull'Internet Relay Chat Comment[it]=Chiacchierare con la gente sull'Internet Relay Chat
Comment[nb]=Snakk med mennesker på Internet Relay Chat Comment[nb]=Snakk med mennesker på Internet Relay Chat
Exec=hexchat Exec=hexchat %U
Icon=hexchat Icon=hexchat
Terminal=false Terminal=false
Type=Application Type=Application
Categories=GTK;Network;IRCClient; Categories=GTK;Network;IRCClient;
StartupNotify=true StartupNotify=true
X-GNOME-UsesNotifications=true X-GNOME-UsesNotifications=true
MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;

View File

@ -105,6 +105,7 @@ int hexchat_is_quitting = FALSE;
int arg_dont_autoconnect = FALSE; int arg_dont_autoconnect = FALSE;
int arg_skip_plugins = FALSE; int arg_skip_plugins = FALSE;
char *arg_url = NULL; char *arg_url = NULL;
char **arg_urls = NULL;
char *arg_command = NULL; char *arg_command = NULL;
gint arg_existing = FALSE; gint arg_existing = FALSE;
@ -400,6 +401,7 @@ irc_init (session *sess)
{ {
static int done_init = FALSE; static int done_init = FALSE;
char *buf; char *buf;
int i;
if (done_init) if (done_init)
return; return;
@ -432,6 +434,17 @@ irc_init (session *sess)
g_free (buf); g_free (buf);
} }
if (arg_urls != NULL)
{
for (i = 0; i < g_strv_length(arg_urls); i++)
{
buf = g_strdup_printf ("%s %s", i==0? "server" : "newserver", arg_urls[i]);
handle_command (sess, buf, FALSE);
g_free (buf);
}
g_strfreev (arg_urls);
}
if (arg_command != NULL) if (arg_command != NULL)
{ {
g_free (arg_command); g_free (arg_command);
@ -924,17 +937,17 @@ xchat_init (void)
servlist_init (); /* load server list */ servlist_init (); /* load server list */
/* if we got a URL, don't open the server list GUI */ /* if we got a URL, don't open the server list GUI */
if (!prefs.hex_gui_slist_skip && !arg_url) if (!prefs.hex_gui_slist_skip && !arg_url && !arg_urls)
fe_serverlist_open (NULL); fe_serverlist_open (NULL);
/* turned OFF via -a arg */ /* turned OFF via -a arg or by passing urls */
if (!arg_dont_autoconnect) if (!arg_dont_autoconnect && !arg_urls)
{ {
/* do any auto connects */ /* do any auto connects */
if (!servlist_have_auto ()) /* if no new windows open .. */ if (!servlist_have_auto ()) /* if no new windows open .. */
{ {
/* and no serverlist gui ... */ /* and no serverlist gui ... */
if (prefs.hex_gui_slist_skip || arg_url) if (prefs.hex_gui_slist_skip || arg_url || arg_urls)
/* we'll have to open one. */ /* we'll have to open one. */
new_ircwindow (NULL, NULL, SESS_SERVER, 0); new_ircwindow (NULL, NULL, SESS_SERVER, 0);
} else } else
@ -943,7 +956,7 @@ xchat_init (void)
} }
} else } else
{ {
if (prefs.hex_gui_slist_skip || arg_url) if (prefs.hex_gui_slist_skip || arg_url || arg_urls)
new_ircwindow (NULL, NULL, SESS_SERVER, 0); new_ircwindow (NULL, NULL, SESS_SERVER, 0);
} }
} }

View File

@ -26,6 +26,7 @@ extern int hexchat_is_quitting;
extern gint arg_skip_plugins; /* command-line args */ extern gint arg_skip_plugins; /* command-line args */
extern gint arg_dont_autoconnect; extern gint arg_dont_autoconnect;
extern char *arg_url; extern char *arg_url;
extern char **arg_urls;
extern char *arg_command; extern char *arg_command;
extern gint arg_existing; extern gint arg_existing;

View File

@ -131,6 +131,7 @@ static const GOptionEntry gopt_entries[] =
#endif #endif
{"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")}, {"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")},
{"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},
{G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_STRING_ARRAY, &arg_urls, NULL, NULL},
{NULL} {NULL}
}; };