Re: How do online html docs in GTK+? in /portable/ way possible too?
- From: Chris Wareham <chris wareham iosystems co uk>
- To: "David L. Cooper II" <cooperdl worldnet att net>
- Cc: Christian Seberino <seberino spawar navy mil>, gtk-list gnome org
- Subject: Re: How do online html docs in GTK+? in /portable/ way possible too?
- Date: Tue, 25 Jun 2002 14:56:02 +0100
Christian Seberino <seberino spawar navy mil> writes:
Netscape sounds interesting.... do you
know how to do this?... does this mean "fork" and "exec"
system calls? I don't suppose it is possible to do this with
PThreads is it?
You can't do it from a thread, as you'd still need to fork and
exec. The following snippet of code loads a URL in an already
running Netscape, or launches it if it isn't running.
void some_callback(GtkWidget *widget, gpointer data) {
gchar buf[MAXPATHLEN];
gchar *url = (gchar *)data;
g_snprintf(buf, MAXPATHLEN, "%s/.netscape/lock", g_get_home_dir());
if(lstat(buf, &statbuf))
g_snprintf(buf, MAXPATHLEN,
"netscape %s", url);
else
g_snprintf(buf, MAXPATHLEN,
"netscape -remote openURL(%s,new_window)", url);
if(!start_browser(buf))
/* show an error dialog */;
}
gboolean start_browser(const gchar *cmd) {
char **args, *ptr, *tokptr;
int argc, len, i;
pid_t pid;
if((pid = fork()) == 0) {
if((pid = fork()) == 0) {
len = strlen(cmd);
argc = 1;
for(i = 0; i < len; i++) {
if(cmd[i] == ' ')
argc++;
}
args = g_malloc(sizeof(char *) * (argc + 1));
args[argc] = NULL;
if(argc == 1) {
args[0] = g_malloc(sizeof(char) * (len + 1));
strcpy(args[0], cmd);
} else {
ptr = g_malloc(sizeof(char) * (len + 1));
strcpy(ptr, cmd);
tokptr = strtok(ptr, " ");
args[0] = tokptr;
i = 1;
for(i = 1; tokptr; i++) {
tokptr = strtok(NULL, " ");
args[i] = tokptr;
}
args[i] = tokptr;
}
/* for(i = 0; i < argc; i++) {
g_print("arg %d : %s\n", i + 1, args[i]);
}
_exit(0); */
execvp(args[0], args);
}
_exit(0);
} else if(pid < 0) {
return FALSE;
}
return TRUE;
}
Chris
--
chris wareham iosystems co uk (work)
cwareham btinternet com (home)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]