socsvn commit: r224426 - in soc2011/zy/nvi-iconv/head/contrib/nvi2:
cl common ex vi
zy at FreeBSD.org
zy at FreeBSD.org
Tue Jul 19 00:00:47 UTC 2011
Author: zy
Date: Tue Jul 19 00:00:44 2011
New Revision: 224426
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224426
Log:
Updates to git:25ff93c. The memory leak problem is solved.
* No extra copying on line cache in 8-bit mode;
* Allow strict-aliasing optimization.
Modified:
soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_read.c
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.h
soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/common/gs.h
soc2011/zy/nvi-iconv/head/contrib/nvi2/common/line.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.h
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/screen.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_subst.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_visual.c
soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_line.c
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_funcs.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -259,7 +259,9 @@
cl_clrtoeol(SCR *sp)
{
WINDOW *win;
+#if 0
size_t spcnt, y, x;
+#endif
win = CLSP(sp) ? CLSP(sp) : stdscr;
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_read.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_read.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/cl/cl_read.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -152,7 +152,6 @@
struct timeval poll;
CL_PRIVATE *clp;
GS *gp;
- SCR *tsp;
fd_set rdfd;
input_t rval;
int maxfd, nr, term_reset;
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "$Id: conv.c,v 1.27 2001/08/18 21:41:41 skimo Exp $ (Berkeley) $Date: 2001/08/18 21:41:41 $";
+static const char sccsid[] = "$Id: conv.c,v 1.28 2011/07/16 14:40:06 zy Exp $ (Berkeley) $Date: 2011/07/16 14:40:06 $";
#endif /* not lint */
#include <sys/types.h>
@@ -46,7 +46,7 @@
CHAR_T **dst)
{
int i;
- CHAR_T **tostr = (CHAR_T **)&cw->bp1;
+ CHAR_T **tostr = &cw->b_wc1;
size_t *blen = &cw->blen1;
BINC_RETW(NULL, *tostr, *blen, len);
@@ -55,7 +55,7 @@
for (i = 0; i < len; ++i)
(*tostr)[i] = (u_char) str[i];
- *dst = cw->bp1;
+ *dst = cw->b_wc1;
return 0;
}
@@ -90,7 +90,7 @@
size_t *tolen, CHAR_T **dst, char *enc)
{
int i = 0, j;
- CHAR_T **tostr = (CHAR_T **)&cw->bp1;
+ CHAR_T **tostr = &cw->b_wc1;
size_t *blen = &cw->blen1;
mbstate_t mbs;
size_t n;
@@ -134,14 +134,14 @@
if (id != (iconv_t)-1)
iconv_close(id);
- *dst = cw->bp1;
+ *dst = cw->b_wc1;
return 0;
err:
*tolen = i;
if (id != (iconv_t)-1)
iconv_close(id);
- *dst = cw->bp1;
+ *dst = cw->b_wc1;
return error;
}
@@ -192,7 +192,7 @@
char **dst)
{
int i;
- char **tostr = (char **)&cw->bp1;
+ char **tostr = &cw->b_c1;
size_t *blen = &cw->blen1;
BINC_RETC(NULL, *tostr, *blen, len);
@@ -201,7 +201,7 @@
for (i = 0; i < len; ++i)
(*tostr)[i] = str[i];
- *dst = cw->bp1;
+ *dst = cw->b_wc1;
return 0;
}
@@ -211,7 +211,7 @@
size_t *tolen, char **pdst, char *enc)
{
size_t i, j, offset = 0;
- char **tostr = (char **)&cw->bp1;
+ char **tostr = &cw->b_c1;
size_t *blen = &cw->blen1;
mbstate_t mbs;
size_t n;
@@ -232,10 +232,10 @@
char *bp = buffer; \
while (len != 0) { \
size_t outleft = cw->blen1 - offset; \
- char *obp = (char *)cw->bp1 + offset; \
+ char *obp = cw->b_c1 + offset; \
if (cw->blen1 < offset + MB_CUR_MAX) { \
nlen += 256; \
- BINC_RETC(NULL, cw->bp1, cw->blen1, nlen); \
+ BINC_RETC(NULL, cw->b_c1, cw->blen1, nlen); \
} \
errno = 0; \
if (iconv(id, &bp, &len, &obp, &outleft) == -1 && \
@@ -286,13 +286,13 @@
*tolen = offset;
}
- *pdst = cw->bp1;
+ *pdst = cw->b_c1;
return 0;
err:
*tolen = j;
- *pdst = cw->bp1;
+ *pdst = cw->b_c1;
return 1;
}
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/conv.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -6,7 +6,7 @@
*
* See the LICENSE file for redistribution information.
*
- * $Id: conv.h,v 1.27 2001/08/18 21:41:41 skimo Exp $ (Berkeley) $Date: 2001/08/18 21:41:41 $
+ * $Id: conv.h,v 1.28 2011/07/16 14:40:38 zy Exp $ (Berkeley) $Date: 2011/07/16 14:40:38 $
*/
#define KEY_COL(sp, ch) \
@@ -15,7 +15,10 @@
KEY_LEN(sp,ch))
struct _conv_win {
- void *bp1;
+ union {
+ char *b_c1;
+ CHAR_T *b_wc1;
+ };
size_t blen1;
};
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/cut.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/cut.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/cut.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -6,7 +6,7 @@
*
* See the LICENSE file for redistribution information.
*
- * $Id: cut.h,v 10.9 2000/07/22 17:31:18 skimo Exp $ (Berkeley) $Date: 2000/07/22 17:31:18 $
+ * $Id: cut.h,v 10.10 2011/07/16 18:06:00 zy Exp $ (Berkeley) $Date: 2011/07/16 18:06:00 $
*/
typedef struct _texth TEXTH; /* TEXT list head structure. */
@@ -16,8 +16,7 @@
struct _cb {
LIST_ENTRY(_cb) q; /* Linked list of cut buffers. */
TEXTH textq; /* Linked list of TEXT structures. */
- /* XXXX Needed ? Can non ascii-chars be cut buffer names ? */
- CHAR_T name; /* Cut buffer name. */
+ char name; /* Cut buffer name. */
size_t len; /* Total length of cut text. */
#define CB_LMODE 0x01 /* Cut was in line mode. */
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/exf.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "$Id: exf.c,v 10.50 2011/06/26 21:14:46 zy Exp $ (Berkeley) $Date: 2011/06/26 21:14:46 $";
+static const char sccsid[] = "$Id: exf.c,v 10.52 2011/07/18 16:58:54 zy Exp $ (Berkeley) $Date: 2011/07/18 16:58:54 $";
#endif /* not lint */
#include <sys/param.h>
@@ -407,6 +407,9 @@
/* Set the initial cursor position, queue initial command. */
file_cinit(sp);
+ /* Report conversion errors again. */
+ F_CLR(sp, SC_CONV_ERROR);
+
/* Redraw the screen from scratch, schedule a welcome message. */
F_SET(sp, SC_SCR_REFORMAT | SC_STATUS);
@@ -718,6 +721,8 @@
free(ep->rcv_path);
if (ep->rcv_mpath != NULL)
free(ep->rcv_mpath);
+ if (ep->c_lp != NULL)
+ free(ep->c_lp);
free(ep);
return (0);
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/gs.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/gs.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/gs.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -124,8 +124,8 @@
#define KEY_VAL(sp, ch) \
((UCHAR_T)(ch) <= MAX_FAST_KEY ? \
- sp->gp->special_key[(UCHAR_T)ch] : \
- (UCHAR_T)(ch) > sp->gp->max_special ? 0 : v_key_val(sp,ch))
+ sp->gp->special_key[(UCHAR_T)ch] : \
+ (UCHAR_T)(ch) > sp->gp->max_special ? K_NOTUSED : v_key_val(sp,ch))
CHAR_T max_special; /* Max special character. */
u_char /* Fast lookup table. */
special_key[MAX_FAST_KEY + 1];
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/line.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/line.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/line.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "$Id: line.c,v 10.22 2011/07/01 02:30:16 zy Exp $ (Berkeley) $Date: 2011/07/01 02:30:16 $";
+static const char sccsid[] = "$Id: line.c,v 10.24 2011/07/18 16:10:48 zy Exp $ (Berkeley) $Date: 2011/07/18 16:10:48 $";
#endif /* not lint */
#include <sys/types.h>
@@ -139,7 +139,7 @@
}
/* Look-aside into the cache, and see if the line we want is there. */
- if (0 && lno == ep->c_lno) {
+ if (lno == ep->c_lno) {
#if defined(DEBUG) && 0
TRACE(sp, "retrieve cached line %lu\n", (u_long)lno);
#endif
@@ -154,14 +154,11 @@
nocache:
nlen = 1024;
retry:
- /* data.size contains length in bytes */
- BINC_GOTO(sp, CHAR_T, ep->c_lp, ep->c_blen, nlen);
-
/* Get the line from the underlying database. */
key.data = &lno;
key.size = sizeof(lno);
switch (ep->db->get(ep->db, &key, &data, 0)) {
- case -1:
+ case -1:
goto err2;
case 1:
err1: if (LF_ISSET(DBG_FATAL))
@@ -176,23 +173,23 @@
if (data.size > nlen) {
nlen = data.size;
goto retry;
- } else
- memcpy(ep->c_lp, data.data, nlen);
+ }
}
if (FILE2INT(sp, data.data, data.size, wp, wlen)) {
- if (!F_ISSET(sp, SC_CONV_ERROR)) {
- F_SET(sp, SC_CONV_ERROR);
- msgq(sp, M_ERR, "324|Conversion error on line %d", lno);
- }
- goto err3;
+ if (!F_ISSET(sp, SC_CONV_ERROR)) {
+ F_SET(sp, SC_CONV_ERROR);
+ msgq(sp, M_ERR, "324|Conversion error on line %d", lno);
+ }
+ goto err3;
}
/* Reset the cache. */
if (wp != data.data) {
- BINC_GOTOW(sp, ep->c_lp, ep->c_blen, wlen);
- MEMCPYW(ep->c_lp, wp, wlen);
- }
+ BINC_GOTOW(sp, ep->c_lp, ep->c_blen, wlen);
+ MEMCPYW(ep->c_lp, wp, wlen);
+ } else
+ ep->c_lp = data.data;
ep->c_lno = lno;
ep->c_len = wlen;
@@ -547,30 +544,31 @@
key.size = sizeof(lno);
switch (ep->db->seq(ep->db, &key, &data, R_LAST)) {
- case 1:
- *lnop = 0;
- return (0);
case -1:
alloc_err:
- msgq(sp, M_DBERR, "007|unable to get last line");
+ msgq(sp, M_SYSERR, "007|unable to get last line");
*lnop = 0;
return (1);
- case 0:
+ case 1:
+ *lnop = 0;
+ return (0);
+ case 0:
;
}
memcpy(&lno, key.data, sizeof(lno));
if (lno != ep->c_lno) {
- FILE2INT(sp, data.data, data.size, wp, wlen);
+ FILE2INT(sp, data.data, data.size, wp, wlen);
- /* Fill the cache. */
- if (wp != data.data) {
- BINC_GOTOW(sp, ep->c_lp, ep->c_blen, wlen);
- MEMCPYW(ep->c_lp, wp, wlen);
- }
- ep->c_lno = lno;
- ep->c_len = wlen;
+ /* Fill the cache. */
+ if (wp != data.data) {
+ BINC_GOTOW(sp, ep->c_lp, ep->c_blen, wlen);
+ MEMCPYW(ep->c_lp, wp, wlen);
+ } else
+ ep->c_lp = data.data;
+ ep->c_lno = lno;
+ ep->c_len = wlen;
}
ep->c_nlines = lno;
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/mark.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -6,7 +6,7 @@
*
* See the LICENSE file for redistribution information.
*
- * $Id: mark.h,v 10.6 2011/07/04 14:41:51 zy Exp $ (Berkeley) $Date: 2011/07/04 14:41:51 $
+ * $Id: mark.h,v 10.7 2011/07/16 18:07:30 zy Exp $ (Berkeley) $Date: 2011/07/16 18:07:30 $
*/
/*
@@ -31,8 +31,7 @@
LIST_ENTRY(_lmark) q; /* Linked list of marks. */
recno_t lno; /* Line number. */
size_t cno; /* Column number. */
- /* XXXX Needed ? Can non ascii-chars be mark names ? */
- CHAR_T name; /* Mark name. */
+ char name; /* Mark name. */
#define MARK_DELETED 0x01 /* Mark was deleted. */
#define MARK_USERSET 0x02 /* User set this mark. */
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/msg.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/msg.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/msg.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -38,7 +38,7 @@
* of them by the message routines.
*/
typedef enum {
- M_NONE = 1, M_BERR, M_ERR, M_INFO, M_SYSERR, M_VINFO, M_DBERR } mtype_t;
+ M_NONE = 1, M_BERR, M_ERR, M_INFO, M_SYSERR, M_VINFO } mtype_t;
/*
* There are major problems with error messages being generated by routines
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/multibyte.h
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/multibyte.h Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/multibyte.h Tue Jul 19 00:00:44 2011 (r224426)
@@ -1,3 +1,14 @@
+/*-
+ * Copyright (c) 1992, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 1992, 1993, 1994, 1995, 1996
+ * Keith Bostic. All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ *
+ * $Id: multibyte.h,v 1.28 2011/07/16 18:40:01 zy Exp $ (Berkeley) $Date: 2011/07/16 18:40:01 $
+ */
+
#ifndef MULTIBYTE_H
#define MULTIBYTE_H
@@ -13,18 +24,15 @@
*
* If no integral type can hold a character, don't even try the port.
*/
-typedef u_int ARG_CHAR_T;
+typedef int ARG_CHAR_T;
#ifdef USE_WIDECHAR
#include <wchar.h>
#include <wctype.h>
-typedef wchar_t RCHAR_T;
-#define RCHAR_T_MAX ((1 << 24)-1)
typedef wchar_t CHAR_T;
-#define MAX_CHAR_T 0xffffff /* XXXX */
+#define MAX_CHAR_T 0x7fffffff
typedef u_int UCHAR_T;
-#define RCHAR_BIT 24
#define STRLEN wcslen
#define STRTOL wcstol
@@ -34,16 +42,14 @@
#define STRPBRK wcspbrk
#define TOUPPER towupper
#define STRSET wmemset
+#define VSPRINTF vswprintf
#define L(ch) L ## ch
#else
-typedef char RCHAR_T;
-#define RCHAR_T_MAX CHAR_MAX
typedef u_char CHAR_T;
#define MAX_CHAR_T 0xff
typedef u_char UCHAR_T;
-#define RCHAR_BIT CHAR_BIT
#define STRLEN strlen
#define STRTOL strtol
@@ -53,6 +59,7 @@
#define STRPBRK strpbrk
#define TOUPPER toupper
#define STRSET memset
+#define VSPRINTF vsnprintf
#define L(ch) ch
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/common/screen.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/common/screen.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/common/screen.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "$Id: screen.c,v 10.23 2011/06/26 23:11:11 zy Exp $ (Berkeley) $Date: 2011/06/26 23:11:11 $";
+static const char sccsid[] = "$Id: screen.c,v 10.24 2011/07/18 16:58:31 zy Exp $ (Berkeley) $Date: 2011/07/18 16:58:31 $";
#endif /* not lint */
#include <sys/types.h>
@@ -188,6 +188,8 @@
free(sp->repl);
if (sp->newl != NULL)
free(sp->newl);
+ if (sp->cw.b_c1 != NULL)
+ free(sp->cw.b_c1);
/* Free all the options */
opts_free(sp);
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_subst.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_subst.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_subst.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -353,7 +353,7 @@
int cflag, lflag, nflag, pflag, rflag;
int didsub, do_eol_match, eflags, empty_ok, eval;
int linechanged, matched, quit, rval;
- CHAR_T *p, *lb, *bp;
+ CHAR_T *bp, *lb;
enum nresult nret;
NEEDFILE(sp, cmdp);
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_visual.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_visual.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/ex/ex_visual.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -81,9 +81,9 @@
if (FL_ISSET(cmdp->iflags, E_C_COUNT))
len = snprintf(buf, sizeof(buf),
- "%luz%c%lu", sp->lno, pos, cmdp->count);
+ "%luz%c%lu", (u_long)sp->lno, pos, cmdp->count);
else
- len = snprintf(buf, sizeof(buf), "%luz%c", sp->lno, pos);
+ len = snprintf(buf, sizeof(buf), "%luz%c", (u_long)sp->lno, pos);
CHAR2INT(sp, buf, len, wp, wlen);
(void)v_event_push(sp, NULL, wp, wlen, CH_NOMAP | CH_QUOTED);
Modified: soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_line.c
==============================================================================
--- soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_line.c Mon Jul 18 22:00:21 2011 (r224425)
+++ soc2011/zy/nvi-iconv/head/contrib/nvi2/vi/vs_line.c Tue Jul 19 00:00:44 2011 (r224426)
@@ -139,7 +139,7 @@
cols_per_screen -= O_NUMBER_LENGTH;
if ((!dne || smp->lno == 1) && skip_cols == 0) {
nlen = snprintf((char*)cbuf,
- sizeof(cbuf), O_NUMBER_FMT, smp->lno);
+ sizeof(cbuf), O_NUMBER_FMT, (u_long)smp->lno);
(void)gp->scr_addstr(sp, (char*)cbuf, nlen);
}
}
@@ -532,7 +532,7 @@
break;
(void)gp->scr_move(sp, smp - HMAP, 0);
- len = snprintf(nbuf, sizeof(nbuf), O_NUMBER_FMT, smp->lno);
+ len = snprintf(nbuf, sizeof(nbuf), O_NUMBER_FMT, (u_long)smp->lno);
(void)gp->scr_addstr(sp, nbuf, len);
}
(void)gp->scr_move(sp, oldy, oldx);
More information about the svn-soc-all
mailing list