/* $Header: /belch_a/users/rearl/tinymuck/src/RCS/utils.c,v 1.3 90/09/16 04:43:15 rearl Exp $ */

/*
 * $Log:	utils.c,v $
 * 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"

/* 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;
  }
  
  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;
}