idirt-1.82d/
idirt-1.82d/bin/
idirt-1.82d/data/LOGS/
idirt-1.82d/data/POLICY/
idirt-1.82d/data/WIZ_ZONES/
idirt-1.82d/doc/
idirt-1.82d/doc/info/
idirt-1.82d/doc/manual/
idirt-1.82d/src/Ident/
idirt-1.82d/src/utils/
idirt-1.82d/utils/
#ifndef _UTILS_H_
#define _UTILS_H_

/************************************************************************
 * Structures								*
 ************************************************************************/
/* int_table Interface */
typedef struct TABLE_ENTRY {
  long int key;
  long int value;
  struct TABLE_ENTRY *next;
} table_entry;

typedef struct {
  int  len;
  table_entry **table;
} int_table;

/* For the Int-Set Package */
typedef struct {
  int  current;	/* Current element */
  int  len;	/* # of elements in the array */
  int  maxlen;	/* Length of array */
  int *list;	/* Pointer to the array */
} int_set;

/************************************************************************
 * Macros/Defines							*
 ************************************************************************/
#define int_number(I, P) ((P)->list[I])

#define first_int(P) ((P)->len == 0 ? SET_END : ((P)->current = 1, *(P)->list))
#define next_int(P)  ((P)->current < (P)->len ? \
		      (P)->list[(P)->current++] : SET_END)

#define set_size(P) ((P)->len)
#define is_empty(P) (set_size(P) == 0)

#define NOT_IN_TABLE -65536L
#define SET_END -65536
#define TABLE_END ((char *)(-1))

#define MAGIC_ZHEADER	'\037'
#define MAGIC_GZIP	'\213'
#define MAGIC_COMPRESS	'\235'
#define	IS_GZIP		1
#define	IS_COMPRESS	2

/************************************************************************
 * Prototypes								*
 ************************************************************************/
int	cmp_player(const void *a, const void *b);
int	cmp_alpha(const void *a, const void *b);

void	init_rand(void);
int	randperc(void);
Boolean	match (char *p, char *q);
Boolean	infile(char *file, char *line);

int	strtlookup(char *elem, char **table, int *begin, int *end);
int	glookup(char *elem,int n,char **table,
		int (*strcmpfun)(const char *s1, const char *s2, size_t n));
int	tlookup(char *elem,char **table);
int	xlookup(char *elem,char **table);
char	*lowercase(char *str);
char	*uppercase(char *str);

void	xfree(void *ptr);
void	*xmalloc(int nelem, int elem_size);
void	*resize_array(void *start, int elem_size, int oldlen, int newlen);

int	addordel(char file_name[80], char check[80]);
int	addname(char file_name[80], char name[80]);
int	delname(char file_name[80], char name[80]);

int	fnumlines(char file[200]);
void	fileseek(FILE *file, int lines);

Boolean	tstbits(int w, int m);
Boolean	tst_bit(LongInt *f,int b);
void	set_bit(LongInt *f,int b);
void	clr_bit(LongInt *f,int b);
Boolean	dtst_bit(DLongInt *f, int b);
void	dset_bit(DLongInt *f,int b);
void	dclr_bit(DLongInt *f,int b);

void	insertch(char *s, char ch, int i);
char	*my_crypt(char *buf,char *pw,int len);
char	*mk_string(char *b,char *str,int k,int stopch);
char	*x_strcpy(char *d, char *s);

/* int_set interface */
void	init_intset(int_set *p, int len);
void	free_intset(int_set *p);
Boolean	add_int(int n, int_set *p);
Boolean	remove_int(int n, int_set *p);
int	find_int(int n, int_set *p);
int	find_int_number(int n, int_set *p);
int	foreach_int(int_set *p, int (*func)(int));
void	remove_current(int_set *p);
int	get_set_mem_usage(int_set *p);

void	init_inttable(int_table *p, int size);
void	free_inttable(int_table *p);

Boolean	insert_entry(long int key, long int value, int_table *p);
Boolean	remove_entry(long int key, int_table *p);
long	lookup_entry(long int key, int_table *p);
long	change_entry(long int key, long int new_value, int_table *p);
int	get_table_mem_usage(int_table *p);

void	write_date_stderr (void);
int	check_file_magic (char *filename);
FILE	*zopen (char *filename);
void	zclose (FILE *fp);

#ifdef SYS_EQBUG
int strcasecmp(char *s1, char *s2);
int strncasecmp(const char *s1, const char *s2, size_t n);
#endif

#endif