⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libprews.c

📁 apache的软件linux版本
💻 C
字号:
/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#include <netware.h>#include <library.h>#include <nks/synch.h>#include "novsock2.h"#include "apr_pools.h"#include "apr_private.h"/* library-private data...*/int          gLibId = -1;void         *gLibHandle = (void *) NULL;NXMutex_t    *gLibLock = (NXMutex_t *) NULL;/* internal library function prototypes...*/int DisposeLibraryData(void *);int _NonAppStart(    void        *NLMHandle,    void        *errorScreen,    const char  *cmdLine,    const char  *loadDirPath,    size_t      uninitializedDataLength,    void        *NLMFileHandle,    int         (*readRoutineP)( int conn, void *fileHandle, size_t offset,                    size_t nbytes, size_t *bytesRead, void *buffer ),    size_t      customDataOffset,    size_t      customDataSize,    int         messageCount,    const char  **messages){    WSADATA wsaData;    apr_status_t status;    NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);#pragma unused(cmdLine)#pragma unused(loadDirPath)#pragma unused(uninitializedDataLength)#pragma unused(NLMFileHandle)#pragma unused(readRoutineP)#pragma unused(customDataOffset)#pragma unused(customDataSize)#pragma unused(messageCount)#pragma unused(messages)        gLibId = register_library(DisposeLibraryData);    if (gLibId < -1)    {        OutputToScreen(errorScreen, "Unable to register library with kernel.\n");        return -1;    }    gLibHandle = NLMHandle;    gLibLock = NXMutexAlloc(0, 0, &liblock);    if (!gLibLock)    {        OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");        return -1;    }    apr_netware_setup_time();    if ((status = apr_pool_initialize()) != APR_SUCCESS)        return status;    return WSAStartup((WORD) MAKEWORD(2, 0), &wsaData);}void _NonAppStop( void ){    apr_pool_terminate();    WSACleanup();    unregister_library(gLibId);    NXMutexFree(gLibLock);}int  _NonAppCheckUnload( void ){    return 0;}int register_NLM(void *NLMHandle){    APP_DATA *app_data = (APP_DATA*) get_app_data(gLibId);    NXLock(gLibLock);    if (!app_data) {        app_data = (APP_DATA*)library_malloc(gLibHandle, sizeof(APP_DATA));        if (app_data) {            memset (app_data, 0, sizeof(APP_DATA));            set_app_data(gLibId, app_data);            app_data->gs_nlmhandle = NLMHandle;        }    }    if (app_data && (!app_data->initialized)) {        app_data->initialized = 1;        NXUnlock(gLibLock);        return 0;    }    NXUnlock(gLibLock);    return 1;}int unregister_NLM(void *NLMHandle){    APP_DATA *app_data = (APP_DATA*) get_app_data(gLibId);    NXLock(gLibLock);    if (app_data) {        app_data->initialized = 0;        NXUnlock(gLibLock);        return 0;    }    NXUnlock(gLibLock);    return 1;}int DisposeLibraryData(void *data){    if (data)    {        library_free(data);    }    return 0;}int setGlobalPool(void *data){    APP_DATA *app_data = (APP_DATA*) get_app_data(gLibId);    NXLock(gLibLock);    if (app_data && !app_data->gPool) {        app_data->gPool = data;    }    NXUnlock(gLibLock);    return 1;}void* getGlobalPool(){    APP_DATA *app_data = (APP_DATA*) get_app_data(gLibId);    if (app_data) {        return app_data->gPool;    }    return NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -