Added append to trace in support of the autotrace facility
This commit is contained in:
47
trace.c
47
trace.c
@ -474,6 +474,48 @@ static int TraceLog(pSICSOBJ ccmd, SConnection * con,
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/*----------------------------------------------------------------*/
|
||||
static int TraceAppend(pSICSOBJ ccmd, SConnection * con,
|
||||
Hdb * cmdNode, Hdb * par[], int nPar)
|
||||
{
|
||||
char *filename = NULL;
|
||||
|
||||
if(nPar < 1) {
|
||||
if(logFD != NULL){
|
||||
SCPrintf(con,eValue,"Tracing to %s", logfile);
|
||||
} else {
|
||||
SCWrite(con,"Tracing is off", eValue);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
filename = par[0]->value.v.text;
|
||||
/*
|
||||
This is good even if appending to the same file:
|
||||
it flushes all buffers
|
||||
*/
|
||||
if(logFD != NULL){
|
||||
fclose(logFD);
|
||||
free(logfile);
|
||||
}
|
||||
logFD = fopen(filename,"a+");
|
||||
if(logFD == NULL){
|
||||
SCPrintf(con,eError,"ERROR: failed to open %s for logging", filename);
|
||||
return 0;
|
||||
} else {
|
||||
logfile = strdup(filename);
|
||||
saveInitialParameters();
|
||||
SCPrintf(con,eValue,"Logging to %s", filename);
|
||||
if(hdbInit == 0){
|
||||
TraceObjects();
|
||||
hdbInit = 1;
|
||||
}
|
||||
TaskRegisterN(pServ->pTasker,"tracestamper",
|
||||
TraceLogTask, NULL, NULL, NULL, 1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
static int TraceDebug(pSICSOBJ ccmd, SConnection * con,
|
||||
Hdb * cmdNode, Hdb * par[], int nPar)
|
||||
@ -520,6 +562,11 @@ void MakeTrace(void)
|
||||
"log", usMugger, MakeSICSFunc(TraceLog));
|
||||
AddSICSHdbPar(cmd, "filename", usMugger, MakeHdbText(""));
|
||||
|
||||
cmd = AddSICSHdbPar(ccmd->objectNode,
|
||||
"append", usMugger, MakeSICSFunc(TraceAppend));
|
||||
AddSICSHdbPar(cmd, "filename", usMugger, MakeHdbText(""));
|
||||
|
||||
|
||||
cmd = AddSICSHdbPar(ccmd->objectNode,
|
||||
"filter", usMugger, MakeSICSFunc(TraceFilter));
|
||||
AddSICSHdbPar(cmd, "selection", usMugger, MakeHdbInt(0));
|
||||
|
Reference in New Issue
Block a user