ipc.c: Adding Andrews become_root code to the main branch.
[samba.git] / source3 / ubiqx / ubi_sLinkList.c
1 /* ========================================================================== **
2  *                              ubi_sLinkList.c
3  *
4  *  Copyright (C) 1997 by Christopher R. Hertel
5  *
6  *  Email: crh@ubiqx.mn.org
7  * -------------------------------------------------------------------------- **
8  *  This module implements a really simple singly-linked list.
9  * -------------------------------------------------------------------------- **
10  *
11  *  This library is free software; you can redistribute it and/or
12  *  modify it under the terms of the GNU Library General Public
13  *  License as published by the Free Software Foundation; either
14  *  version 2 of the License, or (at your option) any later version.
15  *
16  *  This library is distributed in the hope that it will be useful,
17  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  *  Library General Public License for more details.
20  *
21  *  You should have received a copy of the GNU Library General Public
22  *  License along with this library; if not, write to the Free
23  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  *
25  * -------------------------------------------------------------------------- **
26  *
27  * $Log: ubi_sLinkList.c,v $
28  * Revision 1.1  1997/10/15 17:59:58  crh
29  * Added ubi_sLinkList module which manages simple singly-linked lists.
30  *
31  * ========================================================================== **
32  */
33
34 #include "ubi_sLinkList.h"
35
36 /* ========================================================================== **
37  * Functions...
38  */
39
40 ubi_slListPtr ubi_slInitList( ubi_slListPtr ListPtr )
41   /* ------------------------------------------------------------------------ **
42    * Initialize a singly-linked list header.
43    *
44    *  Input:  ListPtr - A pointer to the list structure that is to be
45    *                    initialized for use.
46    *
47    *  Output: A pointer to the initialized list header (i.e., same as
48    *          <ListPtr>).
49    *
50    * ------------------------------------------------------------------------ **
51    */
52   {
53   ListPtr->Head  = NULL;
54   ListPtr->count = 0;
55   return( ListPtr );
56   } /* ubi_slInitList */
57
58 ubi_slNodePtr ubi_slInsert( ubi_slListPtr ListPtr,
59                             ubi_slNodePtr New )
60   /* ------------------------------------------------------------------------ **
61    * Insert a new node at the head of the list.
62    *
63    *  Input:  ListPtr - A pointer to the list into which the node is to
64    *                    be inserted.
65    *          New     - Pointer to the node that is to be added to the list.
66    *
67    *  Output: A pointer to the node that was inserted into the list (i.e.,
68    *          the same as <New>).
69    *
70    * ------------------------------------------------------------------------ **
71    */
72   {
73   New->Next     = ListPtr->Head;
74   ListPtr->Head = New;
75   ++(ListPtr->count);
76   return( New );
77   } /* ubi_slInsert */
78
79 ubi_slNodePtr ubi_slRemove( ubi_slListPtr ListPtr )
80   /* ------------------------------------------------------------------------ **
81    * Remove a node from the head of the list.
82    *
83    *  Input:  ListPtr - A pointer to the list from which the node is to be
84    *                    removed.
85    *
86    *  Output: A pointer to the node that was removed.
87    *
88    * ------------------------------------------------------------------------ **
89    */
90   {
91   ubi_slNodePtr Old = ListPtr->Head;
92
93   if( NULL != Old )
94     {
95     ListPtr->Head = Old->Next;
96     --(ListPtr->count);
97     }
98   return( Old );
99   } /* ubi_slRemove */
100
101
102 /* ================================ The End ================================= */