/
MudOS_0.9.19/bin/
MudOS_0.9.19/doc/concepts/
MudOS_0.9.19/doc/driver/
MudOS_0.9.19/doc/efuns/bitstrings/
MudOS_0.9.19/doc/efuns/buffers/
MudOS_0.9.19/doc/efuns/communication/
MudOS_0.9.19/doc/efuns/core/
MudOS_0.9.19/doc/efuns/mappings/
MudOS_0.9.19/doc/efuns/math/
MudOS_0.9.19/doc/efuns/security/
MudOS_0.9.19/doc/lpc/constructs/
MudOS_0.9.19/doc/lpc/types/
MudOS_0.9.19/doc/platforms/
MudOS_0.9.19/etc/
MudOS_0.9.19/mudlib/
MudOS_0.9.19/mudlib/lil/
MudOS_0.9.19/mudlib/lil/clone/
MudOS_0.9.19/mudlib/lil/command/
MudOS_0.9.19/mudlib/lil/data/
MudOS_0.9.19/mudlib/lil/etc/
MudOS_0.9.19/mudlib/lil/include/
MudOS_0.9.19/mudlib/lil/inherit/
MudOS_0.9.19/mudlib/lil/inherit/master/
MudOS_0.9.19/mudlib/lil/log/
MudOS_0.9.19/mudlib/lil/single/
MudOS_0.9.19/mudlib/lil/u/
MudOS_0.9.19/src/testsuite/
MudOS_0.9.19/src/testsuite/clone/
MudOS_0.9.19/src/testsuite/command/
MudOS_0.9.19/src/testsuite/data/
MudOS_0.9.19/src/testsuite/etc/
MudOS_0.9.19/src/testsuite/include/
MudOS_0.9.19/src/testsuite/inherit/
MudOS_0.9.19/src/testsuite/inherit/master/
MudOS_0.9.19/src/testsuite/log/
MudOS_0.9.19/src/testsuite/single/
MudOS_0.9.19/src/testsuite/single/efuns/
MudOS_0.9.19/src/testsuite/u/
/*
 * uid.c
 * Created by: Erik Kay
 * Description: new uid / euid data structures and security
 * Modification:
 *    11-1-92 - Erik Kay - initial creation
 */

#include <stdio.h>  /* to get NULL */
#ifdef __386BSD__
#include <string.h>
#endif
#include "config.h"
#include "lint.h"
#include "uid.h"

userid_t *uids = NULL;
userid_t *backbone_uid;
userid_t *root_uid;

userid_t *find_uid (name)
char *name;
{
  userid_t *uid = uids;
  while (uid) {
    if (!strcmp(name, uid->name))
      return uid;
    uid = uid->next;
  }
  return NULL;
}

void insert_uid (new_uid)
userid_t *new_uid;
{
  userid_t *uid = uids;

  if (uid) {
    while (uid->next) {
      uid = uid->next;
    }
    uid->next = new_uid;
  } else uids = new_uid;
  return;
}

userid_t *add_uid (name)
char *name;
{
  userid_t *uid;
  if ((uid = find_uid(name)))
    return uid;
  uid = (userid_t *)DMALLOC(sizeof(userid_t), 119, "add_uid: 1");
  uid->next = NULL;
  uid->name = (char *)DMALLOC(strlen(name)+1, 120, "add_uid: 2");
  strcpy(uid->name, name);
  insert_uid(uid);
  return uid;
}

userid_t *set_root_uid (name)
char *name;
{
  userid_t *uid;
  uid = add_uid(name);
  if (uid)
    root_uid = uid;
  return uid;
}
  
userid_t *set_backbone_uid (name)
char *name;
{
  userid_t *uid;
  uid = add_uid(name);
  if (uid)
    backbone_uid = uid;
  return uid;
}