Ups, seems like this bug was introduced by one of my patches. Seems the
database overwriting screen wide settings with default settings also
merges the user settings in the default settings. The attached patch
works for me to fix this problem without reopening #148533.
(I'm not sure those "styles" makes changing some settings by resources
 harder, but it should always be possible to just specify all contents
 of one of the default styles and a non-existent style to work around
 this, so I guess this is the best solution).

Hochachtungsvoll,
        Bernhard R. Link
-- 
"Never contain programs so few bugs, as when no debugging tools are available!"
        Niklaus Wirth
Index: gv-3.6.2/src/main.c
===================================================================
--- gv-3.6.2.orig/src/main.c    2006-10-16 20:55:40.280698642 +0200
+++ gv-3.6.2/src/main.c 2006-10-16 21:05:42.041789721 +0200
@@ -592,10 +592,8 @@
    /*### getting resources ############################################*/
 
    {
-     XrmDatabase db;
      INFMESSAGE(getting resources)
-     db = resource_buildDatabase(gv_display,gv_class,gv_name,&argc,argv);
-     XrmCombineDatabase(db,&gv_database,False);
+     
resource_updateDatabase(gv_display,gv_class,gv_name,&gv_database,&argc,argv);
    }
 
 /*### initializing widget set and creating application shell 
#########################*/
Index: gv-3.6.2/src/resource.c
===================================================================
--- gv-3.6.2.orig/src/resource.c        2005-08-10 13:33:21.000000000 +0200
+++ gv-3.6.2/src/resource.c     2006-10-16 21:23:11.885580469 +0200
@@ -110,13 +110,14 @@
     }
 
 /*#######################################################
-  resource_buildDatabase
+  resource_updateDatabase
   #######################################################*/
 
-XrmDatabase resource_buildDatabase(display,app_class,app_name,argcP,argv)
+void resource_updateDatabase(display,app_class,app_name,dbp,argcP,argv)
      Display *display;
      char *app_class;
      char *app_name;
+     XrmDatabase *dbp;
      int *argcP;
      char **argv;
 {
@@ -126,8 +127,7 @@
   char *spartan_filename;
   char tmp[GV_MAX_FILENAME_LENGTH];
 
-
-  BEGINMESSAGE(resource_buildDatabase)
+  BEGINMESSAGE(resource_updateDatabase)
 
     /* ### class resources ################# */
     INFMESSAGE(merging class resources into database)
@@ -146,6 +146,8 @@
       XrmCombineFileDatabase(rpath,&db,True);
     resource_system_file = rpath;
   }
+  XrmCombineDatabase(db,dbp,False);
+  db = NULL;
 
   /* ### user resources ################# */
   INFMESSAGE(checking for user resources)
@@ -166,6 +168,9 @@
     resource_user_file = GV_XtNewString(tmp);
   }
 
+  XrmCombineDatabase(db,dbp,True);
+  db = *dbp;
+
   /* ### command line resources ################# */
 
   /*
@@ -177,35 +182,35 @@
 
   if (antialias_p)
     {
-      resource_putResource (&db, app_name, ".antialias", "True");
+      resource_putResource (dbp, app_name, ".antialias", "True");
     }
   if (noantialias_p)
     {
-      resource_putResource (&db, app_name, ".antialias", "False");
+      resource_putResource (dbp, app_name, ".antialias", "False");
     }
   if (safer_p)
     {
-      resource_putResource (&db, app_name, ".gsSafer", "True");
+      resource_putResource (dbp, app_name, ".gsSafer", "True");
     }
   if (nosafer_p)
     {
-      resource_putResource (&db, app_name, ".gsSafer", "False");
+      resource_putResource (dbp, app_name, ".gsSafer", "False");
     }
   if (pixmap_p)
     {
-      resource_putResource (&db, app_name, ".useBackingPixmap", "True");
+      resource_putResource (dbp, app_name, ".useBackingPixmap", "True");
     }
   if (nopixmap_p)
     {
-      resource_putResource (&db, app_name, ".useBackingPixmap", "False");
+      resource_putResource (dbp, app_name, ".useBackingPixmap", "False");
     }
   if (color_p)
     {
-      resource_putResource (&db, app_name, "*Ghostview.palette", "Color");
+      resource_putResource (dbp, app_name, "*Ghostview.palette", "Color");
     }
   if (grayscale_p)
     {
-      resource_putResource (&db, app_name, "*Ghostview.palette", "Grayscale");
+      resource_putResource (dbp, app_name, "*Ghostview.palette", "Grayscale");
     }
   if (spartan_p)
     {
@@ -214,109 +219,109 @@
       spartan_filename[0] = '\0';
       strcat(spartan_filename, GV_LIBDIR);
       strcat(spartan_filename, "/gv_spartan.dat");
-      resource_putResource (&db, app_name, ".style", spartan_filename);
+      resource_putResource (dbp, app_name, ".style", spartan_filename);
       GV_XtFree (spartan_filename);
     }
   if (quiet_p)
     {
-      resource_putResource (&db, app_name, ".gsQuiet", "True");
+      resource_putResource (dbp, app_name, ".gsQuiet", "True");
     }
   if (monochrome_p)
     {
-      resource_putResource (&db, app_name, "*Ghostview.palette", "Monochrome");
+      resource_putResource (dbp, app_name, "*Ghostview.palette", "Monochrome");
     }
   if (noquiet_p)
     {
-      resource_putResource (&db, app_name, ".gsQuiet", "False");
+      resource_putResource (dbp, app_name, ".gsQuiet", "False");
     }
    if (media_p) 
      { 
-       resource_putResource (&db, app_name, ".pageMedia", media_value); 
+       resource_putResource (dbp, app_name, ".pageMedia", media_value); 
      } 
    if (orientation_p)
      {
-       resource_putResource (&db, app_name, ".orientation", orientation_value);
+       resource_putResource (dbp, app_name, ".orientation", orientation_value);
      }
    if (page_p)
      {
-       resource_putResource (&db, app_name, ".page", page_value);
+       resource_putResource (dbp, app_name, ".page", page_value);
      }
 
    if (center_p)
      {
-       resource_putResource (&db, app_name, ".autoCenter", "True");
+       resource_putResource (dbp, app_name, ".autoCenter", "True");
      }
    if (nocenter_p)
      {
-       resource_putResource (&db, app_name, ".autoCenter", "False");
+       resource_putResource (dbp, app_name, ".autoCenter", "False");
      }
    if (scale_p)
      {
-       resource_putResource (&db, app_name, ".scale", scale_value);
+       resource_putResource (dbp, app_name, ".scale", scale_value);
      }
    if (magstep_p)
      {
-       resource_putResource (&db, app_name, ".scale", magstep_value);
+       resource_putResource (dbp, app_name, ".scale", magstep_value);
      }
    if (scalebase_p)
      {
-       resource_putResource (&db, app_name, ".scaleBase", scalebase_value);
+       resource_putResource (dbp, app_name, ".scaleBase", scalebase_value);
      }
    if (resize_p)
      {
-       resource_putResource (&db, app_name, ".autoResize", "True");
+       resource_putResource (dbp, app_name, ".autoResize", "True");
      }
    if (noresize_p)
      {
-       resource_putResource (&db, app_name, ".autoResize", "False");
+       resource_putResource (dbp, app_name, ".autoResize", "False");
      }
    if (swap_p)
      {
-       resource_putResource (&db, app_name, ".swapLandscape", "True");
+       resource_putResource (dbp, app_name, ".swapLandscape", "True");
      }
    if (noswap_p)
      {
-       resource_putResource (&db, app_name, ".swapLandscape", "False");
+       resource_putResource (dbp, app_name, ".swapLandscape", "False");
      }
    if (dsc_p)
      {
-       resource_putResource (&db, app_name, ".respectDSC", "True");
+       resource_putResource (dbp, app_name, ".respectDSC", "True");
      }
    if (nodsc_p)
      {
-       resource_putResource (&db, app_name, ".respectDSC", "False");
+       resource_putResource (dbp, app_name, ".respectDSC", "False");
      }
    if (eof_p)
      {
-       resource_putResource (&db, app_name, ".ignoreEOF", "True");
+       resource_putResource (dbp, app_name, ".ignoreEOF", "True");
      }
    if (noeof_p)
      {
-       resource_putResource (&db, app_name, ".ignoreEOF", "False");
+       resource_putResource (dbp, app_name, ".ignoreEOF", "False");
      }
    if (watch_p)
      {
-       resource_putResource (&db, app_name, ".watchFile", "True");
+       resource_putResource (dbp, app_name, ".watchFile", "True");
      }
    if (nowatch_p)
      {
-       resource_putResource (&db, app_name, ".watchFile", "False");
+       resource_putResource (dbp, app_name, ".watchFile", "False");
      }
    if (ad_p)
      {
-       resource_putResource (&db, app_name, ".ad", ad_value);
+       resource_putResource (dbp, app_name, ".ad", ad_value);
      }
    if (style_p)
      {
-       resource_putResource (&db, app_name, ".style", style_value);
+       resource_putResource (dbp, app_name, ".style", style_value);
      }
    if (arguments_p)
      {
-       resource_putResource (&db, app_name, ".arguments", arguments_value);
+       resource_putResource (dbp, app_name, ".arguments", arguments_value);
      }
   
   INFMESSAGE(parsing command line)
-    XrmParseCommand(&db,options,XtNumber(options),app_name,argcP,argv);
+    XrmParseCommand(dbp,options,XtNumber(options),app_name,argcP,argv);
 
   /* ### style resources ######################## */
   INFMESSAGE(checking for style resources)
@@ -354,7 +359,7 @@
      */
 
     INFSMESSAGE(merging style resource file into database,s)
-      t = resource_mergeFileIntoDatabase(&db,s);
+      t = resource_mergeFileIntoDatabase(dbp,s);
     if (!t) {
       fprintf(stderr,"%s: Style file '%s' not found - ignored\n",app_name,s);
       s=NULL;
@@ -384,8 +389,7 @@
     if (t) GV_XtFree(t);
   }
 
-  ENDMESSAGE(resource_buildDatabase)
-    return(db);
+  ENDMESSAGE(resource_updateDatabase)
 }
 
 /*#######################################################
Index: gv-3.6.2/src/resource.h
===================================================================
--- gv-3.6.2.orig/src/resource.h        2004-12-06 13:52:10.000000000 +0100
+++ gv-3.6.2/src/resource.h     2006-10-16 21:24:43.243115805 +0200
@@ -38,11 +38,12 @@
 #endif
 );
 
-extern XrmDatabase   resource_buildDatabase (
+extern void   resource_updateDatabase (
 #if NeedFunctionPrototypes
   Display *,
   char *,
   char *,
+  XrmDatabase *,
   int *,
   char **
 #endif

Reply via email to