/* $Id: util.h,v 1.20 2011/06/28 00:13:48 sbajic Exp $ */
/*
DSPAM
COPYRIGHT (C) 2002-2012 DSPAM PROJECT
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
#ifndef _UTIL_H
# define _UTIL_H
#ifdef HAVE_CONFIG_H
#include
#endif
#include
#include
#include
#include
#ifndef _WIN32
#include
#endif
void chomp (char *string);
char * ltrim (char *str);
char * rtrim (char *str);
int lc (char *buff, const char *string);
#ifndef HAVE_STRCASESTR
char * strcasestr (const char *, const char *);
#endif
#define ALLTRIM(str) ltrim(rtrim(str))
#ifndef HAVE_STRSEP
char *strsep (char **stringp, const char *delim);
#endif
#ifndef HAVE_STRLCPY
size_t strlcpy (char *, const char *, size_t);
size_t strlcat (char *, const char *, size_t);
#endif
/*
* Specialized Functions
* Utilities specialized for DSPAM functions.
*
* _ds_userdir_path()
* Generates the path for files within DSPAM's filesystem, according to the
* filesystem structure specified at configure time.
*
* _ds_prepare_path_for()
* Creates any necessary subdirectories to support the supplied path
*
* _ds_get_crc64()
* Generates the CRC of the supplied string, using CRC64
*
* _ds_compute_complexity()
* Calculates the complexity of a token based on its nGram depth
*
* _ds_compute_sparse()
* Calculates the number of sparse skips in a token
*
* _ds_compute_weight()
* Calculates the markovian weight of a token
*
* _ds_compute_weight_osb()
* Calculates the OSB/OSBF/WINNOW weight of a token
*/
#ifndef HAVE_STRTOK_R
char * strtok_r(char *s1, const char *s2, char **lasts);
#endif
#ifndef HAVE_INET_NTOA_R
unsigned int i2a
(char* dest,unsigned int x);
char *inet_ntoa_r
(struct in_addr in, char *buf, int len);
#endif
#ifdef EXT_LOOKUP
int verified_user;
#endif
const char * _ds_userdir_path (
char *buff,
const char *home,
const char *filename,
const char *extension);
int _ds_prepare_path_for (const char *filename);
int _ds_compute_complexity (const char *token);
int _ds_compute_sparse (const char *token);
int _ds_compute_weight (const char *token);
int _ds_compute_weight_osb (const char *token);
char *_ds_truncate_token (const char *token);
int _ds_extract_address(
char *buf,
const char *address,
size_t len);
double _ds_gettime(void);
void timeout(void);
int _ds_get_fcntl_lock (int fd);
int _ds_free_fcntl_lock (int fd);
unsigned long long _ds_getcrc64
(const char *);
int _ds_pow
(int base, unsigned int exp);
int _ds_pow2
(int exp);
double chi2Q
(double x, int v);
float _ds_round
(float n);
int _ds_validate_address
(const char *address);
#endif /* _UTIL_H */