1*40411Sbostic /*-
2*40411Sbostic  * LstDeQueue.c --
3*40411Sbostic  *	Remove the node and return its datum from the head of the list
4*40411Sbostic  *
5*40411Sbostic  * Copyright (c) 1988 by University of California Regents
6*40411Sbostic  *
7*40411Sbostic  * Permission to use, copy, modify, and distribute this
8*40411Sbostic  * software and its documentation for any purpose and without
9*40411Sbostic  * fee is hereby granted, provided that the above copyright
10*40411Sbostic  * notice appears in all copies.  Neither the University of California nor
11*40411Sbostic  * Adam de Boor makes any representations about the suitability of this
12*40411Sbostic  * software for any purpose.  It is provided "as is" without
13*40411Sbostic  * express or implied warranty.
14*40411Sbostic  */
15*40411Sbostic #ifndef lint
16*40411Sbostic static char *rcsid =
17*40411Sbostic "$Id: lstDeQueue.c,v 1.5 88/11/17 20:52:11 adam Exp $ SPRITE (Berkeley)";
18*40411Sbostic #endif lint
19*40411Sbostic 
20*40411Sbostic #include	"lstInt.h"
21*40411Sbostic 
22*40411Sbostic /*-
23*40411Sbostic  *-----------------------------------------------------------------------
24*40411Sbostic  * Lst_DeQueue --
25*40411Sbostic  *	Remove and return the datum at the head of the given list.
26*40411Sbostic  *
27*40411Sbostic  * Results:
28*40411Sbostic  *	The datum in the node at the head or (ick) NIL if the list
29*40411Sbostic  *	is empty.
30*40411Sbostic  *
31*40411Sbostic  * Side Effects:
32*40411Sbostic  *	The head node is removed from the list.
33*40411Sbostic  *
34*40411Sbostic  *-----------------------------------------------------------------------
35*40411Sbostic  */
36*40411Sbostic ClientData
37*40411Sbostic Lst_DeQueue (l)
38*40411Sbostic     Lst	    	  l;
39*40411Sbostic {
40*40411Sbostic     ClientData	  rd;
41*40411Sbostic     register ListNode	tln;
42*40411Sbostic 
43*40411Sbostic     tln = (ListNode) Lst_First (l);
44*40411Sbostic     if (tln == NilListNode) {
45*40411Sbostic 	return ((ClientData) NIL);
46*40411Sbostic     }
47*40411Sbostic 
48*40411Sbostic     rd = tln->datum;
49*40411Sbostic     if (Lst_Remove (l, (LstNode)tln) == FAILURE) {
50*40411Sbostic 	return ((ClientData) NIL);
51*40411Sbostic     } else {
52*40411Sbostic 	return (rd);
53*40411Sbostic     }
54*40411Sbostic }
55*40411Sbostic 
56