Hi all,
I have written a small code to trap note open call at server side in linux. But I dont see it getting executed and dont understand how to debug it.please can anyone suggest me what’s wrong with my code?.
TExtensionInfo ExtensionHookTable =
{
{EM_NSFNOTEOPENEXTENDED, EM_REG_BEFORE, 0, FALSE, "EM_NSFNOTEOPENEXTENDED"},
{EM_NSFNOTEOPEN, EM_REG_BEFORE, 0, FALSE, "EM_NSFNOTEOPEN"},
{0, 0, 0, 0, NULL}
};
extern “C” STATUS LNPUBLIC MainEntryPoint()
{
STATUS LNPUBLIC (*ghandler)(EMRECORD FAR *);
error = NOERROR;
ghandler=EMHandlerProc;
Logevent("main entry point loaded");
if (gHooksRegistered)
{
return NOERROR;
}
gHooksRegistered = TRUE;
Logevent("notes hook loaded");
error=EMCreateRecursionID(&gRecursionID);
if(error)
{
Logevent("EMCreateRecursionID() failed.");
}
for(x=0; ExtensionHookTable[x].pName != NULL; x++) {
error=EMRegister(ExtensionHookTable[x].Identifier,
ExtensionHookTable[x].Notification,
(EMHANDLER)ghandler,
gRecursionID,
&ExtensionHookTable[x].RegistrationHandle);
if (error)
{
Logevent("Error registering extension hook(s).");
break;
}
}
}
STATUS LNPUBLIC EMHandlerProc(EMRECORD FAR *pExRecord)
{
NOTEHANDLE hNote = NULL;
switch (pExRecord->EId)
{
case EM_NSFNOTEOPEN:
case EM_NSFNOTEOPENEXTENDED:
{
if (pExRecord->NotificationType == EM_BEFORE)
{
VARARG_PTR ap = pExRecord->Ap;
DBHANDLE hDB = VARARG_GET(ap, DBHANDLE);
NOTEID NoteID = VARARG_GET(ap, NOTEID);
DWORD OpenFlags = VARARG_GET(ap, DWORD);
if ((OpenFlags & OPEN_MARK_READ) || // open mail in Notes/admin program
(OpenFlags == 0x03000000) || // web mail access for Domino 6.x
(OpenFlags == 0x13000000)) // web mail access for Domino 7.x and 8.x
{
NSFNoteOpen(hDB, NoteID, 0, &hNote);
Logevent("notes open trapped");
}
} // if (pExRecord->NotificationType == EM_BEFORE)
Logevent("handle completed...deregister");
for(x=0; ExtensionHookTable[x].pName != NULL; x++) {
error=EMDeregister(ExtensionHookTable[x].RegistrationHandle);
if (error)
{
Logevent("Error deregistering extension hook(s).");
break;
}
}
break;
} // case EM_NSFNOTEOPENEXTENDED:
default:
break;
} // switch (pExRecord->EId)
return ERR_EM_CONTINUE;
}
void Logevent(char *formatstring)
{
if (formatstring == NULL)
{
return;
}
gFStream = __OpenFile(LogFileName, APPEND_PERMISSION);
fprintf(gFStream, formatstring);
if (gFStream)
{
__CloseFile(gFStream);
gFStream = (__FILE*)0;
}
}