+
+/* Emulation of some X window features from xfns.c and xfaces.c. */
+
+/* Standard VGA colors, in the order of their standard numbering
+ in the default VGA palette. */
+static char *vga_colors[16] = {
+ "black", "blue", "green", "cyan", "red", "magenta", "brown",
+ "lightgray", "darkgray", "lightblue", "lightgreen", "lightcyan",
+ "lightred", "lightmagenta", "yellow", "white"
+};
+
+/* Given a color name, return its index, or -1 if not found. Note
+ that this only performs case-insensitive comparison against the
+ standard names. For anything more sophisticated, like matching
+ "gray" with "grey" or translating X color names into their MSDOS
+ equivalents, call the Lisp function Qtty_color_desc (defined
+ on lisp/term/tty-colors.el). */
+int
+msdos_stdcolor_idx (const char *name)
+{
+ int i;
+
+ for (i = 0; i < sizeof (vga_colors) / sizeof (vga_colors[0]); i++)
+ if (strcasecmp (name, vga_colors[i]) == 0)
+ return i;
+
+ return
+ strcmp (name, unspecified_fg) == 0 ? FACE_TTY_DEFAULT_FG_COLOR
+ : strcmp (name, unspecified_bg) == 0 ? FACE_TTY_DEFAULT_BG_COLOR
+ : FACE_TTY_DEFAULT_COLOR;
+}
+
+/* Given a color index, return its standard name. */
+Lisp_Object
+msdos_stdcolor_name (int idx)
+{
+ extern Lisp_Object Qunspecified;
+
+ if (idx == FACE_TTY_DEFAULT_FG_COLOR)
+ return build_string (unspecified_fg);
+ else if (idx == FACE_TTY_DEFAULT_BG_COLOR)
+ return build_string (unspecified_bg);
+ else if (idx >= 0 && idx < sizeof (vga_colors) / sizeof (vga_colors[0]))
+ return build_string (vga_colors[idx]);
+ else
+ return Qunspecified; /* meaning the default */
+}
+