Blame src/common.h

Packit e8bc57
/*****************************************************************************
Packit e8bc57
Packit e8bc57
NAME:
Packit e8bc57
   common.h -- common definitions and prototypes for bogofilter
Packit e8bc57
Packit e8bc57
******************************************************************************/
Packit e8bc57
Packit e8bc57
#ifndef COMMON_H
Packit e8bc57
#define COMMON_H
Packit e8bc57
Packit e8bc57
#include "system.h"
Packit e8bc57
Packit e8bc57
#ifdef HAVE_STDARG_H
Packit e8bc57
#include <stdarg.h>
Packit e8bc57
#endif
Packit e8bc57
#include <stdio.h>
Packit e8bc57
Packit e8bc57
#include "debug.h"
Packit e8bc57
Packit e8bc57
#include "bftypes.h"
Packit e8bc57
Packit e8bc57
#ifdef	ENABLE_MEMDEBUG
Packit e8bc57
#include "memdebug.h"
Packit e8bc57
#else
Packit e8bc57
#define	MEMDISPLAY  do { } while(0)
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
/* for easier debugging - can be disabled */
Packit e8bc57
#if	0
Packit e8bc57
#define	D	0	/* size adjustment */
Packit e8bc57
#define	Z(n)		/* mark end of string */
Packit e8bc57
#else
Packit e8bc57
#define	D	1	/* size adjustment */
Packit e8bc57
#define	Z(n) n=(byte)'\0' /* mark end of string */
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
/* length of token between these values */
Packit e8bc57
#define MIN_TOKEN_LEN		 3	/* default value of min-token-len       */
Packit e8bc57
#define MAX_TOKEN_LEN		30	/* default value of max-token-len       */
Packit e8bc57
#define MAX_MULTI_TOKEN_LEN	30	/* default value of max-multi-token-len */
Packit e8bc57
#define	MAX_PREFIX_LEN	 	 5	/* maximum length of prefix		*/
Packit e8bc57
#define	MUL_TOKEN_CNT		 1	/* default value of multi-token-count   */
Packit e8bc57
Packit e8bc57
typedef enum sh_e { IX_SPAM = 0, 	/* index for SPAM */
Packit e8bc57
		    IX_GOOD = 1, 	/* index for GOOD */
Packit e8bc57
		    IX_SIZE = 2, 	/* array size     */
Packit e8bc57
		    IX_UNDF = 3 	/* ... undefined  */
Packit e8bc57
} sh_t;
Packit e8bc57
Packit e8bc57
#define max(x, y)	(((x) > (y)) ? (x) : (y))
Packit e8bc57
#define min(x, y)	(((x) < (y)) ? (x) : (y))
Packit e8bc57
Packit e8bc57
#define	NL	"\n"
Packit e8bc57
#define	CRLF	"\r\n"
Packit e8bc57
Packit e8bc57
#if defined(PATH_MAX)
Packit e8bc57
#define PATH_LEN PATH_MAX
Packit e8bc57
#elif defined(MAXPATHLEN)
Packit e8bc57
#define PATH_LEN MAXPATHLEN
Packit e8bc57
#else
Packit e8bc57
#define PATH_LEN 1024
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
/** Default database file mode */
Packit e8bc57
#define	DS_MODE 	(mode_t) 0664
Packit e8bc57
Packit e8bc57
/** Default directory */
Packit e8bc57
#define	DIR_MODE	(mode_t) 0775
Packit e8bc57
Packit e8bc57
#define COUNTOF(array)	((sizeof(array)/sizeof(array[0])))
Packit e8bc57
#define MEMBERSIZE(struc, memb) (sizeof ((struc *)0) -> memb)
Packit e8bc57
Packit e8bc57
typedef unsigned char byte;
Packit e8bc57
Packit e8bc57
enum dbmode_e { DS_READ = 1, DS_WRITE = 2, DS_LOAD = 8 };
Packit e8bc57
typedef enum dbmode_e dbmode_t;
Packit e8bc57
Packit e8bc57
#define BIT(n)	(1 << n)
Packit e8bc57
Packit e8bc57
typedef enum rc_e { RC_SPAM	= 0,
Packit e8bc57
		    RC_HAM	= 1,
Packit e8bc57
		    RC_UNSURE	= 2,
Packit e8bc57
		    RC_OK,
Packit e8bc57
		    RC_MORE	}  rc_t;
Packit e8bc57
Packit e8bc57
typedef enum ex_e { EX_SPAM	= RC_SPAM,
Packit e8bc57
		    EX_HAM	= RC_HAM,
Packit e8bc57
		    EX_UNSURE	= RC_UNSURE,
Packit e8bc57
		    EX_OK	= 0,
Packit e8bc57
		    EX_ERROR	= 3 } ex_t;
Packit e8bc57
Packit e8bc57
typedef enum run_e {
Packit e8bc57
    RUN_UNKNOWN= 0,
Packit e8bc57
    RUN_NORMAL = BIT(0),
Packit e8bc57
    RUN_UPDATE = BIT(1),
Packit e8bc57
    REG_SPAM   = BIT(2),
Packit e8bc57
    REG_GOOD   = BIT(3),
Packit e8bc57
    UNREG_SPAM = BIT(4),
Packit e8bc57
    UNREG_GOOD = BIT(5)
Packit e8bc57
} run_t;
Packit e8bc57
extern run_t run_type;
Packit e8bc57
extern bool  run_classify;
Packit e8bc57
extern bool  run_register;
Packit e8bc57
Packit e8bc57
typedef struct {
Packit e8bc57
    double mant;
Packit e8bc57
    int    exp;
Packit e8bc57
} FLOAT;
Packit e8bc57
Packit e8bc57
typedef enum priority_e {
Packit e8bc57
    PR_NONE,		/* 0 */
Packit e8bc57
    PR_ENV_HOME,	/* 1 */
Packit e8bc57
    PR_CFG_SITE,	/* 2 */
Packit e8bc57
    PR_CFG_USER,	/* 3 */
Packit e8bc57
    PR_CFG_UPDATE,	/* 4 */
Packit e8bc57
    PR_ENV_BOGO,	/* 5 */
Packit e8bc57
    PR_COMMAND		/* 6 */
Packit e8bc57
} priority_t;
Packit e8bc57
Packit e8bc57
typedef enum bulk_e {
Packit e8bc57
    B_NORMAL,
Packit e8bc57
    B_CMDLINE,
Packit e8bc57
    B_STDIN
Packit e8bc57
} bulk_t;
Packit e8bc57
Packit e8bc57
/* for transaction flag */
Packit e8bc57
Packit e8bc57
typedef	enum {
Packit e8bc57
    T_ERROR    = -1,	/* -1 for error */
Packit e8bc57
    T_DISABLED =  0,	/*  0 for no transactions - 0 must mean T_DISABLE
Packit e8bc57
			    for compatibility with dummy functions */
Packit e8bc57
    T_ENABLED  =  1,	/*  1 for transactions */
Packit e8bc57
    T_DEFAULT_OFF =  2, /*  2 for off, unless explicity specified */
Packit e8bc57
    T_DEFAULT_ON  =  3, /*  3 for on, unless explicity specified */
Packit e8bc57
    T_DONT_KNOW		/*  4 for don't know */
Packit e8bc57
} e_txn;
Packit e8bc57
Packit e8bc57
/* for encoding (unicode) flag */
Packit e8bc57
Packit e8bc57
typedef	enum {
Packit e8bc57
    E_UNKNOWN = 0,	/* 0 for not set  */
Packit e8bc57
    E_RAW     = 1,	/* 1 for raw text */
Packit e8bc57
    E_UNICODE = 2,	/* 2 for unicode  */
Packit e8bc57
#ifdef	ENABLE_UNICODE
Packit e8bc57
    E_DEFAULT = E_UNICODE
Packit e8bc57
#else
Packit e8bc57
    E_DEFAULT = E_RAW
Packit e8bc57
#endif
Packit e8bc57
} e_enc;
Packit e8bc57
Packit e8bc57
#include "globals.h"
Packit e8bc57
Packit e8bc57
/* Represents the secondary data for a word key */
Packit e8bc57
typedef struct {
Packit e8bc57
    u_int32_t	good;
Packit e8bc57
    u_int32_t	bad;
Packit e8bc57
    u_int32_t	msgs_good;
Packit e8bc57
    u_int32_t	msgs_bad;
Packit e8bc57
} wordcnts_t;
Packit e8bc57
Packit e8bc57
typedef struct {
Packit e8bc57
    wordcnts_t  cnts;
Packit e8bc57
    double 	prob;
Packit e8bc57
    int		freq;
Packit e8bc57
    bool	used;
Packit e8bc57
} wordprop_t;
Packit e8bc57
Packit e8bc57
extern void bf_exit(void);
Packit e8bc57
Packit e8bc57
#define internal_error do { fprintf(stderr, "Internal error in %s:%lu\n", __FILE__, (unsigned long)__LINE__); abort(); } while(0)
Packit e8bc57
Packit e8bc57
typedef enum e_wordlist_version {
Packit e8bc57
    ORIGINAL_VERSION = 0,
Packit e8bc57
    IP_PREFIX = 20040500	/* when IP prefixes were added */
Packit e8bc57
} t_wordlist_version;
Packit e8bc57
Packit e8bc57
#define	CURRENT_VERSION	IP_PREFIX
Packit e8bc57
Packit e8bc57
/* for bogoutil.c and datastore_db_trans.c */
Packit e8bc57
Packit e8bc57
typedef enum { M_NONE, M_DUMP, M_LOAD, M_WORD, M_MAINTAIN, M_ROBX, M_HIST,
Packit e8bc57
    M_LIST_LOGFILES, M_LEAFPAGES,
Packit e8bc57
    M_RECOVER, M_CRECOVER, M_PURGELOGS, M_VERIFY, M_REMOVEENV, M_CHECKPOINT,
Packit e8bc57
    M_PAGESIZE }
Packit e8bc57
    cmd_t;
Packit e8bc57
Packit e8bc57
#endif