diff options
author | Andy Fiddaman <omnios@citrus-it.co.uk> | 2020-12-27 17:47:37 +0000 |
---|---|---|
committer | Andy Fiddaman <omnios@citrus-it.co.uk> | 2021-01-30 17:13:33 +0000 |
commit | b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f (patch) | |
tree | 6a37e590faffb9bb9af66887de645c546445036c /usr/src/lib/libshell/common/include/edit.h | |
parent | df36e06d12cbf655ddf22339ef8c39fa2b83ebf8 (diff) | |
download | illumos-joyent-b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f.tar.gz |
13405 ksh93 update to 2012-08-01
13434 sh: mishandles backslash as last character of a block of input
11750 ksh mkdir builtin doesn't honor special file permissions
9199 ksh93 builtin *grep -v mishandles blank lines, blows up libgcrypt-config
6756 sh (and ksh) have issues with ${1+"$@"}
6520 ksh: sleep could wait forever
4860 ksh93: core in printf
3791 /bin/sh's builtin 'rm' busted: 'rm -f' without arguments returns error
1047 ksh overwrites child core files
880 ksh93 coredumps on 'unset'
499 "interrupted system call" when using "tee" builtin in ksh
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Reviewed by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Reviewed by: Dominik Hassler <hadfl@omnios.org>
Approved by: Rich Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/lib/libshell/common/include/edit.h')
-rw-r--r-- | usr/src/lib/libshell/common/include/edit.h | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/usr/src/lib/libshell/common/include/edit.h b/usr/src/lib/libshell/common/include/edit.h deleted file mode 100644 index 122c700e37..0000000000 --- a/usr/src/lib/libshell/common/include/edit.h +++ /dev/null @@ -1,258 +0,0 @@ -/*********************************************************************** -* * -* This software is part of the ast package * -* Copyright (c) 1982-2010 AT&T Intellectual Property * -* and is licensed under the * -* Common Public License, Version 1.0 * -* by AT&T Intellectual Property * -* * -* A copy of the License is available at * -* http://www.opensource.org/licenses/cpl1.0.txt * -* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * -* * -* Information and Software Systems Research * -* AT&T Research * -* Florham Park NJ * -* * -* David Korn <dgk@research.att.com> * -* * -***********************************************************************/ -#pragma prototyped -#ifndef SEARCHSIZE -/* - * edit.h - common data structure for vi and emacs edit options - * - * David Korn - * AT&T Labs - * - */ - -#define SEARCHSIZE 80 - -#include "FEATURE/options" -#include "FEATURE/locale" -#if !SHOPT_VSH && !SHOPT_ESH -# define ed_winsize() (SEARCHSIZE) -#else - -#if !KSHELL -# include <setjmp.h> -# include <sig.h> -# include <ctype.h> -#endif /* KSHELL */ - -#include "FEATURE/setjmp" -#include "terminal.h" - -#define STRIP 0377 -#define LOOKAHEAD 80 - -#if SHOPT_MULTIBYTE -# ifndef ESS_MAXCHAR -# include "national.h" -# endif /* ESS_MAXCHAR */ - typedef wchar_t genchar; -# define CHARSIZE (sizeof(wchar_t)<=2?3:sizeof(wchar_t)) -#else - typedef char genchar; -# define CHARSIZE 1 -#endif /* SHOPT_MULTIBYTE */ - -#define TABSIZE 8 -#define PRSIZE 160 -#define MAXLINE 1024 /* longest edit line permitted */ - -typedef struct _edit_pos -{ - unsigned short line; - unsigned short col; -} Edpos_t; - -typedef struct edit -{ - sigjmp_buf e_env; - int e_kill; - int e_erase; - int e_werase; - int e_eof; - int e_lnext; - int e_fchar; - int e_plen; /* length of prompt string */ - char e_crlf; /* zero if cannot return to beginning of line */ - char e_nocrnl; /* don't put a new-line with ^L */ - int e_llimit; /* line length limit */ - int e_hline; /* current history line number */ - int e_hloff; /* line number offset for command */ - int e_hismin; /* minimum history line number */ - int e_hismax; /* maximum history line number */ - int e_raw; /* set when in raw mode or alt mode */ - int e_cur; /* current line position */ - int e_eol; /* end-of-line position */ - int e_pcur; /* current physical line position */ - int e_peol; /* end of physical line position */ - int e_mode; /* edit mode */ - int e_lookahead; /* index in look-ahead buffer */ - int e_repeat; - int e_saved; - int e_fcol; /* first column */ - int e_ucol; /* column for undo */ - int e_wsize; /* width of display window */ - char *e_outbase; /* pointer to start of output buffer */ - char *e_outptr; /* pointer to position in output buffer */ - char *e_outlast; /* pointer to end of output buffer */ - genchar *e_inbuf; /* pointer to input buffer */ - char *e_prompt; /* pointer to buffer containing the prompt */ - genchar *e_ubuf; /* pointer to the undo buffer */ - genchar *e_killbuf; /* pointer to delete buffer */ - char e_search[SEARCHSIZE]; /* search string */ - genchar *e_Ubuf; /* temporary workspace buffer */ - genchar *e_physbuf; /* temporary workspace buffer */ - int e_lbuf[LOOKAHEAD];/* pointer to look-ahead buffer */ - int e_fd; /* file descriptor */ - int e_ttyspeed; /* line speed, also indicates tty parms are valid */ - int e_tabcount; -#ifdef _hdr_utime - ino_t e_tty_ino; - dev_t e_tty_dev; - char *e_tty; -#endif -#if SHOPT_OLDTERMIO - char e_echoctl; - char e_tcgeta; - struct termio e_ott; -#endif -#if SHOPT_MULTIBYTE - int e_curchar; - int e_cursize; -#endif - int *e_globals; /* global variables */ - genchar *e_window; /* display window image */ - char e_inmacro; /* processing macro expansion */ -#if KSHELL - char e_vi_insert[2]; /* for sh_keytrap */ - int32_t e_col; /* for sh_keytrap */ -#else - char e_prbuff[PRSIZE]; /* prompt buffer */ -#endif /* KSHELL */ - struct termios e_ttyparm; /* initial tty parameters */ - struct termios e_nttyparm; /* raw tty parameters */ - struct termios e_savetty; /* saved terminal state */ - int e_savefd; /* file descriptor for saved terminal state */ - char e_macro[4]; /* macro buffer */ - void *e_vi; /* vi specific data */ - void *e_emacs; /* emacs specific data */ - Shell_t *sh; /* interpreter pointer */ - char *e_stkptr; /* saved stack pointer */ - int e_stkoff; /* saved stack offset */ - char **e_clist; /* completion list after <ESC>= */ - int e_nlist; /* number of elements on completion list */ - int e_multiline; /* allow multiple lines for editing */ - int e_winsz; /* columns in window */ - Edpos_t e_curpos; /* cursor line and column */ - Namval_t *e_default; /* variable containing default value */ - Namval_t *e_term; /* TERM variable */ - char e_termname[80]; /* terminal name */ -} Edit_t; - -#undef MAXWINDOW -#define MAXWINDOW 300 /* maximum width window */ -#define FAST 2 -#define SLOW 1 -#define ESC cntl('[') -#define UEOF -2 /* user eof char synonym */ -#define UINTR -3 /* user intr char synonym */ -#define UERASE -4 /* user erase char synonym */ -#define UKILL -5 /* user kill char synonym */ -#define UWERASE -6 /* user word erase char synonym */ -#define ULNEXT -7 /* user next literal char synonym */ - -#if ( 'a' == 97) /* ASCII? */ -# define cntl(x) (x&037) -#else -# define cntl(c) (c=='D'?55:(c=='E'?45:(c=='F'?46:(c=='G'?'\a':(c=='H'?'\b': \ - (c=='I'?'\t':(c=='J'?'\n':(c=='T'?60:(c=='U'?61:(c=='V'?50: \ - (c=='W'?38:(c=='Z'?63:(c=='['?39:(c==']'?29: \ - (c<'J'?c+1-'A':(c+10-'J')))))))))))))))) -#endif - -#if !KSHELL -# define STRIP 0377 -# define GMACS 1 -# define EMACS 2 -# define VIRAW 4 -# define EDITVI 8 -# define NOHIST 16 -# define EDITMASK 15 -# define is_option(m) (opt_flag&(m)) - extern char opt_flag; -# ifdef SYSCALL -# define read(fd,buff,n) syscall(3,fd,buff,n) -# else -# define read(fd,buff,n) rEAd(fd,buff,n) -# endif /* SYSCALL */ -#endif /* KSHELL */ - -extern void ed_crlf(Edit_t*); -extern void ed_putchar(Edit_t*, int); -extern void ed_ringbell(void); -extern void ed_setup(Edit_t*,int, int); -extern void ed_flush(Edit_t*); -extern int ed_getchar(Edit_t*,int); -extern int ed_virt_to_phys(Edit_t*,genchar*,genchar*,int,int,int); -extern int ed_window(void); -extern void ed_ungetchar(Edit_t*,int); -extern int ed_viread(void*, int, char*, int, int); -extern int ed_read(void*, int, char*, int, int); -extern int ed_emacsread(void*, int, char*, int, int); -extern Edpos_t ed_curpos(Edit_t*, genchar*, int, int, Edpos_t); -extern int ed_setcursor(Edit_t*, genchar*, int, int, int); -#if KSHELL - extern int ed_macro(Edit_t*,int); - extern int ed_expand(Edit_t*, char[],int*,int*,int,int); - extern int ed_fulledit(Edit_t*); - extern void *ed_open(Shell_t*); -#endif /* KSHELL */ -# if SHOPT_MULTIBYTE - extern int ed_internal(const char*, genchar*); - extern int ed_external(const genchar*, char*); - extern void ed_gencpy(genchar*,const genchar*); - extern void ed_genncpy(genchar*,const genchar*,int); - extern int ed_genlen(const genchar*); - extern int ed_setwidth(const char*); -# endif /* SHOPT_MULTIBYTE */ - -extern const char e_runvi[]; -#if !KSHELL - extern const char e_version[]; -#endif /* KSHELL */ - -#if SHOPT_HISTEXPAND - -/* flags */ - -#define HIST_EVENT 0x1 /* event designator seen */ -#define HIST_QUESTION 0x2 /* question mark event designator */ -#define HIST_HASH 0x4 /* hash event designator */ -#define HIST_WORDDSGN 0x8 /* word designator seen */ -#define HIST_QUICKSUBST 0x10 /* quick substition designator seen */ -#define HIST_SUBSTITUTE 0x20 /* for substition loop */ -#define HIST_NEWLINE 0x40 /* newline in squashed white space */ - -/* modifier flags */ - -#define HIST_PRINT 0x100 /* print new command */ -#define HIST_QUOTE 0x200 /* quote resulting history line */ -#define HIST_QUOTE_BR 0x400 /* quote every word on space break */ -#define HIST_GLOBALSUBST 0x800 /* apply substition globally */ - -#define HIST_ERROR 0x1000 /* an error ocurred */ - -/* flags to be returned */ - -#define HIST_FLAG_RETURN_MASK (HIST_EVENT|HIST_PRINT|HIST_ERROR) - -extern int hist_expand(const char *, char **); -#endif - -#endif -#endif |