/*--
Copyright (c) 1995-1998  Microsoft Corporation
Module Name: LISTENER.CPP
Author: Arul Menezes
Abstract: HTTP server initialization & listener thread
--*/


#include "pch.h"
#pragma hdrstop

#include "httpd.h"
typedef void  (WINAPI *PFN_EXECUTE)();

#ifdef UNDER_NT
extern "C" int WINAPI HttpInitializeFromExe();
#endif

int
WINAPI
WinMain(HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
#ifdef UNDER_NT
        LPSTR     lpCmdLine,
#else
        LPWSTR    lpCmdLine,
#endif
        int       nCmdShow)
{

#ifdef UNDER_NT

    // On NT builds, we statically link everything together.
    HttpInitializeFromExe();
#else
    PFN_EXECUTE pFunc = NULL;
    HINSTANCE hLib = LoadLibrary(L"HTTPD.DLL");

    if (!hLib)
    {
        RETAILMSG(1,(L"HTTPDEXE:  Httpd.dll not loaded on device, aborting execution\r\n"));
        return 1;
    }

    pFunc = (PFN_EXECUTE) GetProcAddress(hLib,L"HttpInitializeFromExe");
    if (!pFunc)
    {
        RETAILMSG(1,(L"HTTPDEXE:  Httpd.dll corrupt or old version, aborting execution\r\n"));
        return 1;
    }

    ((PFN_EXECUTE) pFunc)();

#endif

    Sleep(INFINITE);  // don't ever stop, must kp to end us.
    return 0;
}