Commit Diff


commit - d63b9eb90245926b531bd54b1d591adb96613e70
commit + 5dbcca49263be094fc38159c297458ae323ef647
blob - b9f66e71163f0707bb477f9fa5346f5dad27683d
blob + 57c6e962ac778da43795ed855035b4554ebd02cf
--- st.c
+++ st.c
@@ -1132,6 +1132,7 @@ csiparse(void)
 {
 	char *p = csiescseq.buf, *np;
 	long int v;
+	int sep = ';'; /* colon or semi-colon, but not both */
 
 	csiescseq.narg = 0;
 	if (*p == '?') {
@@ -1149,7 +1150,9 @@ csiparse(void)
 			v = -1;
 		csiescseq.arg[csiescseq.narg++] = v;
 		p = np;
-		if (*p != ';' || csiescseq.narg == ESC_ARG_SIZ)
+		if (sep == ';' && *p == ':')
+			sep = ':'; /* allow override to colon once */
+		if (*p != sep || csiescseq.narg == ESC_ARG_SIZ)
 			break;
 		p++;
 	}