Added SYSTEM_LOG "param out" output

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6209 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2011-12-13 21:16:24 +00:00
parent 51a0cb7355
commit c57acd99d2

View file

@ -31,7 +31,8 @@
#define PCD_PARAMS 2
#define PCD_DONE 3 // Just Continue
const int ParamSizeByType[7] = {0, // PAT_VOID (Size will be equal to 1)
const int ParamSizeByType[7] = {
0, // PAT_VOID (Size will be equal to 1)
1, // PAT_INT
2, // PAT_LONG
1, // PAT_STRING
@ -95,20 +96,23 @@ void WriteToLog(TCHAR *buffer)
SetFilePointer(logfile, 0, 0, FILE_END);
wsprintf(timebuffer, _T("%04d %04d.%03d "), (++logop)%10000, (GetTickCount() / 1000) % 10000,
GetTickCount() % 1000);
if (-1 != logop)
{
wsprintf(timebuffer, _T("%04d %04d.%03d "), (++logop)%10000,
(GetTickCount() / 1000) % 10000, GetTickCount() % 1000);
#ifdef _UNICODE
#ifdef _RPTW0
_RPTW0(_CRT_WARN, timebuffer);
_RPTW0(_CRT_WARN, buffer);
_RPTW0(_CRT_WARN, timebuffer);
_RPTW0(_CRT_WARN, buffer);
#endif
#else
_RPT0(_CRT_WARN, timebuffer);
_RPT0(_CRT_WARN, buffer);
_RPT0(_CRT_WARN, timebuffer);
_RPT0(_CRT_WARN, buffer);
#endif
WriteFile(logfile, timebuffer, lstrlen(timebuffer)*sizeof(TCHAR), &written, NULL);
WriteFile(logfile, timebuffer, lstrlen(timebuffer)*sizeof(TCHAR), &written, NULL);
}
WriteFile(logfile, buffer, lstrlen(buffer)*sizeof(TCHAR), &written, NULL);
// FlushFileBuffers(logfile);
}
@ -148,7 +152,11 @@ PLUGINFUNCTION(Debug)
if (lstrlen(o1) > 0)
{
// Log in to log file
int orglogop;
WriteToLog(o1);
orglogop = logop, logop = -1;
WriteToLog(_T("\n"));
logop = orglogop;
} else
{
// Stop debugging
@ -238,7 +246,7 @@ PLUGINFUNCTION(Get)
SYSTEM_LOG_ADD(proc->DllName);
SYSTEM_LOG_ADD(_T("::"));
SYSTEM_LOG_ADD(proc->ProcName);
SYSTEM_LOG_ADD(_T("\n"));
//SYSTEM_LOG_ADD(_T("\n"));
SYSTEM_LOG_POST;
if ((proc->Options & POPT_ALWRETURN) != 0)
{
@ -271,7 +279,8 @@ PLUGINFUNCTION(Call)
SYSTEM_LOG_ADD(proc->DllName);
SYSTEM_LOG_ADD(_T("::"));
SYSTEM_LOG_ADD(proc->ProcName);
SYSTEM_LOG_ADD(_T("\n"));
//SYSTEM_LOG_ADD(_T("\n"));
SYSTEM_LOG_POST;
if (proc->ProcResult != PR_CALLBACK)
ParamAllocate(proc);
ParamsIn(proc);
@ -512,7 +521,7 @@ SystemProc *PrepareProc(BOOL NeedForCall)
case PST_RETURN:
case PST_OPTIONS:
break;
}
}
ib++;
cb = cbuf;
continue;
@ -553,7 +562,7 @@ SystemProc *PrepareProc(BOOL NeedForCall)
ProcType = PT_STRUCT;
ChangesDone = PCD_DONE;
break;
}
}
break;
// Params and return sections parser
@ -941,16 +950,17 @@ void ParamsIn(SystemProc *proc)
#ifdef SYSTEM_LOG_DEBUG
{
TCHAR buf[1024];
wsprintf(buf, _T("\t\t\tParam In %d: type %d value 0x%08X value2 0x%08X\n"), i,
wsprintf(buf, _T("\t\t\tParam In %d: type %d value 0x%08X value2 0x%08X"), i,
par->Type, par->Value, par->_value);
SYSTEM_LOG_ADD(buf);
SYSTEM_LOG_POST;
}
#endif
if (i == 0) break;
if (i == proc->ParamCount) i = 0;
else i++;
}
}
}
void ParamsDeAllocate(SystemProc *proc)
@ -1029,10 +1039,32 @@ void ParamsOut(SystemProc *proc)
|| (proc->Params[i].Option > 0)))
GlobalFree(proc->Params[i].allocatedBlock);
SYSTEM_LOG_ADD(_T("\t\t\tParam Out("));
// Step 2: place it
if (proc->Params[i].Output == IOT_NONE);
else if (proc->Params[i].Output == IOT_STACK) system_pushstring(realbuf);
else if (proc->Params[i].Output > 0) system_setuservariable(proc->Params[i].Output - 1, realbuf);
if (proc->Params[i].Output == IOT_NONE) SYSTEM_LOG_ADD(_T("none"));
else if (proc->Params[i].Output == IOT_STACK)
{
SYSTEM_LOG_ADD(_T("stack"));
system_pushstring(realbuf);
}
else if (proc->Params[i].Output > 0)
{
SYSTEM_LOG_ADD(_T("var"));
system_setuservariable(proc->Params[i].Output - 1, realbuf);
}
else
SYSTEM_LOG_ADD(_T("?BUG?"));
#ifdef SYSTEM_LOG_DEBUG
{
TCHAR dbgbuf[99];
wsprintf(dbgbuf, _T(") %d:\tType=%d Optn=%d Size=%d Data="),
i, proc->Params[i].Type, proc->Params[i].Option, proc->Params[i].Size);
SYSTEM_LOG_ADD(dbgbuf);
SYSTEM_LOG_ADD(realbuf);
SYSTEM_LOG_POST;
}
#endif
GlobalFree(realbuf);
@ -1083,10 +1115,12 @@ void CallStruct(SystemProc *proc)
// Calculate the structure size
for (i = 1; i <= proc->ParamCount; i++)
{
if (proc->Params[i].Option < 1)
structsize += proc->Params[i].Size * 4;
else
structsize += ByteSizeByType[proc->Params[i].Type] * (proc->Params[i].Option - 1);
}
// Struct exists?
if (proc->Proc == NULL)
@ -1094,7 +1128,15 @@ void CallStruct(SystemProc *proc)
proc->Proc = (HANDLE) GlobalAlloc(GPTR, structsize);
else // In case of zero size defined structure use mapped size
if (structsize == 0) structsize = (int) GlobalSize((HANDLE) proc->Proc);
#ifdef SYSTEM_LOG_DEBUG
{
TCHAR dbgbuf[99];
wsprintf(dbgbuf, _T("\t(%u bytes)"), structsize);
SYSTEM_LOG_ADD(dbgbuf);
}
#endif
// Pointer to current data
st = (char*) proc->Proc;