#ifndef _BASE_H_
#define _BASE_H_
/*
 * $Id: base.h,v 2.1 1994/02/17 02:22:22 ppessi Exp $
 *
 * Usergroup library base. 
 *
 * Copyright (c) 1994
 *
 * Created      : Sun Nov 28 17:45:55 1993 ppessi
 * Last modified: Sat Feb 12 09:19:03 1994 ppessi
 *
 * $Log: base.h,v $
 * Revision 2.1  1994/02/17  02:22:22  ppessi
 * Saving before downgrading library
 *
 * Revision 1.1  1994/01/20  08:18:29  ppessi
 * Initial revision
 *
 */

#include "config.h"

#ifndef EXEC_LIBRARIES_H
#include <exec/libraries.h>
#endif
#ifndef EXEC_TASKS_H
#include <exec/tasks.h>
#endif
#ifndef EXEC_SEMAPHORES_H
#include <exec/semaphores.h>
#endif
#ifndef DEVICES_NETINFO_H
#include <devices/netinfo.h>
#endif
#ifndef LIBRARIES_USERGROUP_H
#include <libraries/usergroup.h>
#endif

#ifdef USE_PRAGMAS
#include <clib/exec_protos.h>
#include <pragmas/exec_sysbase_pragmas.h>
extern struct ExecBase *SysBase;
#include <proto/dos.h>
#endif

#include <errno.h>

extern COMMON const UBYTE _LibName[]; 

#ifndef	MAXLINELEN
#define	MAXLINELEN	1024
#endif

/*
 * errno handling
 */
extern ULONG break_mask;
extern int internal_errno;
extern void *errnop;
typedef enum { es_byte, es_word, es_long } errnop_t;
extern errnop_t errnosize;

void SetErrno(int errno);

/*
 * netinfo.device IO
 */
extern struct SignalSemaphore ni_lock[];
struct NetInfoReq *OpenNIUnit(ULONG unit);
void CloseNIUnit(ULONG unit);
BYTE myDoIO(struct NetInfoReq *req);
void SetDeviceErr(void);

/*
 * utmp IO
 */
void CleanupUTMP(void);

/*
 * Random numbers 
 */
ULONG LRandom(void);
int LRandomInit(void);

/*
 * support 
 */
static __inline void InitList(struct List *list)
{
  list->lh_Head = (struct Node*)&list->lh_Tail;
  list->lh_Tail = NULL;
  list->lh_TailPred = (struct Node*)&list->lh_Head;
}

void InMsg(const char *fmt, ...);

#endif /* _BASE_H_ */
