diff options
author | Bram Moolenaar <Bram@vim.org> | 2004-12-09 21:34:53 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2004-12-09 21:34:53 +0000 |
commit | 293ee4d421cd55f4a3c014c1c26edf02f718cc83 (patch) | |
tree | ae4856e718b752ea0c6c807912bfbb51967fae80 /src/option.c | |
parent | 741b07e0092eb6d7b81c9cbe149196c6cf9d5bbe (diff) | |
download | vim-git-293ee4d421cd55f4a3c014c1c26edf02f718cc83.tar.gz |
updated for version 7.0021v7.0021
Diffstat (limited to 'src/option.c')
-rw-r--r-- | src/option.c | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/src/option.c b/src/option.c index 6c62196ea..d3e47ebaa 100644 --- a/src/option.c +++ b/src/option.c @@ -302,6 +302,7 @@ struct vimoption #define P_SECURE 0x40000L/* cannot change in modeline or secure mode */ #define P_GETTEXT 0x80000L/* expand default value with _() */ #define P_NOGLOB 0x100000L/* do not use local value for global vimrc */ +#define P_NFNAME 0x200000L/* only normal file name chars allowed */ /* * options[] is initialized here. @@ -422,7 +423,7 @@ static struct vimoption {"backupdir", "bdir", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE, (char_u *)&p_bdir, PV_NONE, {(char_u *)DFLT_BDIR, (char_u *)0L}}, - {"backupext", "bex", P_STRING|P_VI_DEF, + {"backupext", "bex", P_STRING|P_VI_DEF|P_NFNAME, (char_u *)&p_bex, PV_NONE, { #ifdef VMS @@ -864,7 +865,7 @@ static struct vimoption {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP, (char_u *)&p_ffs, PV_NONE, {(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}}, - {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB, + {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME, #ifdef FEAT_AUTOCMD (char_u *)&p_ft, PV_FT, {(char_u *)"", (char_u *)0L} @@ -953,6 +954,15 @@ static struct vimoption {"formatprg", "fp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE, (char_u *)&p_fp, PV_NONE, {(char_u *)"", (char_u *)0L}}, + {"fsync", "fs", P_BOOL|P_SECURE|P_VI_DEF, +#ifdef HAVE_FSYNC + (char_u *)&p_fs, PV_NONE, + {(char_u *)TRUE, (char_u *)0L} +#else + (char_u *)NULL, PV_NONE, + {(char_u *)FALSE, (char_u *)0L} +#endif + }, {"gdefault", "gd", P_BOOL|P_VI_DEF|P_VIM, (char_u *)&p_gd, PV_NONE, {(char_u *)FALSE, (char_u *)0L}}, @@ -1278,7 +1288,8 @@ static struct vimoption {"isprint", "isp", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP, (char_u *)&p_isp, PV_NONE, { -#if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS) \ +#if defined(MSDOS) || defined(MSWIN) || defined(OS2) \ + || (defined(MACOS) && !defined(MACOS_X)) \ || defined(VMS) (char_u *)"@,~-255", #else @@ -1302,7 +1313,7 @@ static struct vimoption {(char_u *)0L, (char_u *)0L} #endif }, - {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT, + {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME, #ifdef FEAT_KEYMAP (char_u *)&p_keymap, PV_KMAP, {(char_u *)"", (char_u *)0L} @@ -1348,7 +1359,7 @@ static struct vimoption {(char_u *)NULL, #endif (char_u *)0L}}, - {"langmenu", "lm", P_STRING|P_VI_DEF, + {"langmenu", "lm", P_STRING|P_VI_DEF|P_NFNAME, #if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG) (char_u *)&p_lm, PV_NONE, #else @@ -1594,7 +1605,7 @@ static struct vimoption {(char_u *)0L, (char_u *)0L} #endif }, - {"patchmode", "pm", P_STRING|P_VI_DEF, + {"patchmode", "pm", P_STRING|P_VI_DEF|P_NFNAME, (char_u *)&p_pm, PV_NONE, {(char_u *)"", (char_u *)0L}}, {"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP, @@ -1627,7 +1638,7 @@ static struct vimoption (char_u *)NULL, PV_NONE, #endif {(char_u *)FALSE, (char_u *)0L}}, - {"printdevice", "pdev", P_STRING|P_VI_DEF, + {"printdevice", "pdev", P_STRING|P_VI_DEF|P_SECURE, #ifdef FEAT_PRINTER (char_u *)&p_pdev, PV_NONE, {(char_u *)"", (char_u *)0L} @@ -2040,7 +2051,7 @@ static struct vimoption {"switchbuf", "swb", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, (char_u *)&p_swb, PV_NONE, {(char_u *)"", (char_u *)0L}}, - {"syntax", "syn", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB, + {"syntax", "syn", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME, #ifdef FEAT_SYN_HL (char_u *)&p_syn, PV_SYN, {(char_u *)"", (char_u *)0L} @@ -2145,7 +2156,7 @@ static struct vimoption (char_u *)NULL, PV_NONE, #endif {(char_u *)85L, (char_u *)0L}}, - {"titleold", NULL, P_STRING|P_VI_DEF|P_GETTEXT, + {"titleold", NULL, P_STRING|P_VI_DEF|P_GETTEXT|P_SECURE, #ifdef FEAT_TITLE (char_u *)&p_titleold, PV_NONE, {(char_u *)N_("Thanks for flying Vim"), @@ -2380,7 +2391,7 @@ static struct vimoption {(char_u *)0L, (char_u *)0L}}, /* terminal output codes */ -#define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL, \ +#define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \ (char_u *)&vvv, PV_NONE, \ {(char_u *)"", (char_u *)0L}}, @@ -2435,6 +2446,8 @@ static struct vimoption p_term("t_vs", T_VS) p_term("t_WP", T_CWP) p_term("t_WS", T_CWS) + p_term("t_SI", T_CSI) + p_term("t_EI", T_CEI) p_term("t_xs", T_XS) p_term("t_ZH", T_CZH) p_term("t_ZR", T_CZR) @@ -3388,7 +3401,8 @@ do_set(arg, opt_flags) errmsg = NULL; startarg = arg; /* remember for error message */ - if (STRNCMP(arg, "all", 3) == 0 && !isalpha(arg[3])) + if (STRNCMP(arg, "all", 3) == 0 && !isalpha(arg[3]) + && !(opt_flags & OPT_MODELINE)) { /* * ":set all" show all options. @@ -3404,7 +3418,7 @@ do_set(arg, opt_flags) else showoptions(1, opt_flags); } - else if (STRNCMP(arg, "termcap", 7) == 0) + else if (STRNCMP(arg, "termcap", 7) == 0 && !(opt_flags & OPT_MODELINE)) { showoptions(2, opt_flags); show_termcodes(); @@ -4704,6 +4718,15 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf, errmsg = e_secure; } + /* Check for a "normal" file name in some options. Disallow a path + * separator (slash and/or backslash), wildcards and characters that are + * often illegal in a file name. */ + else if ((options[opt_idx].flags & P_NFNAME) + && vim_strpbrk(*varp, "/\\*?[|<>") != NULL) + { + errmsg = e_invarg; + } + /* 'term' */ else if (varp == &T_NAME) { |