]> git.pld-linux.org Git - packages/mutt.git/commitdiff
e22bc202406887ac737ee79bc419484c mutt-enter.c.patch mutt-1_3_17i-2
authorArtur Frysiak <artur@frysiak.net>
Tue, 24 Apr 2001 19:24:16 +0000 (19:24 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    mutt-enter.c.patch -> 1.1

mutt-enter.c.patch [new file with mode: 0644]

diff --git a/mutt-enter.c.patch b/mutt-enter.c.patch
new file mode 100644 (file)
index 0000000..5b26650
--- /dev/null
@@ -0,0 +1,75 @@
+Index: enter.c
+===================================================================
+RCS file: /home/roessler/cvs/mutt/enter.c,v
+retrieving revision 2.30
+retrieving revision 2.31
+diff -u -r2.30 -r2.31
+--- enter.c    2001/01/08 23:09:30     2.30
++++ enter.c    2001/04/09 14:37:26     2.31
+@@ -198,8 +198,11 @@
+   wchar_t *tempbuf = 0;
+   size_t templen = 0;
+   history_class_t hclass;
++  wchar_t wc;
++  mbstate_t mbstate;
+   int rv = 0;
++  memset (&mbstate, 0, sizeof (mbstate));
+   
+   if (state->wbuf)
+   {
+@@ -611,14 +614,34 @@
+       /* use the raw keypress */
+       ch = LastKey;
++      /* this probably shouldn't happen */
++      if (ch & ~0xff)
++      continue;
++
++      /* gather the octets into a wide character */
++      {
++      char c;
++      size_t k;
++
++      c = ch;
++      k = mbrtowc (&wc, &c, 1, &mbstate);
++      if (k == (size_t)(-2))
++        continue;
++      else if (k && k != 1)
++      {
++        memset (&mbstate, 0, sizeof (mbstate));
++        continue;
++      }
++      }
++
+       if (first && (flags & M_CLEAR))
+       {
+       first = 0;
+-      if (IsWPrint (ch)) /* why? */
++      if (IsWPrint (wc)) /* why? */
+         state->curpos = state->lastchar = 0;
+       }
+-      if (CI_is_return (ch))
++      if (wc == '\r' || wc == '\n')
+       {
+       /* Convert from wide characters */
+       my_wcstombs (buf, buflen, state->wbuf, state->lastchar);
+@@ -637,7 +660,7 @@
+       rv = 0; 
+       goto bye;
+       }
+-      else if (ch && (ch < ' ' || IsWPrint (ch))) /* why? */
++      else if (wc && (wc < ' ' || IsWPrint (wc))) /* why? */
+       {
+       if (state->lastchar >= state->wbuflen)
+       {
+@@ -645,7 +668,7 @@
+         safe_realloc ((void **) &state->wbuf, state->wbuflen * sizeof (wchar_t));
+       }
+       memmove (state->wbuf + state->curpos + 1, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));
+-      state->wbuf[state->curpos++] = ch;
++      state->wbuf[state->curpos++] = wc;
+       state->lastchar++;
+       }
+       else
This page took 0.08712 seconds and 4 git commands to generate.