/* [<][>][^][v][top][bottom][index][help] */
/* Defines for the system log process.
Rick Smereka, Copyright (C) 1997-2004.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, get a copy via the Internet at
http://gnu.org/copyleft/gpl.html or write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA
You can contact the author via email at rsmereka@future-lab.com
Original QNX version Feb/97, Rick Smereka
Changed define 'SYS_LOG_NID' to zero to allow for multiple system
log servers located on any node ID. Dec/97, Rick Smereka
Ported to 32bit Windows under CodeWarrior. Communication
method is Berkeley Sockets using the Microsoft implementation
called WinSock which claims to be a superset of the original
Berkeley Socket. I have tried as much as possible to stay
away from the Microsoft extensions for portability reasons.
Server is TCP connection oriented iterative.
Dec/98, Rick Smereka
Ported to HP-UX under GNU C 2.8.1.
Jan/99, Rick Smereka
Added 'is_sys_log_active' function prototype.
Feb/99, Rick Smereka
Ported to Red Hat Linux 5.2, Jul/99, Rick Smereka
Removed defines of default port, node and IPC config file.
Added 'extern "C"' section for C++ compilers. Added
all common socket codes from 'flsocket.h'. Changed
send messages defines by adding the prefix 'SYS_LOG_SEND'.
Added prototypes for the new functions (common socket codes).
Mar/2000, Rick Smereka
Added include of 'comcode.h' which contains common send and reply
codes. Added prototype of function 'sys_log_get_active'.
Apr/2000, Rick Smereka
Added error code 'SYS_LOG_BAD_IP' to maintain compatibility with
the 'REALbasic' version. Jun/2000, Rick Smereka
Modified for use by both socket and QNX message passing IPC.
Added prototype 'sys_log_nf'. Oct/2001, Rick Smereka
Added a parameter to the 'sys_log_init' prototype. Jun/2002,
Rick Smereka
Ported to Debian Linux. Nov/2002, Rick Smereka
Added send codes 'SYS_LOG_SEND_TRANS_NUM' and 'SYS_LOG_SEND_CONNECT_NUM'.
Added prototypes 'sys_log_trans_num' and 'sys_log_connect_num'.
May/2003, Rick Smereka
Added function prototypes 'sys_log_console' and 'sys_log_get_console'.
Mar/2004, Rick Smereka */
/* define common send/reply codes */
#include "comcode.h"
/* send message types */
#define SYS_LOG_SEND 1 // log a mess
#define SYS_LOG_SEND_LOCK 2 // lock log
#define SYS_LOG_SEND_UNLOCK 3 // unlock log
#define SYS_LOG_SEND_OPEN 4 // open log
#define SYS_LOG_SEND_CLOSE 5 // close log
#define SYS_LOG_SEND_DELETE 6 // delete log
#define SYS_LOG_SEND_STATUS SOCKET_SEND_STATUS // get status
#define SYS_LOG_SEND_STOP SOCKET_SEND_TERM // halt server
#define SYS_LOG_SEND_LOG_OFF SOCKET_SEND_LOG_OFF // not impl
#define SYS_LOG_SEND_LOG_ON SOCKET_SEND_LOG_ON // not impl
#define SYS_LOG_SEND_LOG_STATUS SOCKET_SEND_LOG_STATUS // not impl
#define SYS_LOG_SEND_SERVICE_NAME SOCKET_SEND_SERVICE_NAME // get srv name
#define SYS_LOG_SEND_VERSION SOCKET_SEND_VERSION // get version
#define SYS_LOG_SEND_TRANS_NUM SOCKET_SEND_TRANS_NUM // get trans
#define SYS_LOG_SEND_CONNECT_NUM SOCKET_SEND_CONNECT_NUM // get connected
// maximum message size
#define SYS_LOG_MAXMES 8192
/* reply/error codes */
#define SYS_LOG_OK SOCKET_RC_OK // ok
#define SYS_LOG_TERM 20 // terminating server
#define SYS_LOG_WERR 21 // error writing to log file
#define SYS_LOG_UNKNOWN 22 // unknown request
#define SYS_LOG_NOMES 23 // no message to send
#define SYS_LOG_ALREADY_LOCKED 24 // log file is already locked
#define SYS_LOG_ALREADY_UNLOCKED 25 // log file already unlocked
#define SYS_LOG_ALREADY_OPEN 26 // already open
#define SYS_LOG_ALREADY_CLOSED 27 // already closed
#define SYS_LOG_ALLOC_FAIL 28 // internal memory alloc fail
#define SYS_LOG_PARM_ERROR 29 // parameter error
#define SYS_LOG_BAD_REPLY 30 // reply made no sense
#define SYS_LOG_NO_ACCESS 31 // access not allowed
#define SYS_LOG_NOT_IMPLEMENTED 32 // not implemented
#define SYS_LOG_NO_INIT 33 // sys_log not init
#define SYS_LOG_INTERNAL_ERROR 34 // unexpected internal error
#define SYS_LOG_SOCLOC_ERROR 35 // unexpected 'socloc' error
#define SYS_LOG_NO_SERVER 36 // no 'sys_log' server avail
#define SYS_LOG_SOCLOC_NO_INIT 37 // 'socloc' not init
#define SYS_LOG_BAD_IP 38 // bad IP address
#define SYS_LOG_VC_ERROR SOCKET_RC_VC_ERROR // socket error
/* TCP/IP IPC specific defines */
#ifdef IPC_TCP
/* sys_log service name for 'socloc' */
#define SYS_LOG_SERVICE_NAME "sys_log"
#else
/* QNX message passing IPC */
#define SYS_LOG_SERVICE_NAME "/sys_log"
#endif
// function prototypes from 'sys_log.c' client API
#ifdef __cplusplus
extern "C"
{
#endif
int sys_log_init(char *);
void sys_log_end(void);
int sys_log(char *,...);
int sys_log_nf(char *);
int sys_log_status(void);
int sys_log_stop(char *);
int sys_log_lock(void);
int sys_log_unlock(void);
int sys_log_open(void);
int sys_log_close(void);
int sys_log_delete(char *);
int sys_log_log_off(void);
int sys_log_log_on(char *);
int sys_log_log_status(int *, char *);
int sys_log_service_name(char *);
int sys_log_version(char *);
int sys_log_trans_num(long *);
int sys_log_connect_num(int *);
int is_sys_log_active(void);
void sys_log_console(int);
int sys_log_get_console(void);
#ifdef IPC_TCP
void sys_log_get_active(char *, int *);
#endif
#ifdef __cplusplus
}
#endif