Jacek Caban : wineconsole: Use IOCTL_CONDRV_GET_INPUT_INFO in WINECON_GetServerConfig.

Alexandre Julliard julliard at winehq.org
Tue Jul 7 15:47:07 CDT 2020


Module: wine
Branch: master
Commit: eff42369e9c59f330083e25a23762df084ce6869
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=eff42369e9c59f330083e25a23762df084ce6869

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jul  7 16:07:02 2020 +0200

wineconsole: Use IOCTL_CONDRV_GET_INPUT_INFO in WINECON_GetServerConfig.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/wine/condrv.h              |  3 +++
 programs/wineconsole/wineconsole.c | 18 ++++++++----------
 server/console.c                   |  5 ++++-
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/include/wine/condrv.h b/include/wine/condrv.h
index 0107da1f2f..3dc6e9714e 100644
--- a/include/wine/condrv.h
+++ b/include/wine/condrv.h
@@ -31,6 +31,9 @@
 /* IOCTL_CONDRV_GET_INPUT_INFO result */
 struct condrv_input_info
 {
+    unsigned int  history_mode;   /* whether we duplicate lines in history */
+    unsigned int  history_size;   /* number of lines in history */
+    unsigned int  edition_mode;   /* index to the edition mode flavors */
     unsigned int  input_count;    /* number of available input records */
 };
 
diff --git a/programs/wineconsole/wineconsole.c b/programs/wineconsole/wineconsole.c
index 38a8c71163..e94af41d2b 100644
--- a/programs/wineconsole/wineconsole.c
+++ b/programs/wineconsole/wineconsole.c
@@ -27,6 +27,7 @@
 #include "winecon_private.h"
 #include "winnls.h"
 #include "winuser.h"
+#include "wine/condrv.h"
 #include "wine/unicode.h"
 #include "wine/debug.h"
 
@@ -603,19 +604,16 @@ static void WINECON_Delete(struct inner_data* data)
  */
 static BOOL WINECON_GetServerConfig(struct inner_data* data)
 {
+    struct condrv_input_info input_info;
     BOOL  ret;
     DWORD mode;
 
-    SERVER_START_REQ(get_console_input_info)
-    {
-        req->handle = wine_server_obj_handle( data->hConIn );
-        ret = !wine_server_call_err( req );
-        data->curcfg.history_size = reply->history_size;
-        data->curcfg.history_nodup = reply->history_mode;
-        data->curcfg.edition_mode = reply->edition_mode;
-    }
-    SERVER_END_REQ;
-    if (!ret) return FALSE;
+    if (!DeviceIoControl(data->hConIn, IOCTL_CONDRV_GET_INPUT_INFO, NULL, 0,
+                         &input_info, sizeof(input_info), NULL, NULL))
+        return FALSE;
+    data->curcfg.history_size  = input_info.history_size;
+    data->curcfg.history_nodup = input_info.history_mode;
+    data->curcfg.edition_mode  = input_info.edition_mode;
 
     GetConsoleMode(data->hConIn, &mode);
     data->curcfg.insert_mode = (mode & (ENABLE_INSERT_MODE|ENABLE_EXTENDED_FLAGS)) ==
diff --git a/server/console.c b/server/console.c
index 9e3fa1d673..658ce97311 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1554,7 +1554,10 @@ static int console_ioctl( struct fd *fd, ioctl_code_t code, struct async *async
                 set_error( STATUS_INVALID_PARAMETER );
                 return 0;
             }
-            info.input_count = console->recnum;
+            info.history_mode  = console->history_mode;
+            info.history_size  = console->history_size;
+            info.edition_mode  = console->edition_mode;
+            info.input_count   = console->recnum;
             return set_reply_data( &info, sizeof(info) ) != NULL;
         }
 




More information about the wine-cvs mailing list