--- /u/ox/filez/blackbox-0.61.1/blackbox-0.61.1/src/blackbox.cc	Wed Jul 11 16:25:49 2001
+++ blackbox.cc	Wed Jul 11 16:17:54 2001
@@ -120,7 +120,6 @@
 }
 #endif // HAVE_BASENAME
 
-
 // X event scanner for enter/leave notifies - adapted from twm
 typedef struct scanargs {
   Window w;
@@ -1242,6 +1241,22 @@
   delete [] dbfile;
 }
 
+// this is what expands the ~ in XrmDb strings
+// it's quite crufted, but it gets the job done.
+char * texpand (char * str)
+{
+	char * ret;
+	char * usr;
+	if (!strncmp(str, "~", 1))
+	{
+		usr = getenv("HOME");
+		ret = (char *) malloc(strlen(str) + strlen(usr) + 1);
+		sprintf(ret, "%s%s", usr, str + 1);
+	} else {
+		ret = strdup(str);
+	}
+	return ret;
+}
 
 void Blackbox::load_rc(void) {
   XrmDatabase database = (XrmDatabase) 0;
@@ -1268,7 +1283,7 @@
 
   if (XrmGetResource(database, "session.menuFile", "Session.MenuFile",
 		     &value_type, &value))
-    resource.menu_file = bstrdup(value.addr);
+    resource.menu_file = texpand(bstrdup(value.addr));
   else
     resource.menu_file = bstrdup(DEFAULTMENU);
 
@@ -1307,7 +1322,7 @@
 
   if (XrmGetResource(database, "session.styleFile", "Session.StyleFile",
 		     &value_type, &value))
-    resource.style_file = bstrdup(value.addr);
+    resource.style_file = texpand(bstrdup(value.addr));
   else
     resource.style_file = bstrdup(DEFAULTSTYLE);
 
