NSFNOTEOPENEXTENDED-linux

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;

}

}