about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2011-05-09 09:49:08 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2011-05-09 09:49:08 +0000
commitd89361739acdf07f0b0775c85f69abe89d57b600 (patch)
treeded652c4758d749b718d72491a95f9f2acdf427d
parent70fd751a823ddc5fa9cfe696700edb5a4f2067bb (diff)
downloadzsh-d89361739acdf07f0b0775c85f69abe89d57b600.tar.gz
zsh-d89361739acdf07f0b0775c85f69abe89d57b600.tar.xz
zsh-d89361739acdf07f0b0775c85f69abe89d57b600.zip
29165: use term.h globally if needed at all.
-rw-r--r--ChangeLog14
-rw-r--r--Src/Modules/files.c16
-rw-r--r--Src/Modules/termcap.c23
-rw-r--r--Src/Modules/zpty.c4
-rw-r--r--Src/Zle/comp.h4
-rw-r--r--Src/Zle/complist.c132
-rw-r--r--Src/Zle/compmatch.c6
-rw-r--r--Src/Zle/compresult.c73
-rw-r--r--Src/Zle/computil.c29
-rw-r--r--Src/Zle/zle_refresh.c12
-rw-r--r--Src/Zle/zle_tricky.c38
-rw-r--r--Src/Zle/zle_utils.c6
-rw-r--r--Src/builtin.c2
-rw-r--r--Src/exec.c6
-rw-r--r--Src/glob.c4
-rw-r--r--Src/hashtable.c16
-rw-r--r--Src/init.c4
-rw-r--r--Src/jobs.c2
-rw-r--r--Src/loop.c6
-rw-r--r--Src/params.c12
-rw-r--r--Src/prompt.c6
-rw-r--r--Src/system.h24
-rw-r--r--Src/utils.c43
23 files changed, 254 insertions, 228 deletions
diff --git a/ChangeLog b/ChangeLog
index 51a07cbfe..42e9fbb5c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-05-09  Peter Stephenson  <pws@csr.com>
+
+	* 29165: Src/builtin.c, Src/exec.c, Src/glob.c, Src/hashtable.c,
+	Src/init.c, Src/jobs.c, Src/loop.c, Src/params.c, Src/prompt.c,
+	Src/system.h, Src/utils.c, Src/Modules/files.c,
+	Src/Modules/termcap.c, Src/Modules/zpty.c, Src/Zle/comp.h,
+	Src/Zle/complist.c, Src/Zle/compmatch.c, Src/Zle/compresult.c,
+	Src/Zle/computil.c, Src/Zle/zle_refresh.c, Src/Zle/zle_tricky.c,
+	Src/Zle/zle_utils.c: Use term.h globally if needed, instead of
+	just using in Modules and fudging the headers elsewhere.  Fix
+	various name clashes.
+
 2011-05-08  Barton E. Schaefer  <schaefer@zsh.org>
 
 	* users/15986 (belated commit): Src/Modules/curses.c: handle
@@ -14612,5 +14624,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5283 $
+* $Revision: 1.5284 $
 *****************************************************
diff --git a/Src/Modules/files.c b/Src/Modules/files.c
index 3fbccf576..f86b9c1e9 100644
--- a/Src/Modules/files.c
+++ b/Src/Modules/files.c
@@ -195,7 +195,7 @@ bin_rmdir(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
 static int
 bin_ln(char *nam, char **args, Options ops, int func)
 {
-    MoveFunc move;
+    MoveFunc movefn;
     int flags, have_dir, err = 0;
     char **a, *ptr, *rp, *buf;
     struct stat st;
@@ -203,7 +203,7 @@ bin_ln(char *nam, char **args, Options ops, int func)
 
 
     if(func == BIN_MV) {
-	move = (MoveFunc) rename;
+	movefn = (MoveFunc) rename;
 	flags = OPT_ISSET(ops,'f') ? 0 : MV_ASKNW;
 	flags |= MV_ATOMIC;
     } else {
@@ -212,11 +212,11 @@ bin_ln(char *nam, char **args, Options ops, int func)
 	if(OPT_ISSET(ops,'h') || OPT_ISSET(ops,'n'))
 	    flags |= MV_NOCHASETARGET;
 	if(OPT_ISSET(ops,'s'))
-	    move = (MoveFunc) symlink;
+	    movefn = (MoveFunc) symlink;
 	else
 #endif
 	{
-	    move = (MoveFunc) link;
+	    movefn = (MoveFunc) link;
 	    if(!OPT_ISSET(ops,'d'))
 		flags |= MV_NODIRS;
 	}
@@ -267,7 +267,7 @@ bin_ln(char *nam, char **args, Options ops, int func)
 	else
 	    args[1] = args[0];
     }
-    return domove(nam, move, args[0], args[1], flags);
+    return domove(nam, movefn, args[0], args[1], flags);
  havedir:
     buf = ztrdup(*a);
     *a = NULL;
@@ -283,7 +283,7 @@ bin_ln(char *nam, char **args, Options ops, int func)
 
 	buf[blen] = 0;
 	buf = appstr(buf, ptr);
-	err |= domove(nam, move, *args, buf, flags);
+	err |= domove(nam, movefn, *args, buf, flags);
     }
     zsfree(buf);
     return err;
@@ -291,7 +291,7 @@ bin_ln(char *nam, char **args, Options ops, int func)
 
 /**/
 static int
-domove(char *nam, MoveFunc move, char *p, char *q, int flags)
+domove(char *nam, MoveFunc movefn, char *p, char *q, int flags)
 {
     struct stat st;
     char *pbuf, *qbuf;
@@ -341,7 +341,7 @@ domove(char *nam, MoveFunc move, char *p, char *q, int flags)
 	if(doit && !(flags & MV_ATOMIC))
 	    unlink(qbuf);
     }
-    if(move(pbuf, qbuf)) {
+    if(movefn(pbuf, qbuf)) {
 	zwarnnam(nam, "%s: %e", p, errno);
 	zsfree(pbuf);
 	return 1;
diff --git a/Src/Modules/termcap.c b/Src/Modules/termcap.c
index 7367dade7..cd0e85885 100644
--- a/Src/Modules/termcap.c
+++ b/Src/Modules/termcap.c
@@ -35,34 +35,11 @@
  */
 #include "../../config.h"
 
-#ifdef HAVE_TGETENT
-# if defined(ZSH_HAVE_CURSES_H) && defined(ZSH_HAVE_TERM_H)
-#  define USES_TERM_H 1
-# else
-#  ifdef HAVE_TERMCAP_H
-#   define USES_TERMCAP_H 1
-#  endif
-# endif
-#endif
-
 #include "termcap.mdh"
 #include "termcap.pro"
 
 /**/
 #ifdef HAVE_TGETENT
-# ifdef USES_TERM_H
-#  ifdef HAVE_TERMIO_H
-#   include <termio.h>
-#  endif
-#  ifdef ZSH_HAVE_CURSES_H
-#   include "../zshcurses.h"
-#  endif
-#  include "../zshterm.h"
-# else
-#  ifdef USES_TERMCAP_H
-#   include <termcap.h>
-#  endif
-# endif
 
 #ifndef HAVE_BOOLCODES
 static char *boolcodes[] = {
diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c
index 2a81e68cb..25ec7dfea 100644
--- a/Src/Modules/zpty.c
+++ b/Src/Modules/zpty.c
@@ -351,8 +351,8 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock)
 	    struct ttyinfo info;
 
 	    if (ioctl(slave, TIOCGWINSZ, (char *) &info.winsize) == 0) {
-		info.winsize.ws_row = lines;
-		info.winsize.ws_col = columns;
+		info.winsize.ws_row = zterm_lines;
+		info.winsize.ws_col = zterm_columns;
 		ioctl(slave, TIOCSWINSZ, (char *) &info.winsize);
 	    }
 	}
diff --git a/Src/Zle/comp.h b/Src/Zle/comp.h
index e96c4217c..a8be74d03 100644
--- a/Src/Zle/comp.h
+++ b/Src/Zle/comp.h
@@ -323,8 +323,8 @@ struct cadata {
 typedef struct cldata *Cldata;
 
 struct cldata {
-    int columns;		/* screen width */
-    int lines;			/* screen height */
+    int zterm_columns;		/* screen width */
+    int zterm_lines;		/* screen height */
     int menuacc;		/* value of global menuacc */
     int valid;			/* no need to calculate anew */
     int nlist;			/* number of matches to list */
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index c253daa4c..6d0da448c 100644
--- a/Src/Zle/complist.c
+++ b/Src/Zle/complist.c
@@ -656,7 +656,7 @@ clprintfmt(char *p, int ml)
 		tcout(TCCLEAREOL);
 	    cc = 0;
 	}
-	if (ml == mlend - 1 && (cc % columns) == columns - 1)
+	if (ml == mlend - 1 && (cc % zterm_columns) == zterm_columns - 1)
 	    return 0;
 
 	if (*p == Meta) {
@@ -664,9 +664,9 @@ clprintfmt(char *p, int ml)
 	    putc(*p ^ 32, shout);
 	} else
 	    putc(*p, shout);
-	if ((beg = !(cc % columns)))
+	if ((beg = !(cc % zterm_columns)))
 	    ml++;
-	if (mscroll && !(cc % columns) &&
+	if (mscroll && !(cc % zterm_columns) &&
 	    !--mrestlines && (ask = asklistscroll(ml)))
 	    return ask;
     }
@@ -765,7 +765,7 @@ clnicezputs(int do_colors, char *s, int ml)
 	    /* Input is metafied... */
 	    int nc = (*t == Meta) ? STOUC(*++t ^ 32) : STOUC(*t);
 	    /* Is the screen full? */
-	    if (ml == mlend - 1 && col == columns - 1) {
+	    if (ml == mlend - 1 && col == zterm_columns - 1) {
 		mlprinted = ml - oml;
 		return 0;
 	    }
@@ -787,13 +787,13 @@ clnicezputs(int do_colors, char *s, int ml)
 	     * There might be problems with characters of printing width
 	     * greater than one here.
 	     */
-	    if (col > columns) {
+	    if (col > zterm_columns) {
 		ml++;
 		if (mscroll && !--mrestlines && (ask = asklistscroll(ml))) {
 		    mlprinted = ml - oml;
 		    return ask;
 		}
-		col -= columns;
+		col -= zterm_columns;
 		if (do_colors)
 		    fputs(" \010", shout);
 	    }
@@ -820,12 +820,12 @@ clnicezputs(int do_colors, char *s, int ml)
 
 	for (t = nicechar(cc); *t; t++) {
 	    int nc = (*t == Meta) ? STOUC(*++t ^ 32) : STOUC(*t);
-	    if (ml == mlend - 1 && col == columns - 1) {
+	    if (ml == mlend - 1 && col == zterm_columns - 1) {
 		mlprinted = ml - oml;
 		return 0;
 	    }
 	    putc(nc, shout);
-	    if (++col > columns) {
+	    if (++col > zterm_columns) {
 		ml++;
 		if (mscroll && !--mrestlines && (ask = asklistscroll(ml))) {
 		    mlprinted = ml - oml;
@@ -991,7 +991,7 @@ asklistscroll(int ml)
 		   !strcmp(cmd->nam, "expand-or-complete-prefix") ||
 		   !strcmp(cmd->nam, "menu-complete") ||
 	     !strcmp(cmd->nam, "menu-expand-or-complete"))
-	mrestlines = lines - 1;
+	mrestlines = zterm_lines - 1;
     else if (cmd == Th(z_acceptsearch))
 	ret = 1;
     else {
@@ -1001,7 +1001,7 @@ asklistscroll(int ml)
     selectlocalmap(NULL);
     settyinfo(&shttyinfo);
     putc('\r', shout);
-    for (i = columns - 1; i-- > 0; )
+    for (i = zterm_columns - 1; i-- > 0; )
 	putc(' ', shout);
     putc('\r', shout);
 
@@ -1213,8 +1213,8 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 		    /* nc only contains ASCII text */
 		    int l = strlen(nc);
 
-		    if (l + cc > columns - 2)
-			nc[l -= l + cc - (columns - 2)] = '\0';
+		    if (l + cc > zterm_columns - 2)
+			nc[l -= l + cc - (zterm_columns - 2)] = '\0';
 		    fputs(nc, shout);
 		    cc += l;
 		} else if (dopr && m == 1) {
@@ -1230,16 +1230,17 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 	} else {
 	    cc += width;
 
-	    if ((cc >= columns - 2 || cchar == ZWC('\n')) && stat)
+	    if ((cc >= zterm_columns - 2 || cchar == ZWC('\n')) && stat)
 		dopr = 2;
 	    if (cchar == ZWC('\n')) {
 		if (dopr == 1 && mlbeg >= 0 && tccan(TCCLEAREOL))
 		    tcout(TCCLEAREOL);
-		l += 1 + ((cc - 1) / columns);
+		l += 1 + ((cc - 1) / zterm_columns);
 		cc = 0;
 	    }
 	    if (dopr == 1) {
-		if (ml == mlend - 1 && (cc % columns) == columns - 1) {
+		if (ml == mlend - 1 && (cc % zterm_columns) ==
+		    zterm_columns - 1) {
 		    dopr = 0;
 		    p += len;
 		    continue;
@@ -1256,7 +1257,7 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 		 * TODO: the following doesn't allow for
 		 * character widths greater than 1.
 		 */
-		if ((beg = !(cc % columns)) && !stat) {
+		if ((beg = !(cc % zterm_columns)) && !stat) {
 		    ml++;
                     fputs(" \010", shout);
                 }
@@ -1264,7 +1265,7 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 		    *stop = 1;
 		    if (stat && n)
 			mfirstl = -1;
-		    mlprinted = l + (cc ? ((cc-1) / columns) : 0);
+		    mlprinted = l + (cc ? ((cc-1) / zterm_columns) : 0);
 		    return mlprinted;
 		}
 	    }
@@ -1273,7 +1274,7 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 	}
     }
     if (dopr) {
-        if (!(cc % columns))
+        if (!(cc % zterm_columns))
             fputs(" \010", shout);
         if (mlbeg >= 0 && tccan(TCCLEAREOL))
             tcout(TCCLEAREOL);
@@ -1285,7 +1286,7 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
      * *Not* subtracting 1 from cc at this point appears to be
      * correct.  C.f. printfmt in zle_tricky.c.
      */
-    mlprinted = l + (cc / columns);
+    mlprinted = l + (cc / zterm_columns);
     return mlprinted;
 }
 
@@ -1309,7 +1310,7 @@ compzputs(char const *s, int ml)
 	putc(c, shout);
 	if (c == '\n' && mlbeg >= 0 && tccan(TCCLEAREOL))
 	    tcout(TCCLEAREOL);
-	if (mscroll && (++col == columns || c == '\n')) {
+	if (mscroll && (++col == zterm_columns || c == '\n')) {
 	    ml++;
 	    if (!--mrestlines && (ask = asklistscroll(ml)))
 		return ask;
@@ -1344,10 +1345,11 @@ compprintlist(int showall)
 	lastml = 0;
 	lastnlnct = -1;
     }
-    cl = (listdat.nlines > lines - nlnct - mhasstat ?
-	  lines - nlnct - mhasstat : listdat.nlines) - (lastnlnct > nlnct);
+    cl = (listdat.nlines > zterm_lines - nlnct - mhasstat ?
+	  zterm_lines - nlnct - mhasstat :
+	  listdat.nlines) - (lastnlnct > nlnct);
     lastnlnct = nlnct;
-    mrestlines = lines - 1;
+    mrestlines = zterm_lines - 1;
     lastinvcount = invcount;
 
     if (cl < 2) {
@@ -1643,20 +1645,20 @@ compprintlist(int showall)
 	/* Move the cursor up to the prompt, if always_last_prompt *
 	 * is set and all that...                                  */
 	if (mlbeg >= 0) {
-	    if ((nl = listdat.nlines + nlnct) >= lines) {
+	    if ((nl = listdat.nlines + nlnct) >= zterm_lines) {
 		if (mhasstat) {
 		    putc('\n', shout);
 		    compprintfmt(NULL, 0, 1, 1, mline, NULL);
                     mstatprinted = 1;
 		}
-		nl = lines - 1;
+		nl = zterm_lines - 1;
 	    } else
 		nl--;
 	    tcmultout(TCUP, TCMULTUP, nl);
 	    showinglist = -1;
 
 	    lastlistlen = listdat.nlines;
-	} else if ((nl = listdat.nlines + nlnct - 1) < lines) {
+	} else if ((nl = listdat.nlines + nlnct - 1) < zterm_lines) {
 	    if (mlbeg >= 0 && tccan(TCCLEAREOL))
 		tcout(TCCLEAREOL);
 	    tcmultout(TCUP, TCMULTUP, nl);
@@ -1666,12 +1668,12 @@ compprintlist(int showall)
 	} else {
 	    clearflag = 0;
 	    if (!asked) {
-		mrestlines = (ml + nlnct > lines);
+		mrestlines = (ml + nlnct > zterm_lines);
 		compprintnl(ml);
 	    }
 	}
     } else if (!asked) {
-	mrestlines = (ml + nlnct > lines);
+	mrestlines = (ml + nlnct > zterm_lines);
 	compprintnl(ml);
     }
     listshown = (clearflag ? 1 : -1);
@@ -1789,7 +1791,7 @@ clprintm(Cmgroup g, Cmatch *mp, int mc, int ml, int lastc, int width)
 	if (!dolist(ml)) {
 	    int nc = ZMB_nicewidth(m->disp ? m->disp : m->str);
 	    if (nc)
-		mlprinted = (nc-1) / columns;
+		mlprinted = (nc-1) / zterm_columns;
 	    else
 		mlprinted = 0;
 	    return 0;
@@ -1831,7 +1833,7 @@ clprintm(Cmgroup g, Cmatch *mp, int mc, int ml, int lastc, int width)
 	    return 1;
 	}
 	len = ZMB_nicewidth(m->disp ? m->disp : m->str);
-	mlprinted = len ? (len-1) / columns : 0;
+	mlprinted = len ? (len-1) / zterm_columns : 0;
 
 	modec = (mcolors.flags & LC_FOLLOW_SYMLINKS) ? m->fmodec : m->modec;
 	if ((g->flags & CGF_FILES) && modec) {
@@ -1864,9 +1866,11 @@ static int
 singlecalc(int *cp, int l, int *lcp)
 {
     int c = *cp, n, j, first = 1;
-    Cmatch **p, *op, *mp = mtab[l * columns + c];
+    Cmatch **p, *op, *mp = mtab[l * zterm_columns + c];
 
-    for (n = 0, j = c, p = mtab + l * columns + c, op = NULL; j >= 0; j--, p--) {
+    for (n = 0, j = c, p = mtab + l * zterm_columns + c, op = NULL;
+	 j >= 0;
+	 j--, p--) {
         if (*p == mp)
             c = j;
         if (!first && *p != op)
@@ -1876,7 +1880,7 @@ singlecalc(int *cp, int l, int *lcp)
     }
     *cp = c;
     *lcp = 1;
-    for (p = mtab + l * columns + c; c < columns; c++, p++)
+    for (p = mtab + l * zterm_columns + c; c < zterm_columns; c++, p++)
         if (*p && mp != *p)
             *lcp = 0;
 
@@ -1906,9 +1910,9 @@ singledraw()
         tc_downcurs(md1);
     if (mc1)
         tcmultout(TCRIGHT, TCMULTRIGHT, mc1);
-    DPUTS(ml1 * columns + mc1 >= mgtabsize, "BUG: invalid position");
-    g = mgtab[ml1 * columns + mc1];
-    clprintm(g, mtab[ml1 * columns + mc1], mcc1, ml1, lc1,
+    DPUTS(ml1 * zterm_columns + mc1 >= mgtabsize, "BUG: invalid position");
+    g = mgtab[ml1 * zterm_columns + mc1];
+    clprintm(g, mtab[ml1 * zterm_columns + mc1], mcc1, ml1, lc1,
              (g->widths ? g->widths[mcc1] : g->width));
     if (mlprinted)
 	(void) tcmultout(TCUP, TCMULTUP, mlprinted);
@@ -1918,20 +1922,20 @@ singledraw()
         tc_downcurs(md2 - md1);
     if (mc2)
         tcmultout(TCRIGHT, TCMULTRIGHT, mc2);
-    DPUTS(ml2 * columns + mc2 >= mgtabsize, "BUG: invalid position");
-    g = mgtab[ml2 * columns + mc2];
-    clprintm(g, mtab[ml2 * columns + mc2], mcc2, ml2, lc2,
+    DPUTS(ml2 * zterm_columns + mc2 >= mgtabsize, "BUG: invalid position");
+    g = mgtab[ml2 * zterm_columns + mc2];
+    clprintm(g, mtab[ml2 * zterm_columns + mc2], mcc2, ml2, lc2,
              (g->widths ? g->widths[mcc2] : g->width));
     if (mlprinted)
 	(void) tcmultout(TCUP, TCMULTUP, mlprinted);
     putc('\r', shout);
 
     if (mstatprinted) {
-        int i = lines - md2 - nlnct;
+        int i = zterm_lines - md2 - nlnct;
 
         tc_downcurs(i - 1);
         compprintfmt(NULL, 0, 1, 1, mline, NULL);
-        tcmultout(TCUP, TCMULTUP, lines - 1);
+        tcmultout(TCUP, TCMULTUP, zterm_lines - 1);
     } else
         tcmultout(TCUP, TCMULTUP, md2 + nlnct);
 
@@ -1951,7 +1955,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 
     noselect = 0;
 
-    if ((minfo.asked == 2 && mselect < 0) || nlnct >= lines) {
+    if ((minfo.asked == 2 && mselect < 0) || nlnct >= zterm_lines) {
 	showinglist = 0;
 	amatches = oamatches;
 	return (noselect = 1);
@@ -1971,7 +1975,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 
     getcols();
 
-    mnew = ((calclist(mselect >= 0) || mlastcols != columns ||
+    mnew = ((calclist(mselect >= 0) || mlastcols != zterm_columns ||
 	     mlastlines != listdat.nlines) && mselect >= 0);
 
     if (!listdat.nlines || (mselect >= 0 &&
@@ -2006,7 +2010,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 	    mscroll = 1;
 	} else {
 	    clearflag = 1;
-	    minfo.asked = (listdat.nlines + nlnct <= lines);
+	    minfo.asked = (listdat.nlines + nlnct <= zterm_lines);
 	}
     } else {
 	unqueue_signals();
@@ -2019,7 +2023,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 	}
     }
     if (mlbeg >= 0) {
-	mlend = mlbeg + lines - nlnct - mhasstat;
+	mlend = mlbeg + zterm_lines - nlnct - mhasstat;
 	while (mline >= mlend)
 	    mlbeg++, mlend++;
     } else
@@ -2030,7 +2034,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 
     	mtab_been_reallocated = 1;
 
-	i = columns * listdat.nlines;
+	i = zterm_columns * listdat.nlines;
 	free(mtab);
 	mtab = (Cmatch **) zalloc(i * sizeof(Cmatch **));
 	memset(mtab, 0, i * sizeof(Cmatch **));
@@ -2040,7 +2044,7 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 	mgtabsize = i;
 #endif
 	memset(mgtab, 0, i * sizeof(Cmgroup));
-	mlastcols = mcols = columns;
+	mlastcols = mcols = zterm_columns;
 	mlastlines = mlines = listdat.nlines;
     }
     last_cap = (char *) zhalloc(max_caplen + 1);
@@ -2067,13 +2071,13 @@ complistmatches(UNUSED(Hookdef dummy), Chdata dat)
 static int
 adjust_mcol(int wish, Cmatch ***tabp, Cmgroup **grp)
 {
-    Cmatch **tab = *tabp;
+    Cmatch **matchtab = *tabp;
     int p, n, c;
 
-    tab -= mcol;
+    matchtab -= mcol;
 
-    for (p = wish; p >= 0 && (!tab[p] || mmarked(tab[p])); p--);
-    for (n = wish; n < mcols && (!tab[n] || mmarked(tab[n])); n++);
+    for (p = wish; p >= 0 && (!matchtab[p] || mmarked(matchtab[p])); p--);
+    for (n = wish; n < mcols && (!matchtab[n] || mmarked(matchtab[n])); n++);
     if (n == mcols)
 	n = -1;
 
@@ -2086,7 +2090,7 @@ adjust_mcol(int wish, Cmatch ***tabp, Cmgroup **grp)
     else
 	c = ((mcol - p) < (n - mcol) ? p : n);
 
-    *tabp = tab + c;
+    *tabp = matchtab + c;
     if (grp)
 	*grp = *grp + c - mcol;
 
@@ -2177,7 +2181,7 @@ setmstatus(char *status, char *sline, int sll, int scs,
     }
     pl = strlen(p);
     sl = strlen(s);
-    max = (columns < MAX_STATUS ? columns : MAX_STATUS) - 14;
+    max = (zterm_columns < MAX_STATUS ? zterm_columns : MAX_STATUS) - 14;
 
     if (max > 12) {
         int h = (max - 2) >> 1;
@@ -2394,9 +2398,9 @@ domenuselect(Hookdef dummy, Chdata dat)
     
     if ((s = getsparam("MENUSCROLL"))) {
 	if (!(step = mathevali(s)))
-	    step = (lines - nlnct) >> 1;
+	    step = (zterm_lines - nlnct) >> 1;
 	else if (step < 0)
-	    if ((step += lines - nlnct) < 0)
+	    if ((step += zterm_lines - nlnct) < 0)
 		step = 1;
     }
     if ((s = getsparam("MENUMODE"))) {
@@ -2473,34 +2477,34 @@ domenuselect(Hookdef dummy, Chdata dat)
 	    }
 
 	if (mlbeg && lbeg != mlbeg) {
-	    Cmatch **p = mtab + ((mlbeg - 1) * columns), **q;
+	    Cmatch **p = mtab + ((mlbeg - 1) * zterm_columns), **q;
 	    int c;
 
 	    while (mlbeg) {
-		for (q = p, c = columns; c > 0; q++, c--)
+		for (q = p, c = zterm_columns; c > 0; q++, c--)
 		    if (*q && !mmarked(*q))
 			break;
 		if (c)
 		    break;
-		p -= columns;
+		p -= zterm_columns;
 		mlbeg--;
 	    }
 	}
-	if ((space = lines - pl - mhasstat))
+	if ((space = zterm_lines - pl - mhasstat))
 	    while (mline >= mlbeg + space)
 		if ((mlbeg += step) + space > mlines)
 		    mlbeg = mlines - space;
 	if (lbeg != mlbeg) {
-	    Cmatch **p = mtab + (mlbeg * columns), **q;
+	    Cmatch **p = mtab + (mlbeg * zterm_columns), **q;
 	    int c;
 
 	    while (mlbeg < mlines) {
-		for (q = p, c = columns; c > 0; q++, c--)
+		for (q = p, c = zterm_columns; c > 0; q++, c--)
 		    if (*q)
 			break;
 		if (c)
 		    break;
-		p += columns;
+		p += zterm_columns;
 		mlbeg++;
 	    }
 	}
@@ -2955,7 +2959,7 @@ domenuselect(Hookdef dummy, Chdata dat)
 		   cmd == Th(z_viforwardword) ||
 		   cmd == Th(z_viforwardwordend) ||
 		   cmd == Th(z_forwardword)) {
-	    int i = lines - pl - 1, oi = i, ll = 0;
+	    int i = zterm_lines - pl - 1, oi = i, ll = 0;
 	    Cmatch **lp = NULL;
 
             mode = 0;
@@ -2983,7 +2987,7 @@ domenuselect(Hookdef dummy, Chdata dat)
 	} else if (cmd == Th(z_emacsbackwardword) ||
 		   cmd == Th(z_vibackwardword) ||
 		   cmd == Th(z_backwardword)) {
-	    int i = lines - pl - 1, oi = i, ll = 0;
+	    int i = zterm_lines - pl - 1, oi = i, ll = 0;
 	    Cmatch **lp = NULL;
 
             mode = 0;
diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c
index b59f5a2e1..4cd3b9ffe 100644
--- a/Src/Zle/compmatch.c
+++ b/Src/Zle/compmatch.c
@@ -1268,7 +1268,7 @@ pattern_match_equivalence(Cpattern lp, convchar_t wind, int wmtp,
 /**/
 static int
 pattern_match_restrict(Cpattern p, Cpattern wp, convchar_t *wsc, int wsclen,  
-		       Cpattern prestrict, ZLE_STRING_T newline)
+		       Cpattern prestrict, ZLE_STRING_T new_line)
 {
     convchar_t c;
     convchar_t ind, wind;
@@ -1356,7 +1356,7 @@ pattern_match_restrict(Cpattern p, Cpattern wp, convchar_t *wsc, int wsclen,
 	}
 
 	/* We need to assemble the line */
-	*newline++ = (ZLE_CHAR_T)c;
+	*new_line++ = (ZLE_CHAR_T)c;
 	prestrict = prestrict->next;
 	wsc++;
 	wsclen--;
@@ -1393,7 +1393,7 @@ pattern_match_restrict(Cpattern p, Cpattern wp, convchar_t *wsc, int wsclen,
 	if (!pattern_match1(p, c, &mt))
 	    return 0;
 	p = p->next;
-	*newline++ = (ZLE_CHAR_T)c;
+	*new_line++ = (ZLE_CHAR_T)c;
 	prestrict = prestrict->next;
     }
 
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index 0389b52a2..f2729a0fe 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -1473,13 +1473,14 @@ calclist(int showall)
     if (lastinvcount == invcount &&
 	listdat.valid && onlyexpl == listdat.onlyexpl &&
 	menuacc == listdat.menuacc && showall == listdat.showall &&
-	lines == listdat.lines && columns == listdat.columns)
+	zterm_lines == listdat.zterm_lines &&
+	zterm_columns == listdat.zterm_columns)
 	return 0;
     lastinvcount = invcount;
 
     for (g = amatches; g; g = g->next) {
 	char **pp = g->ylist;
-	int nl = 0, l, glong = 1, gshort = columns, ndisp = 0, totl = 0;
+	int nl = 0, l, glong = 1, gshort = zterm_columns, ndisp = 0, totl = 0;
         int hasf = 0;
 
 	g->flags |= CGF_PACKED | CGF_ROWS;
@@ -1495,7 +1496,7 @@ calclist(int showall)
 	    /* We have an ylist, lets see, if it contains newlines. */
 	    hidden = 1;
 	    while (!nl && *pp) {
-                if (MB_METASTRWIDTH(*pp) >= columns)
+                if (MB_METASTRWIDTH(*pp) >= zterm_columns)
                     nl = 1;
                 else
                     nl = !!strchr(*pp++, '\n');
@@ -1511,11 +1512,12 @@ calclist(int showall)
 		    while (*sptr) {
 			if ((nlptr = strchr(sptr, '\n'))) {
 			    *nlptr = '\0';
-			    nlines += 1 + (MB_METASTRWIDTH(sptr)-1) / columns;
+			    nlines += 1 + (MB_METASTRWIDTH(sptr)-1) /
+				zterm_columns;
 			    *nlptr = '\n';
 			    sptr = nlptr + 1;
 			} else {
-			    nlines += (MB_METASTRWIDTH(sptr)-1) / columns;
+			    nlines += (MB_METASTRWIDTH(sptr)-1) / zterm_columns;
 			    break;
 			}
 		    }
@@ -1607,7 +1609,7 @@ calclist(int showall)
 	g->dcount = ndisp;
 	g->width = glong + CM_SPACE;
 	g->shortest = gshort + CM_SPACE;
-	if ((g->cols = columns / g->width) > g->dcount)
+	if ((g->cols = zterm_columns / g->width) > g->dcount)
 	    g->cols = g->dcount;
 	if (g->cols) {
 	    i = g->cols * g->width - CM_SPACE;
@@ -1636,9 +1638,10 @@ calclist(int showall)
 		    } else {
 			g->cols = 1;
 			g->width = 1;
-			
+
 			while (*pp)
-			    glines += 1 + (MB_METASTRWIDTH(*pp++) / columns);
+			    glines += 1 + (MB_METASTRWIDTH(*pp++) /
+					   zterm_columns);
 		    }
 		}
 	    } else {
@@ -1650,15 +1653,17 @@ calclist(int showall)
 		} else if (!(g->flags & CGF_LINES)) {
 		    g->cols = 1;
 		    g->width = 0;
-		    
+
 		    for (p = g->matches; (m = *p); p++)
 			if (!(m->flags & CMF_HIDE)) {
 			    if (m->disp) {
 				if (!(m->flags & CMF_DISPLINE))
-				    glines += 1 + ((mlens[m->gnum] - 1) / columns);
+				    glines += 1 + ((mlens[m->gnum] - 1) /
+						   zterm_columns);
 			    } else if (showall ||
 				       !(m->flags & (CMF_NOLIST | CMF_MULT)))
-				glines += 1 + (((mlens[m->gnum]) - 1) / columns);
+				glines += 1 + (((mlens[m->gnum]) - 1) /
+					       zterm_columns);
 			}
 		}
 	    }
@@ -1669,8 +1674,8 @@ calclist(int showall)
 	    if (!(g->flags & CGF_PACKED))
 		continue;
 
-	    ws = g->widths = (int *) zalloc(columns * sizeof(int));
-	    memset(ws, 0, columns * sizeof(int));
+	    ws = g->widths = (int *) zalloc(zterm_columns * sizeof(int));
+	    memset(ws, 0, zterm_columns * sizeof(int));
 	    tlines = g->lins;
 	    tcols = g->cols;
 	    width = 0;
@@ -1686,14 +1691,14 @@ calclist(int showall)
 		    if (g->flags & CGF_ROWS) {
                         int nth, tcol, len;
 
-                        for (tcols = columns / (g->shortest + CM_SPACE);
+                        for (tcols = zterm_columns / (g->shortest + CM_SPACE);
                              tcols > g->cols;
                              tcols--) {
 
                             memset(ws, 0, tcols * sizeof(int));
 
                             for (width = nth = tcol = 0, tlines = 1;
-                                 width < columns && nth < g->dcount;
+                                 width < zterm_columns && nth < g->dcount;
                                  nth++, tcol++) {
 
                                 m = *p;
@@ -1709,13 +1714,13 @@ calclist(int showall)
                                     ws[tcol] = len;
                                 }
                             }
-                            if (width < columns)
+                            if (width < zterm_columns)
                                 break;
                         }
 		    } else {
                         int nth, tcol, tline, len;
 
-                        for (tcols = columns / (g->shortest + CM_SPACE);
+                        for (tcols = zterm_columns / (g->shortest + CM_SPACE);
                              tcols > g->cols;
                              tcols--) {
 
@@ -1725,7 +1730,7 @@ calclist(int showall)
                             memset(ws, 0, tcols * sizeof(int));
 
                             for (width = nth = tcol = tline = 0;
-                                 width < columns && nth < g->dcount;
+                                 width < zterm_columns && nth < g->dcount;
                                  nth++, tline++) {
 
                                 m = *p;
@@ -1745,7 +1750,7 @@ calclist(int showall)
                                     ws[tcol] = len;
                                 }
                             }
-                            if (width < columns)
+                            if (width < zterm_columns)
                                 break;
                         }
 		    }
@@ -1754,7 +1759,7 @@ calclist(int showall)
 		if (g->flags & CGF_ROWS) {
                     int nth, tcol, len;
 
-                    for (tcols = columns / (g->shortest + CM_SPACE);
+                    for (tcols = zterm_columns / (g->shortest + CM_SPACE);
                          tcols > g->cols;
                          tcols--) {
 
@@ -1762,7 +1767,7 @@ calclist(int showall)
 
                         for (width = nth = tcol = 0, tlines = 1,
                              p = skipnolist(g->matches, showall);
-                             *p && width < columns && nth < g->dcount;
+                             *p && width < zterm_columns && nth < g->dcount;
                              nth++, p = skipnolist(p + 1, showall), tcol++) {
 
                             m = *p;
@@ -1779,13 +1784,13 @@ calclist(int showall)
                                 ws[tcol] = len;
                             }
                         }
-                        if (width < columns)
+                        if (width < zterm_columns)
                             break;
                     }
 		} else {
                     int nth, tcol, tline, len;
 
-                    for (tcols = columns / (g->shortest + CM_SPACE);
+                    for (tcols = zterm_columns / (g->shortest + CM_SPACE);
                          tcols > g->cols;
                          tcols--) {
 
@@ -1796,7 +1801,7 @@ calclist(int showall)
 
                         for (width = nth = tcol = tline = 0,
                              p = skipnolist(g->matches, showall);
-                             *p && width < columns && nth < g->dcount;
+                             *p && width < zterm_columns && nth < g->dcount;
                              nth++, p = skipnolist(p + 1, showall), tline++) {
 
                             m = *p;
@@ -1817,7 +1822,7 @@ calclist(int showall)
                                 ws[tcol] = len;
                             }
                         }
-                        if (width < columns) {
+                        if (width < zterm_columns) {
                             if (++tcol < tcols)
                                 tcols = tcol;
                             break;
@@ -1828,7 +1833,7 @@ calclist(int showall)
             if (tcols <= g->cols)
                 tlines = g->lins;
 	    if (tlines == g->lins) {
-		zfree(ws, columns * sizeof(int));
+		zfree(ws, zterm_columns * sizeof(int));
 		g->widths = NULL;
 	    } else {
 		nlines += tlines - g->lins;
@@ -1862,8 +1867,8 @@ calclist(int showall)
     listdat.nlines = nlines;
     listdat.menuacc = menuacc;
     listdat.onlyexpl = onlyexpl;
-    listdat.columns = columns;
-    listdat.lines = lines;
+    listdat.zterm_columns = zterm_columns;
+    listdat.zterm_lines = zterm_lines;
     listdat.showall = showall;
 
     return 1;
@@ -1884,7 +1889,7 @@ asklist(void)
     if ((!minfo.cur || !minfo.asked) &&
 	((complistmax > 0 && listdat.nlist >= complistmax) ||
 	 (complistmax < 0 && listdat.nlines <= -complistmax) ||
-	 (!complistmax && listdat.nlines >= lines))) {
+	 (!complistmax && listdat.nlines >= zterm_lines))) {
 	int qup, l;
 
 	zsetterm();
@@ -1893,7 +1898,7 @@ asklist(void)
 		     listdat.nlist, listdat.nlines) :
 	     fprintf(shout, "zsh: do you wish to see all %d lines? ",
 		     listdat.nlines));
-	qup = ((l + columns - 1) / columns) - 1;
+	qup = ((l + zterm_columns - 1) / zterm_columns) - 1;
 	fflush(shout);
 	if (!getzlequery()) {
 	    if (clearflag) {
@@ -1987,7 +1992,7 @@ printlist(int over, CLPrintFunc printm, int showall)
 		while ((p = *pp++)) {
 		    zputs(p, shout);
 		    if (*pp) {
-                        if (MB_METASTRWIDTH(p) % columns)
+                        if (MB_METASTRWIDTH(p) % zterm_columns)
                             putc('\n', shout);
                         else
                             fputs(" \010", shout);
@@ -2113,7 +2118,7 @@ printlist(int over, CLPrintFunc printm, int showall)
     if (clearflag) {
 	/* Move the cursor up to the prompt, if always_last_prompt *
 	 * is set and all that...                                  */
-	if ((ml = listdat.nlines + nlnct - 1) < lines) {
+	if ((ml = listdat.nlines + nlnct - 1) < zterm_lines) {
 	    tcmultout(TCUP, TCMULTUP, ml);
 	    showinglist = -1;
 
@@ -2134,8 +2139,8 @@ bld_all_str(Cmatch all)
 {
     Cmgroup g;
     Cmatch *mp, m;
-    int len = columns - 5, t, add = 0;
-    VARARR(char, buf, columns + 1);
+    int len = zterm_columns - 5, t, add = 0;
+    VARARR(char, buf, zterm_columns + 1);
 
     buf[0] = '\0';
 
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index 0cc9d7400..e5a99485c 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -226,8 +226,8 @@ cd_prep()
     runp = &(cd_state.runs);
 
     if (cd_state.groups) {
-        int lines = cd_state.groups + cd_state.descs;
-        VARARR(Cdstr, grps, lines);
+        int preplines = cd_state.groups + cd_state.descs;
+        VARARR(Cdstr, grps, preplines);
         VARARR(int, wids, cd_state.maxg);
         Cdstr gs, gp, gn, *gpp;
         int i, j, d;
@@ -275,7 +275,7 @@ cd_prep()
         if (cd_state.gprew > cd_state.maxmlen && cd_state.maxglen > 1)
             return 1;
 
-	for (i = 0; i < lines; i++) {
+	for (i = 0; i < preplines; i++) {
 	    Cdstr s = grps[i];
 	    int dummy;
 
@@ -283,9 +283,9 @@ cd_prep()
 	    unmetafy(s->sortstr, &dummy);
 	}
 
-        qsort(grps, lines, sizeof(Cdstr), cd_sort);
+        qsort(grps, preplines, sizeof(Cdstr), cd_sort);
 
-        for (i = lines, strp = grps; i > 1; i--, strp++) {
+        for (i = preplines, strp = grps; i > 1; i--, strp++) {
             strp2 = strp + 1;
             if (!strcmp((*strp)->desc, (*strp2)->desc))
                 continue;
@@ -303,9 +303,9 @@ cd_prep()
         expl =  (Cdrun) zalloc(sizeof(*run));
         expl->type = CRT_EXPL;
         expl->strs = grps[0];
-        expl->count = lines;
+        expl->count = preplines;
 
-        for (i = lines, strp = grps, strp2 = NULL; i; i--, strp++) {
+        for (i = preplines, strp = grps, strp2 = NULL; i; i--, strp++) {
             str = *strp;
             *strp = str->other;
             if (strp2)
@@ -321,7 +321,7 @@ cd_prep()
         *strp2 = NULL;
 
         for (i = cd_state.maxg - 1; i; i--) {
-            for (d = 0, j = lines, strp = grps; j; j--, strp++) {
+            for (d = 0, j = preplines, strp = grps; j; j--, strp++) {
                 if ((str = *strp)) {
                     if (d) {
                         *runp = run = (Cdrun) zalloc(sizeof(*run));
@@ -465,7 +465,7 @@ cd_init(char *nam, char *hide, char *mlen, char *sep,
     cd_state.showd = disp;
     cd_state.maxg = cd_state.groups = cd_state.descs = 0;
     cd_state.maxmlen = atoi(mlen);
-    itmp = columns - cd_state.swidth - 4;
+    itmp = zterm_columns - cd_state.swidth - 4;
     if (cd_state.maxmlen > itmp)
         cd_state.maxmlen = itmp;
     if (cd_state.maxmlen < 4)
@@ -545,7 +545,7 @@ cd_init(char *nam, char *hide, char *mlen, char *sep,
 	    args++;
     }
     if (disp && grp) {
-        int mg = columns;
+        int mg = zterm_columns;
 
         do {
             cd_group(mg);
@@ -651,7 +651,8 @@ cd_get(char **params)
 		     * is available. Leave 1 character at the end of screen
 		     * as safety margin
 		     */
-		    remw = columns - cd_state.premaxw - cd_state.swidth - 3;
+		    remw = zterm_columns - cd_state.premaxw -
+			cd_state.swidth - 3;
 		    d = str->desc;
 		    w = MB_METASTRWIDTH(d);
 		    if (w <= remw)
@@ -727,7 +728,8 @@ cd_get(char **params)
         case CRT_EXPL:
             {
 		/* add columns as safety margin */
-                VARARR(char, dbuf, cd_state.suf + cd_state.slen + columns);
+                VARARR(char, dbuf, cd_state.suf + cd_state.slen +
+		       zterm_columns);
                 char buf[20], *p, *pp, *d;
                 int i = run->count, remw, w, l;
 
@@ -743,7 +745,8 @@ cd_get(char **params)
                     }
 
                     strcpy(dbuf, cd_state.sep);
-		    remw = columns - cd_state.gprew - cd_state.swidth - CM_SPACE;
+		    remw = zterm_columns - cd_state.gprew -
+			cd_state.swidth - CM_SPACE;
 		    p = pp = dbuf + cd_state.slen;
 		    d = str->desc;
 		    w = MB_METASTRWIDTH(d);
diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c
index a78aef7db..797f86251 100644
--- a/Src/Zle/zle_refresh.c
+++ b/Src/Zle/zle_refresh.c
@@ -688,12 +688,12 @@ resetvideo(void)
 {
     int ln;
  
-    winw = columns;  /* terminal width */
+    winw = zterm_columns;  /* terminal width */
     if (termflags & TERM_SHORT)
 	winh = 1;
     else
-	winh = (lines < 2) ? 24 : lines;
-    rwinh = lines;		/* keep the real number of lines */
+	winh = (zterm_lines < 2) ? 24 : zterm_lines;
+    rwinh = zterm_lines;		/* keep the real number of lines */
     vln = vmaxln = winprompt = 0;
     winpos = -1;
     if (winw_alloc != winw || winh_alloc != winh) {
@@ -1082,7 +1082,7 @@ zrefresh(void)
 
     cleareol = 0;		/* unset */
     more_start = more_end = 0;	/* unset */
-    if (isset(SINGLELINEZLE) || lines < 3
+    if (isset(SINGLELINEZLE) || zterm_lines < 3
 	|| (termflags & (TERM_NOUP | TERM_BAD | TERM_UNKNOWN)))
 	termflags |= TERM_SHORT;
     else
@@ -1138,7 +1138,7 @@ zrefresh(void)
 	}
 	fflush(shout);
 	clearf = clearflag;
-    } else if (winw != columns || rwinh != lines)
+    } else if (winw != zterm_columns || rwinh != zterm_lines)
 	resetvideo();
 
 /* now winw equals columns and winh equals lines 
@@ -2004,7 +2004,7 @@ refreshline(int ln)
 		 * last line lest undesired scrolling occurs due to `illegal'
 		 * characters on screen
 		 */ 
-		if (tccan(TCINS) && (vln != lines - 1)) {
+		if (tccan(TCINS) && (vln != zterm_lines - 1)) {
 		    /* not on last line */
 		    for (i = 1; nl[i].chr; i++) {
 			if (tcinscost(i) < wpfxlen(ol, nl + i)) {
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index 74da24e6c..8f7c2aac1 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -2419,13 +2419,13 @@ printfmt(char *fmt, int n, int dopr, int doesc)
 		    if (tccan(TCCLEAREOL))
 			tcout(TCCLEAREOL);
 		    else {
-			int s = columns - 1 - (cc % columns);
+			int s = zterm_columns - 1 - (cc % zterm_columns);
 
 			while (s-- > 0)
 			    putc(' ', shout);
 		    }
 		}
-		l += 1 + ((cc - 1) / columns);
+		l += 1 + ((cc - 1) / zterm_columns);
 		cc = 0;
 		if (dopr)
 		    putc('\n', shout);
@@ -2445,18 +2445,18 @@ printfmt(char *fmt, int n, int dopr, int doesc)
 		} else
 		    p += clen;
 		cc += WCWIDTH_WINT(cchar);
-		if (dopr && !(cc % columns))
+		if (dopr && !(cc % zterm_columns))
 			fputs(" \010", shout);
 	    }
 	}
     }
     if (dopr) {
-        if (!(cc % columns))
+        if (!(cc % zterm_columns))
             fputs(" \010", shout);
 	if (tccan(TCCLEAREOL))
 	    tcout(TCCLEAREOL);
 	else {
-	    int s = columns - 1 - (cc % columns);
+	    int s = zterm_columns - 1 - (cc % zterm_columns);
 
 	    while (s-- > 0)
 		putc(' ', shout);
@@ -2467,7 +2467,7 @@ printfmt(char *fmt, int n, int dopr, int doesc)
      * cc is correct, i.e. if just misses wrapping we still add 1.
      * (Why?)
      */
-    return l + (cc / columns);
+    return l + (cc / zterm_columns);
 }
 
 /* This is used to print expansions. */
@@ -2481,8 +2481,8 @@ listlist(LinkList l)
     LinkNode node;
     char **p;
     VARARR(int, lens, num);
-    VARARR(int, widths, columns);
-    int longest = 0, shortest = columns, totl = 0;
+    VARARR(int, widths, zterm_columns);
+    int longest = 0, shortest = zterm_columns, totl = 0;
     int len, ncols, nlines, tolast, col, i, max, pack = 0, *lenp;
 
     for (node = firstnode(l), p = data; node; incnode(node), p++)
@@ -2500,7 +2500,7 @@ listlist(LinkList l)
 	    shortest = len;
 	totl += len;
     }
-    if ((ncols = ((columns + 2) / longest))) {
+    if ((ncols = ((zterm_columns + 2) / longest))) {
 	int tlines = 0, tline, tcols = 0, maxlen, nth, width;
 
 	nlines = (num + ncols - 1) / ncols;
@@ -2509,7 +2509,7 @@ listlist(LinkList l)
 	    if (isset(LISTROWSFIRST)) {
 		int count, tcol, first, maxlines = 0, llines;
 
-		for (tcols = columns / shortest; tcols > ncols;
+		for (tcols = zterm_columns / shortest; tcols > ncols;
 		     tcols--) {
 		    for (nth = first = maxlen = width = maxlines =
 			     llines = tcol = 0,
@@ -2522,7 +2522,7 @@ listlist(LinkList l)
 			nth += tcols;
 			tlines++;
 			if (nth >= num) {
-			    if ((width += maxlen) >= columns)
+			    if ((width += maxlen) >= zterm_columns)
 				break;
 			    widths[tcol++] = maxlen;
 			    maxlen = 0;
@@ -2536,13 +2536,13 @@ listlist(LinkList l)
 			widths[tcol++] = maxlen;
 			width += maxlen;
 		    }
-		    if (!count && width < columns)
+		    if (!count && width < zterm_columns)
 			break;
 		}
 		if (tcols > ncols)
 		    tlines = maxlines;
 	    } else {
-		for (tlines = ((totl + columns) / columns);
+		for (tlines = ((totl + zterm_columns) / zterm_columns);
 		     tlines < nlines; tlines++) {
 		    for (p = data, nth = tline = width =
 			     maxlen = tcols = 0;
@@ -2550,7 +2550,7 @@ listlist(LinkList l)
 			if (lens[nth] > maxlen)
 			    maxlen = lens[nth];
 			if (++tline == tlines) {
-			    if ((width += maxlen) >= columns)
+			    if ((width += maxlen) >= zterm_columns)
 				break;
 			    widths[tcols++] = maxlen;
 			    maxlen = tline = 0;
@@ -2560,7 +2560,7 @@ listlist(LinkList l)
 			widths[tcols++] = maxlen;
 			width += maxlen;
 		    }
-		    if (nth == num && width < columns)
+		    if (nth == num && width < zterm_columns)
 			break;
 		}
 	    }
@@ -2572,7 +2572,7 @@ listlist(LinkList l)
     } else {
 	nlines = 0;
 	for (p = data; *p; p++)
-	    nlines += 1 + (strlen(*p) / columns);
+	    nlines += 1 + (strlen(*p) / zterm_columns);
     }
     /* Set the cursor below the prompt. */
     trashzle();
@@ -2581,7 +2581,7 @@ listlist(LinkList l)
     clearflag = (isset(USEZLE) && !termflags && tolast);
 
     max = getiparam("LISTMAX");
-    if ((max && num > max) || (!max && nlines > lines)) {
+    if ((max && num > max) || (!max && nlines > zterm_lines)) {
 	int qup, l;
 
 	zsetterm();
@@ -2589,7 +2589,7 @@ listlist(LinkList l)
 	     fprintf(shout, "zsh: do you wish to see all %d possibilities (%d lines)? ",
 		     num, nlines) :
 	     fprintf(shout, "zsh: do you wish to see all %d lines? ", nlines));
-	qup = ((l + columns - 1) / columns) - 1;
+	qup = ((l + zterm_columns - 1) / zterm_columns) - 1;
 	fflush(shout);
 	if (!getzlequery()) {
 	    if (clearflag) {
@@ -2656,7 +2656,7 @@ listlist(LinkList l)
 	}
     }
     if (clearflag) {
-	if ((nlines += nlnct - 1) < lines) {
+	if ((nlines += nlnct - 1) < zterm_lines) {
 	    tcmultout(TCUP, TCMULTUP, nlines);
 	    showinglist = -1;
 	} else
diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c
index e63f6a162..03a514cce 100644
--- a/Src/Zle/zle_utils.c
+++ b/Src/Zle/zle_utils.c
@@ -1257,7 +1257,7 @@ showmsg(char const *msg)
 	    p++;
 
 	    putc('\n', shout);
-	    up += 1 + cc / columns;
+	    up += 1 + cc / zterm_columns;
 	    cc = 0;
 	} else {
 	    /*
@@ -1308,7 +1308,7 @@ showmsg(char const *msg)
 	    c = *++p ^ 32;
 	if(c == '\n') {
 	    putc('\n', shout);
-	    up += 1 + cc / columns;
+	    up += 1 + cc / zterm_columns;
 	    cc = 0;
 	} else {
 	    char const *n = nicechar(c);
@@ -1317,7 +1317,7 @@ showmsg(char const *msg)
 	}
     }
 #endif
-    up += cc / columns;
+    up += cc / zterm_columns;
 
     if (clearflag) {
 	putc('\r', shout);
diff --git a/Src/builtin.c b/Src/builtin.c
index 127d58bdb..fc98eb1b1 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -3903,7 +3903,7 @@ bin_print(char *name, char **args, Options ops, int func)
 	     * nc: number of columns (at least one)
 	     */
 	    sc = l + 2;
-	    nc = (columns + 1) / sc;
+	    nc = (zterm_columns + 1) / sc;
 	    if (!nc)
 		nc = 1;
 	    nr = (n + nc - 1) / nc;
diff --git a/Src/exec.c b/Src/exec.c
index a06f2f3ac..df0101853 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -4398,7 +4398,7 @@ loadautofn(Shfunc shf, int fksh, int autol)
 mod_export int
 doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval)
 {
-    char **tab, **x, *oargv0;
+    char **pptab, **x, *oargv0;
     int oldzoptind, oldlastval, oldoptcind, oldnumpipestats, ret;
     int *oldpipestats = NULL;
     char saveopts[OPT_SIZE], *oldscriptname = scriptname;
@@ -4432,7 +4432,7 @@ doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval)
 
     starttrapscope();
 
-    tab = pparams;
+    pptab = pparams;
     if (!(flags & PM_UNDEFINED))
 	scriptname = dupstring(name);
     oldzoptind = zoptind;
@@ -4548,7 +4548,7 @@ doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval)
 	zsfree(argzero);
 	argzero = oargv0;
     }
-    pparams = tab;
+    pparams = pptab;
     optcind = oldoptcind;
     zoptind = oldzoptind;
     scriptname = oldscriptname;
diff --git a/Src/glob.c b/Src/glob.c
index b788ff38a..bfc7f0416 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -2000,7 +2000,7 @@ hasbraces(char *str)
 
 /**/
 int
-xpandredir(struct redir *fn, LinkList tab)
+xpandredir(struct redir *fn, LinkList redirtab)
 {
     char *nam;
     struct redir *ff;
@@ -2048,7 +2048,7 @@ xpandredir(struct redir *fn, LinkList tab)
 	    ff = (struct redir *) zhalloc(sizeof *ff);
 	    *ff = *fn;
 	    ff->name = nam;
-	    addlinknode(tab, ff);
+	    addlinknode(redirtab, ff);
 	    ret = 1;
 	}
     }
diff --git a/Src/hashtable.c b/Src/hashtable.c
index 6d7179412..235beda1c 100644
--- a/Src/hashtable.c
+++ b/Src/hashtable.c
@@ -59,7 +59,7 @@ struct scanstatus {
     int sorted;
     union {
 	struct {
-	    HashNode *tab;
+	    HashNode *hashtab;
 	    int ct;
 	} s;
 	HashNode u;
@@ -187,11 +187,11 @@ addhashnode2(HashTable ht, char *nam, void *nodeptr)
 	hn->next = hp->next;
 	if(ht->scan) {
 	    if(ht->scan->sorted) {
-		HashNode *tab = ht->scan->u.s.tab;
+		HashNode *hashtab = ht->scan->u.s.hashtab;
 		int i;
 		for(i = ht->scan->u.s.ct; i--; )
-		    if(tab[i] == hp)
-			tab[i] = hn;
+		    if(hashtab[i] == hp)
+			hashtab[i] = hn;
 	    } else if(ht->scan->u.u == hp)
 		ht->scan->u.u = hn;
 	}
@@ -286,11 +286,11 @@ removehashnode(HashTable ht, const char *nam)
 	ht->ct--;
 	if(ht->scan) {
 	    if(ht->scan->sorted) {
-		HashNode *tab = ht->scan->u.s.tab;
+		HashNode *hashtab = ht->scan->u.s.hashtab;
 		int i;
 		for(i = ht->scan->u.s.ct; i--; )
-		    if(tab[i] == hp)
-			tab[i] = NULL;
+		    if(hashtab[i] == hp)
+			hashtab[i] = NULL;
 	    } else if(ht->scan->u.u == hp)
 		ht->scan->u.u = hp->next;
 	}
@@ -397,7 +397,7 @@ scanmatchtable(HashTable ht, Patprog pprog, int sorted,
 	qsort((void *)hnsorttab, ct, sizeof(HashNode), hnamcmp);
 
 	st.sorted = 1;
-	st.u.s.tab = hnsorttab;
+	st.u.s.hashtab = hnsorttab;
 	st.u.s.ct = ct;
 	ht->scan = &st;
 
diff --git a/Src/init.c b/Src/init.c
index 0fcecef1a..30cd40e6c 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -908,8 +908,8 @@ setupvals(void)
     /* columns and lines are normally zero, unless something different *
      * was inhereted from the environment.  If either of them are zero *
      * the setiparam calls below set them to the defaults from termcap */
-    setiparam("COLUMNS", columns);
-    setiparam("LINES", lines);
+    setiparam("COLUMNS", zterm_columns);
+    setiparam("LINES", zterm_lines);
 #endif
 
 #ifdef HAVE_GETRLIMIT
diff --git a/Src/jobs.c b/Src/jobs.c
index 9a8dc8fea..951f06d6e 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -893,7 +893,7 @@ printjob(Job jn, int lng, int synch)
 {
     Process pn;
     int job, len = 9, sig, sflag = 0, llen;
-    int conted = 0, lineleng = columns, skip = 0, doputnl = 0;
+    int conted = 0, lineleng = zterm_columns, skip = 0, doputnl = 0;
     int doneprint = 0, skip_print = 0;
     FILE *fout = (synch == 2 || !shout) ? stdout : shout;
 
diff --git a/Src/loop.c b/Src/loop.c
index 40dbe6f8f..90a0761b3 100644
--- a/Src/loop.c
+++ b/Src/loop.c
@@ -324,13 +324,13 @@ selectlist(LinkList l, size_t start)
     while (t0)
 	t0 /= 10, longest++;
     /* to compensate for added ')' */
-    fct = (columns - 1) / (longest + 3);
+    fct = (zterm_columns - 1) / (longest + 3);
     if (fct == 0)
 	fct = 1;
     else
-	fw = (columns - 1) / fct;
+	fw = (zterm_columns - 1) / fct;
     colsz = (ct + fct - 1) / fct;
-    for (t1 = start; t1 != colsz && t1 - start < lines - 2; t1++) {
+    for (t1 = start; t1 != colsz && t1 - start < zterm_lines - 2; t1++) {
 	ap = arr + t1;
 	do {
 	    size_t t2 = strlen(*ap) + 2;
diff --git a/Src/params.c b/Src/params.c
index ba6cd6365..cdc05213d 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -94,8 +94,8 @@ mod_export
 zlong lastval,		/* $?           */
      mypid,		/* $$           */
      lastpid,		/* $!           */
-     columns,		/* $COLUMNS     */
-     lines,		/* $LINES       */
+     zterm_columns,	/* $COLUMNS     */
+     zterm_lines,	/* $LINES       */
      ppid,		/* $PPID        */
      zsh_subshell;	/* $ZSH_SUBSHELL */
 /**/
@@ -312,8 +312,8 @@ IPDEF4("PPID", &ppid),
 IPDEF4("ZSH_SUBSHELL", &zsh_subshell),
 
 #define IPDEF5(A,B,F) {{NULL,A,PM_INTEGER|PM_SPECIAL},BR((void *)B),GSU(varinteger_gsu),10,0,NULL,NULL,NULL,0}
-IPDEF5("COLUMNS", &columns, zlevar_gsu),
-IPDEF5("LINES", &lines, zlevar_gsu),
+IPDEF5("COLUMNS", &zterm_columns, zlevar_gsu),
+IPDEF5("LINES", &zterm_lines, zlevar_gsu),
 IPDEF5("OPTIND", &zoptind, varinteger_gsu),
 IPDEF5("SHLVL", &shlvl, varinteger_gsu),
 IPDEF5("TRY_BLOCK_ERROR", &try_errflag, varinteger_gsu),
@@ -3269,8 +3269,8 @@ zlevarsetfn(Param pm, zlong x)
     zlong *p = pm->u.valptr;
 
     *p = x;
-    if (p == &lines || p == &columns)
-	adjustwinsize(2 + (p == &columns));
+    if (p == &zterm_lines || p == &zterm_columns)
+	adjustwinsize(2 + (p == &zterm_columns));
 }
 
 /* Function to set value of generic special scalar    *
diff --git a/Src/prompt.c b/Src/prompt.c
index 715f4b503..d15b7c0d4 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -1008,7 +1008,7 @@ countprompt(char *str, int *wp, int *hp, int overf)
 #endif
 
     for (; *str; str++) {
-	if (w >= columns && overf >= 0) {
+	if (w >= zterm_columns && overf >= 0) {
 	    w = 0;
 	    h++;
 	}
@@ -1092,8 +1092,8 @@ countprompt(char *str, int *wp, int *hp, int overf)
      * This isn't easy to handle generally; just assume there's no
      * output.
      */
-    if(w >= columns && overf >= 0) {
-	if (!overf || w > columns) {
+    if(w >= zterm_columns && overf >= 0) {
+	if (!overf || w > zterm_columns) {
 	    w = 0;
 	    h++;
 	}
diff --git a/Src/system.h b/Src/system.h
index 33b0af2f3..01c6738ca 100644
--- a/Src/system.h
+++ b/Src/system.h
@@ -850,3 +850,27 @@ extern short ospeed;
 #elif HAVE_STRUCT_STAT_ST_CTIMENSEC
 # define GET_ST_CTIME_NSEC(st) (st).st_ctimensec
 #endif
+
+#ifdef HAVE_TGETENT
+# if defined(ZSH_HAVE_CURSES_H) && defined(ZSH_HAVE_TERM_H)
+#  define USES_TERM_H 1
+# else
+#  ifdef HAVE_TERMCAP_H
+#   define USES_TERMCAP_H 1
+#  endif
+# endif
+
+# ifdef USES_TERM_H
+#  ifdef HAVE_TERMIO_H
+#   include <termio.h>
+#  endif
+#  ifdef ZSH_HAVE_CURSES_H
+#   include "zshcurses.h"
+#  endif
+#  include "zshterm.h"
+# else
+#  ifdef USES_TERMCAP_H
+#   include <termcap.h>
+#  endif
+# endif
+#endif
diff --git a/Src/utils.c b/Src/utils.c
index 22bffa276..066710e1e 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1296,7 +1296,8 @@ preprompt(void)
 	countprompt(str, &w, 0, -1);
 	opts[PROMPTPERCENT] = percents;
 	zputs(str, shout);
-	fprintf(shout, "%*s\r%*s\r", (int)columns - w - !hasxn, "", w, "");
+	fprintf(shout, "%*s\r%*s\r", (int)zterm_columns - w - !hasxn,
+		"", w, "");
 	fflush(shout);
 	free(str);
     }
@@ -1558,49 +1559,49 @@ mod_export int winchanged;
 static int
 adjustlines(int signalled)
 {
-    int oldlines = lines;
+    int oldlines = zterm_lines;
 
 #ifdef TIOCGWINSZ
-    if (signalled || lines <= 0)
-	lines = shttyinfo.winsize.ws_row;
+    if (signalled || zterm_lines <= 0)
+	zterm_lines = shttyinfo.winsize.ws_row;
     else
-	shttyinfo.winsize.ws_row = lines;
+	shttyinfo.winsize.ws_row = zterm_lines;
 #endif /* TIOCGWINSZ */
-    if (lines <= 0) {
+    if (zterm_lines <= 0) {
 	DPUTS(signalled, "BUG: Impossible TIOCGWINSZ rows");
-	lines = tclines > 0 ? tclines : 24;
+	zterm_lines = tclines > 0 ? tclines : 24;
     }
 
-    if (lines > 2)
+    if (zterm_lines > 2)
 	termflags &= ~TERM_SHORT;
     else
 	termflags |= TERM_SHORT;
 
-    return (lines != oldlines);
+    return (zterm_lines != oldlines);
 }
 
 static int
 adjustcolumns(int signalled)
 {
-    int oldcolumns = columns;
+    int oldcolumns = zterm_columns;
 
 #ifdef TIOCGWINSZ
-    if (signalled || columns <= 0)
-	columns = shttyinfo.winsize.ws_col;
+    if (signalled || zterm_columns <= 0)
+	zterm_columns = shttyinfo.winsize.ws_col;
     else
-	shttyinfo.winsize.ws_col = columns;
+	shttyinfo.winsize.ws_col = zterm_columns;
 #endif /* TIOCGWINSZ */
-    if (columns <= 0) {
+    if (zterm_columns <= 0) {
 	DPUTS(signalled, "BUG: Impossible TIOCGWINSZ cols");
-	columns = tccolumns > 0 ? tccolumns : 80;
+	zterm_columns = tccolumns > 0 ? tccolumns : 80;
     }
 
-    if (columns > 2)
+    if (zterm_columns > 2)
 	termflags &= ~TERM_NARROW;
     else
 	termflags |= TERM_NARROW;
 
-    return (columns != oldcolumns);
+    return (zterm_columns != oldcolumns);
 }
 
 /* check the size of the window and adjust if necessary. *
@@ -1634,8 +1635,8 @@ adjustwinsize(int from)
 	    ttycols = shttyinfo.winsize.ws_col;
 	} else {
 	    /* Set to value from environment on failure */
-	    shttyinfo.winsize.ws_row = lines;
-	    shttyinfo.winsize.ws_col = columns;
+	    shttyinfo.winsize.ws_row = zterm_lines;
+	    shttyinfo.winsize.ws_col = zterm_columns;
 	    resetzle = (from == 1);
 	}
 #else
@@ -1655,9 +1656,9 @@ adjustwinsize(int from)
 	 * but I'm concerned about what happens on race conditions; e.g., *
 	 * suppose the user resizes his xterm during `eval $(resize)'?    */
 	if (adjustlines(from) && zgetenv("LINES"))
-	    setiparam("LINES", lines);
+	    setiparam("LINES", zterm_lines);
 	if (adjustcolumns(from) && zgetenv("COLUMNS"))
-	    setiparam("COLUMNS", columns);
+	    setiparam("COLUMNS", zterm_columns);
 	getwinsz = 1;
 	break;
     case 2: