From owner-svn-soc-all@FreeBSD.ORG Wed Jul 13 13:24:42 2011 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 6688A106566B for ; Wed, 13 Jul 2011 13:24:40 +0000 (UTC) (envelope-from zy@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Wed, 13 Jul 2011 13:24:40 +0000 Date: Wed, 13 Jul 2011 13:24:40 +0000 From: zy@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20110713132440.6688A106566B@hub.freebsd.org> Cc: Subject: socsvn commit: r224180 - in soc2011/zy/nvi-iconv/head/contrib/nvi2: . build cl common ex include include/sys vi X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2011 13:24:42 -0000 Author: zy Date: Wed Jul 13 13:24:40 2011 New Revision: 224180 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224180 Log: Pull nvi2 as a vendor source. Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/ soc2011/zy/nvi-iconv/head/contrib/nvi2/LICENSE soc2011/zy/nvi-iconv/head/contrib/nvi2/README soc2011/zy/nvi-iconv/head/contrib/nvi2/build/ soc2011/zy/nvi-iconv/head/contrib/nvi2/build/distrib (contents, props changed) soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl.h soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_bsd.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_main.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_read.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_screen.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_term.c soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/extern.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/args.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/common.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/cut.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/cut.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/delete.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/extern.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/gs.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/key.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/key.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/line.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/log.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/log.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/main.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mem.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/msg.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/msg.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/multibyte.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/options.awk soc2011/zy/nvi-iconv/head/contrib/nvi2/common/options.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/options.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/options_def.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/options_f.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/put.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/recover.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/screen.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/screen.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/search.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/seq.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/seq.h soc2011/zy/nvi-iconv/head/contrib/nvi2/common/util.c soc2011/zy/nvi-iconv/head/contrib/nvi2/common/util.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex.awk soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_abbrev.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_append.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_args.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_argv.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_at.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_bang.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_cd.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_cmd.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_cscope.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_def.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_delete.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_display.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_edit.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_equal.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_file.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_filter.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_global.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_init.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_join.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_map.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_mark.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_mkexrc.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_move.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_open.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_perl.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_preserve.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_print.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_put.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_quit.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_read.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_screen.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_script.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_set.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_shell.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_shift.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_source.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_stop.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_subst.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_tag.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_tcl.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_txt.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_undo.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_usage.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_util.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_version.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_visual.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_write.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_yank.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_z.c soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/extern.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/script.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/tag.h soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/version.h soc2011/zy/nvi-iconv/head/contrib/nvi2/include/ soc2011/zy/nvi-iconv/head/contrib/nvi2/include/bitstring.h soc2011/zy/nvi-iconv/head/contrib/nvi2/include/sys/ soc2011/zy/nvi-iconv/head/contrib/nvi2/include/sys/queue.h soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/ soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/extern.h soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/getc.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_at.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_ch.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_cmd.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_delete.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_ex.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_increment.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_init.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_itxt.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_left.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_mark.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_match.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_paragraph.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_put.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_redraw.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_replace.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_right.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_screen.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_scroll.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_search.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_section.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_sentence.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_status.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_txt.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_ulcase.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_undo.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_util.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_word.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_xchar.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_yank.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_z.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/v_zexit.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vi.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vi.h soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_line.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_msg.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_refresh.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_relative.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_smap.c soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_split.c Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/LICENSE Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,41 @@ +/*- + * $Id: LICENSE,v 8.18 2011/07/10 11:58:35 zy Exp $ (Berkeley) $Date: 2011/07/10 11:58:35 $ + */ + +The following are the copyrights and redistribution conditions that apply +to this copy of the Vi software. + +/* + * Copyright (c) 1991, 1992, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + * Keith Bostic. All rights reserved. + * Copyright (c) 1999, 2000 + * Sven Verdoolaege. All rights reserved. + * Copyright (c) 2011 + * Zhihao Yuan. 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 INTERRUPTION) + * 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. + */ Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/README Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,55 @@ +# $Id: README,v 8.154 2011/06/26 13:11:10 zy Exp $ (Berkeley) $Date: 2011/06/26 13:11:10 $ + +This is version 2.0.0 (2011-06-26) of nex/nvi, a reimplementation of the ex/vi +text editors originally distributed as part of the Fourth Berkeley +Software Distribution (4BSD), by the University of California, Berkeley. + +The directory layout is as follows: + + LICENSE ....... Copyright, use and redistribution information. + README ........ This file. + build ......... Build directory. + catalog ....... Message catalogs; see catalog/README. + cl ............ Vi interface to the curses(3) library. + common ........ Code shared by ex and vi. + docs .......... Ex/vi documentation, both current and historic. + ex ............ Ex source code. + include ....... Replacement include files. + vi ............ Vi source code. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +o This software is several years old and is the product of many folks' work. + + This software was originally derived from software contributed to + the University of California, Berkeley by Steve Kirkendall, the + author of the vi clone elvis. Without his work, this work would + have been far more difficult. + + IEEE POSIX 1003.2 style regular expression support is courtesy of + Henry Spencer, for which I am *very* grateful. + + Elan Amir did the original 4BSD curses work that made it possible + to support a full-screen editor using curses. + + George Neville-Neil added the Tcl interpreter, and the initial + interpreter design was his. + + Sven Verdoolaege added the Perl interpreter. + + Rob Mayoff provided the original Cscope support. + +o Many, many people suggested enhancements, and provided bug reports and + testing, far too many to individually thank. + +o From the original vi acknowledgements, by William Joy and Mark Horton: + + Bruce Englar encouraged the early development of this display + editor. Peter Kessler helped bring sanity to version 2's + command layout. Bill Joy wrote versions 1 and 2.0 through 2.7, + and created the framework that users see in the present editor. + Mark Horton added macros and other features and made the editor + work on a large number of terminals and Unix systems. + +o And... + The financial support of UUNET Communications Services is gratefully + acknowledged. Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/build/distrib ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/build/distrib Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,39 @@ +#! /bin/sh +# $Id: distrib,v 8.26 2011/07/13 07:45:14 zy Exp $ (Berkeley) $Date: 2011/07/13 07:45:14 $ + +# Build include files. +f=../cl/extern.h +echo "Building $f" +rm -f $f +sed -n "s/^ \* PUBLIC: \(.*\)/\1/p" ../cl/*.c > $f +chmod 444 $f + +f=../common/extern.h +echo "Building $f" +rm -f $f +sed -n "s/^ \* PUBLIC: \(.*\)/\1/p" ../common/*.c > $f +chmod 444 $f + +f=../ex/ex_def.h +echo "Building $f" +rm -f $f +awk -f ../ex/ex.awk ../ex/ex_cmd.c > $f +chmod 444 $f + +f=../ex/extern.h +echo "Building $f" +rm -f $f +sed -n "s/^ \* PUBLIC: \(.*\)/\1/p" ../ex/*.c > $f +chmod 444 $f + +f=../common/options_def.h +echo "Building $f" +rm -f $f +awk -f ../common/options.awk ../common/options.c > $f +chmod 444 $f + +f=../vi/extern.h +echo "Building $f" +rm -f $f +sed -n "s/^ \* PUBLIC: \(.*\)/\1/p" ../vi/*.c > $f +chmod 444 $f Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl.h Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,110 @@ +/*- + * Copyright (c) 1993, 1994 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 1993, 1994, 1995, 1996 + * Keith Bostic. All rights reserved. + * + * See the LICENSE file for redistribution information. + * + * $Id: cl.h,v 10.32 2001/08/28 11:33:40 skimo Exp $ (Berkeley) $Date: 2001/08/28 11:33:40 $ + */ + +#ifdef USE_SLANG_CURSES +#include +#else +#ifdef HAVE_NCURSESW_NCURSES_H /* { */ +#include +#else /* } { */ +#ifdef HAVE_NCURSES_H /* { */ +#include +#else /* } { */ +#include +#endif /* } */ +#endif +#endif + +typedef struct _cl_private { + char ibuf[256]; /* Input keys. */ + + size_t skip; /* Remaining keys. */ + + CONVWIN cw; /* Conversion buffer. */ + + int eof_count; /* EOF count. */ + + struct termios orig; /* Original terminal values. */ + struct termios ex_enter;/* Terminal values to enter ex. */ + struct termios vi_enter;/* Terminal values to enter vi. */ + + char *el; /* Clear to EOL terminal string. */ + char *cup; /* Cursor movement terminal string. */ + char *cuu1; /* Cursor up terminal string. */ + char *rmso, *smso; /* Inverse video terminal strings. */ + char *smcup, *rmcup; /* Terminal start/stop strings. */ + + SCR *focus; /* Screen that has the "focus". */ + + int killersig; /* Killer signal. */ +#define INDX_HUP 0 +#define INDX_INT 1 +#define INDX_TERM 2 +#define INDX_WINCH 3 +#define INDX_MAX 4 /* Original signal information. */ + struct sigaction oact[INDX_MAX]; + + enum { /* Tty group write mode. */ + TGW_UNKNOWN=0, TGW_SET, TGW_UNSET } tgw; + + enum { /* Terminal initialization strings. */ + TE_SENT=0, TI_SENT } ti_te; + +#define CL_IN_EX 0x0001 /* Currently running ex. */ +#define CL_LAYOUT 0x0002 /* Screen layout changed. */ +#define CL_RENAME 0x0004 /* X11 xterm icon/window renamed. */ +#define CL_RENAME_OK 0x0008 /* User wants the windows renamed. */ +#define CL_SCR_EX_INIT 0x0010 /* Ex screen initialized. */ +#define CL_SCR_VI_INIT 0x0020 /* Vi screen initialized. */ +#define CL_SIGHUP 0x0040 /* SIGHUP arrived. */ +#define CL_SIGINT 0x0080 /* SIGINT arrived. */ +#define CL_SIGTERM 0x0100 /* SIGTERM arrived. */ +#define CL_SIGWINCH 0x0200 /* SIGWINCH arrived. */ +#define CL_STDIN_TTY 0x0400 /* Talking to a terminal. */ + u_int32_t flags; +} CL_PRIVATE; + +#define CLP(sp) ((CL_PRIVATE *)((sp)->gp->cl_private)) +#define GCLP(gp) ((CL_PRIVATE *)gp->cl_private) +#define CLSP(sp) ((WINDOW *)((sp)->cl_private)) + +/* Return possibilities from the keyboard read routine. */ +typedef enum { INP_OK=0, INP_EOF, INP_ERR, INP_INTR, INP_TIMEOUT } input_t; + +/* The screen position relative to a specific window. */ +#define RCNO(sp, cno) (cno) +#define RLNO(sp, lno) (lno) + +/* X11 xterm escape sequence to rename the icon/window. */ +#define XTERM_RENAME "\033]0;%s\007" + +/* + * XXX + * Some implementations of curses.h don't define these for us. Used for + * compatibility only. + */ +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#include "extern.h" + +#ifdef USE_PERL_SETENV +#include "../perl_api/extern.h" +#define cl_setenv(sp,name,val) perl_setenv(sp,name,val) +#define cl_unsetenv(sp,name) perl_setenv(sp,name,NULL) +#else +#define cl_setenv(sp,name,val) setenv(name,val,1) +#define cl_unsetenv(sp,name) unsetenv(name) +#endif Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_bsd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_bsd.c Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,346 @@ +/*- + * Copyright (c) 1995, 1996 + * Keith Bostic. All rights reserved. + * + * See the LICENSE file for redistribution information. + */ + +#include "config.h" + +#ifndef lint +static const char sccsid[] = "$Id: cl_bsd.c,v 8.32 2000/12/01 13:56:17 skimo Exp $ (Berkeley) $Date: 2000/12/01 13:56:17 $"; +#endif /* not lint */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../common/common.h" +#include "../vi/vi.h" +#include "cl.h" + +static char *ke; /* Keypad on. */ +static char *ks; /* Keypad off. */ +static char *vb; /* Visible bell string. */ + +/* + * HP's support the entire System V curses package except for the tigetstr + * and tigetnum functions. Ultrix supports the BSD curses package except + * for the idlok function. Cthulu only knows why. Break things up into a + * minimal set of functions. + */ + +#ifndef HAVE_CURSES_WADDNSTR +/* + * waddnstr -- + * + * PUBLIC: #ifndef HAVE_CURSES_WADDNSTR + * PUBLIC: int waddnstr __P((WINDOW*, char *, int)); + * PUBLIC: #endif + */ +int +waddnstr(w, s, n) + WINDOW *w; + char *s; + int n; +{ + int ch; + + while (n-- && (ch = *s++)) + waddch(w, ch); + return (OK); +} +#endif + +#ifndef HAVE_CURSES_BEEP +/* + * beep -- + * + * PUBLIC: #ifndef HAVE_CURSES_BEEP + * PUBLIC: void beep __P((void)); + * PUBLIC: #endif + */ +void +beep() +{ + (void)write(1, "\007", 1); /* '\a' */ +} +#endif /* !HAVE_CURSES_BEEP */ + +#ifndef HAVE_CURSES_FLASH +/* + * flash -- + * Flash the screen. + * + * PUBLIC: #ifndef HAVE_CURSES_FLASH + * PUBLIC: void flash __P((void)); + * PUBLIC: #endif + */ +void +flash() +{ + if (vb != NULL) { + (void)tputs(vb, 1, cl_putchar); + (void)fflush(stdout); + } else + beep(); +} +#endif /* !HAVE_CURSES_FLASH */ + +#ifndef HAVE_CURSES_IDLOK +/* + * idlok -- + * Turn on/off hardware line insert/delete. + * + * PUBLIC: #ifndef HAVE_CURSES_IDLOK + * PUBLIC: void idlok __P((WINDOW *, int)); + * PUBLIC: #endif + */ +void +idlok(win, bf) + WINDOW *win; + int bf; +{ + return; +} +#endif /* !HAVE_CURSES_IDLOK */ + +#ifndef HAVE_CURSES_KEYPAD +/* + * keypad -- + * Put the keypad/cursor arrows into or out of application mode. + * + * PUBLIC: #ifndef HAVE_CURSES_KEYPAD + * PUBLIC: int keypad __P((void *, int)); + * PUBLIC: #endif + */ +int +keypad(a, on) + void *a; + int on; +{ + char *p; + + if ((p = tigetstr(on ? "smkx" : "rmkx")) != (char *)-1) { + (void)tputs(p, 0, cl_putchar); + (void)fflush(stdout); + } + return (0); +} +#endif /* !HAVE_CURSES_KEYPAD */ + +#ifndef HAVE_CURSES_NEWTERM +/* + * newterm -- + * Create a new curses screen. + * + * PUBLIC: #ifndef HAVE_CURSES_NEWTERM + * PUBLIC: void *newterm __P((const char *, FILE *, FILE *)); + * PUBLIC: #endif + */ +void * +newterm(a, b, c) + const char *a; + FILE *b, *c; +{ + return (initscr()); +} +#endif /* !HAVE_CURSES_NEWTERM */ + +#ifndef HAVE_CURSES_SETUPTERM +/* + * setupterm -- + * Set up terminal. + * + * PUBLIC: #ifndef HAVE_CURSES_SETUPTERM + * PUBLIC: void setupterm __P((char *, int, int *)); + * PUBLIC: #endif + */ +void +setupterm(ttype, fno, errp) + char *ttype; + int fno, *errp; +{ + static char buf[2048]; + char *p; + + if ((*errp = tgetent(buf, ttype)) > 0) { + if (ke != NULL) + free(ke); + ke = ((p = tigetstr("rmkx")) == (char *)-1) ? + NULL : strdup(p); + if (ks != NULL) + free(ks); + ks = ((p = tigetstr("smkx")) == (char *)-1) ? + NULL : strdup(p); + if (vb != NULL) + free(vb); + vb = ((p = tigetstr("flash")) == (char *)-1) ? + NULL : strdup(p); + } +} +#endif /* !HAVE_CURSES_SETUPTERM */ + +#ifndef HAVE_CURSES_TIGETSTR +/* Terminfo-to-termcap translation table. */ +typedef struct _tl { + char *terminfo; /* Terminfo name. */ + char *termcap; /* Termcap name. */ +} TL; +static const TL list[] = { + "cols", "co", /* Terminal columns. */ + "cup", "cm", /* Cursor up. */ + "cuu1", "up", /* Cursor up. */ + "el", "ce", /* Clear to end-of-line. */ + "flash", "vb", /* Visible bell. */ + "kcub1", "kl", /* Cursor left. */ + "kcud1", "kd", /* Cursor down. */ + "kcuf1", "kr", /* Cursor right. */ + "kcuu1", "ku", /* Cursor up. */ + "kdch1", "kD", /* Delete character. */ + "kdl1", "kL", /* Delete line. */ + "ked", "kS", /* Delete to end of screen. */ + "kel", "kE", /* Delete to eol. */ + "kend", "@7", /* Go to eol. */ + "khome", "kh", /* Go to sol. */ + "kich1", "kI", /* Insert at cursor. */ + "kil1", "kA", /* Insert line. */ + "kind", "kF", /* Scroll down. */ + "kll", "kH", /* Go to eol. */ + "knp", "kN", /* Page down. */ + "kpp", "kP", /* Page up. */ + "kri", "kR", /* Scroll up. */ + "lines", "li", /* Terminal lines. */ + "rmcup", "te", /* Terminal end string. */ + "rmkx", "ke", /* Exit "keypad-transmit" mode. */ + "rmso", "se", /* Standout end. */ + "smcup", "ti", /* Terminal initialization string. */ + "smkx", "ks", /* Enter "keypad-transmit" mode. */ + "smso", "so", /* Standout begin. */ +}; + +#ifdef _AIX +/* + * AIX's implementation for function keys greater than 10 is different and + * only goes as far as 36. + */ +static const char codes[] = { +/* 0-10 */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ';', +/* 11-20 */ '<', '>', '!', '@', '#', '$', '%', '^', '&', '*', +/* 21-30 */ '(', ')', '-', '_', '+', ',', ':', '?', '[', ']', +/* 31-36 */ '{', '}', '|', '~', '/', '=' +}; + +#else + +/* + * !!! + * Historically, the 4BSD termcap code didn't support functions keys greater + * than 9. This was silently enforced -- asking for key k12 would return the + * value for k1. We try and get around this by using the tables specified in + * the terminfo(TI_ENV) man page from the 3rd Edition SVID. This assumes the + * implementors of any System V compatibility code or an extended termcap used + * those codes. + */ +static const char codes[] = { +/* 0-10 */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ';', +/* 11-19 */ '1', '2', '3', '4', '5', '6', '7', '8', '9', +/* 20-63 */ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', +}; +#endif /* _AIX */ + +/* + * lcmp -- + * list comparison routine for bsearch. + */ +static int +lcmp(a, b) + const void *a, *b; +{ + return (strcmp(a, ((TL *)b)->terminfo)); +} + +/* + * tigetstr -- + * + * Vendors put the prototype for tigetstr into random include files, including + * , which we can't include because it makes other systems unhappy. + * Try and work around the problem, since we only care about the return value. + * + * PUBLIC: #ifdef HAVE_CURSES_TIGETSTR + * PUBLIC: char *tigetstr(); + * PUBLIC: #else + * PUBLIC: char *tigetstr __P((char *)); + * PUBLIC: #endif + */ +char * +tigetstr(name) + char *name; +{ + static char sbuf[256]; + TL *tlp; + int n; + char *p, keyname[3]; + + if ((tlp = bsearch(name, + list, sizeof(list) / sizeof(TL), sizeof(TL), lcmp)) == NULL) { +#ifdef _AIX + if (name[0] == 'k' && + name[1] == 'f' && (n = atoi(name + 2)) <= 36) { + keyname[0] = 'k'; + keyname[1] = codes[n]; + keyname[2] = '\0'; +#else + if (name[0] == 'k' && + name[1] == 'f' && (n = atoi(name + 2)) <= 63) { + keyname[0] = n <= 10 ? 'k' : 'F'; + keyname[1] = codes[n]; + keyname[2] = '\0'; +#endif + name = keyname; + } + } else + name = tlp->termcap; + + p = sbuf; +#ifdef _AIX + return ((p = tgetstr(name, &p)) == NULL ? (char *)-1 : strcpy(sbuf, p)); +#else + return (tgetstr(name, &p) == NULL ? (char *)-1 : sbuf); +#endif +} + +/* + * tigetnum -- + * + * PUBLIC: #ifndef HAVE_CURSES_TIGETSTR + * PUBLIC: int tigetnum __P((char *)); + * PUBLIC: #endif + */ +int +tigetnum(name) + char *name; +{ + TL *tlp; + int val; + + if ((tlp = bsearch(name, + list, sizeof(list) / sizeof(TL), sizeof(TL), lcmp)) != NULL) { + name = tlp->termcap; + } + + return ((val = tgetnum(name)) == -1 ? -2 : val); +} +#endif /* !HAVE_CURSES_TIGETSTR */ Added: soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c Wed Jul 13 13:24:40 2011 (r224180) @@ -0,0 +1,855 @@ +/*- + * Copyright (c) 1993, 1994 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 1993, 1994, 1995, 1996 + * Keith Bostic. All rights reserved. + * + * See the LICENSE file for redistribution information. + */ + +#include "config.h" + +#ifndef lint +static const char sccsid[] = "$Id: cl_funcs.c,v 10.72 2002/03/02 23:18:33 skimo Exp $ (Berkeley) $Date: 2002/03/02 23:18:33 $"; +#endif /* not lint */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_TERM_H +#include +#else +#include +#endif +#include + +#include "../common/common.h" +#include "../vi/vi.h" +#include "cl.h" + +static void cl_rdiv __P((SCR *)); + +static int +addstr4(SCR *sp, void *str, size_t len, int wide) +{ + CL_PRIVATE *clp; + WINDOW *win; + size_t y, x; + int iv; + + clp = CLP(sp); + win = CLSP(sp) ? CLSP(sp) : stdscr; + + /* + * If ex isn't in control, it's the last line of the screen and + * it's a split screen, use inverse video. + */ + iv = 0; + getyx(win, y, x); + if (!F_ISSET(sp, SC_SCR_EXWROTE) && + y == RLNO(sp, LASTLINE(sp)) && IS_SPLIT(sp)) { + iv = 1; + (void)wstandout(win); + } + +#ifdef USE_WIDECHAR + if (wide) { + if (waddnwstr(win, str, len) == ERR) + return (1); + } else +#endif + if (waddnstr(win, str, len) == ERR) + return (1); + + if (iv) + (void)wstandend(win); + return (0); +} + +/* + * cl_waddstr -- + * Add len bytes from the string at the cursor, advancing the cursor. + * + * PUBLIC: int cl_waddstr __P((SCR *, const CHAR_T *, size_t)); + */ +int +cl_waddstr(SCR *sp, const CHAR_T *str, size_t len) +{ + return addstr4(sp, (void *)str, len, 1); +} + +/* + * cl_addstr -- + * Add len bytes from the string at the cursor, advancing the cursor. + * + * PUBLIC: int cl_addstr __P((SCR *, const char *, size_t)); + */ +int +cl_addstr(SCR *sp, const char *str, size_t len) +{ + return addstr4(sp, (void *)str, len, 0); +} + +/* + * cl_attr -- + * Toggle a screen attribute on/off. + * + * PUBLIC: int cl_attr __P((SCR *, scr_attr_t, int)); + */ +int +cl_attr(SCR *sp, scr_attr_t attribute, int on) +{ + CL_PRIVATE *clp; + WINDOW *win; + + clp = CLP(sp); + win = CLSP(sp) ? CLSP(sp) : stdscr; + + switch (attribute) { + case SA_ALTERNATE: + /* + * !!! + * There's a major layering violation here. The problem is that the + * X11 xterm screen has what's known as an "alternate" screen. Some + * xterm termcap/terminfo entries include sequences to switch to/from + * that alternate screen as part of the ti/te (smcup/rmcup) strings. + * Vi runs in the alternate screen, so that you are returned to the + * same screen contents on exit from vi that you had when you entered + * vi. Further, when you run :shell, or :!date or similar ex commands, + * you also see the original screen contents. This wasn't deliberate + * on vi's part, it's just that it historically sent terminal init/end + * sequences at those times, and the addition of the alternate screen + * sequences to the strings changed the behavior of vi. The problem + * caused by this is that we don't want to switch back to the alternate + * screen while getting a new command from the user, when the user is + * continuing to enter ex commands, e.g.: + * + * :!date <<< switch to original screen + * [Hit return to continue] <<< prompt user to continue + * :command <<< get command from user + * + * Note that the :command input is a true vi input mode, e.g., input + * maps and abbreviations are being done. So, we need to be able to + * switch back into the vi screen mode, without flashing the screen. + * + * To make matters worse, the curses initscr() and endwin() calls will + * do this automatically -- so, this attribute isn't as controlled by + * the higher level screen as closely as one might like. + */ + if (on) { + if (clp->ti_te != TI_SENT) { + clp->ti_te = TI_SENT; + if (clp->smcup == NULL) + (void)cl_getcap(sp, "smcup", &clp->smcup); + if (clp->smcup != NULL) + (void)tputs(clp->smcup, 1, cl_putchar); + } + } else + if (clp->ti_te != TE_SENT) { + clp->ti_te = TE_SENT; + if (clp->rmcup == NULL) + (void)cl_getcap(sp, "rmcup", &clp->rmcup); + if (clp->rmcup != NULL) + (void)tputs(clp->rmcup, 1, cl_putchar); + (void)fflush(stdout); + } + (void)fflush(stdout); + break; + case SA_INVERSE: + if (F_ISSET(sp, SC_EX | SC_SCR_EXWROTE)) { + if (clp->smso == NULL) + return (1); + if (on) + (void)tputs(clp->smso, 1, cl_putchar); + else + (void)tputs(clp->rmso, 1, cl_putchar); + (void)fflush(stdout); + } else { + if (on) + (void)wstandout(win); + else + (void)wstandend(win); + } + break; + default: + abort(); + } + return (0); +} + +/* + * cl_baud -- + * Return the baud rate. + * + * PUBLIC: int cl_baud __P((SCR *, u_long *)); + */ +int +cl_baud(SCR *sp, u_long *ratep) +{ + CL_PRIVATE *clp; + + /* + * XXX + * There's no portable way to get a "baud rate" -- cfgetospeed(3) + * returns the value associated with some #define, which we may + * never have heard of, or which may be a purely local speed. Vi + * only cares if it's SLOW (w300), slow (w1200) or fast (w9600). + * Try and detect the slow ones, and default to fast. + */ + clp = CLP(sp); + switch (cfgetospeed(&clp->orig)) { + case B50: + case B75: + case B110: + case B134: + case B150: + case B200: + case B300: + case B600: + *ratep = 600; + break; + case B1200: + *ratep = 1200; + break; + default: + *ratep = 9600; + break; + } + return (0); +} + +/* + * cl_bell -- + * Ring the bell/flash the screen. + * + * PUBLIC: int cl_bell __P((SCR *)); + */ +int +cl_bell(SCR *sp) +{ + if (F_ISSET(sp, SC_EX | SC_SCR_EXWROTE | SC_SCR_EX)) + (void)write(STDOUT_FILENO, "\07", 1); /* \a */ + else { + /* + * Vi has an edit option which determines if the terminal + * should be beeped or the screen flashed. + */ + if (O_ISSET(sp, O_FLASH)) + (void)flash(); + else + (void)beep(); + } + return (0); +} + +/* + * cl_clrtoeol -- + * Clear from the current cursor to the end of the line. + * + * PUBLIC: int cl_clrtoeol __P((SCR *)); + */ +int +cl_clrtoeol(SCR *sp) +{ + WINDOW *win; + size_t spcnt, y, x; + + win = CLSP(sp) ? CLSP(sp) : stdscr; + +#if 0 + if (IS_VSPLIT(sp)) { + /* The cursor must be returned to its original position. */ + getyx(win, y, x); + for (spcnt = (sp->coff + sp->cols) - x; spcnt > 0; --spcnt) + (void)waddch(win, ' '); + (void)wmove(win, y, x); + return (0); + } else +#endif + return (wclrtoeol(win) == ERR); +} + +/* + * cl_cursor -- + * Return the current cursor position. + * + * PUBLIC: int cl_cursor __P((SCR *, size_t *, size_t *)); + */ +int +cl_cursor(SCR *sp, size_t *yp, size_t *xp) +{ + WINDOW *win; + win = CLSP(sp) ? CLSP(sp) : stdscr; + /* + * The curses screen support splits a single underlying curses screen + * into multiple screens to support split screen semantics. For this + * reason the returned value must be adjusted to be relative to the + * current screen, and not absolute. Screens that implement the split + * using physically distinct screens won't need this hack. + */ + getyx(win, *yp, *xp); + /* + *yp -= sp->roff; + *xp -= sp->coff; + */ + return (0); +} + +/* + * cl_deleteln -- + * Delete the current line, scrolling all lines below it. + * + * PUBLIC: int cl_deleteln __P((SCR *)); + */ +int +cl_deleteln(SCR *sp) +{ + CHAR_T ch; + CL_PRIVATE *clp; + WINDOW *win; + size_t col, lno, spcnt, y, x; + + clp = CLP(sp); + win = CLSP(sp) ? CLSP(sp) : stdscr; + + /* + * This clause is required because the curses screen uses reverse + * video to delimit split screens. If the screen does not do this, + * this code won't be necessary. + * + * If the bottom line was in reverse video, rewrite it in normal + * video before it's scrolled. + * + * Check for the existence of a chgat function; XSI requires it, but + * historic implementations of System V curses don't. If it's not + * a #define, we'll fall back to doing it by hand, which is slow but + * acceptable. + * + * By hand means walking through the line, retrieving and rewriting + * each character. Curses has no EOL marker, so track strings of + * spaces, and copy the trailing spaces only if there's a non-space + * character following. + */ + if (!F_ISSET(sp, SC_SCR_EXWROTE) && IS_SPLIT(sp)) { + getyx(win, y, x); +#ifdef mvchgat + mvwchgat(win, RLNO(sp, LASTLINE(sp)), 0, -1, A_NORMAL, 0, NULL); +#else + for (lno = RLNO(sp, LASTLINE(sp)), col = spcnt = 0;;) { + (void)wmove(win, lno, col); + ch = winch(win); + if (isblank(ch)) + ++spcnt; + else { + (void)wmove(win, lno, col - spcnt); + for (; spcnt > 0; --spcnt) + (void)waddch(win, ' '); + (void)waddch(win, ch); + } + if (++col >= sp->cols) + break; + } +#endif + (void)wmove(win, y, x); + } + + /* + * The bottom line is expected to be blank after this operation, + * and other screens must support that semantic. + */ + return (wdeleteln(win) == ERR); +} + +/* + * cl_discard -- + * Discard a screen. + * + * PUBLIC: int cl_discard __P((SCR *, SCR **)); + */ +int +cl_discard(SCR *discardp, SCR **acquirep) +{ + CL_PRIVATE *clp; + SCR* tsp; + + if (discardp) { + clp = CLP(discardp); + F_SET(clp, CL_LAYOUT); + + if (CLSP(discardp)) { + delwin(CLSP(discardp)); + discardp->cl_private = NULL; + } + } + *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***