Deleted Added
full compact
look.c (95060) look.c (95887)
1/* $OpenBSD: look.c,v 1.9 2002/02/16 21:27:48 millert Exp $ */
1/* $OpenBSD: look.c,v 1.10 2002/04/26 16:15:16 espie Exp $ */
2
3/*
4 * Copyright (c) 1989, 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 * Ozan Yigit at York University.
9 *

--- 22 unchanged lines hidden (view full) ---

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#include <sys/cdefs.h>
2
3/*
4 * Copyright (c) 1989, 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 * Ozan Yigit at York University.
9 *

--- 22 unchanged lines hidden (view full) ---

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#include <sys/cdefs.h>
40__SCCSID("@(#)look.c 8.1 (Berkeley) 6/6/93");
41__FBSDID("$FreeBSD: head/usr.bin/m4/look.c 95060 2002-04-19 17:26:21Z jmallett $");
40__SCCSID("@(#)look.c 8.1 (Berkeley) 6/6/93");
41__RCSID_SOURCE("$OpenBSD: look.c,v 1.10 2002/04/26 16:15:16 espie Exp $");
42__FBSDID("$FreeBSD: head/usr.bin/m4/look.c 95887 2002-05-01 21:37:29Z jmallett $");
42
43/*
44 * look.c
45 * Facility: m4 macro processor
46 * by: oz
47 */
48
49#include <sys/types.h>
50#include <stdio.h>
51#include <stdlib.h>
52#include <stddef.h>
53#include <string.h>
54#include "mdef.h"
55#include "stdd.h"
56#include "extern.h"
57
58static void freent(ndptr);
59
43
44/*
45 * look.c
46 * Facility: m4 macro processor
47 * by: oz
48 */
49
50#include <sys/types.h>
51#include <stdio.h>
52#include <stdlib.h>
53#include <stddef.h>
54#include <string.h>
55#include "mdef.h"
56#include "stdd.h"
57#include "extern.h"
58
59static void freent(ndptr);
60
60unsigned
61hash(name)
62 const char *name;
61unsigned int
62hash(const char *name)
63{
64 unsigned int h = 0;
65 while (*name)
66 h = (h << 5) + h + *name++;
67 return (h);
68}
69
70/*
71 * find name in the hash table
72 */
73ndptr
63{
64 unsigned int h = 0;
65 while (*name)
66 h = (h << 5) + h + *name++;
67 return (h);
68}
69
70/*
71 * find name in the hash table
72 */
73ndptr
74lookup(name)
75 const char *name;
74lookup(const char *name)
76{
77 ndptr p;
78 unsigned int h;
79
80 h = hash(name);
81 for (p = hashtab[h % HASHSIZE]; p != nil; p = p->nxtptr)
82 if (h == p->hv && STREQ(name, p->name))
83 break;
84 return (p);
85}
86
87/*
88 * hash and create an entry in the hash table.
89 * The new entry is added in front of a hash bucket.
90 */
91ndptr
75{
76 ndptr p;
77 unsigned int h;
78
79 h = hash(name);
80 for (p = hashtab[h % HASHSIZE]; p != nil; p = p->nxtptr)
81 if (h == p->hv && STREQ(name, p->name))
82 break;
83 return (p);
84}
85
86/*
87 * hash and create an entry in the hash table.
88 * The new entry is added in front of a hash bucket.
89 */
90ndptr
92addent(name)
93 const char *name;
91addent(const char *name)
94{
95 unsigned int h;
96 ndptr p;
97
98 h = hash(name);
99 p = (ndptr) xalloc(sizeof(struct ndblock));
100 p->nxtptr = hashtab[h % HASHSIZE];
101 hashtab[h % HASHSIZE] = p;
102 p->name = xstrdup(name);
103 p->hv = h;
104 return p;
105}
106
107static void
92{
93 unsigned int h;
94 ndptr p;
95
96 h = hash(name);
97 p = (ndptr) xalloc(sizeof(struct ndblock));
98 p->nxtptr = hashtab[h % HASHSIZE];
99 hashtab[h % HASHSIZE] = p;
100 p->name = xstrdup(name);
101 p->hv = h;
102 return p;
103}
104
105static void
108freent(p)
109 ndptr p;
106freent(ndptr p)
110{
111 free((char *) p->name);
112 if (p->defn != null)
113 free((char *) p->defn);
114 free((char *) p);
115}
116
117/*
118 * remove an entry from the hashtable
119 */
120void
107{
108 free((char *) p->name);
109 if (p->defn != null)
110 free((char *) p->defn);
111 free((char *) p);
112}
113
114/*
115 * remove an entry from the hashtable
116 */
117void
121remhash(name, all)
122 const char *name;
123 int all;
118remhash(const char *name, int all)
124{
125 unsigned int h;
126 ndptr xp, tp, mp;
127
128 h = hash(name);
129 mp = hashtab[h % HASHSIZE];
130 tp = nil;
131 while (mp != nil) {

--- 20 unchanged lines hidden ---
119{
120 unsigned int h;
121 ndptr xp, tp, mp;
122
123 h = hash(name);
124 mp = hashtab[h % HASHSIZE];
125 tp = nil;
126 while (mp != nil) {

--- 20 unchanged lines hidden ---