~ubuntu-branches/ubuntu/saucy/pmake/saucy-proposed

« back to all changes in this revision

Viewing changes to lst.lib/lstFindFrom.c

  • Committer: Bazaar Package Importer
  • Author(s): Steve McIntyre
  • Date: 2002-03-12 21:59:55 UTC
  • Revision ID: james.westby@ubuntu.com-20020312215955-i183oxj3rpm464yh
Tags: 1.45-10
* Fixed broken '.Nm ""' directives in the man page. Closes: #137768
* Changed name from "make" to "pmake" in manpage.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $NetBSD: lstFindFrom.c,v 1.8 1997/09/28 03:31:24 lukem Exp $    */
 
2
 
 
3
/*
 
4
 * Copyright (c) 1988, 1989, 1990, 1993
 
5
 *      The Regents of the University of California.  All rights reserved.
 
6
 *
 
7
 * This code is derived from software contributed to Berkeley by
 
8
 * Adam de Boor.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted provided that the following conditions
 
12
 * are met:
 
13
 * 1. Redistributions of source code must retain the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer.
 
15
 * 2. Redistributions in binary form must reproduce the above copyright
 
16
 *    notice, this list of conditions and the following disclaimer in the
 
17
 *    documentation and/or other materials provided with the distribution.
 
18
 * 3. All advertising materials mentioning features or use of this software
 
19
 *    must display the following acknowledgement:
 
20
 *      This product includes software developed by the University of
 
21
 *      California, Berkeley and its contributors.
 
22
 * 4. Neither the name of the University nor the names of its contributors
 
23
 *    may be used to endorse or promote products derived from this software
 
24
 *    without specific prior written permission.
 
25
 *
 
26
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
27
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
28
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
29
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
30
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
31
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
32
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
33
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
34
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
35
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
36
 * SUCH DAMAGE.
 
37
 */
 
38
 
 
39
#ifdef MAKE_BOOTSTRAP
 
40
static char rcsid[] = "$NetBSD: lstFindFrom.c,v 1.8 1997/09/28 03:31:24 lukem Exp $";
 
41
#else
 
42
#include <sys/cdefs.h>
 
43
#ifndef lint
 
44
#if 0
 
45
static char sccsid[] = "@(#)lstFindFrom.c       8.1 (Berkeley) 6/6/93";
 
46
#else
 
47
__RCSID("$NetBSD: lstFindFrom.c,v 1.8 1997/09/28 03:31:24 lukem Exp $");
 
48
#endif
 
49
#endif /* not lint */
 
50
#endif
 
51
 
 
52
/*-
 
53
 * LstFindFrom.c --
 
54
 *      Find a node on a list from a given starting point. Used by Lst_Find.
 
55
 */
 
56
 
 
57
#include        "lstInt.h"
 
58
 
 
59
/*-
 
60
 *-----------------------------------------------------------------------
 
61
 * Lst_FindFrom --
 
62
 *      Search for a node starting and ending with the given one on the
 
63
 *      given list using the passed datum and comparison function to
 
64
 *      determine when it has been found.
 
65
 *
 
66
 * Results:
 
67
 *      The found node or NILLNODE
 
68
 *
 
69
 * Side Effects:
 
70
 *      None.
 
71
 *
 
72
 *-----------------------------------------------------------------------
 
73
 */
 
74
LstNode
 
75
Lst_FindFrom (l, ln, d, cProc)
 
76
    Lst                 l;
 
77
    register LstNode    ln;
 
78
    register ClientData d;
 
79
    register int        (*cProc) __P((ClientData, ClientData));
 
80
{
 
81
    register ListNode   tln;
 
82
    Boolean             found = FALSE;
 
83
 
 
84
    if (!LstValid (l) || LstIsEmpty (l) || !LstNodeValid (ln, l)) {
 
85
        return (NILLNODE);
 
86
    }
 
87
 
 
88
    tln = (ListNode)ln;
 
89
 
 
90
    do {
 
91
        if ((*cProc) (tln->datum, d) == 0) {
 
92
            found = TRUE;
 
93
            break;
 
94
        } else {
 
95
            tln = tln->nextPtr;
 
96
        }
 
97
    } while (tln != (ListNode)ln && tln != NilListNode);
 
98
 
 
99
    if (found) {
 
100
        return ((LstNode)tln);
 
101
    } else {
 
102
        return (NILLNODE);
 
103
    }
 
104
}
 
105