/*------------------------------------------------------------------
  These functions are to be called when the shared NLM starts and
  stops.  By using these functions instead of defining a main()
  and calling ExitThread(TSR_THREAD, 0), the load time of the
  shared NLM is faster and memory size reduced.
   
  You may also want to override these in your own Apache module
  to do any cleanup other than the mechanism Apache modules
  provide.
------------------------------------------------------------------*/
#include "stddef.h"
#include "ws2nlm.h"

#ifdef __GNUC__
#include <string.h>        /* memset */
extern char _edata, _end ; /* end of DATA (start of BSS), end of BSS */
#endif

int _lib_start_ws()
{
    WSADATA wsaData;
    
#ifdef __GNUC__
    memset (&_edata, 0, &_end - &_edata);
#endif
    return WSAStartup((WORD) MAKEWORD(2, 0), &wsaData);
}

int _lib_stop_ws()
{
    WSACleanup();
    return 0;
}