/*
* COPYRIGHT (c) International Business Machines Corp. 2001-2017
*
* This program is provided under the terms of the Common Public License,
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
* found in the file LICENSE file or at
* https://opensource.org/licenses/cpl1.0.php
*/
#ifndef _LOG_H
#define _LOG_H 1
#ifndef FALSE
#define FALSE 0
#endif /* FALSE */
#ifndef TRUE
#define TRUE (!(FALSE))
#endif /* TRUE */
#ifndef MAX_LOGGING_FACILITIES
#define MAX_LOGGING_FACILITIES 16
#endif /* MAX_LOGGING_FACILITIES */
#ifndef TRUNCATE_LOGS_ON_START
#define TRUNCATE_LOGS_ON_START 0
#endif /* TRUNCATE_LOGS_ON_START */
/* Use an enum here? */
#define DEBUG_NONE (0)
#define DEBUG_LEVEL0 (100) /* Less detail */
#define DEBUG_LEVEL1 (DEBUG_LEVEL0 + 100) /* . */
#define DEBUG_LEVEL2 (DEBUG_LEVEL1 + 100) /* v */
#define DEBUG_LEVEL3 (DEBUG_LEVEL2 + 100) /* More detail */
#define DEBUG_LEVEL4 (DEBUG_LEVEL3 + 100)
#define DEBUG_LEVEL5 (DEBUG_LEVEL4 + 100)
#define DNONE (DEBUG_NONE)
#define DL0 (DEBUG_LEVEL0)
#define DL1 (DEBUG_LEVEL1)
#define DL2 (DEBUG_LEVEL2)
#define DL3 (DEBUG_LEVEL3)
#define DL4 (DEBUG_LEVEL4)
#define DL5 (DEBUG_LEVEL5)
#ifndef DbgPrint
#define DbgPrint DbgLog
#endif /* DbgPrint */
/**************
* Structures *
**************/
/************************************************************************
* Yes, the structures are somewhat redundant; this is an evolutionary
* side-effect. They should probably be combined into a single struct
* - SCM
************************************************************************/
typedef unsigned int u_int32;
typedef u_int32 LogHandle, *pLogHandle;
typedef u_int32 BOOL, bool, BOOLEAN, boolean;
typedef struct _logging_facility_info {
BOOL Initialized;
char Descrip[255];
u_int32 LogOption;
char *Filename;
BOOL UseSyslog;
u_int32 LogLevel;
pid_t pid;
} LoggingFacilityInfo, *pLoggingFacilityInfo;
typedef struct _LoggingFacility {
char *Label;
pLogHandle phLog;
char *Filename;
BOOL UseSyslog;
u_int32 LogLevel;
} LoggingFacility, *pLoggingFacility;
/********************************
* Exported Function Prototypes *
********************************/
void DbgLog(u_int32 DebugLevel, char *Format, ...);
void ErrLog(char *Format, ...);
void LogLog(char *Format, ...);
void WarnLog(char *Format, ...);
void TraceLog(char *Format, ...);
void InfoLog(char *Format, ...);
BOOL PKCS_Log(LogHandle *phLog, char *Format, va_list ap);
BOOL NewLoggingFacility(char *ID, pLoggingFacility pStuff);
BOOL CloseLoggingFacility(LogHandle hLog);
BOOL GetCurrentTimeString(char *Buffer);
u_int32 SetDebugLevel(u_int32 Val);
u_int32 GetDebugLevel(void);
#endif /* _LOG_H */