summaryrefslogtreecommitdiffstatshomepage
path: root/term.c
diff options
context:
space:
mode:
Diffstat (limited to 'term.c')
-rw-r--r--term.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/term.c b/term.c
index 3ed512d2..f8bc308d 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.96 2009/07/27 13:10:08 kristaps Exp $ */
+/* $Id: term.c,v 1.97 2009/07/28 10:15:12 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -392,7 +392,7 @@ do_special(struct termp *p, const char *word, size_t len)
rhs = term_a2ascii(p->symtab, word, len, &sz);
if (NULL == rhs) {
-#if 1
+#if 0
fputs("Unknown special character: ", stderr);
for (i = 0; i < (int)len; i++)
fputc(word[i], stderr);
@@ -436,10 +436,11 @@ do_reserved(struct termp *p, const char *word, size_t len)
static void
do_escaped(struct termp *p, const char **word)
{
- int j;
+ int j, type;
const char *wp;
wp = *word;
+ type = 1;
if (0 == *(++wp)) {
*word = wp;
@@ -475,6 +476,7 @@ do_escaped(struct termp *p, const char **word)
*word = ++wp;
return;
case ('['):
+ type = 0;
break;
default:
do_reserved(p, wp, 1);
@@ -522,7 +524,10 @@ do_escaped(struct termp *p, const char **word)
return;
}
- do_special(p, wp - j, (size_t)j);
+ if (type)
+ do_special(p, wp - j, (size_t)j);
+ else
+ do_reserved(p, wp - j, (size_t)j);
*word = wp;
}