]> granicus.if.org Git - vim/commitdiff
patch 8.0.0949: winpty.dll name is fixed v8.0.0949
authorBram Moolenaar <Bram@vim.org>
Wed, 16 Aug 2017 21:14:08 +0000 (23:14 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 16 Aug 2017 21:14:08 +0000 (23:14 +0200)
Problem:    winpty.dll name is fixed.
Solution:   Add the 'winptydll' option. Make the default name depend on
            whether it is a 32-bit or 64-bit build. (idea by Yasuhiro
            Matsumoto, closes #1978)

runtime/doc/options.txt
src/option.c
src/option.h
src/terminal.c
src/version.c

index 73955f4ba8c80d87715c36e097bb889a381bbd1a..ff7bb8f1d83be0232d498433c954babc12abb72f 100644 (file)
@@ -8831,6 +8831,20 @@ A jump table for the options with a short description can be found at |Q_op|.
        large number, it will cause errors when opening more than a few
        windows.  A value of 0 to 12 is reasonable.
 
+                                               *'winptydll'*
+'winptydll'            string  (default "winpty32.dll" or "winpty64.dll")
+                       global
+                       {not in Vi}
+                       {only available when compiled with the |terminal|
+                       feature on MS-Windows}
+       Specifies the name of the winpty shared library, used for the
+       |:terminal| command. The default depends on whether was build as a
+       32-bit or 64-bit executable.  If not found, "win32pty.dll" is tried as
+       a fallback.
+       Environment variables are expanded |:set_env|.
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+
                                                *'winwidth'* *'wiw'* *E592*
 'winwidth' 'wiw'       number  (default 20)
                        global
index 1877b7e47f6e70c2f055afddc6d7e31f06dcedab..3dc52f8e73b7bd1fe986b81abae42e167d30a76a 100644 (file)
@@ -3098,6 +3098,20 @@ static struct vimoption options[] =
                            (char_u *)NULL, PV_NONE,
 #endif
                            {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+    {"winptydll", NULL,            P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+#if defined(WIN3264) && defined(TERMINAL)
+                           (char_u *)&p_winptydll, PV_NONE, {
+# ifdef _WIN64
+                           (char_u *)"winpty64.dll",
+# else
+                           (char_u *)"winpty32.dll",
+# endif
+                               (char_u *)0L}
+#else
+                           (char_u *)NULL, PV_NONE,
+                           {(char_u *)0L, (char_u *)0L}
+#endif
+                           SCRIPTID_INIT},
     {"winwidth",   "wiw",   P_NUM|P_VI_DEF,
 #ifdef FEAT_WINDOWS
                            (char_u *)&p_wiw, PV_NONE,
index 9b7e88f0d2eb7eb14b3e978b41ae025252455ad3..b772a8edede3430512dcc2b7f678165a6e12430b 100644 (file)
@@ -966,6 +966,9 @@ EXTERN long p_wmh;          /* 'winminheight' */
 EXTERN long    p_wmw;          /* 'winminwidth' */
 EXTERN long    p_wiw;          /* 'winwidth' */
 #endif
+#if defined(WIN3264) && defined(TERMINAL)
+EXTERN char_u  *p_winptydll;   /* 'winptydll' */
+#endif
 EXTERN int     p_ws;           /* 'wrapscan' */
 EXTERN int     p_write;        /* 'write' */
 EXTERN int     p_wa;           /* 'writeany' */
index 149679e3fc0fbe6d97b3e0a7cc7fc13d5e126f15..c4fa847677fd7f443bff19361597b482cf4d0075 100644 (file)
@@ -38,6 +38,7 @@
  * in tl_scrollback are no longer used.
  *
  * TODO:
+ * - make [range]terminal pipe [range] lines to the terminal
  * - implement term_setsize()
  * - add test for giving error for invalid 'termsize' value.
  * - support minimal size when 'termsize' is "rows*cols".
@@ -2768,11 +2769,15 @@ dyn_winpty_init(void)
     /* No need to initialize twice. */
     if (hWinPtyDLL)
        return 1;
-    /* Load winpty.dll */
-    hWinPtyDLL = vimLoadLib(WINPTY_DLL);
+    /* Load winpty.dll, prefer using the 'winptydll' option, fall back to just
+     * winpty.dll. */
+    if (*p_winptydll != NUL)
+       hWinPtyDLL = vimLoadLib((char *)p_winptydll);
+    if (!hWinPtyDLL)
+       hWinPtyDLL = vimLoadLib(WINPTY_DLL);
     if (!hWinPtyDLL)
     {
-       EMSG2(_(e_loadlib), WINPTY_DLL);
+       EMSG2(_(e_loadlib), *p_winptydll != NUL ? p_winptydll : WINPTY_DLL);
        return 0;
     }
     for (i = 0; winpty_entry[i].name != NULL
index b2de15d16901df46e2f11f6544847b2594ebbbb5..085b2e1e47de9aaa151bd642fefd3148c7725029 100644 (file)
@@ -769,6 +769,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    949,
 /**/
     948,
 /**/