Jim Park's Unicode NSIS merging - Step 1 : switch to TCHARs where relevant.
Compiler output is identical before & after this step git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/branches/wizou@6036 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
4e48722b63
commit
752d7d239a
209 changed files with 9698 additions and 7658 deletions
|
@ -1,82 +1,86 @@
|
|||
/*
|
||||
** JNetLib
|
||||
** Copyright (C) 2000-2001 Nullsoft, Inc.
|
||||
** Author: Justin Frankel
|
||||
** File: asyncdns.cpp - JNL portable asynchronous DNS implementation
|
||||
** License: see jnetlib.h
|
||||
*/
|
||||
|
||||
|
||||
#include "netinc.h"
|
||||
#include "util.h"
|
||||
#include "asyncdns.h"
|
||||
|
||||
JNL_AsyncDNS::JNL_AsyncDNS()
|
||||
{
|
||||
m_thread=0;
|
||||
m_addr=0;
|
||||
m_hostname[0]=0;
|
||||
}
|
||||
|
||||
JNL_AsyncDNS::~JNL_AsyncDNS()
|
||||
{
|
||||
wait_for_thread_death();
|
||||
}
|
||||
|
||||
unsigned long WINAPI JNL_AsyncDNS::_threadfunc(LPVOID _d)
|
||||
{
|
||||
JNL_AsyncDNS *_this=(JNL_AsyncDNS*)_d;
|
||||
struct hostent *hostentry;
|
||||
hostentry=::gethostbyname(_this->m_hostname);
|
||||
if (hostentry)
|
||||
{
|
||||
_this->m_addr=*((int*)hostentry->h_addr);
|
||||
}
|
||||
else
|
||||
_this->m_addr=INADDR_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int JNL_AsyncDNS::resolve(char *hostname, unsigned long *addr)
|
||||
{
|
||||
// return 0 on success, 1 on wait, -1 on unresolvable
|
||||
unsigned long ip=inet_addr(hostname);
|
||||
if (ip != INADDR_NONE)
|
||||
{
|
||||
*addr=ip;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (lstrcmpi(m_hostname,hostname)) m_addr=0;
|
||||
else if (m_addr == INADDR_NONE)
|
||||
{
|
||||
wait_for_thread_death();
|
||||
return -1;
|
||||
}
|
||||
else if (m_addr)
|
||||
{
|
||||
*addr=m_addr;
|
||||
wait_for_thread_death();
|
||||
return 0;
|
||||
}
|
||||
lstrcpy(m_hostname,hostname);
|
||||
|
||||
if (!m_thread)
|
||||
{
|
||||
DWORD id;
|
||||
m_thread=CreateThread(NULL,0,_threadfunc,(LPVOID)this,0,&id);
|
||||
if (!m_thread) return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void JNL_AsyncDNS::wait_for_thread_death()
|
||||
{
|
||||
if (m_thread)
|
||||
{
|
||||
WaitForSingleObject(m_thread,INFINITE);
|
||||
CloseHandle(m_thread);
|
||||
}
|
||||
|
||||
m_thread=0;
|
||||
}
|
||||
/*
|
||||
** JNetLib
|
||||
** Copyright (C) 2000-2001 Nullsoft, Inc.
|
||||
** Author: Justin Frankel
|
||||
** File: asyncdns.cpp - JNL portable asynchronous DNS implementation
|
||||
** License: see jnetlib.h
|
||||
**
|
||||
** Unicode support by Jim Park -- 08/24/2007
|
||||
*/
|
||||
|
||||
// Jim Park: For Unicode Support, all string functions must explicitly use
|
||||
// ANSI versions if UNICODE is defined.
|
||||
|
||||
#include "netinc.h"
|
||||
#include "util.h"
|
||||
#include "asyncdns.h"
|
||||
|
||||
JNL_AsyncDNS::JNL_AsyncDNS()
|
||||
{
|
||||
m_thread=0;
|
||||
m_addr=0;
|
||||
m_hostname[0]=0;
|
||||
}
|
||||
|
||||
JNL_AsyncDNS::~JNL_AsyncDNS()
|
||||
{
|
||||
wait_for_thread_death();
|
||||
}
|
||||
|
||||
unsigned long WINAPI JNL_AsyncDNS::_threadfunc(LPVOID _d)
|
||||
{
|
||||
JNL_AsyncDNS *_this=(JNL_AsyncDNS*)_d;
|
||||
struct hostent *hostentry;
|
||||
hostentry=::gethostbyname(_this->m_hostname);
|
||||
if (hostentry)
|
||||
{
|
||||
_this->m_addr=*((int*)hostentry->h_addr);
|
||||
}
|
||||
else
|
||||
_this->m_addr=INADDR_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int JNL_AsyncDNS::resolve(char *hostname, unsigned long *addr)
|
||||
{
|
||||
// return 0 on success, 1 on wait, -1 on unresolvable
|
||||
unsigned long ip=inet_addr(hostname);
|
||||
if (ip != INADDR_NONE)
|
||||
{
|
||||
*addr=ip;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (lstrcmpiA(m_hostname,hostname)) m_addr=0;
|
||||
else if (m_addr == INADDR_NONE)
|
||||
{
|
||||
wait_for_thread_death();
|
||||
return -1;
|
||||
}
|
||||
else if (m_addr)
|
||||
{
|
||||
*addr=m_addr;
|
||||
wait_for_thread_death();
|
||||
return 0;
|
||||
}
|
||||
lstrcpyA(m_hostname,hostname);
|
||||
|
||||
if (!m_thread)
|
||||
{
|
||||
DWORD id;
|
||||
m_thread=CreateThread(NULL,0,_threadfunc,(LPVOID)this,0,&id);
|
||||
if (!m_thread) return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void JNL_AsyncDNS::wait_for_thread_death()
|
||||
{
|
||||
if (m_thread)
|
||||
{
|
||||
WaitForSingleObject(m_thread,INFINITE);
|
||||
CloseHandle(m_thread);
|
||||
}
|
||||
|
||||
m_thread=0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue