aboutsummaryrefslogtreecommitdiff
path: root/utf8.c
diff options
context:
space:
mode:
Diffstat (limited to 'utf8.c')
-rw-r--r--utf8.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/utf8.c b/utf8.c
index 94879665..d3220762 100644
--- a/utf8.c
+++ b/utf8.c
@@ -18,6 +18,7 @@
#include <sys/types.h>
+#include <ctype.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
@@ -207,7 +208,13 @@ utf8_strvis(char *dst, const char *src, size_t len, int flag)
/* Not a complete, valid UTF-8 character. */
src -= ud.have;
}
- if (src < end - 1)
+ if (src[0] == '$' && src < end - 1) {
+ if (isalpha((u_char)src[1]) ||
+ src[1] == '_' ||
+ src[1] == '{')
+ *dst++ = '\\';
+ *dst++ = '$';
+ } else if (src < end - 1)
dst = vis(dst, src[0], flag, src[1]);
else if (src < end)
dst = vis(dst, src[0], flag, '\0');