--- xcolors-1.5a.orig/xcolors.c
+++ xcolors-1.5a/xcolors.c
@@ -28,7 +28,7 @@
 #include <math.h>		/* for sqrt() */
 
 #ifndef RGB_TXT
-#define RGB_TXT "/usr/lib/X11/rgb.txt"
+#define RGB_TXT "/etc/X11/rgb.txt"
 #endif
 
 String fallback_resources[] = {
@@ -285,29 +285,35 @@
     
     prev_r = prev_g = prev_b = -1;
     save_colorname[0] = '\0';
-    while (4 == fscanf(rgb, "%d %d %d %[^\n]\n", &r, &g, &b, colorname)) {
-	if (startcolor)
-	  if (l_strcasecmp(colorname, startcolor))
-	    continue;		/* haven't reached starting point yet */
-	  else
-	    startcolor = (char *)NULL;
-	if (r != prev_r  ||  g != prev_g  ||  b != prev_b) {
-	    if (nearcolor.flags) {
-		double ourdist =
-		    sqrt((double)((nearcolor.red-r)*(nearcolor.red-r)
+    while (!feof(rgb)) {
+        char str[1024];
+        
+        fgets(str, 1024L, rgb);
+        if (*str != '!') /* comment */ {
+          sscanf(str, "%d %d %d %[^\n]\n", &r, &g, &b, colorname);
+  	  if (startcolor)
+	    if (l_strcasecmp(colorname, startcolor))
+	      continue;		/* haven't reached starting point yet */
+	    else
+	      startcolor = (char *)NULL;
+	  if (r != prev_r  ||  g != prev_g  ||  b != prev_b) {
+	      if (nearcolor.flags) {
+		  double ourdist =
+		      sqrt((double)((nearcolor.red-r)*(nearcolor.red-r)
 				  + (nearcolor.green-g)*(nearcolor.green-g)
 				  + (nearcolor.blue-b)*(nearcolor.blue-b)));
-		if (ourdist > ddist)
-		    continue;
-	    }
-	    if (save_colorname[0] != '\0') /* skip first time through */
-	      if (!do_color(parent, save_colorname))
-		return;
-	    prev_r = r;
-	    prev_g = g;
-	    prev_b = b;
+		  if (ourdist > ddist)
+		      continue;
+	      }
+	      if (save_colorname[0] != '\0') /* skip first time through */
+	        if (!do_color(parent, save_colorname))
+		  return;
+	      prev_r = r;
+	      prev_g = g;
+	      prev_b = b;
+	  }
+	  strcpy(save_colorname, colorname);
 	}
-	strcpy(save_colorname, colorname);
     }
     if (save_colorname[0] != '\0')
       (void)do_color(parent, save_colorname);
