Source

nsis64 / Contrib / Makensisw / jnetlib / util.cpp

/*
** JNetLib
** Copyright (C) 2000-2001 Nullsoft, Inc.
** Author: Justin Frankel
** File: util.cpp - JNL implementation of basic network utilities
** License: zlib
**
** Reviewed for Unicode Support by Jim Park -- 08/17/2007
** Note: The functions that work on char's should be explicitely set to use the
** ANSI versions.  Some of the functions like wprintf() are #defined to be
** the wide-char versions when _UNICODE is defined.  So these must be explictly
** set to use the ANSI versions.
*/

#include "netinc.h"

#include "util.h"

int JNL::open_socketlib()
{
#ifdef _WIN32
  WSADATA wsaData;
  if (WSAStartup(MAKEWORD(1, 1), &wsaData)) return 1;
#endif
  return 0;
}
void JNL::close_socketlib()
{
#ifdef _WIN32
  WSACleanup();
#endif
}
unsigned long JNL::ipstr_to_addr(const char *cp) 
{ 
  return ::inet_addr(cp); 
}

void JNL::addr_to_ipstr(unsigned long addr, char *host, int maxhostlen) 
{ 
  struct in_addr a; a.s_addr=addr;
  char *p=::inet_ntoa(a); strncpy(host,p?p:"",maxhostlen);
}

int my_atoi(char *s)
{
  int sign=0;
  int v=0;
  if (*s == '-') { s++; sign++; }
  for (;;)
  {
    int c=*s++ - '0';
    if (c < 0 || c > 9) break;
    v*=10;
    v+=c;
  }
  if (sign) return -(int) v;
  return (int)v;
}

void mini_memset(void *o,char i,int l)
{
  char *oo=(char*)o;
  while (l-- > 0) *oo++=i;
}
void mini_memcpy(void *o,void*i,int l)
{
  char *oo=(char*)o;
  char *ii=(char*)i;
  while (l-- > 0) *oo++=*ii++;
}