diff -up xrdb-1.0.9/xrdb.c.nocpp xrdb-1.0.9/xrdb.c
--- xrdb-1.0.9/xrdb.c.nocpp 2011-04-05 12:01:15.000000000 -0400
+++ xrdb-1.0.9/xrdb.c 2013-10-02 10:48:30.774355639 -0400
@@ -845,23 +845,6 @@ main(int argc, char *argv[])
/* initialize the includes String struct */
addstring(&includes, "");
- /* Pick the default cpp to use. This needs to be done before
- * we parse the command line in order to honor -nocpp which sets
- * 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++) {
- if (access(cpp_locations[j], X_OK) == 0) {
- cpp_program = cpp_locations[j];
- break;
- }
- }
- }
-
/* needs to be replaced with XrmParseCommand */
for (i = 1; i < argc; i++) {
@@ -956,6 +939,27 @@ main(int argc, char *argv[])
filename = arg;
} /* end for */
+ 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);
+ }
+ }
+
#ifndef WIN32
while ((i = open("/dev/null", O_RDONLY)) < 3)
; /* make sure later freopen won't clobber things */