/* Include file for ChanServ access level data.
*
* IRC Services is copyright (c) 1996-2007 Andrew Church.
* E-mail: <achurch@achurch.org>
* Parts written by Andrew Kempe and others.
* This program is free but copyrighted software; see the file COPYING for
* details.
*/
#ifndef CHANSERV_ACCESS_H
#define CHANSERV_ACCESS_H
/*************************************************************************/
/* Access level data structure: */
typedef struct levelinfo_ LevelInfo;
struct levelinfo_ {
int what; /* Level constant (CA_*) */
int defval; /* Default level */
const char *name; /* Level name as a string */
int desc; /* Description message number */
int action; /* What this level does (CL_*) */
union { /* Target of `action', as appropriate */
struct { /* Command (and subcommand, e.g. option for SET) */
const char *main;
const char *sub;
} cmd;
struct { /* Mode(s) to auto-apply to user */
const char *modes;
int cont; /* If we set this level, do we ignore the next */
/* levelinfo[] entry? */
int32 flags; /* Set at init time */
} cumode;
} target;
};
/* What does a level do? */
#define CL_SET_MODE 0 /* Set a user mode */
#define CL_CLEAR_MODE 1 /* Clear a user mode */
#define CL_ALLOW_CMD 2 /* Allow a command to be used */
#define CL_OTHER 0x7F /* Specially handled, or no-op */
#define CL_TYPEMASK 0x7F
#define CL_LESSEQUAL 0x80 /* Apply to users <= level (OR with type) */
/* List of defined levels with descriptions: */
extern LevelInfo levelinfo[];
/*************************************************************************/
#endif /* CHANSERV_ACCESS_H */
syntax highlighted by Code2HTML, v. 0.9.1