summaryrefslogtreecommitdiff
path: root/lib/libc/gen
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1997-02-03 00:10:10 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1997-02-03 00:10:10 +0000
commitfe9cab4ae0ab1c93d39792ef327f98d7276cc1ff (patch)
tree8ad833a16f3d614517ef28d74cbc800823ff5ae2 /lib/libc/gen
parent5ee8dec3be3bc0f1dc9bb23552af707bd1aa7b83 (diff)
Back out stringlist
Diffstat (limited to 'lib/libc/gen')
-rw-r--r--lib/libc/gen/Makefile.inc12
-rw-r--r--lib/libc/gen/getnetgrent.c135
-rw-r--r--lib/libc/gen/stringlist.c121
3 files changed, 112 insertions, 156 deletions
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index 3a352bf015d..93c71eccb9b 100644
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -1,4 +1,4 @@
-# $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
@@ -13,11 +13,11 @@ SRCS+= alarm.c assert.c clock.c closedir.c confstr.c ctermid.c \
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 \
diff --git a/lib/libc/gen/getnetgrent.c b/lib/libc/gen/getnetgrent.c
index 137f9bbd616..91675c0e4e5 100644
--- a/lib/libc/gen/getnetgrent.c
+++ b/lib/libc/gen/getnetgrent.c
@@ -1,5 +1,4 @@
-/* $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
@@ -33,7 +32,7 @@
*/
#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>
@@ -45,11 +44,7 @@ static char *rcsid = "$OpenBSD: getnetgrent.c,v 1.4 1997/02/02 23:27:52 millert
#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)
@@ -61,13 +56,22 @@ static struct netgroup *_nghead = (struct netgroup *)NULL;
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 *,
@@ -76,6 +80,79 @@ 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
*/
@@ -292,9 +369,9 @@ _ng_parse(p, name, ng)
*/
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;
@@ -304,12 +381,12 @@ addgroup(ypdom, sl, grp)
(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))
@@ -378,12 +455,12 @@ in_check(host, user, domain, ng)
*/
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;
@@ -394,12 +471,12 @@ in_find(ypdom, sl, grp, host, user, domain)
(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))
@@ -574,11 +651,11 @@ void
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)
@@ -602,7 +679,7 @@ setnetgrent(ng)
_err(1, _ngoomem);
addgroup(ypdom, sl, ng_copy);
_nghead = _nglist;
- sl_free(sl, 1);
+ _ng_sl_free(sl, 1);
}
@@ -634,7 +711,7 @@ innetgr(grp, host, user, domain)
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);
@@ -665,9 +742,9 @@ innetgr(grp, host, user, domain)
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;
}
diff --git a/lib/libc/gen/stringlist.c b/lib/libc/gen/stringlist.c
deleted file mode 100644
index 372ecad8fb2..00000000000
--- a/lib/libc/gen/stringlist.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* $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);
-}