ncurses 6.2 - patch 20200829
[ncurses.git] / ncurses / base / lib_driver.c
index 4f4b8ce5e20e128c9cdc01d76fa0ce799f5fce18..c53802f3732a98f990bf5999e9c1c63bd0f94d63 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2008-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2009-2012,2014 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -33,8 +34,9 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_driver.c,v 1.5 2014/03/08 20:32:59 tom Exp $")
+MODULE_ID("$Id: lib_driver.c,v 1.9 2020/08/29 19:53:35 tom Exp $")
 
+#ifndef EXP_WIN32_DRIVER
 typedef struct DriverEntry {
     const char *name;
     TERM_DRIVER *driver;
@@ -42,8 +44,8 @@ typedef struct DriverEntry {
 
 static DRIVER_ENTRY DriverTable[] =
 {
-#ifdef __MINGW32__
-    {"win32con", &_nc_WIN_DRIVER},
+#ifdef _WIN32
+    {"win32console", &_nc_WIN_DRIVER},
 #endif
     {"tinfo", &_nc_TINFO_DRIVER}       /* must be last */
 };
@@ -63,24 +65,12 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret)
 
     for (i = 0; i < SIZEOF(DriverTable); i++) {
        res = DriverTable[i].driver;
-       /*
-        * Use "#" (a character which cannot begin a terminal's name) to
-        * select specific driver from the table.
-        *
-        * In principle, we could have more than one non-terminfo driver,
-        * e.g., "win32gui".
-        */
-       if (name != 0 && *name == '#') {
-           size_t n = strlen(name + 1);
-           if (n != 0
-               && strncmp(name + 1, DriverTable[i].name, n)) {
-               continue;
+       if (strcmp(DriverTable[i].name, res->td_name(TCB)) == 0) {
+           if (res->td_CanHandle(TCB, name, errret)) {
+               use = res;
+               break;
            }
        }
-       if (res->td_CanHandle(TCB, name, errret)) {
-           use = res;
-           break;
-       }
     }
     if (use != 0) {
        TCB->drv = use;
@@ -88,6 +78,7 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret)
     }
     returnCode(code);
 }
+#endif /* !EXP_WIN32_DRIVER */
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(has_key) (SCREEN *sp, int keycode)