summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-10 09:43:56 -0500
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-10 09:43:56 -0500
commit895b2211f9222b55ca804a181c47dbe3054727b3 (patch)
tree354122c0ca797070906df9456a5ee1b056547a1b
parentd9fd26ac398a7d9974731bf1943b98f72b6a98cd (diff)
downloadscreen-895b2211f9222b55ca804a181c47dbe3054727b3.tar.gz
Fix autoaka.
-rw-r--r--src/ansi.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/ansi.c b/src/ansi.c
index 0e0c480..e8178f8 100644
--- a/src/ansi.c
+++ b/src/ansi.c
@@ -1,4 +1,7 @@
-/* Copyright (c) 2008, 2009
+/* Copyright (c) 2010
+ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
+ * Copyright (c) 2008, 2009
* Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
* Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
* Micah Cowan (micah@cowan.name)
@@ -2234,12 +2237,30 @@ int l;
WindowChanged((struct win *)0, 'W');
}
+static int
+strncmpint(const char *s, const int *i, int len)
+{
+ while (len--)
+ {
+ if (!*s && !*i)
+ return 0;
+ if (*s < *i)
+ return -1;
+ else if (*s > *i)
+ return 1;
+ s++;
+ i++;
+ }
+ return 0;
+}
+
static void
FindAKA()
{
- register unsigned int *cp, *line;
+ register unsigned int *cp, *line, *i;
register struct win *wp = curr;
register int len = strlen(wp->w_akabuf);
+ char aka[MAXSTR], *paka;
int y;
y = (wp->w_autoaka > 0 && wp->w_autoaka <= wp->w_height) ? wp->w_autoaka - 1 : wp->w_y;
@@ -2256,7 +2277,7 @@ FindAKA()
goto try_line;
return;
}
- if (strncmp((char *)cp, wp->w_akabuf, len) == 0) /* FIXME: */
+ if (strncmpint(wp->w_akabuf, cp, len) == 0)
break;
cp++;
}
@@ -2277,7 +2298,12 @@ FindAKA()
line = cp;
len--;
}
- ChangeAKA(wp, (char *)line, cp - line); /* FIXME */
+ if (cp - line > MAXSTR)
+ cp = line + MAXSTR;
+ paka = aka;
+ for (i = line; i < cp; i++)
+ *paka++ = (unsigned char) *i;
+ ChangeAKA(wp, aka, paka - aka);
}
else
wp->w_autoaka = 0;