diff src/util.c @ 6861:4ae5d9c3d9ec

[gaim-migrate @ 7407] You know the thing that checked if the manual browser command was valid? I moved the funcion that does the actual checking into util.c It's pretty generic, I guess. I moved the check (the call to that function) to browser.c, so it checks for a valid browser when you click on a link. The old way used to really annoy me, because you would get multiple error boxes about the browser being invalid. Herman, I tried to keep things compiling on Windows. I didn't want to #ifdef the program_is_valid() function in util.c--I don't see any reason why it wouldn't compile in Windows. But if there's a problem with it feel free to #ifdef that puppy. Also, Nathan, I'm going to quiz you later on my townhousemates, so please bring a number two pencil and make sure you eat a healthy breakfast. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 16 Sep 2003 04:57:36 +0000
parents 060aa79a733e
children dd0eecfbe413
line wrap: on
line diff
--- a/src/util.c	Tue Sep 16 04:49:51 2003 +0000
+++ b/src/util.c	Tue Sep 16 04:57:36 2003 +0000
@@ -853,6 +853,38 @@
 	return fp;
 }
 
+gboolean program_is_valid(const char *program) 
+{
+	GError *error = NULL;
+	char **argv; 
+	gchar *progname;
+	gboolean is_valid = FALSE;
+
+	if (program == NULL || *program == '\0') {
+		return FALSE;
+	}
+
+	if (!g_shell_parse_argv(program, NULL, &argv, &error)) {
+		gaim_debug(GAIM_DEBUG_ERROR, "program_is_valid",
+				   "Could not parse program '%s': %s\n",
+				   program, error->message);
+		g_error_free(error);
+		return FALSE;
+	}
+
+	if (argv == NULL) {
+		return FALSE;
+	}
+
+	progname = g_find_program_in_path(argv[0]);
+	is_valid = (progname != NULL);
+
+	g_strfreev(argv);
+	g_free(progname);
+	
+	return is_valid;
+}
+
 char *gaim_try_conv_to_utf8(const char *str)
 {
 	gsize converted;