fbmuck-6.01/contrib/jresolver/
fbmuck-6.01/contrib/jresolver/org/
fbmuck-6.01/contrib/jresolver/org/fuzzball/
fbmuck-6.01/docs/devel/
fbmuck-6.01/game/
fbmuck-6.01/game/logs/
fbmuck-6.01/game/muf/
fbmuck-6.01/scripts/
fbmuck-6.01/src_docs/
/* $Header: /cvsroot/fbmuck/fbmuck/src/utils.c,v 1.2 2000/03/29 12:21:02 revar Exp $ */

/*
 * $Log: utils.c,v $
 * Revision 1.2  2000/03/29 12:21:02  revar
 * Reformatted all code into consistent format.
 * 	Tabs are 4 spaces.
 * 	Indents are one tab.
 * 	Braces are generally K&R style.
 * Added ARRAY_DIFF, ARRAY_INTERSECT and ARRAY_UNION to man.txt.
 * Rewrote restart script as a bourne shell script.
 *
 * Revision 1.1.1.1  1999/12/16 03:23:29  revar
 * Initial Sourceforge checkin, fb6.00a29
 *
 * Revision 1.1.1.1  1999/12/12 07:27:44  foxen
 * Initial FB6 CVS checkin.
 *
 * Revision 1.1  1996/06/12 03:07:13  foxen
 * Initial revision
 *
 * Revision 5.3  1994/03/14  12:20:58  foxen
 * Fb5.20 release checkpoint.
 *
 * Revision 5.2  1994/01/18  20:52:20  foxen
 * Version 5.15 release.
 *
 * Revision 5.1  1993/12/17  00:07:33  foxen
 * initial revision.
 *
 * Revision 1.3  90/09/16  04:43:15  rearl
 * Preparation code added for disk-based MUCK.
 *
 * Revision 1.2  90/08/11  04:12:19  rearl
 * *** empty log message ***
 *
 * Revision 1.1  90/07/19  23:04:18  casie
 * Initial revision
 *
 *
 */

#include "copyright.h"
#include "config.h"

#include "db.h"
#include "tune.h"

/* remove the first occurence of what in list headed by first */
dbref
remove_first(dbref first, dbref what)
{
	dbref prev;

	/* special case if it's the first one */
	if (first == what) {
		return DBFETCH(first)->next;
	} else {
		/* have to find it */
		DOLIST(prev, first) {
			if (DBFETCH(prev)->next == what) {
				DBSTORE(prev, next, DBFETCH(what)->next);
				return first;
			}
		}
		return first;
	}
}

int
member(dbref thing, dbref list)
{
	DOLIST(list, list) {
		if (list == thing)
			return 1;
		if ((DBFETCH(list)->contents)
			&& (member(thing, DBFETCH(list)->contents))) {
			return 1;
		}
	}

	return 0;
}

dbref
reverse(dbref list)
{
	dbref newlist;
	dbref rest;

	newlist = NOTHING;
	while (list != NOTHING) {
		rest = DBFETCH(list)->next;
		PUSH(list, newlist);
		DBDIRTY(newlist);
		list = rest;
	}
	return newlist;
}