Lines Matching refs:ep

150 #   define ttyparm	(ep->e_ttyparm)
151 # define nttyparm (ep->e_nttyparm)
162 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_check() local
164 ep->e_savefd = -1; in tty_check()
176 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_get() local
177 if(fd == ep->e_savefd) in tty_get()
178 *tty = ep->e_savetty; in tty_get()
188 if(ep->e_raw==0) in tty_get()
190 ep->e_savetty = *tty; in tty_get()
191 ep->e_savefd = fd; in tty_get()
204 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_set() local
208 if(ep->e_savefd>=0 && compare(&ep->e_savetty,tty,sizeof(struct termios))) in tty_set()
217 ep->e_savetty = *tty; in tty_set()
219 ep->e_savefd = fd; in tty_set()
233 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_cooked() local
234 if(ep->e_raw==0) in tty_cooked()
237 fd = ep->e_savefd; in tty_cooked()
253 ep->e_raw = 0; in tty_cooked()
269 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_raw() local
270 if(ep->e_raw==RAWMODE) in tty_raw()
272 else if(ep->e_raw==ECHOMODE) in tty_raw()
275 if(ep->e_raw != ALTMODE) in tty_raw()
298 ep->e_erase = ttyparm.sg_erase; in tty_raw()
299 ep->e_kill = ttyparm.sg_kill; in tty_raw()
300 ep->e_eof = cntl('D'); in tty_raw()
301 ep->e_werase = cntl('W'); in tty_raw()
302 ep->e_lnext = cntl('V'); in tty_raw()
305 ep->e_ttyspeed = (ttyparm.sg_ospeed>=B1200?FAST:SLOW); in tty_raw()
354 ep->e_werase = cntl('W'); in tty_raw()
356 ep->e_werase = nttyparm.c_cc[VWERASE]; in tty_raw()
359 ep->e_werase = cntl('W'); in tty_raw()
363 ep->e_lnext = cntl('V'); in tty_raw()
365 ep->e_lnext = nttyparm.c_cc[VLNEXT]; in tty_raw()
368 ep->e_lnext = cntl('V'); in tty_raw()
370 ep->e_eof = ttyparm.c_cc[VEOF]; in tty_raw()
371 ep->e_erase = ttyparm.c_cc[VERASE]; in tty_raw()
372 ep->e_kill = ttyparm.c_cc[VKILL]; in tty_raw()
375 ep->e_ttyspeed = (cfgetospeed(&ttyparm)>=B1200?FAST:SLOW); in tty_raw()
377 ep->e_raw = (echomode?ECHOMODE:RAWMODE); in tty_raw()
392 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_alt() local
395 switch(ep->e_raw) in tty_alt()
405 if( ep->e_ttyspeed == 0) in tty_alt()
408 ep->e_ttyspeed = (ttyparm.sg_ospeed>=B1200?FAST:SLOW); in tty_alt()
409 ep->e_raw = ALTMODE; in tty_alt()
440 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context); in tty_alt() local
441 switch(ep->e_raw) in tty_alt()
456 ep->e_eof = ttyparm.c_cc[VEOF]; in tty_alt()
469 nttyparm.c_cc[VEOL2] = ep->e_eof; /* make EOF an eol char */ in tty_alt()
471 nttyparm.c_cc[VEOL] = ep->e_eof; /* make EOF an eol char */ in tty_alt()
483 ep->e_werase = nttyparm.c_cc[VWERASE]; in tty_alt()
485 ep->e_werase = cntl('W'); in tty_alt()
490 ep->e_lnext = nttyparm.c_cc[VLNEXT]; in tty_alt()
492 ep->e_lnext = cntl('V'); in tty_alt()
494 ep->e_erase = ttyparm.c_cc[VERASE]; in tty_alt()
495 ep->e_kill = ttyparm.c_cc[VKILL]; in tty_alt()
498 ep->e_ttyspeed = (cfgetospeed(&ttyparm)>=B1200?FAST:SLOW); in tty_alt()
499 ep->e_raw = ALTMODE; in tty_alt()
536 void ed_flush(Edit_t *ep) in ed_flush() argument
538 register int n = ep->e_outptr-ep->e_outbase; in ed_flush()
542 write(fd,ep->e_outbase,(unsigned)n); in ed_flush()
543 ep->e_outptr = ep->e_outbase; in ed_flush()
559 void ed_crlf(register Edit_t *ep) in ed_crlf() argument
562 ed_putchar(ep,'\r'); in ed_crlf()
565 ed_putchar(ep,'\r'); in ed_crlf()
568 ed_putchar(ep,'\r'); in ed_crlf()
570 ed_putchar(ep,'\n'); in ed_crlf()
571 ed_flush(ep); in ed_crlf()
586 void ed_setup(register Edit_t *ep, int fd, int reedit) in ed_setup() argument
588 Shell_t *shp = ep->sh; in ed_setup()
595 ep->e_fd = fd; in ed_setup()
596 ep->e_multiline = sh_isoption(SH_MULTILINE)!=0; in ed_setup()
607 ep->sh->winch = 0; in ed_setup()
610 ep->e_stkptr = stakptr(0); in ed_setup()
611 ep->e_stkoff = staktell(); in ed_setup()
616 last = ep->e_prbuff; in ed_setup()
621 ep->e_hismax = hist_max(hp); in ed_setup()
622 ep->e_hismin = hist_min(hp); in ed_setup()
626 ep->e_hismax = ep->e_hismin = ep->e_hloff = 0; in ed_setup()
628 ep->e_hline = ep->e_hismax; in ed_setup()
630 ep->e_wsize = MAXLINE; in ed_setup()
632 ep->e_wsize = ed_window()-2; in ed_setup()
633 ep->e_winsz = ep->e_wsize+2; in ed_setup()
634 ep->e_crlf = 1; in ed_setup()
635 ep->e_plen = 0; in ed_setup()
636 pp = ep->e_prompt; in ed_setup()
646 ep->e_crlf = 0; in ed_setup()
667 if(pp>ep->e_prompt+1) in ed_setup()
671 if(pp == (ep->e_prompt+2)) /* quote char */ in ed_setup()
677 ep->e_crlf = 1; in ed_setup()
680 pp = ep->e_prompt+1; in ed_setup()
685 while((pp-ep->e_prompt)%TABSIZE) in ed_setup()
708 ep->e_crlf = 0; in ed_setup()
717 if(pp-ep->e_prompt > qlen) in ed_setup()
718 ep->e_plen = pp - ep->e_prompt - qlen; in ed_setup()
720 if(!ep->e_multiline && (ep->e_wsize -= ep->e_plen) < 7) in ed_setup()
722 register int shift = 7-ep->e_wsize; in ed_setup()
723 ep->e_wsize = 7; in ed_setup()
724 pp = ep->e_prompt+1; in ed_setup()
726 ep->e_plen -= shift; in ed_setup()
727 last[-ep->e_plen-2] = '\r'; in ed_setup()
736 ep->e_outbase = ep->e_outptr = buff; in ed_setup()
737 ep->e_outlast = ep->e_outptr + MAXLINE; in ed_setup()
742 ep->e_outbase = ep->e_outptr = (char*)sfreserve(sfstderr,SF_UNBOUND,SF_LOCKR); in ed_setup()
743 ep->e_outlast = ep->e_outptr + sfvalue(sfstderr); in ed_setup()
746 sfwrite(sfstderr,ep->e_outptr,0); in ed_setup()
747 ep->e_eol = reedit; in ed_setup()
748 if(ep->e_multiline) in ed_setup()
752 if(!ep->e_term) in ed_setup()
753 ep->e_term = nv_search("TERM",shp->var_tree,0); in ed_setup()
754 …if(ep->e_term && (term=nv_getval(ep->e_term)) && strlen(term)<sizeof(ep->e_termname) && strcmp(ter… in ed_setup()
760 strcpy(ep->e_termname,term); in ed_setup()
763 ep->e_wsize = MAXLINE - (ep->e_plen+1); in ed_setup()
765 if(ep->e_default && (pp = nv_getval(ep->e_default))) in ed_setup()
770 ep->e_lookahead = n; in ed_setup()
772 ep->e_lbuf[n] = *pp++; in ed_setup()
773 ep->e_default = 0; in ed_setup()
777 static void ed_putstring(register Edit_t *ep, const char *str) in ed_putstring() argument
781 ed_putchar(ep,c); in ed_putstring()
784 static void ed_nputchar(register Edit_t *ep, int n, int c) in ed_nputchar() argument
787 ed_putchar(ep,c); in ed_nputchar()
801 register Edit_t *ep = (Edit_t*)context; in ed_read() local
803 register int delim = (ep->e_raw==RAWMODE?'\r':'\n'); in ed_read()
804 Shell_t *shp = ep->sh; in ed_read()
807 if(ep->e_raw==ALTMODE) in ed_read()
821 if(ep->sh->winch && sh_isstate(SH_INTERACTIVE) && (sh_isoption(SH_VI) || sh_isoption(SH_EMACS))) in ed_read()
826 ed_putchar(ep,'\r'); in ed_read()
827 ed_flush(ep); in ed_read()
829 n = (ep->e_plen+ep->e_cur)/++ep->e_winsz; in ed_read()
831 ed_putstring(ep,CURSOR_UP); in ed_read()
832 if(ep->e_multiline && newsize>ep->e_winsz && (lastpos.line=(ep->e_plen+ep->e_peol)/ep->e_winsz)) in ed_read()
838 ed_nputchar(ep,ep->e_winsz,' '); in ed_read()
839 ed_putchar(ep,'\n'); in ed_read()
841 ed_nputchar(ep,ep->e_winsz,' '); in ed_read()
843 ed_putstring(ep,CURSOR_UP); in ed_read()
845 ep->sh->winch = 0; in ed_read()
846 ed_flush(ep); in ed_read()
849 ep->e_winsz = newsize-1; in ed_read()
850 if(!ep->e_multiline && ep->e_wsize < MAXLINE) in ed_read()
851 ep->e_wsize = ep->e_winsz-2; in ed_read()
852 ep->e_nocrnl=1; in ed_read()
853 if(*ep->e_vi_insert) in ed_read()
865 ep->sh->winch = 0; in ed_read()
874 # define fixtime() if(isdevtty)utime(ep->e_tty,&utimes) in ed_read()
878 if(errno==0 && !ep->e_tty) in ed_read()
880 if((ep->e_tty=ttyname(fd)) && stat(ep->e_tty,&statb)>=0) in ed_read()
882 ep->e_tty_ino = statb.st_ino; in ed_read()
883 ep->e_tty_dev = statb.st_dev; in ed_read()
886 …if(ep->e_tty_ino && fstat(fd,&statb)>=0 && statb.st_ino==ep->e_tty_ino && statb.st_dev==ep->e_tty_… in ed_read()
921 static int putstack(Edit_t *ep,char string[], register int nbyte, int type)
926 int size, offset = ep->e_lookahead + nbyte;
940 ep->e_lookahead = 0;
943 siglongjmp(ep->e_env, UINTR);
964 if ((c=ed_read(ep,ep->e_fd,endp, 1,0)) == 1)
978 ep->e_lbuf[--offset] = c;
983 if(offset -= ep->e_lookahead)
986 ep->e_lbuf[ep->e_lookahead+size-offset] = ep->e_lbuf[ep->e_lookahead+size];
988 ep->e_lookahead += nbyte-offset;
993 ep->e_lbuf[ep->e_lookahead++] = (type?-c:c);
998 ep->e_lookahead = 0;
1001 siglongjmp(ep->e_env, UINTR);
1019 int ed_getchar(register Edit_t *ep,int mode)
1023 if(!ep->e_lookahead)
1025 ed_flush(ep);
1026 ep->e_inmacro = 0;
1028 *ep->e_vi_insert = (mode==-2);
1029 if((n=ed_read(ep,ep->e_fd,readin,-LOOKAHEAD,0)) > 0)
1030 n = putstack(ep,readin,n,1);
1031 *ep->e_vi_insert = 0;
1033 if(ep->e_lookahead)
1036 if((c = ep->e_lbuf[--ep->e_lookahead]) < 0)
1038 if(mode<=0 && ep->sh->st.trap[SH_KEYTRAP])
1045 if(!ep->e_lookahead)
1047 if((c=sfpkrd(ep->e_fd,readin+n,1,'\r',(mode?400L:-1L),0))>0)
1048 putstack(ep,readin+n,c,1);
1050 if(!ep->e_lookahead)
1052 if((c=ep->e_lbuf[--ep->e_lookahead])>=0)
1054 ep->e_lookahead++;
1065 if(n=keytrap(ep,readin,n,LOOKAHEAD-n,mode))
1067 putstack(ep,readin,n,0);
1068 c = ep->e_lbuf[--ep->e_lookahead];
1071 c = ed_getchar(ep,mode);
1079 if(ep->e_tabcount && !(c=='\t'||c==ESC || c=='\\' || c=='=' || c==cntl('L') || isdigit(c)))
1080 ep->e_tabcount = 0;
1083 siglongjmp(ep->e_env,(n==0?UEOF:UINTR));
1087 void ed_ungetchar(Edit_t *ep,register int c)
1089 if (ep->e_lookahead < LOOKAHEAD)
1090 ep->e_lbuf[ep->e_lookahead++] = c;
1098 void ed_putchar(register Edit_t *ep,register int c)
1101 register char *dp = ep->e_outptr;
1129 if(dp >= ep->e_outlast)
1130 ed_flush(ep);
1132 ep->e_outptr = dp;
1139 Edpos_t ed_curpos(Edit_t *ep,genchar *phys, int off, int cur, Edpos_t curpos)
1142 register int c=1, col=ep->e_plen;
1157 while(col > ep->e_winsz)
1160 col -= (ep->e_winsz+1);
1175 if(col > ep->e_winsz)
1184 int ed_setcursor(register Edit_t *ep,genchar *physical,register int old,register int new,int first)
1199 if(ep->e_multiline)
1201 ep->e_curpos = ed_curpos(ep, physical, old,0,ep->e_curpos);
1202 if(clear && old>=ep->e_peol && (clear=ep->e_winsz-ep->e_curpos.col)>0)
1204 ed_nputchar(ep,clear,' ');
1205 ed_nputchar(ep,clear,'\b');
1208 newpos = ed_curpos(ep, physical, new,old,ep->e_curpos);
1209 if(ep->e_curpos.col==0 && ep->e_curpos.line>0 && oldline<ep->e_curpos.line && delta<0)
1210 ed_putstring(ep,"\r\n");
1212 if(ep->e_curpos.line > newpos.line)
1214 int n,pline,plen=ep->e_plen;
1215 for(;ep->e_curpos.line > newpos.line; ep->e_curpos.line--)
1216 ed_putstring(ep,CURSOR_UP);
1217 pline = plen/(ep->e_winsz+1);
1219 plen -= pline*(ep->e_winsz+1);
1222 if((n=plen- ep->e_curpos.col)>0)
1224 ep->e_curpos.col += n;
1225 ed_putchar(ep,'\r');
1226 if(!ep->e_crlf && pline==0)
1227 ed_putstring(ep,ep->e_prompt);
1230 int m = ep->e_winsz+1-plen;
1231 ed_putchar(ep,'\n');
1236 ed_putchar(ep,physical[m++]);
1238 ed_nputchar(ep,n,' ');
1239 ed_putstring(ep,CURSOR_UP);
1243 else if(ep->e_curpos.line < newpos.line)
1245 ed_nputchar(ep, newpos.line-ep->e_curpos.line,'\n');
1246 ep->e_curpos.line = newpos.line;
1247 ed_putchar(ep,'\r');
1248 ep->e_curpos.col = 0;
1250 delta = newpos.col - ep->e_curpos.col;
1257 int bs= newpos.line && ep->e_plen>ep->e_winsz;
1261 if(!ep->e_crlf || bs || (2*delta <= ((old-first)+(newpos.line?0:ep->e_plen))) )
1263 ed_nputchar(ep,delta,'\b');
1269 ed_putstring(ep,ep->e_prompt);
1272 first = 1+(newpos.line*ep->e_winsz - ep->e_plen);
1273 ed_putchar(ep,'\r');
1280 ed_putchar(ep,physical[old++]);
1287 int ed_virt_to_phys(Edit_t *ep,genchar *virt,genchar *phys,int cur,int voff,int poff)
1326 c += ep->e_plen;
1346 ep->e_peol = dp-phys;
1471 #define ott ep->e_ott
1480 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context);
1482 ep->e_tcgeta = 0;
1483 ep->e_echoctl = (ECHOCTL!=0);
1494 ep->e_tcgeta++;
1495 ep->e_echoctl = 0;
1502 register Edit_t *ep = (Edit_t*)(sh_getinterp()->ed_context);
1504 if(ep->e_tcgeta)
1544 static int keytrap(Edit_t *ep,char *inbuff,register int insize, int bufsize, int mode)
1548 Shell_t *shp = ep->sh;
1551 ed_external(ep->e_inbuf,cp=buff);
1553 cp = ep->e_inbuf;
1556 ep->e_col = ep->e_cur;
1559 ep->e_col++;
1560 *ep->e_vi_insert = ESC;
1563 *ep->e_vi_insert = 0;
1565 nv_putval(ED_COLNOD,(char*)&ep->e_col,NV_NOFREE|NV_INTEGER);
1567 nv_putval(ED_MODENOD,ep->e_vi_insert,NV_NOFREE);