home *** CD-ROM | disk | FTP | other *** search
- To: vim-dev@vim.org
- Subject: Patch 7.0.130
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- Mime-Version: 1.0
- Content-Type: text/plain; charset=ISO-8859-1
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 7.0.130 (extra)
- Problem: Win32: Trying to edit or write devices may cause Vim to get stuck.
- Solution: Add the 'opendevice' option, default off. Disallow
- reading/writing from/to devices when it's off.
- Also detect more devices by the full name starting with "\\.\".
- Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h,
- src/os_win32.c
-
-
- *** ../vim-7.0.129/runtime/doc/options.txt Sun May 7 17:07:10 2006
- --- runtime/doc/options.txt Tue Oct 10 17:34:48 2006
- ***************
- *** 4792,4801 ****
- completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
- See |complete-functions| for an explanation of how the function is
- invoked and what it should return.
- ! This option is usually set by a filetype plugin.
- |:filetype-plugin-on|
-
-
- *'operatorfunc'* *'opfunc'*
- 'operatorfunc' 'opfunc' string (default: empty)
- global
- --- 4815,4836 ----
- completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
- See |complete-functions| for an explanation of how the function is
- invoked and what it should return.
- ! This option is usually set by a filetype plugin:
- |:filetype-plugin-on|
-
-
- + *'opendevice* *'odev* *'noopendevice* *'noodev*
- + 'opendevice' 'odev' boolean (default off)
- + global
- + {not in Vi}
- + {only for MS-DOS, MS-Windows and OS/2}
- + Enable reading and writing from devices. This may get Vim stuck on a
- + device that can be opened but doesn't actually do the I/O. Therefore
- + it is off by default.
- + Note that on MS-Windows editing "aux.h", "lpt1.txt" and the like also
- + result in editing a device.
- +
- +
- *'operatorfunc'* *'opfunc'*
- 'operatorfunc' 'opfunc' string (default: empty)
- global
- *** ../vim-7.0.129/src/fileio.c Thu Sep 14 11:07:08 2006
- --- src/fileio.c Tue Oct 10 18:41:24 2006
- ***************
- *** 419,424 ****
- --- 419,438 ----
- }
- #endif
-
- + #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
- + /*
- + * MS-Windows allows opening a device, but we will probably get stuck
- + * trying to read it.
- + */
- + if (!p_odev && mch_nodetype(fname) == NODE_WRITABLE)
- + {
- + filemess(curbuf, fname, (char_u *)_("is a device (disabled with 'opendevice' option"), 0);
- + msg_end();
- + msg_scroll = msg_save;
- + return FAIL;
- + }
- + #endif
- +
- /* set default 'fileformat' */
- if (set_options)
- {
- ***************
- *** 3163,3168 ****
- --- 3177,3192 ----
- }
- if (c == NODE_WRITABLE)
- {
- + # if defined(MSDOS) || defined(MSWIN) || defined(OS2)
- + /* MS-Windows allows opening a device, but we will probably get stuck
- + * trying to write to it. */
- + if (!p_odev)
- + {
- + errnum = (char_u *)"E796: ";
- + errmsg = (char_u *)_("writing to device disabled with 'opendevice' option");
- + goto fail;
- + }
- + # endif
- device = TRUE;
- newfile = TRUE;
- perm = -1;
- *** ../vim-7.0.129/src/option.c Tue Sep 5 16:29:38 2006
- --- src/option.c Tue Oct 10 17:16:00 2006
- ***************
- *** 1810,1815 ****
- --- 1810,1823 ----
- {"open", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
- {(char_u *)FALSE, (char_u *)0L}},
- + {"opendevice", "odev", P_BOOL|P_VI_DEF,
- + #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
- + (char_u *)&p_odev, PV_NONE,
- + #else
- + (char_u *)NULL, PV_NONE,
- + #endif
- + {(char_u *)FALSE, (char_u *)FALSE}
- + },
- {"operatorfunc", "opfunc", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_opfunc, PV_NONE,
- {(char_u *)"", (char_u *)0L} },
- *** ../vim-7.0.129/src/option.h Mon Apr 24 21:37:06 2006
- --- src/option.h Tue Oct 10 17:17:09 2006
- ***************
- *** 618,623 ****
- --- 618,626 ----
- #ifdef FEAT_MZSCHEME
- EXTERN long p_mzq; /* 'mzquantum */
- #endif
- + #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
- + EXTERN int p_odev; /* 'opendevice' */
- + #endif
- EXTERN char_u *p_opfunc; /* 'operatorfunc' */
- EXTERN char_u *p_para; /* 'paragraphs' */
- EXTERN int p_paste; /* 'paste' */
- *** ../vim-7.0.129/src/os_win32.c Sun Apr 23 00:24:31 2006
- --- src/os_win32.c Tue Oct 10 17:08:23 2006
- ***************
- *** 2702,2707 ****
- --- 2702,2713 ----
- HANDLE hFile;
- int type;
-
- + /* We can't open a file with a name "\\.\con" or "\\.\prn" and trying to
- + * read from it later will cause Vim to hang. Thus return NODE_WRITABLE
- + * here. */
- + if (STRNCMP(name, "\\\\.\\", 4) == 0)
- + return NODE_WRITABLE;
- +
- hFile = CreateFile(name, /* file name */
- GENERIC_WRITE, /* access mode */
- 0, /* share mode */
- *** ../vim-7.0.129/src/version.c Tue Oct 10 18:29:21 2006
- --- src/version.c Tue Oct 10 18:37:12 2006
- ***************
- *** 668,669 ****
- --- 668,671 ----
- { /* Add new patch number below this line */
- + /**/
- + 130,
- /**/
-
- --
- "Space is big. Really big. You just won't believe how vastly hugely mind-
- bogglingly big it is. I mean, you may think it's a long way down the
- road to the chemist, but that's just peanuts to space."
- -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
- /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
- \\\ download, build and distribute -- http://www.A-A-P.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
-