Use realpath and stuff file:// on the front of file arguments in GTK frontend
This commit is contained in:
parent
c933b0aff9
commit
4b3a7666dc
26
gtk/gui.c
26
gtk/gui.c
|
@ -353,7 +353,7 @@ static void gui_init(int argc, char** argv, char **respath)
|
|||
{
|
||||
char buf[PATH_MAX];
|
||||
char *resource_filename;
|
||||
const char *addr;
|
||||
char *addr = NULL;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
|
@ -457,11 +457,26 @@ static void gui_init(int argc, char** argv, char **respath)
|
|||
|
||||
/* If there is a url specified on the command line use it */
|
||||
if (argc > 1) {
|
||||
addr = argv[1];
|
||||
} else if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
struct stat fs;
|
||||
if (stat(argv[1], &fs) == 0) {
|
||||
char *rp = realpath(argv[1], NULL);
|
||||
assert(rp != NULL);
|
||||
addr = malloc(SLEN("file://") + strlen(rp) + /*\0 */ 1);
|
||||
assert(addr != NULL);
|
||||
/* These are safe thanks to the above sum */
|
||||
strcpy(addr, "file://");
|
||||
strcat(addr, rp);
|
||||
free(rp);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
addr = strdup(argv[1]);
|
||||
}
|
||||
}
|
||||
if (addr != NULL) {
|
||||
/* managed to set up based on local launch */
|
||||
} else if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = strdup(nsoption_charp(homepage_url));
|
||||
} else {
|
||||
addr = strdup(NETSURF_HOMEPAGE);
|
||||
}
|
||||
|
||||
/* create an initial browser window */
|
||||
|
@ -474,6 +489,7 @@ static void gui_init(int argc, char** argv, char **respath)
|
|||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
free(addr);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
|
|
Loading…
Reference in New Issue