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;
|
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,
|
static int TraceDebug(pSICSOBJ ccmd, SConnection * con,
|
||||||
Hdb * cmdNode, Hdb * par[], int nPar)
|
Hdb * cmdNode, Hdb * par[], int nPar)
|
||||||
@ -520,6 +562,11 @@ void MakeTrace(void)
|
|||||||
"log", usMugger, MakeSICSFunc(TraceLog));
|
"log", usMugger, MakeSICSFunc(TraceLog));
|
||||||
AddSICSHdbPar(cmd, "filename", usMugger, MakeHdbText(""));
|
AddSICSHdbPar(cmd, "filename", usMugger, MakeHdbText(""));
|
||||||
|
|
||||||
|
cmd = AddSICSHdbPar(ccmd->objectNode,
|
||||||
|
"append", usMugger, MakeSICSFunc(TraceAppend));
|
||||||
|
AddSICSHdbPar(cmd, "filename", usMugger, MakeHdbText(""));
|
||||||
|
|
||||||
|
|
||||||
cmd = AddSICSHdbPar(ccmd->objectNode,
|
cmd = AddSICSHdbPar(ccmd->objectNode,
|
||||||
"filter", usMugger, MakeSICSFunc(TraceFilter));
|
"filter", usMugger, MakeSICSFunc(TraceFilter));
|
||||||
AddSICSHdbPar(cmd, "selection", usMugger, MakeHdbInt(0));
|
AddSICSHdbPar(cmd, "selection", usMugger, MakeHdbInt(0));
|
||||||
|
Reference in New Issue
Block a user