fixed bug in realloc: copy the min size of the new and old block.
[unix-history] / usr / src / bin / csh / hist.c
index 3b9d76e..ad7d4e7 100644 (file)
@@ -6,14 +6,23 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)hist.c     5.5 (Berkeley) %G%";
+static char sccsid[] = "@(#)hist.c     5.10 (Berkeley) %G%";
 #endif /* not lint */
 
 #endif /* not lint */
 
-#include "sh.h"
+#include <sys/types.h>
+#include <stdlib.h>
+#if __STDC__
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
 
 
-static void hfree();
-static void dohist1();
-static void phist();
+#include "csh.h"
+#include "extern.h"
+
+static void    hfree __P((struct Hist *));
+static void    dohist1 __P((struct Hist *, int *, int, int));
+static void    phist __P((struct Hist *, int));
 
 void
 savehist(sp)
 
 void
 savehist(sp)
@@ -55,7 +64,6 @@ enthist(event, lp, docopy)
     register struct Hist *np;
 
     np = (struct Hist *) xmalloc((size_t) sizeof(*np));
     register struct Hist *np;
 
     np = (struct Hist *) xmalloc((size_t) sizeof(*np));
-    (void) time(&(np->Htime));
     np->Hnum = np->Href = event;
     if (docopy) {
        copylex(&np->Hlex, lp);
     np->Hnum = np->Href = event;
     if (docopy) {
        copylex(&np->Hlex, lp);
@@ -81,29 +89,28 @@ hfree(hp)
 }
 
 void
 }
 
 void
-dohist(vp)
-    Char  **vp;
+/*ARGSUSED*/
+dohist(v, t)
+    Char **v;
+    struct command *t;
 {
 {
-    int     n, rflg = 0, hflg = 0, tflg = 0;
+    int     n, rflg = 0, hflg = 0;
 
     if (getn(value(STRhistory)) == 0)
        return;
     if (setintr)
 
     if (getn(value(STRhistory)) == 0)
        return;
     if (setintr)
-       (void) sigsetmask(sigblock((sigmask_t) 0) & ~sigmask(SIGINT));
-    while (*++vp && **vp == '-') {
-       Char   *vp2 = *vp;
+       (void) sigsetmask(sigblock((sigset_t) 0) & ~sigmask(SIGINT));
+    while (*++v && **v == '-') {
+       Char   *vp = *v;
 
 
-       while (*++vp2)
-           switch (*vp2) {
+       while (*++vp)
+           switch (*vp) {
            case 'h':
                hflg++;
                break;
            case 'r':
                rflg++;
                break;
            case 'h':
                hflg++;
                break;
            case 'r':
                rflg++;
                break;
-           case 't':
-               tflg++;
-               break;
            case '-':           /* ignore multiple '-'s */
                break;
            default:
            case '-':           /* ignore multiple '-'s */
                break;
            default:
@@ -111,18 +118,18 @@ dohist(vp)
                break;
            }
     }
                break;
            }
     }
-    if (*vp)
-       n = getn(*vp);
+    if (*v)
+       n = getn(*v);
     else {
        n = getn(value(STRhistory));
     }
     else {
        n = getn(value(STRhistory));
     }
-    dohist1(Histlist.Hnext, &n, rflg, hflg, tflg);
+    dohist1(Histlist.Hnext, &n, rflg, hflg);
 }
 
 static void
 }
 
 static void
-dohist1(hp, np, rflg, hflg, tflg)
+dohist1(hp, np, rflg, hflg)
     struct Hist *hp;
     struct Hist *hp;
-    int    *np, rflg, hflg, tflg;
+    int    *np, rflg, hflg;
 {
     bool    print = (*np) > 0;
 
 {
     bool    print = (*np) > 0;
 
@@ -130,42 +137,22 @@ dohist1(hp, np, rflg, hflg, tflg)
        (*np)--;
        hp->Href++;
        if (rflg == 0) {
        (*np)--;
        hp->Href++;
        if (rflg == 0) {
-           dohist1(hp->Hnext, np, rflg, hflg, tflg);
+           dohist1(hp->Hnext, np, rflg, hflg);
            if (print)
            if (print)
-               phist(hp, hflg, tflg);
+               phist(hp, hflg);
            return;
        }
        if (*np >= 0)
            return;
        }
        if (*np >= 0)
-           phist(hp, hflg, tflg);
+           phist(hp, hflg);
     }
 }
 
 static void
     }
 }
 
 static void
-phist(hp, hflg, tflg)
+phist(hp, hflg)
     register struct Hist *hp;
     register struct Hist *hp;
-    int     hflg, tflg;
+    int     hflg;
 {
 {
-    struct tm *t;
-    char    ampm = 'a';
-
-    if (hflg == 0) {
-       xprintf("%6d\t", hp->Hnum);
-       if (tflg == 0) {
-           t = localtime(&hp->Htime);
-           if (adrof(STRampm)) {       /* addition by Hans J. Albertsson */
-               if (t->tm_hour >= 12) {
-                   if (t->tm_hour > 12)
-                       t->tm_hour -= 12;
-                   ampm = 'p';
-               }
-               else if (t->tm_hour == 0)
-                   t->tm_hour = 12;
-               xprintf("%2d:%02d%cm\t", t->tm_hour, t->tm_min, ampm);
-           }
-           else {
-               xprintf("%2d:%02d\t", t->tm_hour, t->tm_min);
-           }
-       }
-    }
-    prlex(&hp->Hlex);
+    if (hflg == 0)
+       (void) fprintf(cshout, "%6d\t", hp->Hnum);
+    prlex(cshout, &hp->Hlex);
 }
 }