r2888 rjek - in /trunk/netsurf: gtk/gtk_gui.c gtk/gtk_window.c gtk/res/b.png gtk/res/messages gtk/res/messages.txt gtk/res/netsurf.glade gtk/res/throbber.gif netsurf
by netsurf@semichrome.net
Author: rjek
Date: Thu Aug 24 18:24:36 2006
New Revision: 2888
URL: http://svn.semichrome.net?rev=2888&view=rev
Log:
Improve resource finding, and start groundwork on making it installable - you must now run the "netsurf" shellscript to run nsgtk, and not nsgtk directly.
Added:
trunk/netsurf/gtk/res/b.png (with props)
trunk/netsurf/gtk/res/messages
- copied unchanged from r2885, trunk/netsurf/gtk/res/messages.txt
trunk/netsurf/gtk/res/netsurf.glade
- copied unchanged from r2882, trunk/netsurf/gtk/netsurf.glade
trunk/netsurf/gtk/res/throbber.gif
- copied unchanged from r2880, trunk/netsurf/gtk/throbber.gif
trunk/netsurf/netsurf (with props)
Removed:
trunk/netsurf/gtk/res/messages.txt
Modified:
trunk/netsurf/gtk/gtk_gui.c
trunk/netsurf/gtk/gtk_window.c
Modified: trunk/netsurf/gtk/gtk_gui.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_gui.c?rev=2888&r1=2887&r2...
==============================================================================
--- trunk/netsurf/gtk/gtk_gui.c (original)
+++ trunk/netsurf/gtk/gtk_gui.c Thu Aug 24 18:24:36 2006
@@ -13,6 +13,8 @@
#include <string.h>
#include <unistd.h>
#include <limits.h>
+#include <sys/stat.h>
+#include <sys/types.h>
#include <curl/curl.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
@@ -71,11 +73,13 @@
static char *find_resource(char *buf, const char *filename, const char *def)
{
char *cdir = getenv("HOME");
+ char t[PATH_MAX];
if (cdir != NULL) {
- strcpy(buf, cdir);
- strcat(buf, "/.netsurf/");
- strcat(buf, filename);
+ strcpy(t, cdir);
+ strcat(t, "/.netsurf/");
+ strcat(t, filename);
+ realpath(t, buf);
if (access(buf, R_OK) == 0)
return buf;
}
@@ -83,27 +87,61 @@
cdir = getenv("NETSURFRES");
if (cdir != NULL) {
- strcpy(buf, cdir);
+ realpath(cdir, buf);
strcat(buf, "/");
strcat(buf, filename);
if (access(buf, R_OK) == 0)
return buf;
}
- strcpy(buf, RESPATH);
- strcat(buf, filename);
+ strcpy(t, RESPATH);
+ strcat(t, filename);
+ realpath(t, buf);
if (access(buf, R_OK) == 0)
return buf;
- strcpy(buf, def);
+ if (def[0] == '~') {
+ snprintf(t, PATH_MAX, "%s%s", getenv("HOME"), def + 1);
+ realpath(t, buf);
+ } else {
+ realpath(def, buf);
+ }
+
return buf;
}
+/**
+ * Check that ~/.netsurf/ exists, and if it doesn't, create it.
+ */
+static void check_homedir(void)
+{
+ char *hdir = getenv("HOME");
+ char buf[BUFSIZ];
+
+ if (hdir == NULL) {
+ /* we really can't continue without a home directory. */
+ LOG(("HOME is not set - nowhere to store state!"));
+ die("NetSurf requires HOME to be set in order to run.\n");
+
+ }
+
+ snprintf(buf, BUFSIZ, "%s/.netsurf", hdir);
+ if (access(buf, F_OK) != 0) {
+ LOG(("You don't have a ~/.netsurf - creating one for you."));
+ if (mkdir(buf, 0777) == -1) {
+ LOG(("Unable to create ~/.netsurf!"));
+ die("NetSurf requires ~/.netsurf to exist, but it cannot be created.\n");
+ }
+ }
+}
+
void gui_init(int argc, char** argv)
{
char buf[PATH_MAX];
gtk_init(&argc, &argv);
+
+ check_homedir();
find_resource(buf, "netsurf.glade", "./gtk/netsurf.glade");
LOG(("Using '%s' as Glade template file", buf));
@@ -122,7 +160,7 @@
if (nsgtk_throbber == NULL)
die("Unable to load throbber image.\n");
- find_resource(buf, "Choices", "Choices");
+ find_resource(buf, "Choices", "~/.netsurf/Choices");
LOG(("Using '%s' as Choices file", buf));
options_file_location = strdup(buf);
options_read(buf);
@@ -130,12 +168,12 @@
nsgtk_options_init();
if (!option_cookie_file) {
- find_resource(buf, "Cookies", "Cookies");
+ find_resource(buf, "Cookies", "~/.netsurf/Cookies");
LOG(("Using '%s' as Cookies file", buf));
option_cookie_file = strdup(buf);
}
if (!option_cookie_jar) {
- find_resource(buf, "Cookies", "Cookies");
+ find_resource(buf, "Cookies", "~/.netsurf/Cookies");
LOG(("Using '%s' as Cookie Jar file", buf));
option_cookie_jar = strdup(buf);
}
@@ -143,7 +181,7 @@
die("Failed initialising cookie options");
if (!option_url_file) {
- find_resource(buf, "URLs", "URLs");
+ find_resource(buf, "URLs", "~/.netsurf/URLs");
LOG(("Using '%s' as URL file", buf));
option_url_file = strdup(buf);
}
@@ -153,11 +191,11 @@
messages_load(buf);
/* set up stylesheet urls */
- find_resource(buf, "Default.css", "Default.css");
+ find_resource(buf, "default.css", "default.css");
default_stylesheet_url = path_to_url(buf);
LOG(("Using '%s' as Default CSS URL", default_stylesheet_url));
- find_resource(buf, "AdBlock.css", "AdBlock.css");
+ find_resource(buf, "adblock.css", "adblock.css");
adblock_stylesheet_url = path_to_url(buf);
LOG(("Using '%s' as AdBlock CSS URL", adblock_stylesheet_url));
Modified: trunk/netsurf/gtk/gtk_window.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_window.c?rev=2888&r1=2887...
==============================================================================
--- trunk/netsurf/gtk/gtk_window.c (original)
+++ trunk/netsurf/gtk/gtk_window.c Thu Aug 24 18:24:36 2006
@@ -697,7 +697,7 @@
/* load the window template from the glade xml file, and extract
* widget references from it for later use.
*/
- g->xml = glade_xml_new("./gtk/netsurf.glade", "wndBrowser", NULL);
+ g->xml = glade_xml_new(glade_file_location, "wndBrowser", NULL);
glade_xml_signal_autoconnect(g->xml);
g->window = GTK_WINDOW(GET_WIDGET("wndBrowser"));
g->url_bar = GTK_ENTRY(GET_WIDGET("URLBar"));
Added: trunk/netsurf/gtk/res/b.png
URL: http://svn.semichrome.net/trunk/netsurf/gtk/res/b.png?rev=2888&view=auto
==============================================================================
--- trunk/netsurf/gtk/res/b.png (added)
+++ trunk/netsurf/gtk/res/b.png Thu Aug 24 18:24:36 2006
@@ -1,0 +1,1 @@
+link ../../!NetSurf/Resources/b,b60
Propchange: trunk/netsurf/gtk/res/b.png
------------------------------------------------------------------------------
svn:special = *
Removed: trunk/netsurf/gtk/res/messages.txt
URL: http://svn.semichrome.net/trunk/netsurf/gtk/res/messages.txt?rev=2887&vie...
==============================================================================
--- trunk/netsurf/gtk/res/messages.txt (original)
+++ trunk/netsurf/gtk/res/messages.txt (removed)
@@ -1,1 +1,0 @@
-link ../../!NetSurf/Resources/en/Messages
Added: trunk/netsurf/netsurf
URL: http://svn.semichrome.net/trunk/netsurf/netsurf?rev=2888&view=auto
==============================================================================
--- trunk/netsurf/netsurf (added)
+++ trunk/netsurf/netsurf Thu Aug 24 18:24:36 2006
@@ -1,0 +1,3 @@
+#!/bin/sh
+export NETSURFRES=`dirname $0`/gtk/res/
+exec `dirname $0`/nsgtk "$@"
Propchange: trunk/netsurf/netsurf
------------------------------------------------------------------------------
svn:executable = *