zsh-workers
 help / color / mirror / code / Atom feed
* Re: zle_refresh patch 2
@ 1997-03-05 23:52 Zoltan T. Hidvegi
  0 siblings, 0 replies; 16+ messages in thread
From: Zoltan T. Hidvegi @ 1997-03-05 23:52 UTC (permalink / raw)
  To: Zsh workers list; +Cc: schaefer

I wrote:
> Fine, but there are two problems: shortterm is a zle variable and in 3.1
> utils.c has no access to zle globals.  The other problem is that
> resetneeded local variable has the same name as a global one, which is
> misleading.  Also a comparision should use >= 3 instead on > 3.  I simply
> removed the resetneeded variable, since it was really unnecessary.

That's OK, but I forgot that the mail system converts TABs to spaces here.
I complained, and they promised to fix it within two week.  Till then, I'll
use uuencode.  Here is the uuencoded patch.

Zoltan


begin 644 termok_patch
M9&EF9B`M8R!3<F,O<&%R86US+F,N8F%R="!3<F,O<&%R86US+F,**BHJ(%-R
M8R]P87)A;7,N8RYB87)T"5=E9"!-87(@(#4@,3@Z-#`Z,3D@,3DY-PHM+2T@
M4W)C+W!A<F%M<RYC"5=E9"!-87(@(#4@,3@Z-#(Z-3<@,3DY-PHJ*BHJ*BHJ
M*BHJ*BHJ*BH**BHJ(#$R-C8L,3(W,R`J*BHJ"B`@=F]I9`H@('IL979A<G-E
M=&9N*%!A<F%M('!M+"!L;VYG('@I"B`@>PHM("`@("!I;G0@<F5S971N965D
M960@/2`P.PHM(`H@("`@("!I9B`H*&QO;F<@*BEP;2T^9&%T82`]/2`F(&-O
M;'5M;G,I('L*("`):68@*'@@/"`S*2!["B`@"2`@("!I9B`H>"`\/2`P*0HM
M+2T@,3(V-BPQ,C<Q("TM+2T**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ*B`Q,C<U+#$R
M.3<@*BHJ*@H@(`D@("`@96QS90H@(`D)>"`](#(["B`@"2`@("!T97)M;VL@
M/2!415)-7T)!1#L*(2`)?2!E;'-E(&EF("AC;VQU;6YS(#P@,RD*(2`)("`@
M(')E<V5T;F5E9&5D(#T@,3L*("`@("`@?2!E;'-E(&EF("@H;&]N9R`J*7!M
M+3YD871A(#T]("8@;&EN97,I('L*("`):68@*'@@/"`S*2!["B`@"2`@("!I
M9B`H>"`\/2`P*0H@(`D)>"`](#(T.PD)+RH@07)B:71R87)Y+"!B=70@<V%M
M92!A<R!I;FET+F,@*B\*("`)("`@('1E<FUO:R`](%1%4DU?3D]54#L*(2`)
M?2!E;'-E(&EF("AL:6YE<R`\(#,I"B$@"2`@("!R97-E=&YE961E9"`](#$[
M"B`@("`@('T*("`*("`@("`@*B@H;&]N9R`J*7!M+3YD871A*2`]('@["BT@
M"BT@("`@(&EF("AR97-E=&YE961E9"D@>PHM(`EI9B`H;&EN97,@/B`S("8F
M(&-O;'5M;G,@/B`S("8F('1E<FUO:R`A/2!415)-7T]+*0HM(`D@("`@:6YI
M=%]T97)M*"D["2\J($%T=&5M<'0@=&\@<F5S970@=&5R;6]K('!R;W!E<FQY
M("HO"BT@("`@('T*("!]"B`@"B`@+RH@1G5N8W1I;VX@=&\@<V5T('9A;'5E
M(&]F(&=E;F5R:6,@<W!E8VEA;"!S8V%L87(@("`@*@HM+2T@,3(W,RPQ,CDP
M("TM+2T*("`)("`@(&5L<V4*("`)"7@@/2`R.PH@(`D@("`@=&5R;6]K(#T@
M5$5235]"040["B$@"7T@96QS92!I9B`H8V]L=6UN<R`\(#,@)B8@;&EN97,@
M/CT@,R`F)B!T97)M;VL@(3T@5$5235]/2RD*(2`)("`@(&EN:71?=&5R;2@I
M.PDO*B!!='1E;7!T('1O(')E<V5T('1E<FUO:R!P<F]P97)L>2`J+PH@("`@
M("!](&5L<V4@:68@*"AL;VYG("HI<&TM/F1A=&$@/3T@)B!L:6YE<RD@>PH@
M(`EI9B`H>"`\(#,I('L*("`)("`@(&EF("AX(#P](#`I"B`@"0EX(#T@,C0[
M"0DO*B!!<F)I=')A<GDL(&)U="!S86UE(&%S(&EN:70N8R`J+PH@(`D@("`@
M=&5R;6]K(#T@5$5235].3U50.PHA(`E](&5L<V4@:68@*&QI;F5S(#P@,R`F
M)B!C;VQU;6YS(#X](#,@)B8@=&5R;6]K("$](%1%4DU?3TLI"B$@"2`@("!I
M;FET7W1E<FTH*3L)+RH@071T96UP="!T;R!R97-E="!T97)M;VL@<')O<&5R
M;'D@*B\*("`@("`@?0H@(`H@("`@("`J*"AL;VYG("HI<&TM/F1A=&$I(#T@
M>#L*("!]"B`@"B`@+RH@1G5N8W1I;VX@=&\@<V5T('9A;'5E(&]F(&=E;F5R
M:6,@<W!E8VEA;"!S8V%L87(@("`@*@ID:69F("UC(%-R8R]U=&EL<RYC+F)A
M<G0@4W)C+W5T:6QS+F,**BHJ(%-R8R]U=&EL<RYC+F)A<G0)5V5D($UA<B`@
M-2`Q.#HS.3HU-R`Q.3DW"BTM+2!3<F,O=71I;',N8PE7960@36%R("`U(#$X
M.C0P.C(R(#$Y.3<**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ*B`X,3,L.#(P("HJ*BH*
M("`)?0H@("`@("!]"B`@(V5N9&EF("`@+RH@(%1)3T-'5TE.4UH@*B\*+2`@
M("`@1%!55%,H*"$H:7-S970H4TE.1TQ%3$E.15I,12D@?'P@=&5R;6]K("$]
M(%1%4DU?3TL@?'P@;&EN97,@/"`S*0HM(`D@("`A/2`A<VAO<G1T97)M*2P@
M(D)51SH@<VAO<G1T97)M('=R;VYG(&EN(&%D:G5S='=I;G-I>F4B*3L*("!]
M"B`@"B`@+RH@36]V92!A(&9D('1O(&$@<&QA8V4@/CT@,3`@86YD(&UA<FL@
M=&AE(&YE=R!F9"!I;B!F9'1A8FQE+B`@268@=&AE(&9D("H*+2TM(#@Q,RPX
(,3@@+2TM+0IF
`
end


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-06  0:51           ` Bart Schaefer
  1997-03-06  3:56             ` gwing
@ 1997-03-06 18:58             ` Zoltan T. Hidvegi
  1 sibling, 0 replies; 16+ messages in thread
From: Zoltan T. Hidvegi @ 1997-03-06 18:58 UTC (permalink / raw)
  To: schaefer; +Cc: Zsh workers list

Bart Schaefer wrote:
> Hmm.  Well, I dislike your change because it presumes that init_term()
> is independent of the values of "lines" and "columns".  This in itself
> (init_term() not knowing about lines/columns) MAY be wrong, now that I
> look at it, because init_term() is called from zle in a couple places,
> namely putprompt() and zleread().
>
> Will zle ever call init_term in such a way that a very-small terminal is
> set incorrectly?  I don't follow it well enough to be sure.

zle calls init_term only if !termok holds, so it may cause a problem when
COLUMNS < 3.  But here the meaning of termok should be changed.  It should
contain flags, like TERM_BAD, TERM_NOUP, TERM_UNKNOWN, TERM_SHORT,
TERM_NARROW, etc.  init_term() should only be called if TERM_UNKNOWN is
true.  Line/column change should only change some flags in termok.

Zoltan


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-06  5:03                 ` gwing
@ 1997-03-06 18:32                   ` Zoltan T. Hidvegi
  0 siblings, 0 replies; 16+ messages in thread
From: Zoltan T. Hidvegi @ 1997-03-06 18:32 UTC (permalink / raw)
  To: gwing; +Cc: schaefer, zsh-workers

gwing@primenet.com.au wrote:
> Bart Schaefer wrote:
> :I think you can continue patching 3.0.3-test4 as long as you don't make
> :reference to zle globals in non-zle .c files.  Zoltan?

Yes, that's fine.  But I only keep and test the 3.1 source tree, 3.0 is in
the RCS file only.  What I do, is I patch 3.1, and if it works, I merge it
to the 3.0 branch.  So a 3.1 patch it is a bit more convinient for me, but
it is not a big difference.

> OK, I accidently killed my old source, but have reapplied patches
> 2865(me), 2956(Bart), 2957(Zoltan) to 3.0.3-test4
> I didn't apply 2866(2868) because I assumed 2956 superceded it.
> Does anyone know if there were any others?  Is it in your Changelog, Zoltan?

That's all I have in my ChangeLog.  I did not yet changed tsetcap() (this
is in zle_misc.c for 3.0 and in prompt.c in 3.1).  I assume that the
condition at the very beginning of tsetcap() should be
if (termok && tcstr[cap]), is that right?  Does it work in shortterm mode?
I do not know why was this shortterm/SINGLELINEZLE condition was there
before.

I also think it is fine for zle to act as if single_line_zle were set when
lines < 3.  This is a reasonable behaviour, and if normal zle requires a
lot of extra code to handle this it does not worth it.

I also remember having problems with the statusline when the buffer was
more than a screen high (e.g. start editing a large file with zed, and use
describe-key-briefly to find a meaning of a key, and the screen will be
messed up).

Zoltan


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-06  4:58               ` Bart Schaefer
@ 1997-03-06  5:03                 ` gwing
  1997-03-06 18:32                   ` Zoltan T. Hidvegi
  0 siblings, 1 reply; 16+ messages in thread
From: gwing @ 1997-03-06  5:03 UTC (permalink / raw)
  To: schaefer; +Cc: zsh-workers

[-- Attachment #1: Type: application/pgp, Size: 1621 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-06  3:56             ` gwing
@ 1997-03-06  4:58               ` Bart Schaefer
  1997-03-06  5:03                 ` gwing
  0 siblings, 1 reply; 16+ messages in thread
From: Bart Schaefer @ 1997-03-06  4:58 UTC (permalink / raw)
  To: gwing, zsh-workers

On Mar 6,  2:56pm, gwing@primenet.com.au wrote:
} Subject: Re: zle_refresh patch 2
}
}  sorry, I haven't had much time up until now.  I'm going to have to look at
} the way 3.1.* handles the Zle module before I can send a patch for all the
} problems - previously I've been sending patches to 3.0.*

I think you can continue patching 3.0.3-test4 as long as you don't make
reference to zle globals in non-zle .c files.  Zoltan?

} The reason that the zle went into singlelinemode style when the terminal
} went down to 1 or 2 lines is because it was simpler.  I seem to remember, it
} avoided *lots* of conditionals all the way through the code.  I can change
} this and I would also probably have to change quite a bit of the prompt code
} to count number of lines, etc.

It was Peter's assertion that changing the value of "termok" was sufficient
to change zle into a sane state, without having to toggle the *ZLE options.
I tried this (see my most recent patch) and it seems to work OK; I'm just
worried that putprompt() or zleread() is going to call init_term() at a bad
time, and thus reset "termok" independently of lines/columns.

} There are a couple of choices here; when a terminal decreases number of
} lines to 1 or 2:
}  1)  it goes into singlelinemode style (without setting SINGLE_LINE_ZLE)
}      until the terminal increases its lines above 2.  

This is fine as far as *I'm* concerned.

} There are also a couple of bugs which won't show up until the terminal goes
} down to < 5 or so columns.  I think I kept getting destroyed memory structs
} so I didn't work out what buffers were being overflowed.

With `termok = TERM_BAD' in effect, I was able to set COLUMNS=2 without
any crashes.  Of course, all I could ever see was the < and > that mean
that there's more text left and right of the visible screen, but I was
able to blind-type various commands and finally reset COLUMNS=80 with
no apparent ill effects.


-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-06  0:51           ` Bart Schaefer
@ 1997-03-06  3:56             ` gwing
  1997-03-06  4:58               ` Bart Schaefer
  1997-03-06 18:58             ` Zoltan T. Hidvegi
  1 sibling, 1 reply; 16+ messages in thread
From: gwing @ 1997-03-06  3:56 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: application/pgp, Size: 2058 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-05 23:47         ` Zoltan T. Hidvegi
@ 1997-03-06  0:51           ` Bart Schaefer
  1997-03-06  3:56             ` gwing
  1997-03-06 18:58             ` Zoltan T. Hidvegi
  0 siblings, 2 replies; 16+ messages in thread
From: Bart Schaefer @ 1997-03-06  0:51 UTC (permalink / raw)
  To: Zoltan T. Hidvegi; +Cc: Zsh workers list

On Mar 5,  6:47pm,  (Zoltan T. Hidvegi) wrote:
} Subject: Re: zle_refresh patch 2
}
} Fine, but there are two problems: shortterm is a zle variable and in 3.1
} utils.c has no access to zle globals.

It's only mentioned in a DPUTS anyway; just scrap the DPUTS in 3.1 (as
you did).  Geoff's original patch did more with it than that.

} The other problem is that
} resetneeded local variable has the same name as a global one, which is
} misleading.  Also a comparision should use >= 3 instead on > 3.  I simply
} removed the resetneeded variable, since it was really unnecessary.

Hmm.  Well, I dislike your change because it presumes that init_term()
is independent of the values of "lines" and "columns".  This in itself
(init_term() not knowing about lines/columns) MAY be wrong, now that I
look at it, because init_term() is called from zle in a couple places,
namely putprompt() and zleread().

Will zle ever call init_term in such a way that a very-small terminal is
set incorrectly?  I don't follow it well enough to be sure.

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-05 23:06       ` Bart Schaefer
@ 1997-03-05 23:47         ` Zoltan T. Hidvegi
  1997-03-06  0:51           ` Bart Schaefer
  0 siblings, 1 reply; 16+ messages in thread
From: Zoltan T. Hidvegi @ 1997-03-05 23:47 UTC (permalink / raw)
  To: schaefer; +Cc: Zsh workers list

Bart Schaefer wrote:
> This patch is against the base 3.0.3-test4, so there may be a conflict in
> the utils.c hunk with Geoff's patch.  Nevertheless, the rest of Geoff's
> patch (to the zle* files) is required.

Fine, but there are two problems: shortterm is a zle variable and in 3.1
utils.c has no access to zle globals.  The other problem is that
resetneeded local variable has the same name as a global one, which is
misleading.  Also a comparision should use >= 3 instead on > 3.  I simply
removed the resetneeded variable, since it was really unnecessary.

Zoltan


diff -c Src/params.c.bart Src/params.c
*** Src/params.c.bart   Wed Mar  5 18:40:19 1997
--- Src/params.c        Wed Mar  5 18:42:57 1997
***************
*** 1266,1273 ****
  void
  zlevarsetfn(Param pm, long x)
  {
-     int resetneeded = 0;
-
      if ((long *)pm->data == & columns) {
        if (x < 3) {
            if (x <= 0)
--- 1266,1271 ----
***************
*** 1275,1297 ****
            else
                x = 2;
            termok = TERM_BAD;
!       } else if (columns < 3)
!           resetneeded = 1;
      } else if ((long *)pm->data == & lines) {
        if (x < 3) {
            if (x <= 0)
                x = 24;         /* Arbitrary, but same as init.c */
            termok = TERM_NOUP;
!       } else if (lines < 3)
!           resetneeded = 1;
      }

      *((long *)pm->data) = x;
-
-     if (resetneeded) {
-       if (lines > 3 && columns > 3 && termok != TERM_OK)
-           init_term();        /* Attempt to reset termok properly */
-     }
  }

  /* Function to set value of generic special scalar    *
--- 1273,1290 ----
            else
                x = 2;
            termok = TERM_BAD;
!       } else if (columns < 3 && lines >= 3 && termok != TERM_OK)
!           init_term();        /* Attempt to reset termok properly */
      } else if ((long *)pm->data == & lines) {
        if (x < 3) {
            if (x <= 0)
                x = 24;         /* Arbitrary, but same as init.c */
            termok = TERM_NOUP;
!       } else if (lines < 3 && columns >= 3 && termok != TERM_OK)
!           init_term();        /* Attempt to reset termok properly */
      }

      *((long *)pm->data) = x;
  }

  /* Function to set value of generic special scalar    *
diff -c Src/utils.c.bart Src/utils.c
*** Src/utils.c.bart    Wed Mar  5 18:39:57 1997
--- Src/utils.c Wed Mar  5 18:40:22 1997
***************
*** 813,820 ****
        }
      }
  #endif   /*  TIOCGWINSZ */
-     DPUTS((!(isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3)
-          != !shortterm), "BUG: shortterm wrong in adjustwinsize");
  }

  /* Move a fd to a place >= 10 and mark the new fd in fdtable.  If the fd *
--- 813,818 ----


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-05 21:55     ` Bart Schaefer
@ 1997-03-05 23:06       ` Bart Schaefer
  1997-03-05 23:47         ` Zoltan T. Hidvegi
  0 siblings, 1 reply; 16+ messages in thread
From: Bart Schaefer @ 1997-03-05 23:06 UTC (permalink / raw)
  To: Zoltan T. Hidvegi, zsh-workers; +Cc: gwing

On Mar 5,  1:55pm, Bart Schaefer wrote:
} Subject: Re: zle_refresh patch 2
}
} On Mar 5,  3:56pm,  (Zoltan T. Hidvegi) wrote:
} } Subject: Re: zle_refresh patch 2
} }
} } I'm not exactly sure that it is a good idea to explicitely set
} } SINGLELINEZLE when the terminal shrinks to one or two lines.
} 
} Yes; I already agreed about that in response to a posting from Geoff on
} Feb. 3.  The code is as it is now (and I changed it as I did in that
} patch) because I didn't know about the meaning of "termok".

Way back on Feb. 3, Bart Schaefer wrote:
} The following patch, which should be applied -after- Geoff's patch, does
} the following things:
}   * Centralizes all the columns/USEZLE and lines/SINGLINEZLE fixups in
}     zlevarsetfn(), rather than having them spread around in the code;
}   * Changes the tests in zlevarsetfn() to punt on ZLE below 3 lines or
}     columns rather than only below 2 lines or columns;
}   * Calls pm->sets.ifn from setintenv() to make sure zlevarsetfn() is
}     called [this should have been in setintenv() long ago];
}   * Calls setintenv() everywhere that COLUMNS and LINES change, not just
}     from adjustwinsize();
}   * In adjustwinsize(), changes LINES, COLUMNS, USEZLE, and SINGLINEZLE
}     -before- calling refresh(), so that refresh() can take care of the
}     setting of shortterm;
}   * Changes Geoff's safety code in adjustwinsize() to a DPUTS() so we
}     can see if the other code ever fails.

Here's a new patch, having (I hope) the same semantics described above,
but modified to change "termok" in zlevarsetfn() instead of changing the
values of opts[SINGLELINEZLE] and opts[ZLE].  I have not extensively
tested this; the pre-Geoff's-patch code never tests (termok == TERM_NOUP),
so Geoff's "shortterm" patch is still needed for this one to make sense.

This patch is against the base 3.0.3-test4, so there may be a conflict in
the utils.c hunk with Geoff's patch.  Nevertheless, the rest of Geoff's
patch (to the zle* files) is required.

BTW, there's an "if (x <= 0) ... else x = 2;" in there that was originally
to prevent core dumps that occurred when (lines == 1) became true.  It's
possible that is no longer necessary.

diff -ru zsh-3.0.3-test4/Src/init.c zsh-3.0.3-test4-work/Src/init.c
--- zsh-3.0.3-test4/Src/init.c	Fri Jan 31 21:24:10 1997
+++ zsh-3.0.3-test4-work/Src/init.c	Wed Mar  5 14:35:13 1997
@@ -540,20 +540,6 @@
     mypid = (long) getpid();
     term  = ztrdup("");
 
-#ifdef TIOCGWINSZ
-    if (!(columns = shttyinfo.winsize.ws_col))
-	columns = 80;
-    if (columns < 2)
-	opts[USEZLE] = 0;
-    if (!(lines = shttyinfo.winsize.ws_row))
-	lines = 24;
-    if (lines < 2)
-	opts[SINGLELINEZLE] = 1;
-#else
-    columns = 80;
-    lines = 24;
-#endif
-
     /* The following variable assignments cause zsh to behave more *
      * like Bourne and Korn shells when invoked as "sh" or "ksh".  *
      * NULLCMD=":" and READNULLCMD=":"                             */
@@ -601,6 +587,14 @@
     createcompctltable();   /* create hash table for compctls          */
     createnameddirtable();  /* create hash table for named directories */
     createparamtable();     /* create paramater hash table             */
+
+#ifdef TIOCGWINSZ
+    setintenv("COLUMNS", shttyinfo.winsize.ws_col); /* Fixes termok */
+    setintenv("LINES", shttyinfo.winsize.ws_row);   /* Fixes termok */
+#else
+    columns = 80;
+    lines = 24;
+#endif
 
     /* create hash table for multi-character emacs bindings */
     createemkeybindtable();
diff -ru zsh-3.0.3-test4/Src/params.c zsh-3.0.3-test4-work/Src/params.c
--- zsh-3.0.3-test4/Src/params.c	Fri Jan 31 21:24:10 1997
+++ zsh-3.0.3-test4-work/Src/params.c	Wed Mar  5 14:35:13 1997
@@ -882,6 +882,7 @@
     char buf[DIGBUFSIZE];
 
     if ((pm = (Param) paramtab->getnode(paramtab, s)) && pm->env) {
+	(pm->sets.ifn)(pm, val);
 	sprintf(buf, "%ld", val);
 	pm->env = replenv(pm->env, buf);
     }
@@ -1246,21 +1247,32 @@
 void
 zlevarsetfn(Param pm, long x)
 {
-    if (x < 2) {
-	if ((long *)pm->data == & columns) {
+    int resetneeded = 0;
+
+    if ((long *)pm->data == & columns) {
+	if (x < 3) {
 	    if (x <= 0)
 		x = 80;		/* Arbitary, but same as init.c */
 	    else
-		x = 2;
-	    opts[USEZLE] = 0;
-	} else if ((long *)pm->data == & lines) {
+		x = 2;
+	    termok = TERM_BAD;
+	} else if (columns < 3)
+	    resetneeded = 1;
+    } else if ((long *)pm->data == & lines) {
+	if (x < 3) {
 	    if (x <= 0)
 		x = 24;		/* Arbitrary, but same as init.c */
-	    else
-		opts[SINGLELINEZLE] = 1;
-	}
+	    termok = TERM_NOUP;
+	} else if (lines < 3)
+	    resetneeded = 1;
     }
+
     *((long *)pm->data) = x;
+
+    if (resetneeded) {
+	if (lines > 3 && columns > 3 && termok != TERM_OK)
+	    init_term();	/* Attempt to reset termok properly */
+    }
 }
 
 /* Function to set value of generic special scalar    *
diff -ru zsh-3.0.3-test4/Src/utils.c zsh-3.0.3-test4-work/Src/utils.c
--- zsh-3.0.3-test4/Src/utils.c	Fri Jan 31 21:24:10 1997
+++ zsh-3.0.3-test4-work/Src/utils.c	Mon Feb  3 09:32:19 1997
@@ -850,20 +850,19 @@
 	columns = shttyinfo.winsize.ws_col;
     if (shttyinfo.winsize.ws_row)
 	lines = shttyinfo.winsize.ws_row;
-    if (oldcols != columns) {
-	if (columns < 2)
-	    opts[USEZLE] = 0;
-	if (lines < 2)
-	    opts[SINGLELINEZLE] = 1;
+    if (oldcols != columns || oldrows != lines) {
+	if (oldcols != columns)
+	    setintenv("COLUMNS", columns);
+	if (oldrows != lines)
+	    setintenv("LINES", lines);
 	if (zleactive) {
 	    resetneeded = winchanged = 1;
 	    refresh();
 	}
-	setintenv("COLUMNS", columns);
     }
-    if (oldrows != lines)
-	setintenv("LINES", lines);
 #endif   /*  TIOCGWINSZ */
+    DPUTS((!(isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3)
+	   != !shortterm), "BUG: shortterm wrong in adjustwinsize");
 }
 
 /* Move a fd to a place >= 10 and mark the new fd in fdtable.  If the fd *

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-03-05 20:56   ` Zoltan T. Hidvegi
@ 1997-03-05 21:55     ` Bart Schaefer
  1997-03-05 23:06       ` Bart Schaefer
  0 siblings, 1 reply; 16+ messages in thread
From: Bart Schaefer @ 1997-03-05 21:55 UTC (permalink / raw)
  To: Zoltan T. Hidvegi; +Cc: gwing, zsh-workers

On Mar 5,  3:56pm,  (Zoltan T. Hidvegi) wrote:
} Subject: Re: zle_refresh patch 2
}
} Bart Schaefer wrote:
} > On Feb 3,  9:55pm, gwing@primenet.com.au wrote:
} > } Subject: zle_refresh patch 2
} > }
} > } It fixes coredumps and bad displays when terms are 1 or 2 lines.
} > } When a terminal is 1 or 2 lines high, the terminal will act as if
} > } SINGLE_LINE_ZLE is set.  This avoids many problems with the status line.
} >
} > There's already code that causes SINGLE_LINE_ZLE to become set if the
} > terminal starts out at, or is shrunk to, 1 line high or 1 column wide.
} 
} I'm not exactly sure that it is a good idea to explicitely set
} SINGLELINEZLE when the terminal shrinks to one or two lines.

Yes; I already agreed about that in response to a posting from Geoff on
Feb. 3.  The code is as it is now (and I changed it as I did in that
patch) because I didn't know about the meaning of "termok".  It would
be possible to replace all the fudging of SINGLELINEZLE and ZLE with
changes to "termok" -- at least, I think that's what PWS said at some
point.

} An other problem with Geoff's patch (whics is not a new problem, just this
} patch brought it up.  tsetcap only works in multiline mode, as it simply
} assumes that in single line mode termcap escapes are not available.  This
} means that some prompt escapes do not work in single line mode, which is
} especially annoying in print -P commands.  There should be a separate flag

I think "termok" is the right thing for that, too, but Peter or Geoff
should confirm.

} I'd really like to release zsh-3.0.3 ASAP, but these problems should be
} solved first.

I believe Geoff also said that there were some changes he needed to make
for very narrow terminals as well as very short ones.  Geoff?

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-02-03 18:05 ` Bart Schaefer
  1997-02-03 18:34   ` gwing
@ 1997-03-05 20:56   ` Zoltan T. Hidvegi
  1997-03-05 21:55     ` Bart Schaefer
  1 sibling, 1 reply; 16+ messages in thread
From: Zoltan T. Hidvegi @ 1997-03-05 20:56 UTC (permalink / raw)
  To: schaefer; +Cc: gwing, zsh-workers

Bart Schaefer wrote:
> On Feb 3,  9:55pm, gwing@primenet.com.au wrote:
> } Subject: zle_refresh patch 2
> }
> } It fixes coredumps and bad displays when terms are 1 or 2 lines.
> } When a terminal is 1 or 2 lines high, the terminal will act as if
> } SINGLE_LINE_ZLE is set.  This avoids many problems with the status line.
>
> There's already code that causes SINGLE_LINE_ZLE to become set if the
> terminal starts out at, or is shrunk to, 1 line high or 1 column wide.
> (It happens when $COLUMNS or $LINES changes.)  Some of that code is a
> few lines above your changes to test (lines < 3).  If it's necessary to
> behave as SINGLE_LINE_ZLE for 2 lines as well, the other code should be
> changed so that SINGLE_LINE_ZLE *is* set when zsh is `acting as if' it
> is set.

I'm not exactly sure that it is a good idea to explicitely set
SINGLELINEZLE when the terminal shrinks to one or two lines.  It is similar
to that it is not good to unset SINGLELINEZLE when the terminal size
changes back to normal again.  If one resizes the terminal to one/two lines
he wants zsh to behave as if single_line_zle was set but after he brings
back the terminal to normal size, he wants the normal zle again.
I.e. single_line_zle unset should mean use normal zle if possible.

An other problem with Geoff's patch (whics is not a new problem, just this
patch brought it up.  tsetcap only works in multiline mode, as it simply
assumes that in single line mode termcap escapes are not available.  This
means that some prompt escapes do not work in single line mode, which is
especially annoying in print -P commands.  There should be a separate flag
which shows that termcap is not available and of course this involvs
single_line_zle but they are not equivalent.

I'd really like to release zsh-3.0.3 ASAP, but these problems should be
solved first.  Also there has been some bug reports about refresh problems
with some vt100 termcaps which are I think not fixed yet, but I do not have
the problematic termcap entry to test it so I'm not sure.

Unfortunately I still do not have a computer at home (I hope to get one
within two weeks), so I do not have much time to track down these problems,
and even if I had time, I'm not really an expert in zle_refrech.c, so I
hope that someone with more knowledge in this area can look at these
problems.

Zoltan


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-02-03 18:34   ` gwing
  1997-02-03 19:03     ` Bart Schaefer
@ 1997-02-04  8:25     ` Peter Stephenson
  1 sibling, 0 replies; 16+ messages in thread
From: Peter Stephenson @ 1997-02-04  8:25 UTC (permalink / raw)
  To: Zsh hackers list, gwing

gwing@primenet.com.au wrote:
> I was slightly uncertain about the correct behaviour here: should
> SINGLE_LINE_ZLE be set when it is `acting as if' it is set?  If it is set,
> then if it stops acting as if it is set, does it go back to the previous
> value?  I believe if yes to the former, then yes to the latter.  But then,
> I don't necessarily believe yes to the former.

The `acting as if set' variable was termok: this is supposed to get
set to TERM_NOUP if the terminal can't go up and to TERM_BAD if the
terminal can't be used.  The idea behind it was exactly that if
SINGLE_LINE_ZLE was not explicitly set and the terminal became a fully
usable sort then it would behave as if the option was unset again. I
don't see why termok and shortterm shouldn't be merged together, they
seem to be doing more or less the same thing.  In fact, if I remember
right setting termok to TERM_NOUP should have the effect desired of
shortterm.  (If not, it's not doing its job properly anyway.)

-- 
Peter Stephenson <pws@ifh.de>       Tel: +49 33762 77366
WWW:  http://www.ifh.de/~pws/       Fax: +49 33762 77413
Deutsches Elektronen-Synchrotron --- Institut fuer Hochenergiephysik Zeuthen
DESY-IfH, 15735 Zeuthen, Germany.


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-02-03 18:34   ` gwing
@ 1997-02-03 19:03     ` Bart Schaefer
  1997-02-04  8:25     ` Peter Stephenson
  1 sibling, 0 replies; 16+ messages in thread
From: Bart Schaefer @ 1997-02-03 19:03 UTC (permalink / raw)
  To: gwing; +Cc: zsh-workers

On Feb 4,  5:34am, gwing@primenet.com.au wrote:
} Subject: Re: zle_refresh patch 2
}
} I was slightly uncertain about the correct behaviour here: should
} SINGLE_LINE_ZLE be set when it is `acting as if' it is set?  If it is set,
} then if it stops acting as if it is set, does it go back to the previous
} value?  I believe if yes to the former, then yes to the latter.  But then,
} I don't necessarily believe yes to the former.

I'd prefer yes to the former, yes to the latter, too, actually, and maybe
the new `shortterm' variable makes that possible (nothing short of changing
the values of USEZLE and SINGLELINEZLE would work before).

} I just tried your patch on my *old* source - ouch - coredump in setintenv() 

Whups, did I send the wrong patch?  Seems so.

Move the entire #ifdef TIOCGWINSZ block to after the call to createparamtab()
in setupvals().  Sorry about that.

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-02-03 18:05 ` Bart Schaefer
@ 1997-02-03 18:34   ` gwing
  1997-02-03 19:03     ` Bart Schaefer
  1997-02-04  8:25     ` Peter Stephenson
  1997-03-05 20:56   ` Zoltan T. Hidvegi
  1 sibling, 2 replies; 16+ messages in thread
From: gwing @ 1997-02-03 18:34 UTC (permalink / raw)
  To: schaefer; +Cc: zsh-workers

Bart Schaefer wrote:
:On Feb 3,  9:55pm, gwing@primenet.com.au wrote:
:} Subject: zle_refresh patch 2
:} It fixes coredumps and bad displays when terms are 1 or 2 lines.
:} When a terminal is 1 or 2 lines high, the terminal will act as if 
:} SINGLE_LINE_ZLE is set.  This avoids many problems with the status line.
:There's already code that causes SINGLE_LINE_ZLE to become set if the
:terminal starts out at, or is shrunk to, 1 line high or 1 column wide.
:(It happens when $COLUMNS or $LINES changes.)  Some of that code is a
:few lines above your changes to test (lines < 3).

:If it's necessary to
:behave as SINGLE_LINE_ZLE for 2 lines as well, the other code should be
:changed so that SINGLE_LINE_ZLE *is* set when zsh is `acting as if' it
:is set.

I was slightly uncertain about the correct behaviour here: should
SINGLE_LINE_ZLE be set when it is `acting as if' it is set?  If it is set,
then if it stops acting as if it is set, does it go back to the previous
value?  I believe if yes to the former, then yes to the latter.  But then,
I don't necessarily believe yes to the former.

Another thing - I suggest you don't set your xterm to 2 columns or less and
setopt SINGLE_LINE_ZLE - I'll have to fix that coredump too.

I just tried your patch on my *old* source - ouch - coredump in setintenv() 
884   if ((pm = (Param) paramtab->getnode(paramtab, s)) && pm->env) {
(gdb) print paramtab
$1 = (struct hashtable *) 0x0

Hope it works OK for you.
-- 
Geoff Wing [gwing@primenet.com.au]   Technical Manager
  Phone    : +61-3-9818 2977         PrimeNet - Internet Consultancy
  Facsimile: +61-3-9819 3788         Web : <URL:http://www.primenet.com.au/>
  Mobile   : 0412 162 441


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: zle_refresh patch 2
  1997-02-03 10:55 gwing
@ 1997-02-03 18:05 ` Bart Schaefer
  1997-02-03 18:34   ` gwing
  1997-03-05 20:56   ` Zoltan T. Hidvegi
  0 siblings, 2 replies; 16+ messages in thread
From: Bart Schaefer @ 1997-02-03 18:05 UTC (permalink / raw)
  To: gwing, zsh-workers

On Feb 3,  9:55pm, gwing@primenet.com.au wrote:
} Subject: zle_refresh patch 2
}
} It fixes coredumps and bad displays when terms are 1 or 2 lines.
} When a terminal is 1 or 2 lines high, the terminal will act as if 
} SINGLE_LINE_ZLE is set.  This avoids many problems with the status line.

There's already code that causes SINGLE_LINE_ZLE to become set if the
terminal starts out at, or is shrunk to, 1 line high or 1 column wide.
(It happens when $COLUMNS or $LINES changes.)  Some of that code is a
few lines above your changes to test (lines < 3).  If it's necessary to
behave as SINGLE_LINE_ZLE for 2 lines as well, the other code should be
changed so that SINGLE_LINE_ZLE *is* set when zsh is `acting as if' it
is set.

} BTW, I put some code in utils.c - that's mainly laziness / lack of time
} on my part - it's there as a safety net because I didn't check every possible
} startup situation.  Ah well...

The following patch, which should be applied -after- Geoff's patch, does
the following things:
  * Centralizes all the columns/USEZLE and lines/SINGLINEZLE fixups in
    zlevarsetfn(), rather than having them spread around in the code;
  * Changes the tests in zlevarsetfn() to punt on ZLE below 3 lines or
    columns rather than only below 2 lines or columns;
  * Calls pm->sets.ifn from setintenv() to make sure zlevarsetfn() is
    called [this should have been in setintenv() long ago];
  * Calls setintenv() everywhere that COLUMNS and LINES change, not just
    from adjustwinsize();
  * In adjustwinsize(), changes LINES, COLUMNS, USEZLE, and SINGLINEZLE
    -before- calling refresh(), so that refresh() can take care of the
    setting of shortterm;
  * Changes Geoff's safety code in adjustwinsize() to a DPUTS() so we
    can see if the other code ever fails.

Can anybody see anything wrong with this?  The one change I'm uncertain
about is reversing the order of setting columns and lines with calling
of refresh(), but it sure looked wrong to me the way it was.

diff -ru zsh-3.0.3-test4-patch/Src/init.c zsh-3.0.3-test4-work/Src/init.c
--- zsh-3.0.3-test4-patch/Src/init.c	Fri Jan 31 21:24:10 1997
+++ zsh-3.0.3-test4-work/Src/init.c	Mon Feb  3 09:16:50 1997
@@ -61,7 +61,7 @@
     opts[LOGINSHELL] = (**argv == '-');
     opts[MONITOR] = 1;   /* may be unset in init_io() */
     opts[PRIVILEGED] = (getuid() != geteuid() || getgid() != getegid());
-    opts[USEZLE] = 1;   /* may be unset in init_io() */
+    opts[USEZLE] = 1;   /* may be unset in init_io() or setupvals() */
     parseargs(argv);   /* sets INTERACTIVE, SHINSTDIN and SINGLECOMMAND */
 
     SHTTY = -1;
@@ -541,14 +541,8 @@
     term  = ztrdup("");
 
 #ifdef TIOCGWINSZ
-    if (!(columns = shttyinfo.winsize.ws_col))
-	columns = 80;
-    if (columns < 2)
-	opts[USEZLE] = 0;
-    if (!(lines = shttyinfo.winsize.ws_row))
-	lines = 24;
-    if (lines < 2)
-	opts[SINGLELINEZLE] = 1;
+    setintenv("COLUMNS", shttyinfo.winsize.ws_col); /* Fixes USEZLE */
+    setintenv("LINES", shttyinfo.winsize.ws_row);   /* Fixes SINGLELINEZLE */
 #else
     columns = 80;
     lines = 24;
diff -ru zsh-3.0.3-test4-patch/Src/params.c zsh-3.0.3-test4-work/Src/params.c
--- zsh-3.0.3-test4-patch/Src/params.c	Fri Jan 31 21:24:10 1997
+++ zsh-3.0.3-test4-work/Src/params.c	Mon Feb  3 09:12:07 1997
@@ -882,6 +882,7 @@
     char buf[DIGBUFSIZE];
 
     if ((pm = (Param) paramtab->getnode(paramtab, s)) && pm->env) {
+	(pm->sets.ifn)(pm, val);
 	sprintf(buf, "%ld", val);
 	pm->env = replenv(pm->env, buf);
     }
@@ -1246,16 +1247,16 @@
 void
 zlevarsetfn(Param pm, long x)
 {
-    if (x < 2) {
+    if (x < 3) {
 	if ((long *)pm->data == & columns) {
 	    if (x <= 0)
-		x = 80;		/* Arbitary, but same as init.c */
+		x = 80;		/* Arbitary */
 	    else
-		x = 2;
+		x = 3;
 	    opts[USEZLE] = 0;
 	} else if ((long *)pm->data == & lines) {
 	    if (x <= 0)
-		x = 24;		/* Arbitrary, but same as init.c */
+		x = 24;		/* Arbitrary */
 	    else
 		opts[SINGLELINEZLE] = 1;
 	}
diff -ru zsh-3.0.3-test4-patch/Src/utils.c zsh-3.0.3-test4-work/Src/utils.c
--- zsh-3.0.3-test4-patch/Src/utils.c	Mon Feb  3 08:29:36 1997
+++ zsh-3.0.3-test4-work/Src/utils.c	Mon Feb  3 09:32:19 1997
@@ -850,24 +850,19 @@
 	columns = shttyinfo.winsize.ws_col;
     if (shttyinfo.winsize.ws_row)
 	lines = shttyinfo.winsize.ws_row;
-    if (oldcols != columns) {
-	if (columns < 2)
-	    opts[USEZLE] = 0;
-	if (lines < 2)
-	    opts[SINGLELINEZLE] = 1;
+    if (oldcols != columns || oldrows != lines) {
+	if (oldcols != columns)
+	    setintenv("COLUMNS", columns);
+	if (oldrows != lines)
+	    setintenv("LINES", lines);
 	if (zleactive) {
 	    resetneeded = winchanged = 1;
 	    refresh();
 	}
-	setintenv("COLUMNS", columns);
     }
-    if (oldrows != lines)
-	setintenv("LINES", lines);
 #endif   /*  TIOCGWINSZ */
-    if (isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3) /* safety */
-	shortterm = 1;
-    else
-	shortterm = 0;
+    DPUTS((!(isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3)
+	   != !shortterm), "BUG: shortterm wrong in adjustwinsize");
 }
 
 /* Move a fd to a place >= 10 and mark the new fd in fdtable.  If the fd *

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern


^ permalink raw reply	[flat|nested] 16+ messages in thread

* zle_refresh patch 2
@ 1997-02-03 10:55 gwing
  1997-02-03 18:05 ` Bart Schaefer
  0 siblings, 1 reply; 16+ messages in thread
From: gwing @ 1997-02-03 10:55 UTC (permalink / raw)
  To: zsh-workers

Heyla, 
this goes on top of zsh-workers/2817

It fixes coredumps and bad displays when terms are 1 or 2 lines.
When a terminal is 1 or 2 lines high, the terminal will act as if 
SINGLE_LINE_ZLE is set.  This avoids many problems with the status line.
I also noticed a very minor display problem with singlerefresh(), but it
must have already been present previously - there's an off-by-one calculation
which makes the display slightly wrong.  If I get some more time later 
(unlikely before the weekend) I'll fix it.

BTW, I put some code in utils.c - that's mainly laziness / lack of time
on my part - it's there as a safety net because I didn't check every possible
startup situation.  Ah well...


*** utils.c.org	Mon Feb  3 21:37:39 1997
--- utils.c	Mon Feb  3 21:38:15 1997
***************
*** 864,869 ****
--- 864,873 ----
      if (oldrows != lines)
  	setintenv("LINES", lines);
  #endif   /*  TIOCGWINSZ */
+     if (isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3) /* safety */
+ 	shortterm = 1;
+     else
+ 	shortterm = 0;
  }
  
  /* Move a fd to a place >= 10 and mark the new fd in fdtable.  If the fd *

*** zle.h.~2~	Fri Jan 24 22:50:08 1997
--- zle.h	Mon Feb  3 21:31:47 1997
***************
*** 106,111 ****
--- 106,114 ----
  /* height of left prompt */
  ZLEXTERN int lppth;
  
+ /* terminal is too short to do anything */
+ ZLEXTERN int shortterm;
+ 
  /* last named command done */
  ZLEXTERN int lastnamed;
  
*** zle_misc.c.~2~	Fri Jan 24 22:50:08 1997
--- zle_misc.c	Mon Feb  3 21:33:29 1997
***************
*** 763,769 ****
  void
  tsetcap(int cap, int flag)
  {
!     if (termok && unset(SINGLELINEZLE) && tcstr[cap]) {
  	switch(flag) {
  	case -1:
  	    tputs(tcstr[cap], 1, putraw);
--- 763,769 ----
  void
  tsetcap(int cap, int flag)
  {
!     if (!shortterm) {
  	switch(flag) {
  	case -1:
  	    tputs(tcstr[cap], 1, putraw);

*** zle_refresh.c.~2~	Fri Jan 24 22:50:08 1997
--- zle_refresh.c	Mon Feb  3 21:32:59 1997
***************
*** 72,78 ****
   
      genprompts();
      winw = columns;  /* terminal width */
!     if (isset(SINGLELINEZLE) || termok != TERM_OK)
  	winh = 1;
      else
  	winh = (lines < 2) ? 24 : lines;
--- 72,78 ----
   
      genprompts();
      winw = columns;  /* terminal width */
!     if (shortterm)
  	winh = 1;
      else
  	winh = (lines < 2) ? 24 : lines;
***************
*** 245,250 ****
--- 245,254 ----
  
      cleareol = 0;		/* unset */
      more_start = more_end = 0;	/* unset */
+     if (isset(SINGLELINEZLE) || termok != TERM_OK || lines < 3)
+ 	shortterm = 1;
+     else
+ 	shortterm = 0;
      if (resetneeded) {
  	onumscrolls = 0;
  	setterm();
***************
*** 271,277 ****
                  cleareol = 1;   /* request: clear to end of line */
          if (t0 > -1)
              olnct = t0;
!         if (isset(SINGLELINEZLE) || termok != TERM_OK)
              vcs = 0;
          else if (!clearflag && lpptlen)
              zwrite(lpptbuf, lpptlen, 1, shout);
--- 275,281 ----
                  cleareol = 1;   /* request: clear to end of line */
          if (t0 > -1)
              olnct = t0;
!         if (shortterm)
              vcs = 0;
          else if (!clearflag && lpptlen)
              zwrite(lpptbuf, lpptlen, 1, shout);
***************
*** 288,294 ****
  /* now winw equals columns and winh equals lines 
     width comparisons can be made with winw, height comparisons with winh */
  
!     if (isset(SINGLELINEZLE) || termok != TERM_OK) {
  	singlerefresh();
  	return;
      }
--- 292,298 ----
  /* now winw equals columns and winh equals lines 
     width comparisons can be made with winw, height comparisons with winh */
  
!     if (shortterm) {
  	singlerefresh();
  	return;
      }
***************
*** 355,360 ****
--- 359,371 ----
  
      if (statusline) {
  	tosln = ln + 1;
+         if (ln == winh - 1) {
+ 	    if (nvln > 0) {
+ 		scrollwindow(0);
+ 		nvln--;
+ 	    }
+ 	    tosln--;
+ 	}
  	snextline
  	t = (unsigned char *)statusline;
  	for (; t < (unsigned char *)statusline + statusll; t++) {



-- 
Geoff Wing [gwing@primenet.com.au]   Technical Manager
  Phone    : +61-3-9818 2977         PrimeNet - Internet Consultancy
  Facsimile: +61-3-9819 3788         Web : <URL:http://www.primenet.com.au/>
  Mobile   : 0412 162 441


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~1997-03-06 19:58 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-03-05 23:52 zle_refresh patch 2 Zoltan T. Hidvegi
  -- strict thread matches above, loose matches on Subject: below --
1997-02-03 10:55 gwing
1997-02-03 18:05 ` Bart Schaefer
1997-02-03 18:34   ` gwing
1997-02-03 19:03     ` Bart Schaefer
1997-02-04  8:25     ` Peter Stephenson
1997-03-05 20:56   ` Zoltan T. Hidvegi
1997-03-05 21:55     ` Bart Schaefer
1997-03-05 23:06       ` Bart Schaefer
1997-03-05 23:47         ` Zoltan T. Hidvegi
1997-03-06  0:51           ` Bart Schaefer
1997-03-06  3:56             ` gwing
1997-03-06  4:58               ` Bart Schaefer
1997-03-06  5:03                 ` gwing
1997-03-06 18:32                   ` Zoltan T. Hidvegi
1997-03-06 18:58             ` Zoltan T. Hidvegi

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).