Module Name:    xsrc
Committed By:   mrg
Date:           Sun Mar 11 08:35:14 UTC 2018

Modified Files:
        xsrc/external/mit/xload/dist: compile
        xsrc/external/mit/xrdb/dist: xrdb.c
Added Files:
        xsrc/external/mit/xmessage/dist: compile

Log Message:
merge xload 1.1.3, xrdb 1.1.1 and xmessage 1.0.5.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xload/dist/compile
cvs rdiff -u -r0 -r1.3 xsrc/external/mit/xmessage/dist/compile
cvs rdiff -u -r1.8 -r1.9 xsrc/external/mit/xrdb/dist/xrdb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xload/dist/compile
diff -u xsrc/external/mit/xload/dist/compile:1.3 xsrc/external/mit/xload/dist/compile:1.4
--- xsrc/external/mit/xload/dist/compile:1.3	Mon Mar 17 09:43:11 2014
+++ xsrc/external/mit/xload/dist/compile	Sun Mar 11 08:35:14 2018
@@ -3,7 +3,7 @@
 
 scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <tro...@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify

Index: xsrc/external/mit/xrdb/dist/xrdb.c
diff -u xsrc/external/mit/xrdb/dist/xrdb.c:1.8 xsrc/external/mit/xrdb/dist/xrdb.c:1.9
--- xsrc/external/mit/xrdb/dist/xrdb.c:1.8	Sun Apr 24 18:22:49 2016
+++ xsrc/external/mit/xrdb/dist/xrdb.c	Sun Mar 11 08:35:14 2018
@@ -53,25 +53,21 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <stdarg.h>
+#include <stdint.h>
 
 #ifdef NEED_SYS_PARAM_H
-# include <sys/param.h>		/* defines MAXHOSTNAMELEN on BSD & Linux */
+# include <sys/param.h>         /* defines MAXHOSTNAMELEN on BSD & Linux */
 #endif
 
 #ifdef NEED_NETDB_H
-# include <netdb.h>		/* defines MAXHOSTNAMELEN on Solaris */
+# include <netdb.h>             /* defines MAXHOSTNAMELEN on Solaris */
 #endif
 
 #define SCREEN_RESOURCES "SCREEN_RESOURCES"
 
 #ifndef CPP
-#ifdef __UNIXOS2__
-/* expected to be in path */
-#define CPP "cpp"
-#else
 #define CPP "/usr/lib/cpp"
-#endif /* __UNIXOS2__ */
-#endif /* CPP */
+#endif                          /* CPP */
 
 #define INIT_BUFFER_SIZE 10000
 #define INIT_ENTRY_SIZE 500
@@ -89,28 +85,29 @@
 #define OPMERGE 5
 #define OPOVERRIDE 6
 
-#define RESOURCE_PROPERTY_NAME "RESOURCE_MANAGER"
-#define BACKUP_SUFFIX ".bak"		/* for editting */
+#define BACKUP_SUFFIX ".bak"    /* for editing */
 
 typedef struct _Entry {
     char *tag, *value;
     int lineno;
     Bool usable;
 } Entry;
+
 typedef struct _Buffer {
     char *buff;
-    int  room, used;
+    size_t room, used;
 } Buffer;
+
 typedef struct _Entries {
     Entry *entry;
-    int   room, used;
+    size_t room, used;
 } Entries;
 
 /* dynamically allocated strings */
 #define CHUNK_SIZE 4096
 typedef struct _String {
     char *val;
-    int room, used;
+    size_t room, used;
 } String;
 
 static char *ProgramName;
@@ -127,11 +124,11 @@ static char tmpname3[32];
 static int oper = OPLOAD;
 static char *editFile = NULL;
 static const char *cpp_program = NULL;
-static const char* const cpp_locations[] = { CPP };
+static const char * const cpp_locations[] = { CPP };
 static const char *backup_suffix = BACKUP_SUFFIX;
 static Bool dont_execute = False;
 static String defines;
-static int defines_base;
+static size_t defines_base;
 #define MAX_CMD_DEFINES 512
 static char *cmd_defines[MAX_CMD_DEFINES];
 static int num_cmd_defines = 0;
@@ -140,20 +137,21 @@ static Display *dpy;
 static Buffer buffer;
 static Entries newDB;
 
-static void fatal(const char *, ...) _X_ATTRIBUTE_PRINTF(1,2) _X_NORETURN;
-static void addstring ( String *arg, const char *s );
-static void addescapedstring ( String *arg, const char *s );
-static void addtokstring ( String *arg, const char *s );
-static void FormatEntries ( Buffer *b, Entries *entries );
-static void StoreProperty ( Display *display, Window root, Atom res_prop );
-static void Process ( int scrno, Bool doScreen, Bool execute );
-static void ShuffleEntries ( Entries *db, Entries *dbs, int num );
-static void ReProcess ( int scrno, Bool doScreen );
+static void fatal(const char *, ...)
+    _X_ATTRIBUTE_PRINTF(1, 2)_X_NORETURN _X_COLD;
+static void addstring(String *arg, const char *s);
+static void addescapedstring(String *arg, const char *s);
+static void addtokstring(String *arg, const char *s);
+static void FormatEntries(Buffer *b, Entries * entries);
+static void StoreProperty(Display *display, Window root, Atom res_prop);
+static void Process(int scrno, Bool doScreen, Bool execute);
+static void ShuffleEntries(Entries *db, Entries *dbs, unsigned int num);
+static void ReProcess(int scrno, Bool doScreen);
 
 #ifndef HAVE_ASPRINTF
 /* sprintf variant found in newer libc's which allocates string to print to */
-static int _X_ATTRIBUTE_PRINTF(2,3)
-asprintf(char ** ret, const char *format, ...)
+static int _X_ATTRIBUTE_PRINTF(2, 3)
+asprintf(char **ret, const char *format, ...)
 {
     char buf[256];
     int len;
@@ -164,40 +162,52 @@ asprintf(char ** ret, const char *format
     va_end(ap);
 
     if (len < 0)
-	return -1;
+        return -1;
 
-    if (len < sizeof(buf))
-    {
-	*ret = strdup(buf);
+    if (len < sizeof(buf)) {
+        *ret = strdup(buf);
     }
-    else
-    {
-	*ret = malloc(len + 1); /* snprintf doesn't count trailing '\0' */
-	if (*ret != NULL)
-	{
-	    va_start(ap, format);
-	    len = vsnprintf(*ret, len + 1, format, ap);
-	    va_end(ap);
-	    if (len < 0) {
-		free(*ret);
-		*ret = NULL;
-	    }
-	}
+    else {
+        *ret = malloc(len + 1); /* snprintf doesn't count trailing '\0' */
+        if (*ret != NULL) {
+            va_start(ap, format);
+            len = vsnprintf(*ret, len + 1, format, ap);
+            va_end(ap);
+            if (len < 0) {
+                free(*ret);
+                *ret = NULL;
+            }
+        }
     }
 
     if (*ret == NULL)
-	return -1;
+        return -1;
 
     return len;
 }
-#endif /* HAVE_ASPRINTF */
+#endif                          /* HAVE_ASPRINTF */
+
+#ifndef HAVE_REALLOCARRAY
+/* overflow checking realloc API from OpenBSD libc */
+static inline void *
+reallocarray(void *optr, size_t n, size_t s)
+{
+    if (n > 0 && (SIZE_MAX / n) < s)
+        return NULL;
+    return realloc(optr, n * s);
+}
+#endif
+
+# define mallocarray(n, s) reallocarray(NULL, n, s)
 
 static void
 InitBuffer(Buffer *b)
 {
     b->room = INIT_BUFFER_SIZE;
     b->used = 0;
-    b->buff = malloc(INIT_BUFFER_SIZE*sizeof(char));
+    b->buff = mallocarray(INIT_BUFFER_SIZE, sizeof(char));
+    if (b->buff == NULL)
+        fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
 }
 
 #ifdef notyet
@@ -209,11 +219,13 @@ FreeBuffer(Buffer *b)
 #endif
 
 static void
-AppendToBuffer(Buffer *b, const char *str, int len)
+AppendToBuffer(Buffer *b, const char *str, size_t len)
 {
     while (b->used + len > b->room) {
-	b->buff = realloc(b->buff, 2*b->room*(sizeof(char)));
-	b->room *= 2;
+        b->buff = reallocarray(b->buff, b->room, 2 * sizeof(char));
+        if (b->buff == NULL)
+            fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
+        b->room *= 2;
     }
     strncpy(b->buff + b->used, str, len);
     b->used += len;
@@ -224,58 +236,62 @@ InitEntries(Entries *e)
 {
     e->room = INIT_ENTRY_SIZE;
     e->used = 0;
-    e->entry = malloc(INIT_ENTRY_SIZE*sizeof(Entry));
+    e->entry = mallocarray(INIT_ENTRY_SIZE, sizeof(Entry));
+    if (e->entry == NULL)
+        fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
+
 }
 
 static void
 FreeEntries(Entries *e)
 {
-    register int i;
+    size_t i;
 
     for (i = 0; i < e->used; i++) {
-	if (e->entry[i].usable) {
-	    free(e->entry[i].tag);
-	    free(e->entry[i].value);
-	}
+        if (e->entry[i].usable) {
+            free(e->entry[i].tag);
+            free(e->entry[i].value);
+        }
     }
-    free((char *)e->entry);
+    free(e->entry);
 }
 
 static void
 AddEntry(Entries *e, Entry *entry)
 {
-    register int n;
+    size_t n;
 
     for (n = 0; n < e->used; n++) {
-	if (!strcmp(e->entry[n].tag, entry->tag)) {
-	    /* overwrite old entry */
-	    if (e->entry[n].lineno && !quiet) {
-		fprintf (stderr,
-			 "%s:  \"%s\" on line %d overrides entry on line %d\n",
-			 ProgramName, entry->tag, entry->lineno,
-			 e->entry[n].lineno);
-	    }
-	    free(e->entry[n].tag);
-	    free(e->entry[n].value);
-	    entry->usable = True;
-	    e->entry[n] = *entry;
-	    return;  /* ok to leave, now there's only one of each tag in db */
-	}
+        if (!strcmp(e->entry[n].tag, entry->tag)) {
+            /* overwrite old entry */
+            if (e->entry[n].lineno && !quiet) {
+                fprintf(stderr,
+                        "%s:  \"%s\" on line %d overrides entry on line %d\n",
+                        ProgramName, entry->tag, entry->lineno,
+                        e->entry[n].lineno);
+            }
+            free(e->entry[n].tag);
+            free(e->entry[n].value);
+            entry->usable = True;
+            e->entry[n] = *entry;
+            return;  /* ok to leave, now there's only one of each tag in db */
+        }
     }
 
     if (e->used == e->room) {
-	e->entry = realloc(e->entry, 2 * e->room * (sizeof(Entry)));
-	e->room *= 2;
+        e->entry = reallocarray(e->entry, e->room, 2 * sizeof(Entry));
+        if (e->entry == NULL)
+            fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
+        e->room *= 2;
     }
     entry->usable = True;
     e->entry[e->used++] = *entry;
 }
 
-
 static int
 CompareEntries(const void *e1, const void *e2)
 {
-    return strcmp(((const Entry *)e1)->tag, ((const Entry *)e2)->tag);
+    return strcmp(((const Entry *) e1)->tag, ((const Entry *) e2)->tag);
 }
 
 static void
@@ -295,18 +311,19 @@ static const char *
 FindFirst(const char *string, char dest, int *lines)
 {
     if (lines)
-	*lines = 0;
+        *lines = 0;
     for (;;) {
-	if (*string == '\0')
-	    return NULL;
-	if (*string == '\\') {
-	    if (*++string == '\0')
-		return NULL;
-	} else if (*string == dest)
-	    return string;
-	if (*string == '\n'  &&  lines)
-	    (*lines)++;
-	string++;
+        if (*string == '\0')
+            return NULL;
+        if (*string == '\\') {
+            if (*++string == '\0')
+                return NULL;
+        }
+        else if (*string == dest)
+            return string;
+        if (*string == '\n' && lines)
+            (*lines)++;
+        string++;
     }
 }
 
@@ -315,64 +332,67 @@ GetEntries(Entries *entries, Buffer *buf
 {
     const char *line, *colon, *temp, *str;
     Entry entry;
-    register int length;
+    size_t length;
     int lineno = 0;
     int lines_skipped;
 
     str = buff->buff;
-    if (!str) return;
-    for ( ; str < buff->buff + buff->used;
-	  str = line + 1, lineno += lines_skipped) {
-	line = FindFirst(str, '\n', &lines_skipped);
-	lineno++;
-	if (!line)
-	    line = buff->buff + buff->used;
-	if (*str == '!')
-	    continue;
-	if (*str == '\n')
-	    continue;
-	if (!bequiet && *str == '#') {
-	    int dummy;
-	    if (sscanf (str, "# %d", &dummy) == 1 ||
-		sscanf (str, "# line %d", &dummy) == 1)
-		lineno = dummy - 1;
-	    continue;
-	}
-	for (temp = str;
-	     *temp && *temp != '\n' && isascii(*temp) && isspace(*temp);
-	     temp++) ;
-	if (!*temp || *temp == '\n') continue;
-
-	colon = FindFirst(str, ':', NULL);
-	if (!colon || colon > line) {
-	    if (!bequiet && !quiet)
-		fprintf (stderr,
-			 "%s: colon missing on line %d, ignoring line\n",
-			 ProgramName, lineno);
-	    continue;
-	}
-
-	/* strip leading and trailing blanks from name and store result */
-	while (*str == ' ' || *str == '\t')
-	    str++;
-	length = colon - str;
-	while (length && (str[length-1] == ' ' || str[length-1] == '\t'))
-	    length--;
-	entry.tag = malloc(length + 1);
-	strncpy(entry.tag, str, length);
-	entry.tag[length] = '\0';
-
-	/* strip leading and trailing blanks from value and store result */
-	colon++;
-	while (*colon == ' ' || *colon == '\t')
-	    colon++;
-	length = line - colon;
-	entry.value = malloc(length + 1);
-	strncpy(entry.value, colon, length);
-	entry.value[length] = '\0';
-	entry.lineno = bequiet ? 0 : lineno;
+    if (!str)
+        return;
+    for (; str < buff->buff + buff->used;
+         str = line + 1, lineno += lines_skipped) {
+        line = FindFirst(str, '\n', &lines_skipped);
+        lineno++;
+        if (!line)
+            line = buff->buff + buff->used;
+        if (*str == '!')
+            continue;
+        if (*str == '\n')
+            continue;
+        if (!bequiet && *str == '#') {
+            int dummy;
+
+            if (sscanf(str, "# %d", &dummy) == 1 ||
+                sscanf(str, "# line %d", &dummy) == 1)
+                lineno = dummy - 1;
+            continue;
+        }
+        for (temp = str;
+             *temp && *temp != '\n' && isascii(*temp) && isspace(*temp);
+             temp++);
+        if (!*temp || *temp == '\n')
+            continue;
+
+        colon = FindFirst(str, ':', NULL);
+        if (!colon || colon > line) {
+            if (!bequiet && !quiet)
+                fprintf(stderr,
+                        "%s: colon missing on line %d, ignoring line\n",
+                        ProgramName, lineno);
+            continue;
+        }
+
+        /* strip leading and trailing blanks from name and store result */
+        while (*str == ' ' || *str == '\t')
+            str++;
+        length = colon - str;
+        while (length && (str[length - 1] == ' ' || str[length - 1] == '\t'))
+            length--;
+        entry.tag = malloc(length + 1);
+        strncpy(entry.tag, str, length);
+        entry.tag[length] = '\0';
+
+        /* strip leading and trailing blanks from value and store result */
+        colon++;
+        while (*colon == ' ' || *colon == '\t')
+            colon++;
+        length = line - colon;
+        entry.value = malloc(length + 1);
+        strncpy(entry.value, colon, length);
+        entry.value[length] = '\0';
+        entry.lineno = bequiet ? 0 : lineno;
 
-	AddEntry(entries, &entry);
+        AddEntry(entries, &entry);
     }
 }
 
@@ -382,31 +402,32 @@ GetEntriesString(Entries *entries, char 
     Buffer buff;
 
     if (str && *str) {
-	buff.buff = str;
-	buff.used = strlen(str);
-	GetEntries(entries, &buff, 1);
+        buff.buff = str;
+        buff.used = strlen(str);
+        GetEntries(entries, &buff, 1);
     }
 }
 
 static void
 ReadFile(Buffer *b, FILE *input)
 {
-	     char	buf[BUFSIZ + 1];
-    register int	bytes;
+    char	buf[BUFSIZ + 1];
+    size_t	bytes;
 
     b->used = 0;
     while (!feof(input) && (bytes = fread(buf, 1, BUFSIZ, input)) > 0) {
 #ifdef WIN32
-	char *p;
-	buf[bytes] = '\0';
-	for (p = buf; p = strchr(p, '\r'); ) {
-	    if (p[-1] == '\\' && p[1] == '\n') {
-		bytes -= 3;
-		strcpy(p - 1, p + 2);
-	    }
-	}
+        char *p;
+
+        buf[bytes] = '\0';
+        for (p = buf; p = strchr(p, '\r');) {
+            if (p[-1] == '\\' && p[1] == '\n') {
+                bytes -= 3;
+                strcpy(p - 1, p + 2);
+            }
+        }
 #endif
-	AppendToBuffer(b, buf, bytes);
+        AppendToBuffer(b, buf, bytes);
     }
     AppendToBuffer(b, "", 1);
 }
@@ -416,33 +437,34 @@ AddDef(String *buff, const char *title, 
 {
 #ifdef PATHETICCPP
     if (need_real_defines) {
-	addstring(buff, "\n#define ");
-	addtokstring(buff, title);
-	if (value && (value[0] != '\0')) {
-	    addstring(buff, " ");
-	    addstring(buff, value);
-	}
-	return;
+        addstring(buff, "\n#define ");
+        addtokstring(buff, title);
+        if (value && (value[0] != '\0')) {
+            addstring(buff, " ");
+            addstring(buff, value);
+        }
+        return;
     }
 #endif
     if (buff->used) {
-	if (oper == OPSYMBOLS)
-	    addstring(buff, "\n-D");
-	else
-	    addstring(buff, " -D");
-    } else
-	addstring(buff, "-D");
+        if (oper == OPSYMBOLS)
+            addstring(buff, "\n-D");
+        else
+            addstring(buff, " -D");
+    }
+    else
+        addstring(buff, "-D");
     addtokstring(buff, title);
     if (value && (value[0] != '\0')) {
-	addstring(buff, "=");
-	addescapedstring(buff, value);
+        addstring(buff, "=");
+        addescapedstring(buff, value);
     }
 }
 
 static void
 AddSimpleDef(String *buff, const char *title)
 {
-    AddDef(buff, title, (char *)NULL);
+    AddDef(buff, title, (char *) NULL);
 }
 
 static void
@@ -450,22 +472,24 @@ AddDefQ(String *buff, const char *title,
 {
 #ifdef PATHETICCPP
     if (need_real_defines)
-	AddDef(buff, title, value);
+        AddDef(buff, title, value);
     else
 #endif
     if (value && (value[0] != '\0')) {
-	AddSimpleDef(buff, title);
-	addstring(buff, "=\"");
-	addescapedstring(buff, value);
-	addstring(buff, "\"");
-    } else
-	AddDef(buff, title, NULL);
+        AddSimpleDef(buff, title);
+        addstring(buff, "=\"");
+        addescapedstring(buff, value);
+        addstring(buff, "\"");
+    }
+    else
+        AddDef(buff, title, NULL);
 }
 
 static void
 AddNum(String *buff, const char *title, int value)
 {
     char num[20];
+
     snprintf(num, sizeof(num), "%d", value);
     AddDef(buff, title, num);
 }
@@ -486,11 +510,12 @@ AddDefHostname(String *buff, const char 
     char name[512];
     char c;
 
-    strncpy (name, value, sizeof(name)-1);
-    name[sizeof(name)-1] = '\0';
+    strncpy(name, value, sizeof(name) - 1);
+    name[sizeof(name) - 1] = '\0';
     for (s = name; (c = *s); s++) {
-	if (!isalpha(c) && !isdigit(c) && c != '_' && c != '.' && c != ':' && c != '-')
-	    *s = '_';
+        if (!isalpha(c) && !isdigit(c) &&
+            c != '_' && c != '.' && c != ':' && c != '-')
+            *s = '_';
     }
     AddDef(buff, title, name);
 }
@@ -500,18 +525,19 @@ AddUndef(String *buff, const char *title
 {
 #ifdef PATHETICCPP
     if (need_real_defines) {
-	addstring(buff, "\n#undef ");
-	addstring(buff, title);
-	return;
+        addstring(buff, "\n#undef ");
+        addstring(buff, title);
+        return;
     }
 #endif
     if (buff->used) {
-	if (oper == OPSYMBOLS)
-	    addstring(buff, "\n-U");
-	else
-	    addstring(buff, " -U");
-    } else
-	addstring(buff, "-U");
+        if (oper == OPSYMBOLS)
+            addstring(buff, "\n-U");
+        else
+            addstring(buff, " -U");
+    }
+    else
+        addstring(buff, "-U");
     addtokstring(buff, title);
 }
 
@@ -522,20 +548,23 @@ DoCmdDefines(String *buff)
     char *arg, *val;
 
     for (i = 0; i < num_cmd_defines; i++) {
-	arg = cmd_defines[i];
-	if (arg[1] == 'D') {
-	    val = strchr(arg, '=');
-	    if (val) {
-		*val = '\0';
-		AddDefQ(buff, arg + 2, val + 1);
-		*val = '=';
-	    } else
-		AddSimpleDef(buff, arg + 2);
-	} else if (arg[1] == 'U') {
-	    AddUndef(buff, arg + 2);
-	} else if (!strcmp(arg, "-undef") && oper != OPSYMBOLS) {
-	    addstring(buff, " -undef");
-	}
+        arg = cmd_defines[i];
+        if (arg[1] == 'D') {
+            val = strchr(arg, '=');
+            if (val) {
+                *val = '\0';
+                AddDefQ(buff, arg + 2, val + 1);
+                *val = '=';
+            }
+            else
+                AddSimpleDef(buff, arg + 2);
+        }
+        else if (arg[1] == 'U') {
+            AddUndef(buff, arg + 2);
+        }
+        else if (!strcmp(arg, "-undef") && oper != OPSYMBOLS) {
+            addstring(buff, " -undef");
+        }
     }
 }
 
@@ -543,12 +572,11 @@ static int
 Resolution(int pixels, int mm)
 {
     if (mm == 0)
-	return 0;
+        return 0;
     else
-	return ((pixels * 100000 / mm) + 50) / 100;
+        return ((pixels * 100000 / mm) + 50) / 100;
 }
 
-
 static void
 DoDisplayDefines(Display *display, String *defs, char *host)
 {
@@ -567,18 +595,18 @@ DoDisplayDefines(Display *display, Strin
     colon = strrchr(server, ':');
     n = 0;
     if (colon) {
-	/* remove extra colon if there are exactly two, since it indicates
-	   DECnet.  Three colons is an IPv6 address ending in :: though. */
-	if ((colon > server) && (*(colon-1) == ':') &&
-	  ( ((colon - 1) == server) || (*(colon-2) != ':') ) ) {
-	    *(colon-1) = ':';
-	}
-	*colon++ = '\0';
-	sscanf(colon, "%d", &n);
+        /* remove extra colon if there are exactly two, since it indicates
+           DECnet.  Three colons is an IPv6 address ending in :: though. */
+        if ((colon > server) && (*(colon - 1) == ':') &&
+            (((colon - 1) == server) || (*(colon - 2) != ':'))) {
+            *(colon - 1) = ':';
+        }
+        *colon++ = '\0';
+        sscanf(colon, "%d", &n);
     }
     if (!*server || !strcmp(server, "unix") || !strcmp(server, "localhost"))
-	strcpy(server, client);
-    AddDefHostname(defs, "HOST", server); /* R3 compatibility */
+        strcpy(server, client);
+    AddDefHostname(defs, "HOST", server);       /* R3 compatibility */
     AddDefHostname(defs, "SERVERHOST", server);
     AddDefTok(defs, "SRVR_", server);
     AddNum(defs, "DISPLAY_NUM", n);
@@ -592,7 +620,7 @@ DoDisplayDefines(Display *display, Strin
     AddNum(defs, "NUM_SCREENS", ScreenCount(display));
     extnames = XListExtensions(display, &n);
     while (--n >= 0)
-	AddDefTok(defs, "EXT_", extnames[n]);
+        AddDefTok(defs, "EXT_", extnames[n]);
     XFreeExtensionList(extnames);
 }
 
@@ -623,54 +651,54 @@ DoScreenDefines(Display *display, int sc
     AddNum(defs, "SCREEN_NUM", scrno);
     AddNum(defs, "WIDTH", screen->width);
     AddNum(defs, "HEIGHT", screen->height);
-    AddNum(defs, "X_RESOLUTION", Resolution(screen->width,screen->mwidth));
-    AddNum(defs, "Y_RESOLUTION", Resolution(screen->height,screen->mheight));
+    AddNum(defs, "X_RESOLUTION", Resolution(screen->width, screen->mwidth));
+    AddNum(defs, "Y_RESOLUTION", Resolution(screen->height, screen->mheight));
     AddNum(defs, "PLANES", DisplayPlanes(display, scrno));
     AddNum(defs, "BITS_PER_RGB", visual->bits_per_rgb);
     if (visual->class >= 0 && visual->class < NUM_CLASS_NAMES) {
-	AddDefQ(defs, "CLASS", ClassNames[visual->class]);
-	snprintf(name, sizeof(name), "CLASS_%s", ClassNames[visual->class]);
-	AddNum(defs, name, (int)visual->visualid);
+        AddDefQ(defs, "CLASS", ClassNames[visual->class]);
+        snprintf(name, sizeof(name), "CLASS_%s", ClassNames[visual->class]);
+        AddNum(defs, name, (int) visual->visualid);
     }
     else {
-	fprintf(stderr,
-		"%s: unknown visual type %d for default visual id 0x%lx\n",
-		ProgramName, visual->class, visual->visualid);
-    }
-    switch(visual->class) {
-	case StaticColor:
-	case PseudoColor:
-	case TrueColor:
-	case DirectColor:
-	    AddSimpleDef(defs, "COLOR");
-	    break;
+        fprintf(stderr,
+                "%s: unknown visual type %d for default visual id 0x%lx\n",
+                ProgramName, visual->class, visual->visualid);
+    }
+    switch (visual->class) {
+    case StaticColor:
+    case PseudoColor:
+    case TrueColor:
+    case DirectColor:
+        AddSimpleDef(defs, "COLOR");
+        break;
     }
     for (i = 0; i < nv; i++) {
-	for (j = i; --j >= 0; ) {
-	    if (vinfos[j].class == vinfos[i].class &&
-		vinfos[j].depth == vinfos[i].depth)
-		break;
-	}
-	if (j < 0) {
-	    if (vinfos[i].class >= 0 && vinfos[i].class < NUM_CLASS_NAMES) {
-		snprintf(name, sizeof(name), "CLASS_%s_%d",
-			 ClassNames[vinfos[i].class], vinfos[i].depth);
-		AddNum(defs, name, (int)vinfos[i].visualid);
-	    }
-	    else {
-		fprintf(stderr,
-			"%s: unknown visual type %d for visual id 0x%lx\n",
-			ProgramName, vinfos[i].class, vinfos[i].visualid);
-	    }
-	}
+        for (j = i; --j >= 0;) {
+            if (vinfos[j].class == vinfos[i].class &&
+                vinfos[j].depth == vinfos[i].depth)
+                break;
+        }
+        if (j < 0) {
+            if (vinfos[i].class >= 0 && vinfos[i].class < NUM_CLASS_NAMES) {
+                snprintf(name, sizeof(name), "CLASS_%s_%d",
+                         ClassNames[vinfos[i].class], vinfos[i].depth);
+                AddNum(defs, name, (int) vinfos[i].visualid);
+            }
+            else {
+                fprintf(stderr,
+                        "%s: unknown visual type %d for visual id 0x%lx\n",
+                        ProgramName, vinfos[i].class, vinfos[i].visualid);
+            }
+        }
     }
-    XFree((char *)vinfos);
+    XFree(vinfos);
 }
 
 static Entry *
-FindEntry(Entries *db, Buffer  *b)
+FindEntry(Entries *db, Buffer *b)
 {
-    int i;
+    size_t i;
     register Entry *e;
     Entries phoney;
     Entry entry;
@@ -683,17 +711,17 @@ FindEntry(Entries *db, Buffer  *b)
     phoney.entry = &entry;
     GetEntries(&phoney, b, 1);
     if (phoney.used < 1)
-	return NULL;
+        return NULL;
     for (i = 0; i < db->used; i++) {
-	e = &db->entry[i];
-	if (!e->usable)
-	    continue;
-	if (strcmp(e->tag, entry.tag))
-	    continue;
-	e->usable = False;
-	if (strcmp(e->value, entry.value))
-	    return e;
-	return NULL;
+        e = &db->entry[i];
+        if (!e->usable)
+            continue;
+        if (strcmp(e->tag, entry.tag))
+            continue;
+        e->usable = False;
+        if (strcmp(e->value, entry.value))
+            return e;
+        return NULL;
     }
     return NULL;
 }
@@ -705,64 +733,67 @@ EditFile(Entries *new, FILE *in, FILE *o
     char buff[BUFSIZ];
     register Entry *e;
     register char *c;
-    int i;
+    size_t i;
 
     InitBuffer(&b);
     while (in) {
-	b.used = 0;
-	while (1) {
-	    buff[0] ='\0';
-	    if (!fgets(buff, BUFSIZ, in))
-		goto cleanup;
-	    AppendToBuffer(&b, buff, strlen(buff));
-	    c = &b.buff[b.used - 1];
-	    if ((*(c--) == '\n') && (b.used == 1 || *c != '\\'))
-		break;
-	}
-	if ((e = FindEntry(new, &b)))
-	    fprintf(out, "%s:\t%s\n", e->tag, e->value);
-	else
-	    fwrite(b.buff, 1, b.used, out);
+        b.used = 0;
+        while (1) {
+            buff[0] = '\0';
+            if (!fgets(buff, BUFSIZ, in))
+                goto cleanup;
+            AppendToBuffer(&b, buff, strlen(buff));
+            c = &b.buff[b.used - 1];
+            if ((*(c--) == '\n') && (b.used == 1 || *c != '\\'))
+                break;
+        }
+        if ((e = FindEntry(new, &b)))
+            fprintf(out, "%s:\t%s\n", e->tag, e->value);
+        else
+            fwrite(b.buff, 1, b.used, out);
     }
-cleanup:
+ cleanup:
     for (i = 0; i < new->used; i++) {
-	e = &new->entry[i];
-	if (e->usable)
-	    fprintf(out, "%s:\t%s\n", e->tag, e->value);
+        e = &new->entry[i];
+        if (e->usable)
+            fprintf(out, "%s:\t%s\n", e->tag, e->value);
     }
 }
 
-static void _X_NORETURN
-Syntax (void)
-{
-    fprintf (stderr,
-	     "usage:  %s [-options ...] [filename]\n\n"
-	     "where options include:\n"
-	     " -help               print this help message\n"
-	     " -version            print the program version\n"
-	     " -display host:dpy   display to use\n"
-	     " -all                do all resources [default]\n"
-	     " -global             do screen-independent resources\n"
-	     " -screen             do screen-specific resources for one screen\n"
-	     " -screens            do screen-specific resources for all screens\n"
-	     " -n                  show but don't do changes\n"
-	     " -cpp filename       preprocessor to use [%s]\n"
-	     " -nocpp              do not use a preprocessor\n"
-	     " -query              query resources\n"
-	     " -load               load resources from file [default]\n"
-	     " -override           add in resources from file\n"
-	     " -merge              merge resources from file & sort\n"
-	     " -edit filename      edit resources into file\n"
-	     " -backup string      backup suffix for -edit [%s]\n"
-	     " -symbols            show preprocessor symbols\n"
-	     " -remove             remove resources\n"
-	     " -retain             avoid server reset (avoid using this)\n"
-	     " -quiet              don't warn about duplicates\n"
-	     " -Dname[=value], -Uname, -Idirectory    passed to preprocessor\n"
-	     "\n"
-	     "A - or no input filename represents stdin.\n",
-	     ProgramName, cpp_program ? cpp_program : "", BACKUP_SUFFIX);
-    exit (1);
+static void _X_NORETURN _X_COLD
+Syntax(const char *errmsg)
+{
+    if (errmsg != NULL)
+        fprintf(stderr, "%s: %s\n", ProgramName, errmsg);
+
+    fprintf(stderr,
+            "usage:  %s [-options ...] [filename]\n\n"
+            "where options include:\n"
+            " -help               print this help message\n"
+            " -version            print the program version\n"
+            " -display host:dpy   display to use\n"
+            " -all                do all resources [default]\n"
+            " -global             do screen-independent resources\n"
+            " -screen             do screen-specific resources for one screen\n"
+            " -screens            do screen-specific resources for all screens\n"
+            " -n                  show but don't do changes\n"
+            " -cpp filename       preprocessor to use [%s]\n"
+            " -nocpp              do not use a preprocessor\n"
+            " -query              query resources\n"
+            " -load               load resources from file [default]\n"
+            " -override           add in resources from file\n"
+            " -merge              merge resources from file & sort\n"
+            " -edit filename      edit resources into file\n"
+            " -backup string      backup suffix for -edit [%s]\n"
+            " -symbols            show preprocessor symbols\n"
+            " -remove             remove resources\n"
+            " -retain             avoid server reset (avoid using this)\n"
+            " -quiet              don't warn about duplicates\n"
+            " -Dname[=value], -Uname, -Idirectory    passed to preprocessor\n"
+            "\n"
+            "A - or no input filename represents stdin.\n",
+            ProgramName, cpp_program ? cpp_program : "", BACKUP_SUFFIX);
+    exit(1);
 }
 
 /*
@@ -771,22 +802,25 @@ Syntax (void)
  */
 
 static Bool
-isabbreviation(const char *arg, const char *s, int minslen)
+isabbreviation(const char *arg, const char *s, size_t minslen)
 {
-    int arglen;
-    int slen;
+    size_t arglen;
+    size_t slen;
 
     /* exact match */
-    if (!strcmp (arg, s)) return (True);
+    if (!strcmp(arg, s))
+        return (True);
 
-    arglen = strlen (arg);
-    slen = strlen (s);
+    arglen = strlen(arg);
+    slen = strlen(s);
 
     /* too long or too short */
-    if (slen >= arglen || slen < minslen) return (False);
+    if (slen >= arglen || slen < minslen)
+        return (False);
 
     /* abbreviation */
-    if (strncmp (arg, s, slen) == 0) return (True);
+    if (strncmp(arg, s, slen) == 0)
+        return (True);
 
     /* bad */
     return (False);
@@ -795,19 +829,19 @@ isabbreviation(const char *arg, const ch
 static void
 addstring(String *arg, const char *s)
 {
-    if(arg->used + strlen(s) + 1 >= arg->room) {
-	if(arg->val)
-	    arg->val = realloc(arg->val, arg->room + CHUNK_SIZE);
-	else
-	    arg->val = malloc(arg->room + CHUNK_SIZE);
-	if(arg->val == NULL)
-	    fatal("%s: Not enough memory\n", ProgramName);
-	arg->room += CHUNK_SIZE;
+    if (arg->used + strlen(s) + 1 >= arg->room) {
+        if (arg->val)
+            arg->val = realloc(arg->val, arg->room + CHUNK_SIZE);
+        else
+            arg->val = malloc(arg->room + CHUNK_SIZE);
+        if (arg->val == NULL)
+            fatal("%s: Not enough memory\n", ProgramName);
+        arg->room += CHUNK_SIZE;
     }
-    if(arg->used)
-	strcat(arg->val, s);
+    if (arg->used)
+        strcat(arg->val, s);
     else
-	strcpy(arg->val, s);
+        strcpy(arg->val, s);
     arg->used += strlen(s);
 }
 
@@ -816,18 +850,21 @@ addescapedstring(String *arg, const char
 {
     char copy[512], *c;
 
-    for (c = copy; *s && c < &copy[sizeof(copy)-1]; s++) {
-	switch (*s) {
-	case '"':       case '\'':      case '`':
-	case '$':       case '\\':
-	    *c++ = '_';
-	    break;
-	default:
-	    *c++ = *s;
-	}
+    for (c = copy; *s && c < &copy[sizeof(copy) - 1]; s++) {
+        switch (*s) {
+        case '"':
+        case '\'':
+        case '`':
+        case '$':
+        case '\\':
+            *c++ = '_';
+            break;
+        default:
+            *c++ = *s;
+        }
     }
     *c = 0;
-    addstring (arg, copy);
+    addstring(arg, copy);
 }
 
 static void
@@ -835,14 +872,14 @@ addtokstring(String *arg, const char *s)
 {
     char copy[512], *c;
 
-    for (c = copy; *s && c < &copy[sizeof(copy)-1]; s++) {
-	if (!isalpha(*s) && !isdigit(*s) && *s != '_')
-	    *c++ = '_';
-	else
-	    *c++ = *s;
+    for (c = copy; *s && c < &copy[sizeof(copy) - 1]; s++) {
+        if (!isalpha(*s) && !isdigit(*s) && *s != '_')
+            *c++ = '_';
+        else
+            *c++ = *s;
     }
     *c = 0;
-    addstring (arg, copy);
+    addstring(arg, copy);
 }
 
 
@@ -868,318 +905,343 @@ main(int argc, char *argv[])
      * it back to NULL.
      */
     if (cpp_program == NULL) {
-	int number_of_elements
-	    = (sizeof cpp_locations) / (sizeof cpp_locations[0]);
-	int j;
-
-	for (j = 0; j < number_of_elements; j++) {
-	    char *end, *dup;
-	    /* cut off arguments */
-	    dup = strdup(cpp_locations[j]);
-	    end = strchr(dup,' ');
-	    if (end)
-		*end = '\0';
-	    if (access(dup, X_OK) == 0) {
-		cpp_program = cpp_locations[j];
-		free(dup);
-		break;
-	    }
-	    free(dup);
-	}
+        int number_of_elements
+            = (sizeof cpp_locations) / (sizeof cpp_locations[0]);
+        int j;
+
+        for (j = 0; j < number_of_elements; j++) {
+            char *end, *dup;
+
+            /* cut off arguments */
+            dup = strdup(cpp_locations[j]);
+            end = strchr(dup, ' ');
+            if (end)
+                *end = '\0';
+            if (access(dup, X_OK) == 0) {
+                cpp_program = cpp_locations[j];
+                free(dup);
+                break;
+            }
+            free(dup);
+        }
     }
 
     /* needs to be replaced with XrmParseCommand */
 
     for (i = 1; i < argc; i++) {
-	char *arg = argv[i];
+        char *arg = argv[i];
 
-	if (arg[0] == '-') {
-	    if (arg[1] == '\0') {
-		filename = NULL;
-		continue;
-	    } else if (isabbreviation ("-help", arg, 2)) {
-		Syntax ();
-		/* doesn't return */
-	    } else if (isabbreviation ("-version", arg, 2)) {
-		printf("%s\n", PACKAGE_STRING);
-		exit(0);
-	    } else if (isabbreviation ("-display", arg, 2)) {
-		if (++i >= argc) Syntax ();
-		displayname = argv[i];
-		continue;
-	    } else if (isabbreviation ("-geometry", arg, 3)) {
-		if (++i >= argc) Syntax ();
-		/* ignore geometry */
-		continue;
-	    } else if (isabbreviation ("-cpp", arg, 2)) {
-		if (++i >= argc) Syntax ();
-		cpp_program = argv[i];
-		continue;
-	    } else if (!strcmp ("-n", arg)) {
-		dont_execute = True;
-		continue;
-	    } else if (isabbreviation ("-nocpp", arg, 3)) {
-		cpp_program = NULL;
-		continue;
-	    } else if (isabbreviation ("-query", arg, 2)) {
-		oper = OPQUERY;
-		continue;
-	    } else if (isabbreviation ("-load", arg, 2)) {
-		oper = OPLOAD;
-		continue;
-	    } else if (isabbreviation ("-merge", arg, 2)) {
-		oper = OPMERGE;
-		continue;
-	    } else if (isabbreviation ("-override", arg, 2)) {
-		oper = OPOVERRIDE;
-		continue;
-	    } else if (isabbreviation ("-symbols", arg, 3)) {
-		oper = OPSYMBOLS;
-		continue;
-	    } else if (isabbreviation ("-remove", arg, 4)) {
-		oper = OPREMOVE;
-		continue;
-	    } else if (isabbreviation ("-edit", arg, 2)) {
-		if (++i >= argc) Syntax ();
-		oper = OPEDIT;
-		editFile = argv[i];
-		continue;
-	    } else if (isabbreviation ("-backup", arg, 2)) {
-		if (++i >= argc) Syntax ();
-		backup_suffix = argv[i];
-		continue;
-	    } else if (isabbreviation ("-all", arg, 2)) {
-		whichResources = RALL;
-		continue;
-	    } else if (isabbreviation ("-global", arg, 3)) {
-		whichResources = RGLOBAL;
-		continue;
-	    } else if (isabbreviation ("-screen", arg, 3)) {
-		whichResources = RSCREEN;
-		continue;
-	    } else if (!strcmp ("-screens", arg)) {
-		whichResources = RSCREENS;
-		continue;
-	    } else if (isabbreviation ("-retain", arg, 4)) {
-		retainProp = 1;
-		continue;
-	    } else if (isabbreviation ("-quiet", arg, 2)) {
-		quiet = True;
-		continue;
-	    } else if (arg[1] == 'I') {
-		addstring(&includes, " ");
-		addescapedstring(&includes, arg);
-		continue;
-	    } else if (arg[1] == 'U' || arg[1] == 'D') {
-		if (num_cmd_defines < MAX_CMD_DEFINES) {
-		    cmd_defines[num_cmd_defines++] = arg;
-		} else {
-		    fatal("%s: Too many -U/-D arguments\n", ProgramName);
-		}
-		continue;
-	    } else if (!strcmp ("-undef", arg)) {
-		if (num_cmd_defines < MAX_CMD_DEFINES) {
-		    cmd_defines[num_cmd_defines++] = "-undef";
-		} else {
-		    fatal("%s: Too many cpp arguments\n", ProgramName);
-		}
-		continue;
-	    }
-	    Syntax ();
-	} else if (arg[0] == '=')
-	    continue;
-	else
-	    filename = arg;
-    }							/* end for */
+        if (arg[0] == '-') {
+            if (arg[1] == '\0') {
+                filename = NULL;
+                continue;
+            }
+            else if (isabbreviation("-help", arg, 2)) {
+                Syntax(NULL);
+                /* doesn't return */
+            }
+            else if (isabbreviation("-version", arg, 2)) {
+                printf("%s\n", PACKAGE_STRING);
+                exit(0);
+            }
+            else if (isabbreviation("-display", arg, 2)) {
+                if (++i >= argc)
+                    Syntax("-display requires an argument");
+                displayname = argv[i];
+                continue;
+            }
+            else if (isabbreviation("-geometry", arg, 3)) {
+                if (++i >= argc)
+                    Syntax("-geometry requires an argument");
+                /* ignore geometry */
+                continue;
+            }
+            else if (isabbreviation("-cpp", arg, 2)) {
+                if (++i >= argc)
+                    Syntax("-cpp requires an argument");
+                cpp_program = argv[i];
+                continue;
+            }
+            else if (!strcmp("-n", arg)) {
+                dont_execute = True;
+                continue;
+            }
+            else if (isabbreviation("-nocpp", arg, 3)) {
+                cpp_program = NULL;
+                continue;
+            }
+            else if (isabbreviation("-query", arg, 2)) {
+                oper = OPQUERY;
+                continue;
+            }
+            else if (isabbreviation("-load", arg, 2)) {
+                oper = OPLOAD;
+                continue;
+            }
+            else if (isabbreviation("-merge", arg, 2)) {
+                oper = OPMERGE;
+                continue;
+            }
+            else if (isabbreviation("-override", arg, 2)) {
+                oper = OPOVERRIDE;
+                continue;
+            }
+            else if (isabbreviation("-symbols", arg, 3)) {
+                oper = OPSYMBOLS;
+                continue;
+            }
+            else if (isabbreviation("-remove", arg, 4)) {
+                oper = OPREMOVE;
+                continue;
+            }
+            else if (isabbreviation("-edit", arg, 2)) {
+                if (++i >= argc)
+                    Syntax("-edit requires an argument");
+                oper = OPEDIT;
+                editFile = argv[i];
+                continue;
+            }
+            else if (isabbreviation("-backup", arg, 2)) {
+                if (++i >= argc)
+                    Syntax("-backup requires an argument");
+                backup_suffix = argv[i];
+                continue;
+            }
+            else if (isabbreviation("-all", arg, 2)) {
+                whichResources = RALL;
+                continue;
+            }
+            else if (isabbreviation("-global", arg, 3)) {
+                whichResources = RGLOBAL;
+                continue;
+            }
+            else if (isabbreviation("-screen", arg, 3)) {
+                whichResources = RSCREEN;
+                continue;
+            }
+            else if (!strcmp("-screens", arg)) {
+                whichResources = RSCREENS;
+                continue;
+            }
+            else if (isabbreviation("-retain", arg, 4)) {
+                retainProp = 1;
+                continue;
+            }
+            else if (isabbreviation("-quiet", arg, 2)) {
+                quiet = True;
+                continue;
+            }
+            else if (arg[1] == 'I') {
+                addstring(&includes, " ");
+                addescapedstring(&includes, arg);
+                continue;
+            }
+            else if (arg[1] == 'U' || arg[1] == 'D') {
+                if (num_cmd_defines < MAX_CMD_DEFINES) {
+                    cmd_defines[num_cmd_defines++] = arg;
+                }
+                else {
+                    fatal("%s: Too many -U/-D arguments\n", ProgramName);
+                }
+                continue;
+            }
+            else if (!strcmp("-undef", arg)) {
+                if (num_cmd_defines < MAX_CMD_DEFINES) {
+                    cmd_defines[num_cmd_defines++] = "-undef";
+                }
+                else {
+                    fatal("%s: Too many cpp arguments\n", ProgramName);
+                }
+                continue;
+            }
+            fprintf(stderr, "%s: unrecognized argument '%s'\n",
+                    ProgramName, arg);
+            Syntax(NULL);
+        }
+        else if (arg[0] == '=')
+            continue;
+        else
+            filename = arg;
+    }                           /* end for */
 
 #ifndef WIN32
     while ((i = open("/dev/null", O_RDONLY)) < 3)
-	; /* make sure later freopen won't clobber things */
+        ;      /* make sure later freopen won't clobber things */
     (void) close(i);
 #endif
     /* Open display  */
-    if (!(dpy = XOpenDisplay (displayname)))
-	fatal("%s: Can't open display '%s'\n", ProgramName,
-		 XDisplayName (displayname));
+    if (!(dpy = XOpenDisplay(displayname)))
+        fatal("%s: Can't open display '%s'\n", ProgramName,
+              XDisplayName(displayname));
 
     if (whichResources == RALL && ScreenCount(dpy) == 1)
-	whichResources = RGLOBAL;
+        whichResources = RGLOBAL;
 
 #ifdef PATHETICCPP
     if (cpp_program &&
-	(oper == OPLOAD || oper == OPMERGE || oper == OPOVERRIDE)) {
-	need_real_defines = True;
+        (oper == OPLOAD || oper == OPMERGE || oper == OPOVERRIDE)) {
+        need_real_defines = True;
 #ifdef WIN32
-	strcpy(tmpname2, "xrdbD_XXXXXX");
-	strcpy(tmpname3, "\\temp\\xrdbD_XXXXXX");
-#else
-#ifdef __UNIXOS2__
-	{ char *tmpdir=getenv("TMP");
-	  if (!tmpdir) tmpdir="/";
-	  sprintf(tmpname2, "%s/xrdbD_XXXXXX",tmpdir);
-	}
+        strcpy(tmpname2, "xrdbD_XXXXXX");
+        strcpy(tmpname3, "\\temp\\xrdbD_XXXXXX");
 #else
-	strcpy(tmpname2, "/tmp/xrdbD_XXXXXX");
-#endif
+        strcpy(tmpname2, "/tmp/xrdbD_XXXXXX");
 #endif
-	(void) mktemp(tmpname2);
+        (void) mktemp(tmpname2);
     }
 #endif
 
     if (!filename &&
 #ifdef PATHETICCPP
-	need_real_defines
+        need_real_defines
 #else
-	(oper == OPLOAD || oper == OPMERGE || oper == OPOVERRIDE) &&
-	(whichResources == RALL || whichResources == RSCREENS)
+        (oper == OPLOAD || oper == OPMERGE || oper == OPOVERRIDE) &&
+        (whichResources == RALL || whichResources == RSCREENS)
 #endif
-	) {
-	char inputbuf[1024];
+        ) {
+        char inputbuf[1024];
+
 #ifdef WIN32
-	strcpy(tmpname, "\\temp\\xrdb_XXXXXX");
-#else
-#ifdef __UNIXOS2__
-	{ char *tmpdir=getenv("TMP");
-	  if (!tmpdir) tmpdir="/";
-	  sprintf(tmpname, "%s/xrdb_XXXXXX",tmpdir);
-	}
+        strcpy(tmpname, "\\temp\\xrdb_XXXXXX");
 #else
-	strcpy(tmpname, "/tmp/xrdb_XXXXXX");
-#endif
+        strcpy(tmpname, "/tmp/xrdb_XXXXXX");
 #endif
 #ifndef HAVE_MKSTEMP
-	(void) mktemp(tmpname);
-	filename = tmpname;
-	fp = fopen(filename, "w");
+        (void) mktemp(tmpname);
+        filename = tmpname;
+        fp = fopen(filename, "w");
 #else
-	{
-	int fd = mkstemp(tmpname);
-	filename = tmpname;
-	fp = fdopen(fd, "w");
-	}
-#endif /* MKSTEMP */
-	if (!fp)
-	    fatal("%s: Failed to open temp file: %s\n", ProgramName,
-		  filename);
-	while (fgets(inputbuf, sizeof(inputbuf), stdin) != NULL)
-	    fputs(inputbuf, fp);
-	fclose(fp);
+        {
+            int fd = mkstemp(tmpname);
+
+            filename = tmpname;
+            fp = fdopen(fd, "w");
+        }
+#endif                          /* MKSTEMP */
+        if (!fp)
+            fatal("%s: Failed to open temp file: %s\n", ProgramName, filename);
+        while (fgets(inputbuf, sizeof(inputbuf), stdin) != NULL)
+            fputs(inputbuf, fp);
+        fclose(fp);
     }
 
     DoDisplayDefines(dpy, &defines, displayname);
     defines_base = defines.used;
     need_newline = (oper == OPQUERY || oper == OPSYMBOLS ||
-		    (dont_execute && oper != OPREMOVE));
+                    (dont_execute && oper != OPREMOVE));
     InitBuffer(&buffer);
     if (whichResources == RGLOBAL)
-	Process(DefaultScreen(dpy), False, True);
+        Process(DefaultScreen(dpy), False, True);
     else if (whichResources == RSCREEN)
-	Process(DefaultScreen(dpy), True, True);
+        Process(DefaultScreen(dpy), True, True);
     else if (whichResources == RSCREENS ||
-	     (oper != OPLOAD && oper != OPMERGE && oper != OPOVERRIDE)) {
-	if (whichResources == RALL && oper != OPSYMBOLS) {
-	    if (need_newline)
-		printf("! screen-independent resources\n");
-	    Process(0, False, True);
-	    if (need_newline)
-		printf("\n");
-	}
-	for (i = 0; i < ScreenCount(dpy); i++) {
-	    if (need_newline) {
-		if (oper == OPSYMBOLS)
-		    printf("# screen %d symbols\n", i);
-		else {
-		    printf("! screen %d resources\n", i);
-		    printf("#if SCREEN_NUM == %d\n", i);
-		}
-	    }
-	    Process(i, True, True);
-	    if (need_newline) {
-		if (oper != OPSYMBOLS)
-		    printf("#endif\n");
-		if (i+1 != ScreenCount(dpy))
-		    printf("\n");
-	    }
-	}
+             (oper != OPLOAD && oper != OPMERGE && oper != OPOVERRIDE)) {
+        if (whichResources == RALL && oper != OPSYMBOLS) {
+            if (need_newline)
+                printf("! screen-independent resources\n");
+            Process(0, False, True);
+            if (need_newline)
+                printf("\n");
+        }
+        for (i = 0; i < ScreenCount(dpy); i++) {
+            if (need_newline) {
+                if (oper == OPSYMBOLS)
+                    printf("# screen %d symbols\n", i);
+                else {
+                    printf("! screen %d resources\n", i);
+                    printf("#if SCREEN_NUM == %d\n", i);
+                }
+            }
+            Process(i, True, True);
+            if (need_newline) {
+                if (oper != OPSYMBOLS)
+                    printf("#endif\n");
+                if (i + 1 != ScreenCount(dpy))
+                    printf("\n");
+            }
+        }
     }
     else {
-	Entries *dbs;
+        Entries *dbs;
 
-	dbs = malloc(ScreenCount(dpy) * sizeof(Entries));
-	for (i = 0; i < ScreenCount(dpy); i++) {
-	    Process(i, True, False);
-	    dbs[i] = newDB;
-	}
-	InitEntries(&newDB);
-	if (oper == OPMERGE || oper == OPOVERRIDE)
-	    GetEntriesString(&newDB, XResourceManagerString(dpy));
-	ShuffleEntries(&newDB, dbs, ScreenCount(dpy));
-	if (need_newline)
-	    printf("! screen-independent resources\n");
-	ReProcess(0, False);
-	if (need_newline)
-	    printf("\n");
-	for (i = 0; i < ScreenCount(dpy); i++) {
-	    newDB = dbs[i];
-	    if (need_newline) {
-		printf("! screen %d resources\n", i);
-		printf("#if SCREEN_NUM == %d\n", i);
-	    }
-	    ReProcess(i, True);
-	    if (need_newline) {
-		printf("#endif\n");
-		if (i+1 != ScreenCount(dpy))
-		    printf("\n");
-	    }
-	}
+        dbs = mallocarray(ScreenCount(dpy), sizeof(Entries));
+        if (dbs == NULL)
+            fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
+        for (i = 0; i < ScreenCount(dpy); i++) {
+            Process(i, True, False);
+            dbs[i] = newDB;
+        }
+        InitEntries(&newDB);
+        if (oper == OPMERGE || oper == OPOVERRIDE)
+            GetEntriesString(&newDB, XResourceManagerString(dpy));
+        ShuffleEntries(&newDB, dbs, (unsigned) ScreenCount(dpy));
+        if (need_newline)
+            printf("! screen-independent resources\n");
+        ReProcess(0, False);
+        if (need_newline)
+            printf("\n");
+        for (i = 0; i < ScreenCount(dpy); i++) {
+            newDB = dbs[i];
+            if (need_newline) {
+                printf("! screen %d resources\n", i);
+                printf("#if SCREEN_NUM == %d\n", i);
+            }
+            ReProcess(i, True);
+            if (need_newline) {
+                printf("#endif\n");
+                if (i + 1 != ScreenCount(dpy))
+                    printf("\n");
+            }
+        }
     }
 
     if (fp)
-	unlink(filename);
+        unlink(filename);
     if (retainProp)
-	XSetCloseDownMode(dpy, RetainPermanent);
+        XSetCloseDownMode(dpy, RetainPermanent);
     XCloseDisplay(dpy);
-    exit (0);
+    exit(0);
 }
 
 
 static void
 FormatEntries(Buffer *b, Entries *entries)
 {
-    register int i;
+    size_t i;
 
     b->used = 0;
     if (!entries->used)
-	return;
+        return;
     if (oper == OPMERGE)
-	qsort(entries->entry, entries->used, sizeof(Entry),
-	      CompareEntries);
+        qsort(entries->entry, entries->used, sizeof(Entry), CompareEntries);
     for (i = 0; i < entries->used; i++) {
-	if (entries->entry[i].usable)
-	    AppendEntryToBuffer(b, &entries->entry[i]);
+        if (entries->entry[i].usable)
+            AppendEntryToBuffer(b, &entries->entry[i]);
     }
 }
 
 static void
 StoreProperty(Display *display, Window root, Atom res_prop)
 {
-    int len = buffer.used;
+    size_t len = buffer.used;
     int mode = PropModeReplace;
-    unsigned char *buf = (unsigned char *)buffer.buff;
-    int max = (XMaxRequestSize(display) << 2) - 28;
+    unsigned char *buf = (unsigned char *) buffer.buff;
+    size_t max = ((unsigned) XMaxRequestSize(display) << 2) - 28;
 
     if (len > max) {
-	XGrabServer(display);
-	do {
-	    XChangeProperty(display, root, res_prop, XA_STRING, 8, mode, buf, max);
-	    buf += max;
-	    len -= max;
-	    mode = PropModeAppend;
-	} while (len > max);
+        XGrabServer(display);
+        do {
+            XChangeProperty(display, root, res_prop, XA_STRING, 8, mode, buf,
+                            (int) max);
+            buf += max;
+            len -= max;
+            mode = PropModeAppend;
+        } while (len > max);
     }
-    XChangeProperty(display, root, res_prop, XA_STRING, 8, mode, buf, len);
+    XChangeProperty(display, root, res_prop, XA_STRING, 8, mode, buf,
+                    (int) len);
     if (mode != PropModeReplace)
-	XUngrabServer(display);
+        XUngrabServer(display);
 }
 
 static void
@@ -1198,211 +1260,224 @@ Process(int scrno, Bool doScreen, Bool e
     DoScreenDefines(dpy, scrno, &defines);
     DoCmdDefines(&defines);
     if (doScreen) {
-	xdefs = XScreenResourceString (ScreenOfDisplay(dpy, scrno));
-	root = RootWindow(dpy, scrno);
-	res_prop = XInternAtom(dpy, SCREEN_RESOURCES, False);
-    } else {
-	xdefs = XResourceManagerString (dpy);
-	root = RootWindow(dpy, 0);
-	res_prop = XA_RESOURCE_MANAGER;
+        xdefs = XScreenResourceString(ScreenOfDisplay(dpy, scrno));
+        root = RootWindow(dpy, scrno);
+        res_prop = XInternAtom(dpy, SCREEN_RESOURCES, False);
+    }
+    else {
+        xdefs = XResourceManagerString(dpy);
+        root = RootWindow(dpy, 0);
+        res_prop = XA_RESOURCE_MANAGER;
     }
     if (oper == OPSYMBOLS) {
-	printf ("%s\n", defines.val);
-    } else if (oper == OPQUERY) {
-	if (xdefs)
-	    printf ("%s", xdefs);	/* fputs broken in SunOS 4.0 */
-    } else if (oper == OPREMOVE) {
-	if (xdefs)
-	    XDeleteProperty(dpy, root, res_prop);
-    } else if (oper == OPEDIT) {
-	char template[100], old[100];
+        printf("%s\n", defines.val);
+    }
+    else if (oper == OPQUERY) {
+        if (xdefs)
+            printf("%s", xdefs);        /* fputs broken in SunOS 4.0 */
+    }
+    else if (oper == OPREMOVE) {
+        if (xdefs)
+            XDeleteProperty(dpy, root, res_prop);
+    }
+    else if (oper == OPEDIT) {
+        char template[100], old[100];
 
-	input = fopen(editFile, "r");
-	snprintf(template, sizeof(template), "%sXXXXXX", editFile);
+        input = fopen(editFile, "r");
+        snprintf(template, sizeof(template), "%sXXXXXX", editFile);
 #ifndef HAVE_MKSTEMP
-	(void) mktemp(template);
-	output = fopen(template, "w");
+        (void) mktemp(template);
+        output = fopen(template, "w");
 #else
-	{
-	int fd = mkstemp(template);
-	output = fd != -1 ? fdopen(fd, "w") : NULL;
-	}
-#endif
-	if (!output)
-	    fatal("%s: can't open temporary file '%s'\n", ProgramName, template);
-	GetEntriesString(&newDB, xdefs);
-	EditFile(&newDB, input, output);
-	if (input)
-	    fclose(input);
-	fclose(output);
-	snprintf(old, sizeof(old), "%s%s", editFile, backup_suffix);
-	if (dont_execute) {		/* then write to standard out */
-	    char buf[BUFSIZ];
-	    int n;
-
-	    output = fopen (template, "r");
-	    if (output) {
-		while ((n = fread (buf, 1, sizeof buf, output)) > 0) {
-		    fwrite (buf, 1, n, stdout);
-		}
-		fclose (output);
-	    }
-	    unlink (template);
-	} else {
-	    rename (editFile, old);
-	    if (rename (template, editFile))
-		fatal("%s: can't rename file '%s' to '%s'\n", ProgramName,
-		      template, editFile);
-	}
-    } else {
-	const char *cpp_addflags = "";
-
-	if (oper == OPMERGE || oper == OPOVERRIDE)
-	    GetEntriesString(&newDB, xdefs);
-
-	/* Add -P flag only if using cpp, not another preprocessor */
-	if (cpp_program) {
-	    const char *cp = strstr(cpp_program, "cpp");
-
-	    if (cp && ((cp[3] == '\0') || cp[3] == ' '))
-		cpp_addflags = "-P";
-	}
+        {
+            int fd = mkstemp(template);
+
+            output = fd != -1 ? fdopen(fd, "w") : NULL;
+        }
+#endif
+        if (!output)
+            fatal("%s: can't open temporary file '%s'\n", ProgramName,
+                  template);
+        GetEntriesString(&newDB, xdefs);
+        EditFile(&newDB, input, output);
+        if (input)
+            fclose(input);
+        fclose(output);
+        snprintf(old, sizeof(old), "%s%s", editFile, backup_suffix);
+        if (dont_execute) {     /* then write to standard out */
+            char buf[BUFSIZ];
+            size_t n;
+
+            output = fopen(template, "r");
+            if (output) {
+                while ((n = fread(buf, 1, sizeof buf, output)) > 0) {
+                    fwrite(buf, 1, n, stdout);
+                }
+                fclose(output);
+            }
+            unlink(template);
+        }
+        else {
+            rename(editFile, old);
+            if (rename(template, editFile))
+                fatal("%s: can't rename file '%s' to '%s'\n", ProgramName,
+                      template, editFile);
+        }
+    }
+    else {
+        const char *cpp_addflags = "";
+
+        if (oper == OPMERGE || oper == OPOVERRIDE)
+            GetEntriesString(&newDB, xdefs);
+
+        /* Add -P flag only if using cpp, not another preprocessor */
+        if (cpp_program) {
+            const char *cp = strstr(cpp_program, "cpp");
+
+            if (cp && ((cp[3] == '\0') || cp[3] == ' '))
+                cpp_addflags = "-P";
+        }
 #ifdef PATHETICCPP
-	if (need_real_defines) {
+        if (need_real_defines) {
 #ifdef WIN32
-	    if (!(input = fopen(tmpname2, "w")))
-		fatal("%s: can't open file '%s'\n", ProgramName, tmpname2);
-	    fputs(defines.val, input);
-	    fprintf(input, "\n#include \"%s\"\n", filename);
-	    fclose(input);
-	    (void) mktemp(tmpname3);
-	    if (asprintf(&cmd, "%s %s %s %s > %s", cpp_program, cpp_addflags,
-			 includes.val, tmpname2, tmpname3) == -1)
-		fatal("%s: Out of memory\n", ProgramName);
-	    if (system(cmd) < 0)
-		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
-	    free(cmd);
-	    if (!(input = fopen(tmpname3, "r")))
-		fatal("%s: can't open file '%s'\n", ProgramName, tmpname3);
+            if (!(input = fopen(tmpname2, "w")))
+                fatal("%s: can't open file '%s'\n", ProgramName, tmpname2);
+            fputs(defines.val, input);
+            fprintf(input, "\n#include \"%s\"\n", filename);
+            fclose(input);
+            (void) mktemp(tmpname3);
+            if (asprintf(&cmd, "%s %s %s %s > %s", cpp_program, cpp_addflags,
+                         includes.val, tmpname2, tmpname3) == -1)
+                fatal("%s: Out of memory\n", ProgramName);
+            if (system(cmd) < 0)
+                fatal("%s: cannot run '%s'\n", ProgramName, cmd);
+            free(cmd);
+            if (!(input = fopen(tmpname3, "r")))
+                fatal("%s: can't open file '%s'\n", ProgramName, tmpname3);
 #else
-	    if (!freopen(tmpname2, "w+", stdin))
-		fatal("%s: can't open file '%s'\n", ProgramName, tmpname2);
-	    fputs(defines.val, stdin);
-	    fprintf(stdin, "\n#include \"%s\"\n", filename);
-	    fflush(stdin);
-	    fseek(stdin, 0, 0);
-	    if (asprintf(&cmd, "%s %s %s", cpp_program, cpp_addflags,
-			 includes.val) == -1)
-		fatal("%s: Out of memory\n", ProgramName);
-	    if (!(input = popen(cmd, "r")))
-		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
-	    free(cmd);
-#endif
-	} else {
-#endif
-	if (filename) {
-	    if (!freopen (filename, "r", stdin))
-		fatal("%s: can't open file '%s'\n", ProgramName, filename);
-	}
-	if (cpp_program) {
+            if (!freopen(tmpname2, "w+", stdin))
+                fatal("%s: can't open file '%s'\n", ProgramName, tmpname2);
+            fputs(defines.val, stdin);
+            fprintf(stdin, "\n#include \"%s\"\n", filename);
+            fflush(stdin);
+            fseek(stdin, 0, SEEK_SET);
+            if (asprintf(&cmd, "%s %s %s", cpp_program, cpp_addflags,
+                         includes.val) == -1)
+                fatal("%s: Out of memory\n", ProgramName);
+            if (!(input = popen(cmd, "r")))
+                fatal("%s: cannot run '%s'\n", ProgramName, cmd);
+            free(cmd);
+#endif
+        }
+        else {
+#endif
+            if (filename) {
+                if (!freopen(filename, "r", stdin))
+                    fatal("%s: can't open file '%s'\n", ProgramName, filename);
+            }
+            if (cpp_program) {
 #ifdef WIN32
-	    (void) mktemp(tmpname3);
-	    if (asprintf(&cmd, "%s %s %s %s %s > %s", cpp_program,
-			 cpp_addflags, includes.val, defines.val,
-			 filename ? filename : "", tmpname3) == -1)
-		fatal("%s: Out of memory\n", ProgramName);
-	    if (system(cmd) < 0)
-		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
-	    free(cmd);
-	    if (!(input = fopen(tmpname3, "r")))
-		fatal("%s: can't open file '%s'\n", ProgramName, tmpname3);
+                (void) mktemp(tmpname3);
+                if (asprintf(&cmd, "%s %s %s %s %s > %s", cpp_program,
+                             cpp_addflags, includes.val, defines.val,
+                             filename ? filename : "", tmpname3) == -1)
+                    fatal("%s: Out of memory\n", ProgramName);
+                if (system(cmd) < 0)
+                    fatal("%s: cannot run '%s'\n", ProgramName, cmd);
+                free(cmd);
+                if (!(input = fopen(tmpname3, "r")))
+                    fatal("%s: can't open file '%s'\n", ProgramName, tmpname3);
 #else
-	    if (asprintf(&cmd, "%s %s %s %s %s", cpp_program,
-			 cpp_addflags, includes.val, defines.val,
-			 filename ? filename : "") == -1)
-		fatal("%s: Out of memory\n", ProgramName);
-	    if (!(input = popen(cmd, "r")))
-		fatal("%s: cannot run '%s'\n", ProgramName, cmd);
-	    free(cmd);
-#endif
-	} else {
-	    input = stdin;
-	}
+                if (asprintf(&cmd, "%s %s %s %s %s", cpp_program,
+                             cpp_addflags, includes.val, defines.val,
+                             filename ? filename : "") == -1)
+                    fatal("%s: Out of memory\n", ProgramName);
+                if (!(input = popen(cmd, "r")))
+                    fatal("%s: cannot run '%s'\n", ProgramName, cmd);
+                free(cmd);
+#endif
+            }
+            else {
+                input = stdin;
+            }
 #ifdef PATHETICCPP
-	}
+        }
 #endif
-	ReadFile(&buffer, input);
-	if (cpp_program) {
+        ReadFile(&buffer, input);
+        if (cpp_program) {
 #ifdef WIN32
-	    fclose(input);
+            fclose(input);
 #else
-	    pclose(input);
+            pclose(input);
 #endif
-	}
+        }
 #ifdef PATHETICCPP
-	if (need_real_defines) {
-	    unlink(tmpname2);
+        if (need_real_defines) {
+            unlink(tmpname2);
 #ifdef WIN32
-	    if (tmpname3[strlen(tmpname3) - 1] != 'X')
-		unlink(tmpname3);
+            if (tmpname3[strlen(tmpname3) - 1] != 'X')
+                unlink(tmpname3);
 #endif
-	}
+        }
 #endif
-	GetEntries(&newDB, &buffer, 0);
-	if (execute) {
-	    FormatEntries(&buffer, &newDB);
-	    if (dont_execute) {
-		if (buffer.used > 0) {
-		    fwrite (buffer.buff, 1, buffer.used, stdout);
-		    if (buffer.buff[buffer.used - 1] != '\n') putchar ('\n');
-		}
-	    } else if (buffer.used > 1 || !doScreen)
-		StoreProperty (dpy, root, res_prop);
-	    else
-		XDeleteProperty (dpy, root, res_prop);
-	}
+        GetEntries(&newDB, &buffer, 0);
+        if (execute) {
+            FormatEntries(&buffer, &newDB);
+            if (dont_execute) {
+                if (buffer.used > 0) {
+                    fwrite(buffer.buff, 1, buffer.used, stdout);
+                    if (buffer.buff[buffer.used - 1] != '\n')
+                        putchar('\n');
+                }
+            }
+            else if (buffer.used > 1 || !doScreen)
+                StoreProperty(dpy, root, res_prop);
+            else
+                XDeleteProperty(dpy, root, res_prop);
+        }
     }
     if (execute)
-	FreeEntries(&newDB);
+        FreeEntries(&newDB);
     if (doScreen && xdefs)
-	XFree(xdefs);
+        XFree(xdefs);
 }
 
 static void
-ShuffleEntries(Entries *db, Entries *dbs, int num)
+ShuffleEntries(Entries *db, Entries *dbs, unsigned int num)
 {
-    int *hits;
-    register int i, j, k;
+    unsigned int *hits;
+    unsigned int i, j, k;
     Entries cur, cmp;
     char *curtag, *curvalue;
 
-    hits = malloc(num * sizeof(int));
+    hits = mallocarray(num, sizeof(int));
+    if (hits == NULL)
+        fatal("%s: Can't allocate memory in %s\n", ProgramName, __func__);
     cur = dbs[0];
     for (i = 0; i < cur.used; i++) {
-	curtag = cur.entry[i].tag;
-	curvalue = cur.entry[i].value;
-	for (j = 1; j < num; j++) {
-	    cmp = dbs[j];
-	    for (k = 0; k < cmp.used; k++) {
-		if (cmp.entry[k].usable &&
-		    !strcmp(curtag, cmp.entry[k].tag) &&
-		    !strcmp(curvalue, cmp.entry[k].value))
-		{
-		    hits[j] = k;
-		    break;
-		}
-	    }
-	    if (k == cmp.used)
-		break;
-	}
-	if (j == num) {
-	    AddEntry(db, &cur.entry[i]);
-	    hits[0] = i;
-	    for (j = 0; j < num; j++)
-		dbs[j].entry[hits[j]].usable = False;
-	}
+        curtag = cur.entry[i].tag;
+        curvalue = cur.entry[i].value;
+        for (j = 1; j < num; j++) {
+            cmp = dbs[j];
+            for (k = 0; k < cmp.used; k++) {
+                if (cmp.entry[k].usable &&
+                    !strcmp(curtag, cmp.entry[k].tag) &&
+                    !strcmp(curvalue, cmp.entry[k].value)) {
+                    hits[j] = k;
+                    break;
+                }
+            }
+            if (k == cmp.used)
+                break;
+        }
+        if (j == num) {
+            AddEntry(db, &cur.entry[i]);
+            hits[0] = i;
+            for (j = 0; j < num; j++)
+                dbs[j].entry[hits[j]].usable = False;
+        }
     }
-    free((char *)hits);
+    free(hits);
 }
 
 static void
@@ -1413,22 +1488,25 @@ ReProcess(int scrno, Bool doScreen)
 
     FormatEntries(&buffer, &newDB);
     if (doScreen) {
-	root = RootWindow(dpy, scrno);
-	res_prop = XInternAtom(dpy, SCREEN_RESOURCES, False);
-    } else {
-	root = RootWindow(dpy, 0);
-	res_prop = XA_RESOURCE_MANAGER;
+        root = RootWindow(dpy, scrno);
+        res_prop = XInternAtom(dpy, SCREEN_RESOURCES, False);
+    }
+    else {
+        root = RootWindow(dpy, 0);
+        res_prop = XA_RESOURCE_MANAGER;
     }
     if (dont_execute) {
-	if (buffer.used > 0) {
-	    fwrite (buffer.buff, 1, buffer.used, stdout);
-	    if (buffer.buff[buffer.used - 1] != '\n') putchar ('\n');
-	}
-    } else {
-	if (buffer.used > 1 || !doScreen)
-	    StoreProperty (dpy, root, res_prop);
-	else
-	    XDeleteProperty (dpy, root, res_prop);
+        if (buffer.used > 0) {
+            fwrite(buffer.buff, 1, buffer.used, stdout);
+            if (buffer.buff[buffer.used - 1] != '\n')
+                putchar('\n');
+        }
+    }
+    else {
+        if (buffer.used > 1 || !doScreen)
+            StoreProperty(dpy, root, res_prop);
+        else
+            XDeleteProperty(dpy, root, res_prop);
     }
     FreeEntries(&newDB);
 }
@@ -1439,7 +1517,7 @@ fatal(const char *msg, ...)
     va_list args;
 
     if (errno != 0)
-	perror(ProgramName);
+        perror(ProgramName);
     va_start(args, msg);
     vfprintf(stderr, msg, args);
     va_end(args);

Added files:

Index: xsrc/external/mit/xmessage/dist/compile
diff -u /dev/null xsrc/external/mit/xmessage/dist/compile:1.3
--- /dev/null	Sun Mar 11 08:35:14 2018
+++ xsrc/external/mit/xmessage/dist/compile	Sun Mar 11 08:35:14 2018
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tro...@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-autom...@gnu.org> or send patches to
+# <automake-patc...@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-autom...@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:

Reply via email to