* Copyright (c) 1980, 1991 The Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)hist.c 5.9 (Berkeley) 6/8/91";
static void hfree
__P((struct Hist
*));
static void dohist1
__P((struct Hist
*, int *, int, int, int));
static void phist
__P((struct Hist
*, int, int));
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((sigset_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
);