diff options
author | mp <mp@FreeBSD.org> | 2009-07-10 21:00:38 +0000 |
---|---|---|
committer | mp <mp@FreeBSD.org> | 2009-07-10 21:00:38 +0000 |
commit | 5c3d0e09d7926f4fe8b7ca838a2ed52b6e33e4b5 (patch) | |
tree | dae2d3ff4ed630baaed92bc0340cb55a8c9b01cd /contrib/tcsh/ed.init.c | |
parent | e863b68dceedacef4fea511d5f1e2c5666b2b2ee (diff) | |
download | FreeBSD-src-5c3d0e09d7926f4fe8b7ca838a2ed52b6e33e4b5.zip FreeBSD-src-5c3d0e09d7926f4fe8b7ca838a2ed52b6e33e4b5.tar.gz |
Flatten vendor/tcsh/dist.
Diffstat (limited to 'contrib/tcsh/ed.init.c')
-rw-r--r-- | contrib/tcsh/ed.init.c | 708 |
1 files changed, 0 insertions, 708 deletions
diff --git a/contrib/tcsh/ed.init.c b/contrib/tcsh/ed.init.c deleted file mode 100644 index c7dfcce..0000000 --- a/contrib/tcsh/ed.init.c +++ /dev/null @@ -1,708 +0,0 @@ -/* $Header: /p/tcsh/cvsroot/tcsh/ed.init.c,v 3.60 2006/08/24 20:56:31 christos Exp $ */ -/* - * ed.init.c: Editor initializations - */ -/*- - * Copyright (c) 1980, 1991 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTS_ION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include "sh.h" - -RCSID("$tcsh: ed.init.c,v 3.60 2006/08/24 20:56:31 christos Exp $") - -#include "ed.h" -#include "tc.h" -#include "ed.defns.h" - -/* ed.init.c -- init routines for the line editor */ -/* #define DEBUG_TTY */ - -int Tty_raw_mode = 0; /* Last tty change was to raw mode */ -int MacroLvl = -1; /* pointer to current macro nesting level; */ - /* (-1 == none) */ -static int Tty_quote_mode = 0; /* Last tty change was to quote mode */ -static unsigned char vdisable; /* The value of _POSIX_VDISABLE from - * pathconf(2) */ - -int Tty_eight_bit = -1; /* does the tty handle eight bits */ - -extern int GotTermCaps; - -static ttydata_t extty, edtty, tstty; -#define qutty tstty - -#define SHTTY (insource ? OLDSTD : SHIN) - -#define uc unsigned char -static unsigned char ttychars[NN_IO][C_NCC] = { - { - (uc)CINTR, (uc)CQUIT, (uc)CERASE, (uc)CKILL, - (uc)CEOF, (uc)CEOL, (uc)CEOL2, (uc)CSWTCH, - (uc)CDSWTCH, (uc)CERASE2, (uc)CSTART, (uc)CSTOP, - (uc)CWERASE, (uc)CSUSP, (uc)CDSUSP, (uc)CREPRINT, - (uc)CDISCARD, (uc)CLNEXT, (uc)CSTATUS, (uc)CPAGE, - (uc)CPGOFF, (uc)CKILL2, (uc)CBRK, (uc)CMIN, - (uc)CTIME - }, - { - CINTR, CQUIT, CERASE, CKILL, - _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, - _POSIX_VDISABLE, CERASE2, CSTART, CSTOP, - _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, - CDISCARD, _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, - _POSIX_VDISABLE, _POSIX_VDISABLE, _POSIX_VDISABLE, 1, - 0 - }, - { - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0 - } -}; - -#ifdef SIG_WINDOW -void -check_window_size(int force) -{ - int lins, cols; - - /* don't want to confuse things here */ - pintr_disabled++; - cleanup_push(&pintr_disabled, disabled_cleanup); - /* - * From: bret@shark.agps.lanl.gov (Bret Thaeler) Avoid sunview bug, where a - * partially hidden window gets a SIG_WINDOW every time the text is - * scrolled - */ - if (GetSize(&lins, &cols) || force) { - if (GettingInput) { - ClearLines(); - ClearDisp(); - MoveToLine(0); - MoveToChar(0); - ChangeSize(lins, cols); - Refresh(); - } - else - ChangeSize(lins, cols); - } - windowchg = 0; - cleanup_until(&pintr_disabled); /* can change it again */ -} - -void -/*ARGSUSED*/ -window_change(int snum) -{ - USE(snum); - windowchg = 1; -} - -#endif /* SIG_WINDOW */ - -void -ed_set_tty_eight_bit(void) -{ - if (tty_getty(SHTTY, &extty) == -1) { -#ifdef DEBUG_TTY - xprintf("ed_set_tty_eight_bit: tty_getty: %s\n", strerror(errno)); -#endif /* DEBUG_TTY */ - return; - } - Tty_eight_bit = tty_geteightbit(&extty); -} - - -int -ed_Setup(int rst) -{ - static int havesetup = 0; - struct varent *imode; - - if (havesetup) /* if we have never been called */ - return(0); - -#if defined(POSIX) && defined(_PC_VDISABLE) && !defined(BSD4_4) && \ - !defined(WINNT_NATIVE) - { - long pcret; - - if ((pcret = fpathconf(SHTTY, _PC_VDISABLE)) == -1L) - vdisable = (unsigned char) _POSIX_VDISABLE; - else - vdisable = (unsigned char) pcret; - if (vdisable != (unsigned char) _POSIX_VDISABLE && rst != 0) - for (rst = 0; rst < C_NCC; rst++) { - if (ttychars[ED_IO][rst] == (unsigned char) _POSIX_VDISABLE) - ttychars[ED_IO][rst] = vdisable; - if (ttychars[EX_IO][rst] == (unsigned char) _POSIX_VDISABLE) - ttychars[EX_IO][rst] = vdisable; - } - } -#else /* ! POSIX || !_PC_VDISABLE || BSD4_4 || WINNT_NATIVE */ - vdisable = (unsigned char) _POSIX_VDISABLE; -#endif /* POSIX && _PC_VDISABLE && !BSD4_4 && !WINNT_NATIVE */ - - if ((imode = adrof(STRinputmode)) != NULL && imode->vec != NULL) { - if (!Strcmp(*(imode->vec), STRinsert)) - inputmode = MODE_INSERT; - else if (!Strcmp(*(imode->vec), STRoverwrite)) - inputmode = MODE_REPLACE; - } - else - inputmode = MODE_INSERT; - ed_InitMaps(); - Hist_num = 0; - Expand = 0; - SetKillRing(getn(varval(STRkillring))); - -#ifndef WINNT_NATIVE - if (tty_getty(SHTTY, &extty) == -1) { -# ifdef DEBUG_TTY - xprintf("ed_Setup: tty_getty: %s\n", strerror(errno)); -# endif /* DEBUG_TTY */ - return(-1); - } - - tstty = edtty = extty; - - T_Speed = tty_getspeed(&extty); - T_Tabs = tty_gettabs(&extty); - Tty_eight_bit = tty_geteightbit(&extty); - -# if defined(POSIX) || defined(TERMIO) - extty.d_t.c_iflag &= ~ttylist[EX_IO][M_INPUT].t_clrmask; - extty.d_t.c_iflag |= ttylist[EX_IO][M_INPUT].t_setmask; - - extty.d_t.c_oflag &= ~ttylist[EX_IO][M_OUTPUT].t_clrmask; - extty.d_t.c_oflag |= ttylist[EX_IO][M_OUTPUT].t_setmask; - - extty.d_t.c_cflag &= ~ttylist[EX_IO][M_CONTROL].t_clrmask; - extty.d_t.c_cflag |= ttylist[EX_IO][M_CONTROL].t_setmask; - - extty.d_t.c_lflag &= ~ttylist[EX_IO][M_LINED].t_clrmask; - extty.d_t.c_lflag |= ttylist[EX_IO][M_LINED].t_setmask; - -# if defined(IRIX3_3) && SYSVREL < 4 - extty.d_t.c_line = NTTYDISC; -# endif /* IRIX3_3 && SYSVREL < 4 */ - -# else /* GSTTY */ /* V7, Berkeley style tty */ - - if (T_Tabs) { /* order of &= and |= is important to XTABS */ - extty.d_t.sg_flags &= ~(ttylist[EX_IO][M_CONTROL].t_clrmask|XTABS); - extty.d_t.sg_flags |= ttylist[EX_IO][M_CONTROL].t_setmask; - } - else { - extty.d_t.sg_flags &= ~ttylist[EX_IO][M_CONTROL].t_clrmask; - extty.d_t.sg_flags |= (ttylist[EX_IO][M_CONTROL].t_setmask|XTABS); - } - - extty.d_lb &= ~ttylist[EX_IO][M_LOCAL].t_clrmask; - extty.d_lb |= ttylist[EX_IO][M_LOCAL].t_setmask; - -# endif /* GSTTY */ - /* - * Reset the tty chars to reasonable defaults - * If they are disabled, then enable them. - */ - if (rst) { - if (tty_cooked_mode(&tstty)) { - tty_getchar(&tstty, ttychars[TS_IO]); - /* - * Don't affect CMIN and CTIME for the editor mode - */ - for (rst = 0; rst < C_NCC - 2; rst++) - if (ttychars[TS_IO][rst] != vdisable && - ttychars[ED_IO][rst] != vdisable) - ttychars[ED_IO][rst] = ttychars[TS_IO][rst]; - for (rst = 0; rst < C_NCC; rst++) - if (ttychars[TS_IO][rst] != vdisable && - ttychars[EX_IO][rst] != vdisable) - ttychars[EX_IO][rst] = ttychars[TS_IO][rst]; - } - tty_setchar(&extty, ttychars[EX_IO]); - if (tty_setty(SHTTY, &extty) == -1) { -# ifdef DEBUG_TTY - xprintf("ed_Setup: tty_setty: %s\n", strerror(errno)); -# endif /* DEBUG_TTY */ - return(-1); - } - } - else - tty_setchar(&extty, ttychars[EX_IO]); - -# ifdef SIG_WINDOW - { - sigset_t set; - (void)signal(SIG_WINDOW, window_change); /* for window systems */ - sigemptyset(&set); - sigaddset(&set, SIG_WINDOW); - (void)sigprocmask(SIG_UNBLOCK, &set, NULL); - } -# endif -#else /* WINNT_NATIVE */ -# ifdef DEBUG - if (rst) - xprintf("rst received in ed_Setup() %d\n", rst); -# endif -#endif /* WINNT_NATIVE */ - havesetup = 1; - return(0); -} - -void -ed_Init(void) -{ - ResetInLine(1); /* reset the input pointers */ - GettingInput = 0; /* just in case */ -#ifdef notdef - /* XXX This code was here before the kill ring: - LastKill = KillBuf; / * no kill buffer * / - If there was any reason for that other than to make sure LastKill - was initialized, the code below should go in here instead - but - it doesn't seem reasonable to lose the entire kill ring (which is - "self-initializing") just because you set $term or whatever, so - presumably this whole '#ifdef notdef' should just be taken out. */ - - { /* no kill ring - why? */ - int i; - for (i = 0; i < KillRingMax; i++) { - xfree(KillRing[i].buf); - KillRing[i].buf = NULL; - KillRing[i].len = 0; - } - YankPos = KillPos = 0; - KillRingLen = 0; - } -#endif - -#ifdef DEBUG_EDIT - CheckMaps(); /* do a little error checking on key maps */ -#endif - - if (ed_Setup(0) == -1) - return; - - /* - * if we have been called before but GotTermCaps isn't set, our TERM has - * changed, so get new termcaps and try again - */ - - if (!GotTermCaps) - GetTermCaps(); /* does the obvious, but gets term type each - * time */ - -#ifndef WINNT_NATIVE -# if defined(TERMIO) || defined(POSIX) - edtty.d_t.c_iflag &= ~ttylist[ED_IO][M_INPUT].t_clrmask; - edtty.d_t.c_iflag |= ttylist[ED_IO][M_INPUT].t_setmask; - - edtty.d_t.c_oflag &= ~ttylist[ED_IO][M_OUTPUT].t_clrmask; - edtty.d_t.c_oflag |= ttylist[ED_IO][M_OUTPUT].t_setmask; - - edtty.d_t.c_cflag &= ~ttylist[ED_IO][M_CONTROL].t_clrmask; - edtty.d_t.c_cflag |= ttylist[ED_IO][M_CONTROL].t_setmask; - - edtty.d_t.c_lflag &= ~ttylist[ED_IO][M_LINED].t_clrmask; - edtty.d_t.c_lflag |= ttylist[ED_IO][M_LINED].t_setmask; - - -# if defined(IRIX3_3) && SYSVREL < 4 - edtty.d_t.c_line = NTTYDISC; -# endif /* IRIX3_3 && SYSVREL < 4 */ - -# else /* GSTTY */ - - if (T_Tabs) { /* order of &= and |= is important to XTABS */ - edtty.d_t.sg_flags &= ~(ttylist[ED_IO][M_CONTROL].t_clrmask | XTABS); - edtty.d_t.sg_flags |= ttylist[ED_IO][M_CONTROL].t_setmask; - } - else { - edtty.d_t.sg_flags &= ~ttylist[ED_IO][M_CONTROL].t_clrmask; - edtty.d_t.sg_flags |= (ttylist[ED_IO][M_CONTROL].t_setmask | XTABS); - } - - edtty.d_lb &= ~ttylist[ED_IO][M_LOCAL].t_clrmask; - edtty.d_lb |= ttylist[ED_IO][M_LOCAL].t_setmask; -# endif /* POSIX || TERMIO */ - - tty_setchar(&edtty, ttychars[ED_IO]); -#endif /* WINNT_NATIVE */ -} - -/* - * Check and re-init the line. set the terminal into 1 char at a time mode. - */ -int -Rawmode(void) -{ - if (Tty_raw_mode) - return (0); - -#ifdef WINNT_NATIVE - do_nt_raw_mode(); -#else /* !WINNT_NATIVE */ -# ifdef _IBMR2 - tty_setdisc(SHTTY, ED_IO); -# endif /* _IBMR2 */ - - if (tty_getty(SHTTY, &tstty) == -1) { -# ifdef DEBUG_TTY - xprintf("Rawmode: tty_getty: %s\n", strerror(errno)); -# endif /* DEBUG_TTY */ - return(-1); - } - - /* - * We always keep up with the eight bit setting and the speed of the - * tty. But only we only believe changes that are made to cooked mode! - */ -# if defined(POSIX) || defined(TERMIO) - Tty_eight_bit = tty_geteightbit(&tstty); - T_Speed = tty_getspeed(&tstty); - -# ifdef POSIX - /* - * Fix from: Steven (Steve) B. Green <xrsbg@charney.gsfc.nasa.gov> - * Speed was not being set up correctly under POSIX. - */ - if (tty_getspeed(&extty) != T_Speed || tty_getspeed(&edtty) != T_Speed) { - (void) cfsetispeed(&extty.d_t, T_Speed); - (void) cfsetospeed(&extty.d_t, T_Speed); - (void) cfsetispeed(&edtty.d_t, T_Speed); - (void) cfsetospeed(&edtty.d_t, T_Speed); - } -# endif /* POSIX */ -# else /* GSTTY */ - - T_Speed = tty_getspeed(&tstty); - Tty_eight_bit = tty_geteightbit(&tstty); - - if (extty.d_t.sg_ispeed != tstty.d_t.sg_ispeed) { - extty.d_t.sg_ispeed = tstty.d_t.sg_ispeed; - edtty.d_t.sg_ispeed = tstty.d_t.sg_ispeed; - } - - if (extty.d_t.sg_ospeed != tstty.d_t.sg_ospeed) { - extty.d_t.sg_ospeed = tstty.d_t.sg_ospeed; - edtty.d_t.sg_ospeed = tstty.d_t.sg_ospeed; - } -# endif /* POSIX || TERMIO */ - - if (tty_cooked_mode(&tstty)) { - /* - * re-test for some things here (like maybe the user typed - * "stty -tabs" - */ - if (tty_gettabs(&tstty) == 0) - T_Tabs = 0; - else - T_Tabs = CanWeTab(); - -# if defined(POSIX) || defined(TERMIO) - extty.d_t.c_cflag = tstty.d_t.c_cflag; - extty.d_t.c_cflag &= ~ttylist[EX_IO][M_CONTROL].t_clrmask; - extty.d_t.c_cflag |= ttylist[EX_IO][M_CONTROL].t_setmask; - - edtty.d_t.c_cflag = tstty.d_t.c_cflag; - edtty.d_t.c_cflag &= ~ttylist[ED_IO][M_CONTROL].t_clrmask; - edtty.d_t.c_cflag |= ttylist[ED_IO][M_CONTROL].t_setmask; - - extty.d_t.c_lflag = tstty.d_t.c_lflag; - extty.d_t.c_lflag &= ~ttylist[EX_IO][M_LINED].t_clrmask; - extty.d_t.c_lflag |= ttylist[EX_IO][M_LINED].t_setmask; - - edtty.d_t.c_lflag = tstty.d_t.c_lflag; - edtty.d_t.c_lflag &= ~ttylist[ED_IO][M_LINED].t_clrmask; - edtty.d_t.c_lflag |= ttylist[ED_IO][M_LINED].t_setmask; - - extty.d_t.c_iflag = tstty.d_t.c_iflag; - extty.d_t.c_iflag &= ~ttylist[EX_IO][M_INPUT].t_clrmask; - extty.d_t.c_iflag |= ttylist[EX_IO][M_INPUT].t_setmask; - - edtty.d_t.c_iflag = tstty.d_t.c_iflag; - edtty.d_t.c_iflag &= ~ttylist[ED_IO][M_INPUT].t_clrmask; - edtty.d_t.c_iflag |= ttylist[ED_IO][M_INPUT].t_setmask; - - extty.d_t.c_oflag = tstty.d_t.c_oflag; - extty.d_t.c_oflag &= ~ttylist[EX_IO][M_OUTPUT].t_clrmask; - extty.d_t.c_oflag |= ttylist[EX_IO][M_OUTPUT].t_setmask; - - edtty.d_t.c_oflag = tstty.d_t.c_oflag; - edtty.d_t.c_oflag &= ~ttylist[ED_IO][M_OUTPUT].t_clrmask; - edtty.d_t.c_oflag |= ttylist[ED_IO][M_OUTPUT].t_setmask; - -# else /* GSTTY */ - - extty.d_t.sg_flags = tstty.d_t.sg_flags; - - extty.d_t.sg_flags &= ~ttylist[EX_IO][M_CONTROL].t_clrmask; - extty.d_t.sg_flags |= ttylist[EX_IO][M_CONTROL].t_setmask; - - if (T_Tabs) /* order of &= and |= is important to XTABS */ - extty.d_t.sg_flags &= ~XTABS; - else - extty.d_t.sg_flags |= XTABS; - - extty.d_lb = tstty.d_lb; - extty.d_lb &= ~ttylist[EX_IO][M_LOCAL].t_clrmask; - extty.d_lb |= ttylist[EX_IO][M_LOCAL].t_setmask; - - edtty.d_t.sg_flags = extty.d_t.sg_flags; - if (T_Tabs) { /* order of &= and |= is important to XTABS */ - edtty.d_t.sg_flags &= - ~(ttylist[ED_IO][M_CONTROL].t_clrmask|XTABS); - edtty.d_t.sg_flags |= ttylist[ED_IO][M_CONTROL].t_setmask; - } - else { - edtty.d_t.sg_flags &= ~ttylist[ED_IO][M_CONTROL].t_clrmask; - edtty.d_t.sg_flags |= - (ttylist[ED_IO][M_CONTROL].t_setmask|XTABS); - } - - edtty.d_lb = tstty.d_lb; - edtty.d_lb &= ~ttylist[ED_IO][M_LOCAL].t_clrmask; - edtty.d_lb |= ttylist[ED_IO][M_LOCAL].t_setmask; - -# endif /* TERMIO || POSIX */ - - { - int i; - - tty_getchar(&tstty, ttychars[TS_IO]); - /* - * Check if the user made any changes. - * If he did, then propagate the changes to the - * edit and execute data structures. - */ - for (i = 0; i < C_NCC; i++) - if (ttychars[TS_IO][i] != ttychars[EX_IO][i]) - break; - - if (i != C_NCC || didsetty) { - didsetty = 0; - /* - * Propagate changes only to the unprotected chars - * that have been modified just now. - */ - for (i = 0; i < C_NCC; i++) { - if (!((ttylist[ED_IO][M_CHAR].t_setmask & C_SH(i))) && - (ttychars[TS_IO][i] != ttychars[EX_IO][i])) - ttychars[ED_IO][i] = ttychars[TS_IO][i]; - if (ttylist[ED_IO][M_CHAR].t_clrmask & C_SH(i)) - ttychars[ED_IO][i] = vdisable; - } - tty_setchar(&edtty, ttychars[ED_IO]); - - for (i = 0; i < C_NCC; i++) { - if (!((ttylist[EX_IO][M_CHAR].t_setmask & C_SH(i))) && - (ttychars[TS_IO][i] != ttychars[EX_IO][i])) - ttychars[EX_IO][i] = ttychars[TS_IO][i]; - if (ttylist[EX_IO][M_CHAR].t_clrmask & C_SH(i)) - ttychars[EX_IO][i] = vdisable; - } - tty_setchar(&extty, ttychars[EX_IO]); - } - - } - } - if (tty_setty(SHTTY, &edtty) == -1) { -# ifdef DEBUG_TTY - xprintf("Rawmode: tty_setty: %s\n", strerror(errno)); -# endif /* DEBUG_TTY */ - return(-1); - } -#endif /* WINNT_NATIVE */ - Tty_raw_mode = 1; - flush(); /* flush any buffered output */ - return (0); -} - -int -Cookedmode(void) -{ /* set tty in normal setup */ -#ifdef WINNT_NATIVE - do_nt_cooked_mode(); -#else - sigset_t set, oset; - int res; - -# ifdef _IBMR2 - tty_setdisc(SHTTY, EX_IO); -# endif /* _IBMR2 */ - - if (!Tty_raw_mode) - return (0); - - /* hold this for reseting tty */ - sigemptyset(&set); - sigaddset(&set, SIGINT); - (void)sigprocmask(SIG_BLOCK, &set, &oset); - cleanup_push(&oset, sigprocmask_cleanup); - res = tty_setty(SHTTY, &extty); - cleanup_until(&oset); - if (res == -1) { -# ifdef DEBUG_TTY - xprintf("Cookedmode: tty_setty: %s\n", strerror(errno)); -# endif /* DEBUG_TTY */ - return -1; - } -#endif /* WINNT_NATIVE */ - - Tty_raw_mode = 0; - return (0); -} - -void -ResetInLine(int macro) -{ - Cursor = InputBuf; /* reset cursor */ - LastChar = InputBuf; - InputLim = &InputBuf[INBUFSIZE - 2];/*FIXBUF*/ - Mark = InputBuf; - MarkIsSet = 0; - MetaNext = 0; - CurrentKeyMap = CcKeyMap; - AltKeyMap = 0; - Hist_num = 0; - DoingArg = 0; - Argument = 1; - LastCmd = F_UNASSIGNED; /* previous command executed */ - IncMatchLen = 0; - if (macro) - MacroLvl = -1; /* no currently active macros */ -} - -int -Load_input_line(void) -{ - static Char *Input_Line = NULL; -#ifdef SUNOS4 - long chrs = 0; -#else /* !SUNOS4 */ - /* - * *Everyone* else has an int, but SunOS wants long! - * This breaks where int != long (alpha) - */ - int chrs = 0; -#endif /* SUNOS4 */ - - if (Input_Line) - xfree(Input_Line); - Input_Line = NULL; - - if (Tty_raw_mode) - return 0; - -#if defined(FIONREAD) && !defined(OREO) - (void) ioctl(SHIN, FIONREAD, (ioctl_t) &chrs); - if (chrs > 0) { - char buf[BUFSIZE]; - - chrs = xread(SHIN, buf, min(chrs, BUFSIZE - 1)); - if (chrs > 0) { - buf[chrs] = '\0'; - Input_Line = Strsave(str2short(buf)); - PushMacro(Input_Line); - } -#ifdef convex - /* need to print errno message in case file is migrated */ - if (chrs < 0) - stderror(ERR_SYSTEM, progname, strerror(errno)); -#endif - } -#endif /* FIONREAD && !OREO */ - return chrs > 0; -} - -/* - * Bugfix (in Swedish) by: - * Johan Widen - * SICS, PO Box 1263, S-163 13 SPANGA, SWEDEN - * {mcvax,munnari,cernvax,diku,inria,prlb2,penet,ukc,unido}!enea!sics.se!jw - * Internet: jw@sics.se - * - * (via Hans J Albertsson (thanks)) - */ -void -QuoteModeOn(void) -{ - if (MacroLvl >= 0) - return; - -#ifndef WINNT_NATIVE - qutty = edtty; - -#if defined(TERMIO) || defined(POSIX) - qutty.d_t.c_iflag &= ~ttylist[QU_IO][M_INPUT].t_clrmask; - qutty.d_t.c_iflag |= ttylist[QU_IO][M_INPUT].t_setmask; - - qutty.d_t.c_oflag &= ~ttylist[QU_IO][M_OUTPUT].t_clrmask; - qutty.d_t.c_oflag |= ttylist[QU_IO][M_OUTPUT].t_setmask; - - qutty.d_t.c_cflag &= ~ttylist[QU_IO][M_CONTROL].t_clrmask; - qutty.d_t.c_cflag |= ttylist[QU_IO][M_CONTROL].t_setmask; - - qutty.d_t.c_lflag &= ~ttylist[QU_IO][M_LINED].t_clrmask; - qutty.d_t.c_lflag |= ttylist[QU_IO][M_LINED].t_setmask; -#else /* GSTTY */ - qutty.d_t.sg_flags &= ~ttylist[QU_IO][M_CONTROL].t_clrmask; - qutty.d_t.sg_flags |= ttylist[QU_IO][M_CONTROL].t_setmask; - qutty.d_lb &= ~ttylist[QU_IO][M_LOCAL].t_clrmask; - qutty.d_lb |= ttylist[QU_IO][M_LOCAL].t_setmask; - -#endif /* TERMIO || POSIX */ - if (tty_setty(SHTTY, &qutty) == -1) { -#ifdef DEBUG_TTY - xprintf("QuoteModeOn: tty_setty: %s\n", strerror(errno)); -#endif /* DEBUG_TTY */ - return; - } -#endif /* !WINNT_NATIVE */ - Tty_quote_mode = 1; - return; -} - -void -QuoteModeOff(void) -{ - if (!Tty_quote_mode) - return; - Tty_quote_mode = 0; - if (tty_setty(SHTTY, &edtty) == -1) { -#ifdef DEBUG_TTY - xprintf("QuoteModeOff: tty_setty: %s\n", strerror(errno)); -#endif /* DEBUG_TTY */ - return; - } - return; -} |