+unsigned long
+name_to_color(char *colorname)
+{
+ Colormap cmap;
+ Status r;
+ XColor screen_def, exact_def;
+ unsigned long result = 0;
+ char cname[32] = "#";
+
+ cmap = DefaultColormap(display, screen);
+ r = XAllocNamedColor(display, cmap, colorname, &screen_def, &exact_def);
+ if (!r) {
+ strlcat(cname, colorname + 2, sizeof cname - 1);
+ r = XAllocNamedColor(display, cmap, cname, &screen_def,
+ &exact_def);
+ }
+ if (r)
+ result = screen_def.pixel;
+ else
+ fprintf(stderr, "color '%s' not found.\n", colorname);
+
+ return (result);
+}
+