-# $OpenBSD: Makefile,v 1.35 1997/02/02 23:18:43 millert Exp $
+# $OpenBSD: Makefile,v 1.36 1997/02/03 00:08:24 millert Exp $
# $NetBSD: Makefile,v 1.59 1996/05/15 21:36:43 jtc Exp $
# @(#)Makefile 5.45.1.1 (Berkeley) 5/6/91
malloc.h math.h md4.h md5.h memory.h mpool.h ndbm.h netdb.h \
netgroup.h nlist.h nl_types.h olf_abi.h paths.h poll.h pwd.h \
ranlib.h re_comp.h regex.h resolv.h search.h setjmp.h sgtty.h \
- sha1.h signal.h stab.h stddef.h stdio.h stdlib.h string.h stringlist.h \
+ sha1.h signal.h stab.h stddef.h stdio.h stdlib.h string.h \
strings.h struct.h sysexits.h tar.h time.h ttyent.h tzfile.h \
unistd.h utime.h utmp.h vis.h
-# $OpenBSD: Makefile.inc,v 1.8 1997/02/02 23:27:53 millert Exp $
+# $OpenBSD: Makefile.inc,v 1.9 1997/02/03 00:10:08 millert Exp $
# gen sources
.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/gen ${.CURDIR}/gen
nice.c nlist.c opendir.c pause.c popen.c psignal.c pwcache.c raise.c \
readdir.c rewinddir.c scandir.c seekdir.c setdomainname.c \
sethostname.c setjmperr.c setmode.c setproctitle.c siginterrupt.c \
- siglist.c signal.c signame.c sigsetops.c sleep.c stringlist.c \
- sysconf.c sysctl.c syslog.c telldir.c time.c times.c timezone.c \
- tolower_.c ttyname.c ttyslot.c toupper_.c ualarm.c uname.c unvis.c \
- usleep.c utime.c valloc.c vis.c wait.c wait3.c waitpid.c warn.c \
- warnx.c vwarn.c vwarnx.c verr.c verrx.c
+ siglist.c signal.c signame.c sigsetops.c sleep.c sysconf.c sysctl.c \
+ syslog.c telldir.c time.c times.c timezone.c tolower_.c ttyname.c \
+ ttyslot.c toupper_.c ualarm.c uname.c unvis.c usleep.c utime.c \
+ valloc.c vis.c wait.c wait3.c waitpid.c warn.c warnx.c vwarn.c \
+ vwarnx.c verr.c verrx.c
# indirect reference stubs, to be removed soon.
SRCS+= _err.c _errx.c _sys_errlist.c _sys_nerr.c _sys_siglist.c \
-/* $OpenBSD: getnetgrent.c,v 1.4 1997/02/02 23:27:52 millert Exp $ */
-/* $NetBSD: getnetgrent.c,v 1.11 1997/01/17 07:26:19 lukem Exp $ */
+/* $OpenBSD: getnetgrent.c,v 1.5 1997/02/03 00:10:08 millert Exp $ */
/*
* Copyright (c) 1994 Christos Zoulas
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$OpenBSD: getnetgrent.c,v 1.4 1997/02/02 23:27:52 millert Exp $";
+static char *rcsid = "$OpenBSD: getnetgrent.c,v 1.5 1997/02/03 00:10:08 millert Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
#include <err.h>
#include <ctype.h>
#include <stdlib.h>
-#include <stringlist.h>
#include <db.h>
-#ifdef YP
-#include <rpcsvc/ypclnt.h>
-#endif
#define _NG_STAR(s) (((s) == NULL || *(s) == '\0') ? _ngstar : s)
#define _NG_EMPTY(s) ((s) == NULL ? "" : s)
static struct netgroup *_nglist = (struct netgroup *)NULL;
static DB *_ng_db;
+/*
+ * Simple string list
+ */
+struct stringlist {
+ char **sl_str;
+ size_t sl_max;
+ size_t sl_cur;
+};
+
static int getstring __P((char **, int, char **));
static struct netgroup *getnetgroup __P((char **));
static int lookup __P((const char *, char *, char **, int));
-static void addgroup __P((char *, StringList *, char *));
+static void addgroup __P((char *, struct stringlist *, char *));
static int in_check __P((const char *, const char *,
const char *, struct netgroup *));
-static int in_find __P((char *, StringList *,
+static int in_find __P((char *, struct stringlist *,
char *, const char *,
const char *, const char *));
static char *in_lookup1 __P((const char *, const char *,
static int in_lookup __P((const char *, const char *,
const char *, const char *, int));
+/*
+ * _ng_sl_init(): Initialize a string list
+ */
+struct stringlist *
+_ng_sl_init()
+{
+ struct stringlist *sl = malloc(sizeof(struct stringlist));
+ if (sl == NULL)
+ _err(1, _ngoomem);
+
+ sl->sl_cur = 0;
+ sl->sl_max = 20;
+ sl->sl_str = malloc(sl->sl_max * sizeof(char *));
+ if (sl->sl_str == NULL)
+ _err(1, _ngoomem);
+ return sl;
+}
+
+
+/*
+ * _ng_sl_add(): Add an item to the string list
+ */
+void
+_ng_sl_add(sl, name)
+ struct stringlist *sl;
+ char *name;
+{
+ if (sl->sl_cur == sl->sl_max - 1) {
+ sl->sl_max += 20;
+ sl->sl_str = realloc(sl->sl_str, sl->sl_max * sizeof(char *));
+ if (sl->sl_str == NULL)
+ _err(1, _ngoomem);
+ }
+ sl->sl_str[sl->sl_cur++] = name;
+}
+
+
+/*
+ * _ng_sl_free(): Free a stringlist
+ */
+void
+_ng_sl_free(sl, all)
+ struct stringlist *sl;
+ int all;
+{
+ size_t i;
+
+ if (all)
+ for (i = 0; i < sl->sl_cur; i++)
+ free(sl->sl_str[i]);
+ free(sl->sl_str);
+ free(sl);
+}
+
+
+/*
+ * sl_find(): Find a name in the string list
+ */
+char *
+_ng_sl_find(sl, name)
+ struct stringlist *sl;
+ char *name;
+{
+ size_t i;
+
+ for (i = 0; i < sl->sl_cur; i++)
+ if (strcmp(sl->sl_str[i], name) == 0)
+ return sl->sl_str[i];
+
+ return NULL;
+}
+
+
/*
* getstring(): Get a string delimited by the character, skipping leading and
* trailing blanks and advancing the pointer
*/
static void
addgroup(ypdom, sl, grp)
- char *ypdom;
- StringList *sl;
- char *grp;
+ char *ypdom;
+ struct stringlist *sl;
+ char *grp;
{
char *line, *p;
struct netgroup *ng;
(void) fprintf(stderr, "addgroup(%s)\n", grp);
#endif
/* check for cycles */
- if (sl_find(sl, grp) != NULL) {
+ if (_ng_sl_find(sl, grp) != NULL) {
free(grp);
_warnx("netgroup: Cycle in group `%s'", grp);
return;
}
- sl_add(sl, grp);
+ _ng_sl_add(sl, grp);
/* Lookup this netgroup */
if (!lookup(ypdom, grp, &line, _NG_KEYBYNAME))
*/
static int
in_find(ypdom, sl, grp, host, user, domain)
- char *ypdom;
- StringList *sl;
- char *grp;
- const char *host;
- const char *user;
- const char *domain;
+ char *ypdom;
+ struct stringlist *sl;
+ char *grp;
+ const char *host;
+ const char *user;
+ const char *domain;
{
char *line, *p;
int i;
(void) fprintf(stderr, "in_find(%s)\n", grp);
#endif
/* check for cycles */
- if (sl_find(sl, grp) != NULL) {
+ if (_ng_sl_find(sl, grp) != NULL) {
free(grp);
_warnx("netgroup: Cycle in group `%s'", grp);
return 0;
}
- sl_add(sl, grp);
+ _ng_sl_add(sl, grp);
/* Lookup this netgroup */
if (!lookup(ypdom, grp, &line, _NG_KEYBYNAME))
setnetgrent(ng)
const char *ng;
{
- StringList *sl = sl_init();
+ struct stringlist *sl = _ng_sl_init();
#ifdef YP
- char *line;
+ char *line;
#endif
- char *ng_copy, *ypdom = NULL;
+ char *ng_copy, *ypdom = NULL;
/* Cleanup any previous storage */
if (_nghead != NULL)
_err(1, _ngoomem);
addgroup(ypdom, sl, ng_copy);
_nghead = _nglist;
- sl_free(sl, 1);
+ _ng_sl_free(sl, 1);
}
char *line;
#endif
int found;
- StringList *sl;
+ struct stringlist *sl;
if (_ng_db == NULL)
_ng_db = dbopen(_PATH_NETGROUP_DB, O_RDONLY, 0, DB_HASH, NULL);
return 0;
/* Too bad need the slow recursive way */
- sl = sl_init();
+ sl = _ng_sl_init();
found = in_find(ypdom, sl, strdup(grp), host, user, domain);
- sl_free(sl, 1);
+ _ng_sl_free(sl, 1);
return found;
}
+++ /dev/null
-/* $OpenBSD: stringlist.c,v 1.1 1997/02/02 23:27:53 millert Exp $ */
-/* $NetBSD: stringlist.c,v 1.2 1997/01/17 07:26:20 lukem Exp $ */
-
-/*
- * Copyright (c) 1994 Christos Zoulas
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Christos Zoulas.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$NetBSD: stringlist.c,v 1.2 1997/01/17 07:26:20 lukem Exp $";
-#endif /* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include <err.h>
-#include <stdlib.h>
-#include <stringlist.h>
-
-#define _SL_CHUNKSIZE 20
-
-/*
- * sl_init(): Initialize a string list
- */
-StringList *
-sl_init()
-{
- StringList *sl = malloc(sizeof(StringList));
- if (sl == NULL)
- _err(1, "stringlist: %m");
-
- sl->sl_cur = 0;
- sl->sl_max = _SL_CHUNKSIZE;
- sl->sl_str = malloc(sl->sl_max * sizeof(char *));
- if (sl->sl_str == NULL)
- _err(1, "stringlist: %m");
- return (sl);
-}
-
-
-/*
- * sl_add(): Add an item to the string list
- */
-void
-sl_add(sl, name)
- StringList *sl;
- char *name;
-{
- if (sl->sl_cur == sl->sl_max - 1) {
- sl->sl_max += _SL_CHUNKSIZE;
- sl->sl_str = realloc(sl->sl_str, sl->sl_max * sizeof(char *));
- if (sl->sl_str == NULL)
- _err(1, "stringlist: %m");
- }
- sl->sl_str[sl->sl_cur++] = name;
-}
-
-
-/*
- * sl_free(): Free a stringlist
- */
-void
-sl_free(sl, all)
- StringList *sl;
- int all;
-{
- size_t i;
-
- if (sl == NULL)
- return;
- if (sl->sl_str) {
- if (all)
- for (i = 0; i < sl->sl_cur; i++)
- free(sl->sl_str[i]);
- free(sl->sl_str);
- }
- free(sl);
-}
-
-
-/*
- * sl_find(): Find a name in the string list
- */
-char *
-sl_find(sl, name)
- StringList *sl;
- char *name;
-{
- size_t i;
-
- for (i = 0; i < sl->sl_cur; i++)
- if (strcmp(sl->sl_str[i], name) == 0)
- return (sl->sl_str[i]);
-
- return (NULL);
-}