changeset 50038:8054c23b6726

(w32_make_rdb): New function. (w32_term_init): Use it to initialize xrdb member of w32_display_info struct. Delete leftover code.
author Juanma Barranquero <lekktu@gmail.com>
date Thu, 06 Mar 2003 13:00:04 +0000
parents bb427a9406c3
children 479f0fd3607c
files src/w32term.c
diffstat 1 files changed, 57 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32term.c	Thu Mar 06 12:56:56 2003 +0000
+++ b/src/w32term.c	Thu Mar 06 13:00:04 2003 +0000
@@ -11134,6 +11134,61 @@
 
 }
 
+/* Create an xrdb-style database of resources to supercede registry settings.
+   The database is just a concatenation of C strings, finished by an additional
+   \0.  The string are submitted to some basic normalization, so
+
+     [ *]option[ *]:[ *]value...
+
+   becomes
+
+     option:value...
+
+   but any whitespace following value is not removed.  */
+
+static char *
+w32_make_rdb (xrm_option)
+     char *xrm_option;
+{
+  char *buffer = xmalloc (strlen (xrm_option) + 2);
+  char *current = buffer;
+  char ch;
+  int in_option = 1;
+  int before_value = 0;
+
+  do {
+    ch = *xrm_option++;
+
+    if (ch == '\n')
+      {
+        *current++ = '\0';
+        in_option = 1;
+        before_value = 0;
+      }
+    else if (ch != ' ')
+      {
+        *current++ = ch;
+        if (in_option && (ch == ':'))
+          {
+            in_option = 0;
+            before_value = 1;
+          }
+        else if (before_value)
+          {
+            before_value = 0;
+          }
+      }
+    else if (!(in_option || before_value))
+      {
+        *current++ = ch;
+      }
+  } while (ch);
+
+  *current = '\0';
+
+  return buffer;
+}
+
 struct w32_display_info *
 w32_term_init (display_name, xrm_option, resource_name)
      Lisp_Object display_name;
@@ -11151,23 +11206,12 @@
       w32_initialized = 1;
     }
 
-  {
-    int argc = 0;
-    char *argv[3];
-
-    argv[0] = "";
-    argc = 1;
-    if (xrm_option)
-      {
-	argv[argc++] = "-xrm";
-	argv[argc++] = xrm_option;
-      }
-  }
-
   w32_initialize_display_info (display_name);
 
   dpyinfo = &one_w32_display_info;
 
+  dpyinfo->xrdb = xrm_option ? w32_make_rdb (xrm_option) : NULL;
+
   /* Put this display on the chain.  */
   dpyinfo->next = x_display_list;
   x_display_list = dpyinfo;