* Copyright (c) 1980, 1991 The Regents of the University of California.
* %sccs.include.redist.c%
static char sccsid
[] = "@(#)hist.c 5.5 (Berkeley) %G%";
register struct Hist
*hp
, *np
;
register int histlen
= 0;
/* throw away null lines */
if (sp
->next
->word
[0] == '\n')
histlen
= histlen
* 10 + *p
++ - '0';
for (hp
= &Histlist
; np
= hp
->Hnext
;)
if (eventno
- np
->Href
>= histlen
|| histlen
== 0)
hp
->Hnext
= np
->Hnext
, hfree(np
);
(void) enthist(++eventno
, sp
, 1);
enthist(event
, lp
, docopy
)
register struct wordent
*lp
;
register struct Hist
*np
;
np
= (struct Hist
*) xmalloc((size_t) sizeof(*np
));
(void) time(&(np
->Htime
));
np
->Hnum
= np
->Href
= event
;
np
->Hlex
.next
= lp
->next
;
lp
->next
->prev
= &np
->Hlex
;
np
->Hlex
.prev
= lp
->prev
;
lp
->prev
->next
= &np
->Hlex
;
np
->Hnext
= Histlist
.Hnext
;
register struct Hist
*hp
;
int n
, rflg
= 0, hflg
= 0, tflg
= 0;
if (getn(value(STRhistory
)) == 0)
(void) sigsetmask(sigblock((sigmask_t
) 0) & ~sigmask(SIGINT
));
while (*++vp
&& **vp
== '-') {
case '-': /* ignore multiple '-'s */
n
= getn(value(STRhistory
));
dohist1(Histlist
.Hnext
, &n
, rflg
, hflg
, tflg
);
dohist1(hp
, np
, rflg
, hflg
, tflg
)
int *np
, rflg
, hflg
, tflg
;
for (; hp
!= 0; hp
= hp
->Hnext
) {
dohist1(hp
->Hnext
, np
, rflg
, hflg
, tflg
);
register struct Hist
*hp
;
xprintf("%6d\t", hp
->Hnum
);
t
= localtime(&hp
->Htime
);
if (adrof(STRampm
)) { /* addition by Hans J. Albertsson */
else if (t
->tm_hour
== 0)
xprintf("%2d:%02d%cm\t", t
->tm_hour
, t
->tm_min
, ampm
);
xprintf("%2d:%02d\t", t
->tm_hour
, t
->tm_min
);