/* GSWUtil.h - GSWeb: Adaptors: Util Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. Written by: Manuel Guesdon Date: July 1999 This file is part of the GNUstep Web Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GSWUtil_h__ #define _GSWUtil_h__ #ifndef BOOL typedef int BOOL; #endif #ifndef FALSE #define FALSE 0 #define TRUE (!FALSE) #endif #ifdef __cplusplus extern "C" { #endif #if defined(Apache) #include "httpd.h" #include "http_log.h" //#define APLOG_EMERG LOG_EMERG /* system is unusable */ //#define APLOG_ALERT LOG_ALERT /* action must be taken immediately */ #define GSW_CRITICAL APLOG_CRIT /* critical conditions */ #define GSW_ERROR APLOG_ERR /* error conditions */ #define GSW_WARNING APLOG_WARNING /* warning conditions */ //#define APLOG_NOTICE LOG_NOTICE /* normal but significant condition */ #define GSW_INFO APLOG_INFO /* informational */ #define GSW_DEBUG APLOG_DEBUG /* debug-level messages */ #else #define GSW_DEBUG 0 #define GSW_INFO 1 #define GSW_WARNING 2 #define GSW_ERROR 3 #define GSW_CRITICAL 4 #endif #define max(x, y) ((x) > (y) ? (x) : (y)) #define min(x, y) ((x) < (y) ? (x) : (y)) //==================================================================== // Time Functions typedef long long GSWTime; // usec since Epoch #define USEC_PER_SEC ((GSWTime)1000000) #define GSWTime_makeTimeFromSecAndUSec(sec,usec) ((GSWTime)(sec)*USEC_PER_SEC+(GSWTime)(usec)) GSWTime GSWTime_now(void); char* GSWTime_format(char *date_str,GSWTime t); // yyyy/mm/dd hh:mm:ss.msec time_t GSWTime_secPart(GSWTime t); long GSWTime_usecPart(GSWTime t); long GSWTime_msecPart(GSWTime t); #define GSWTime_floatSec(t) ((double)(((double)GSWTime_secPart(t))+((double)GSWTime_usecPart(t))/USEC_PER_SEC)) #ifdef Apache #define GSWTime_makeFromAPRTime(aprtime) ((GSWTime)(aprtime)) #endif //==================================================================== // Asserts #define GSWAssert(condition,p_pLogServerData,p_pszFormat, args...); \ { if (!(condition)) \ { \ char* format=0; \ GSWLog(__FILE__, __LINE__,GSW_CRITICAL,p_pLogServerData,"ARGHH"); \ format=malloc(strlen(p_pszFormat)+strlen(__FILE__)+101); \ sprintf(format,"In %s (%d): %s",__FILE__,__LINE__,p_pszFormat); \ free(format); \ }} while (0); //==================================================================== // Log Functions void GSWLog( char *file, int line, int p_iLevel, #if defined(Apache) server_rec *p_pLogServerData, #else void *p_pLogServerData, #endif CONST char *p_pszFormat, ...); #define GSWDebugLog(p_pLogServerData,p_pszFormat, args...); \ GSWLog(__FILE__, __LINE__,GSW_DEBUG,p_pLogServerData,p_pszFormat, ## args); #define GSWDebugLogCond(condition,p_pLogServerData,p_pszFormat, args...); \ { if ((condition)) GSWLog(__FILE__, __LINE__,GSW_DEBUG,p_pLogServerData,p_pszFormat, ## args);}; void GSWLogSized(int p_iLevel, #if defined(Apache) server_rec *p_pLogServerData, #else void *p_pLogServerData, #endif int p_iBufferSize, CONST char *p_pszFormat, ...); void GSWLogIntern(char *file, int line, char *fn, int p_iLevel, #if defined(Apache) server_rec *p_pLogServerData, #else void *p_pLogServerData, #endif CONST char *p_pszFormat, ...); void GSWLogSizedIntern(char *file, int line, char *fn, int p_iLevel, #if defined(Apache) server_rec *p_pLogServerData, #else void *p_pLogServerData, #endif int p_iBufferSize, CONST char *p_pszFormat, ...); //==================================================================== // Misc String Functions // return new len int DeleteTrailingCRNL(char *p_pszString); int DeleteTrailingSlash(char *p_pszString); int DeleteTrailingSpaces(char *p_pszString); int SafeStrlen(CONST char *p_pszString); char *SafeStrdup(CONST char *p_pszString); char *strcasestr(CONST char *p_pszString, CONST char *p_pszSearchedString); #ifdef __USE_GNU #define gsw_strndup(a,b) strndup((a),(b)) #else extern char* gsw_strndup(const char *s, size_t len); #endif //==================================================================== // Host lookup Functions //#include typedef struct hostent *PSTHostent; PSTHostent GSWUtil_HostLookup(CONST char *p_pszHost, void *p_pLogServerData); void GSWUtil_ClearHostCache(void); PSTHostent GSWUtil_FindHost(CONST char *p_pszHost, void *p_pLogServerData); //==================================================================== #include "GSWDict.h" void GSWLog_Init(GSWDict *p_pDict, int p_iLevel); char* RevisionStringToRevisionValue(char* buffer,const char* revisionString); #ifdef __cplusplus } #endif // __cplusplus #endif // _GSWUtil_h__