+typedef struct {
+ const char *name;
+ int n_type;
+ int n_parms;
+} USERCAPS;
+
+/*
+ * These are user-capabilities that happen to be used in ncurses' terminal
+ * database.
+ */
+static USERCAPS *
+lookup_user_capability(const char *name)
+{
+ /* *INDENT-OFF* */
+#define DATA(name,type,parms) { name, type, parms }
+ static USERCAPS table[] = {
+ DATA( "AX", BOOLEAN, 0 ),
+ DATA( "Cr", STRING, 0 ),
+ DATA( "Cs", STRING, 1 ),
+ DATA( "E0", STRING, 0 ),
+ DATA( "E3", STRING, 0 ),
+ DATA( "G0", BOOLEAN, 0 ),
+ DATA( "Ms", STRING, 2 ),
+ DATA( "RGB", BOOLEAN, 0 ), /* FIXME can be number or string */
+ DATA( "S0", STRING, 1 ),
+ DATA( "Se", STRING, 0 ),
+ DATA( "Smulx", STRING, 1 ),
+ DATA( "Ss", STRING, 1 ),
+ DATA( "TS", STRING, 0 ),
+ DATA( "U8", NUMBER, 0 ),
+ DATA( "XM", STRING, 1 ),
+ DATA( "XT", BOOLEAN, 0 ),
+ DATA( "grbom", STRING, 0 ),
+ DATA( "gsbom", STRING, 0 ),
+ DATA( "rmxx", STRING, 0 ),
+ DATA( "smxx", STRING, 0 ),
+ DATA( "xm", STRING, 9 ),
+ };
+#undef DATA
+ /* *INDENT-ON* */
+
+ size_t n;
+ USERCAPS *result = 0;
+ if (*name != 'k') {
+ for (n = 0; n < SIZEOF(table); ++n) {
+ if (!strcmp(name, table[n].name)) {
+ result = &table[n];
+ break;
+ }
+ }
+ }
+ return result;
+}
+