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