]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/libdraw/eenter.c
?a: getc() needs to increment lineno if it gets \n from peekc
[plan9front.git] / sys / src / libdraw / eenter.c
index 9102d60c3644e9a555691682aa71adc57ff49624..6d5d70239d3cffbf4a9b27374e4e328653f89a86 100644 (file)
@@ -95,6 +95,7 @@ eenter(char *ask, char *buf, int len, Mouse *m)
                }
                flushimage(display, 1);
 
+nodraw:
                i = Ekeyboard;
                if(m != nil)
                        i |= Emouse;
@@ -153,12 +154,11 @@ eenter(char *ask, char *buf, int len, Mouse *m)
                        if(k == Ketb){
                                while(tick > 0){
                                        tick--;
-                                       if(tick == 0 || strchr("\t ", buf[tick-1]))
+                                       if(tick == 0 ||
+                                          strchr(" !\"#$%&'()*+,-./:;<=>?@`[\\]^{|}~", buf[tick-1]))
                                                break;
                                }
-                               if(n > tick)
-                                       memset(buf+tick, 0, n-tick);
-                               n = tick;
+                               buf[n = tick] = 0;
                                break;
                        }
                        if(k == Kbs){
@@ -188,7 +188,7 @@ eenter(char *ask, char *buf, int len, Mouse *m)
                        *m = ev.mouse;
                        if(!ptinrect(m->xy, r)){
                                down = 0;
-                               continue;
+                               goto nodraw;
                        }
                        if(m->buttons & 7){
                                down = 1;