/* report2.c
========= */
/* based on log_error.c v1.1 in control.lib
* additional log_errorS function
* which
* by Sessai@NIPR,1998
*/
#include <sys/timers.h> // no nead??
#include <sys/kernel.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define TIME_OUT 10.0
#define OK 'o'
#define ERROR 'e'
extern pid_t log_pid;
extern char errname[128];
char *get_time2() {
char *str="YY/MM/DD hh:mm:ss";
long clock;
struct tm *gmt;
time (&clock);
gmt = gmtime(&clock);
// str = asctime(gmt);
// str[strlen(str)-1] = 0;
//sprintf(str,"%d/%02d/%02d %02d:%02d:%02d",
sprintf(str,"%d%02d%02d %02d:%02d:%02d",
gmt->tm_year,gmt->tm_mon+1,gmt->tm_mday,
gmt->tm_hour,gmt->tm_min, gmt->tm_sec);
return str;
}
/* Sessai additional function
* the same as log_error
* except that no stderr out by fprintf will be made if no error
* mode = 1 is the same as log_error()
* mode = 0 is the same as log_error()
* except no stderr output if no error
*
* Jan 28, 1998
*/
int log_errorS(char *errlog,char *name,char *buffer,int mode) {
char tname[32];
short int size;
char msg;
struct _mxfer_entry send_mx[3];
struct _mxfer_entry reply_mx[1];
if (buffer == NULL) return -1;
size=strlen(buffer)+1;
if (name !=NULL) strncpy(tname,name,32);
else sprintf(tname,"(unknown)");
if ((errlog !=NULL) && (strcmp(errname,errlog) !=0)) {
strcpy(errname,errlog);
log_pid=0;
}
if (log_pid==0) log_pid=qnx_name_locate(0,errname,0,NULL);
//if (log_pid !=0) {
if (log_pid !=-1) {
_setmx(reply_mx,&msg,sizeof(msg));
_setmx(&send_mx[0],tname,sizeof(tname));
_setmx(&send_mx[1],&size,sizeof(short int));
_setmx(&send_mx[2],buffer,size);
Sendmx(log_pid,3,1,send_mx,reply_mx);
}
if (msg != OK) fprintf(stderr,"WARNING: Error not logged\n");
//#if 0
//Sessai...
if(mode){
//fprintf(stderr,"%s: %d : %s :%s\n",str_time(),getpid(),tname,buffer);
fprintf(stderr,"%s:%d:%s:%s\n",get_time2(),getpid(),tname,buffer);
}
//#endif
if (msg !=OK) return -1;
return 0;
}