diff src/ex_docmd.c @ 595:fea48f63efc8

updated for version 7.0169
author vimboss
date Tue, 13 Dec 2005 20:02:15 +0000
parents d133e7c550d0
children 05c67faedc8b
line wrap: on
line diff
--- 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;