int __declspec()

in src/generic/log.c [29:130]


int __declspec(dllexport) log_Init(Tcl_Interp * interp)
{

    LogData *logData = NULL;
    LogPlugIn *logtofile = NULL;
    LogPlugIn *logtochannel = NULL;
    LogPlugIn *logtocmd = NULL;
    LogPlugIn *logtosyslog = NULL;

    /* --------------------------------------------------------------------------
     * interpreter running ?
     * ----------------------------------------------------------------------- */
    if (interp == NULL)
	return TCL_ERROR;

    /* --------------------------------------------------------------------------
     * init internal data, and register with interp
     * ----------------------------------------------------------------------- */
    logData = createLogData();
    WebAssertData(interp, logData, "log", TCL_ERROR);

    /* --------------------------------------------------------------------------
     * register data with interp
     * ----------------------------------------------------------------------- */
    Tcl_SetAssocData(interp, WEB_LOG_ASSOC_DATA,
		     destroyLogData, (ClientData) logData);

    /* --------------------------------------------------------------------------
     * register commands
     * ----------------------------------------------------------------------- */
    Tcl_CreateObjCommand(interp, "web::log",
			 Web_Log,
			 (ClientData) logData, (Tcl_CmdDeleteProc *) NULL);

    Tcl_CreateObjCommand(interp, "web::loglevel",
			 Web_LogFilter,
			 (ClientData) logData, (Tcl_CmdDeleteProc *) NULL);

    /* for compatibility with Websh 3.5 and earlier*/
    Tcl_CreateObjCommand(interp, "web::logfilter",
			 Web_LogFilter,
			 (ClientData) logData, (Tcl_CmdDeleteProc *) NULL);

    Tcl_CreateObjCommand(interp, "web::logdest",
			 Web_LogDest,
			 (ClientData) logData, (Tcl_CmdDeleteProc *) NULL);

    /* --------------------------------------------------------------------------
     * register log handler "channel"
     * ----------------------------------------------------------------------- */
    logtochannel = createLogPlugIn();
    WebAssertData(interp, logtochannel, "log_Init/logtochannel plugin",
		  TCL_ERROR)

    logtochannel->constructor = createLogToChannel;
    logtochannel->destructor = destroyLogToChannel;
    logtochannel->handler = logToChannel;

    registerLogPlugIn(interp, "channel", logtochannel);

    /* --------------------------------------------------------------------------
     * register log handler "file"
     * ----------------------------------------------------------------------- */
    logtofile = createLogPlugIn();
    WebAssertData(interp, logtofile, "log_Init/logtofile plugin", TCL_ERROR)

    logtofile->constructor = createLogToFile;
    logtofile->destructor = destroyLogToFile;
    logtofile->handler = logToFile;

    registerLogPlugIn(interp, "file", logtofile);

    /* --------------------------------------------------------------------------
     * register log handler "command"
     * ----------------------------------------------------------------------- */
    logtocmd = createLogPlugIn();
    WebAssertData(interp, logtocmd, "log_Init/logtocmd plugin", TCL_ERROR)

	logtocmd->constructor = createLogToCmd;
    logtocmd->destructor = destroyLogToCmd;
    logtocmd->handler = logToCmd;

    registerLogPlugIn(interp, "command", logtocmd);

    /* --------------------------------------------------------------------------
     * register log handler "syslog"
     * ----------------------------------------------------------------------- */
#ifndef WIN32
    logtosyslog = createLogPlugIn();
    WebAssertData(interp, logtocmd, "log_Init/logtosyslog plugin", TCL_ERROR)

    logtosyslog->constructor = createLogToSyslog;
    logtosyslog->destructor = destroyLogToSyslog;
    logtosyslog->handler = logToSyslog;

    registerLogPlugIn(interp, "syslog", logtosyslog);
#endif
    /* --------------------------------------------------------------------------
     * done
     * ----------------------------------------------------------------------- */
    return TCL_OK;
}