Handle extraneous cli args as urls
This commit is contained in:
		
							parent
							
								
									73c9321361
								
							
						
					
					
						commit
						aab55d8cff
					
				
					 4 changed files with 22 additions and 6 deletions
				
			
		| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue