summaryrefslogtreecommitdiffstats
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-12-13 20:02:15 +0000
committerBram Moolenaar <Bram@vim.org>2005-12-13 20:02:15 +0000
commitb0bf8580c38d51a44ffe973fef946e538df16dac (patch)
tree68bec782de16be0d760320d972717328cfe16844 /src/ex_docmd.c
parent900b4d77f00b3ab7503d5e2865eca61ce5005c69 (diff)
updated for version 7.0169
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 6977904b2a..d8aa8e52f7 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4549,6 +4549,11 @@ getargopt(eap)
arg += 8;
pp = &eap->force_enc;
}
+ else if (STRNCMP(arg, "bad", 3) == 0)
+ {
+ arg += 3;
+ pp = &eap->bad_char;
+ }
#endif
if (pp == NULL || *arg != '=')
@@ -4568,12 +4573,26 @@ getargopt(eap)
return FAIL;
#ifdef FEAT_MBYTE
}
- else
+ else if (pp == &eap->force_enc)
{
/* Make 'fileencoding' lower case. */
for (p = eap->cmd + eap->force_enc; *p != NUL; ++p)
*p = TOLOWER_ASC(*p);
}
+ else
+ {
+ /* Check ++bad= argument. Must be a single-byte character, "keep" or
+ * "drop". */
+ p = eap->cmd + eap->bad_char;
+ if (STRICMP(p, "keep") == 0)
+ eap->bad_char = BAD_KEEP;
+ else if (STRICMP(p, "drop") == 0)
+ eap->bad_char = BAD_DROP;
+ else if (MB_BYTE2LEN(*p) == 1 && p[1] == NUL)
+ eap->bad_char = *p;
+ else
+ return FAIL;
+ }
#endif
return OK;