Commit | Line | Data |
---|---|---|
bb2109e7 KB |
1 | /* |
2 | * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * This code is derived from software contributed to Berkeley by | |
6 | * Adam de Boor. | |
7 | * | |
1c15e888 C |
8 | * Redistribution and use in source and binary forms are permitted |
9 | * provided that: (1) source distributions retain this entire copyright | |
10 | * notice and comment, and (2) distributions including binaries display | |
11 | * the following acknowledgement: ``This product includes software | |
12 | * developed by the University of California, Berkeley and its contributors'' | |
13 | * in the documentation or other materials provided with the distribution | |
14 | * and in all advertising materials mentioning features or use of this | |
15 | * software. Neither the name of the University nor the names of its | |
16 | * contributors may be used to endorse or promote products derived | |
17 | * from this software without specific prior written permission. | |
18 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
19 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
20 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
bb2109e7 KB |
21 | */ |
22 | ||
23 | #ifndef lint | |
1c15e888 | 24 | static char sccsid[] = "@(#)lstIsAtEnd.c 5.3 (Berkeley) 6/1/90"; |
bb2109e7 KB |
25 | #endif /* not lint */ |
26 | ||
c65fedcf KB |
27 | /*- |
28 | * LstIsAtEnd.c -- | |
29 | * Tell if the current node is at the end of the list. | |
30 | * The sequential functions access the list in a slightly different way. | |
31 | * CurPtr points to their idea of the current node in the list and they | |
32 | * access the list based on it. Because the list is circular, Lst_Next | |
33 | * and Lst_Prev will go around the list forever. Lst_IsAtEnd must be | |
34 | * used to determine when to stop. | |
c65fedcf | 35 | */ |
c65fedcf KB |
36 | |
37 | #include "lstInt.h" | |
38 | ||
39 | /*- | |
40 | *----------------------------------------------------------------------- | |
41 | * Lst_IsAtEnd -- | |
42 | * Return true if have reached the end of the given list. | |
43 | * | |
44 | * Results: | |
45 | * TRUE if at the end of the list (this includes the list not being | |
46 | * open or being invalid) or FALSE if not. We return TRUE if the list | |
47 | * is invalid or unopend so as to cause the caller to exit its loop | |
48 | * asap, the assumption being that the loop is of the form | |
49 | * while (!Lst_IsAtEnd (l)) { | |
50 | * ... | |
51 | * } | |
52 | * | |
53 | * Side Effects: | |
54 | * None. | |
55 | * | |
56 | *----------------------------------------------------------------------- | |
57 | */ | |
58 | Boolean | |
59 | Lst_IsAtEnd (l) | |
60 | Lst l; | |
61 | { | |
62 | register List list = (List) l; | |
63 | ||
64 | return (!LstValid (l) || !list->isOpen || | |
65 | (list->atEnd == Head) || (list->atEnd == Tail)); | |
66 | } | |
67 |