2011-02-07 14:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/gttrm/gttrm.c
! fixed typo in key escape sequence
* harbour/include/hbsocket.h
* harbour/src/rtl/hbsocket.c
+ added new C function:
char * hb_socketGetHostName( const void * pSockAddr, unsigned len );
* harbour/src/rtl/hbsockhb.c
+ added new PRG function:
HB_SOCKETGETHOSTNAME( <aAddr> ) --> <cHostName>
This commit is contained in:
@@ -16,6 +16,19 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2011-02-07 14:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/src/rtl/gttrm/gttrm.c
|
||||
! fixed typo in key escape sequence
|
||||
|
||||
* harbour/include/hbsocket.h
|
||||
* harbour/src/rtl/hbsocket.c
|
||||
+ added new C function:
|
||||
char * hb_socketGetHostName( const void * pSockAddr, unsigned len );
|
||||
|
||||
* harbour/src/rtl/hbsockhb.c
|
||||
+ added new PRG function:
|
||||
HB_SOCKETGETHOSTNAME( <aAddr> ) --> <cHostName>
|
||||
|
||||
2011-02-07 10:54 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
! Do not add .hbx file to input file list if the file doesn't
|
||||
|
||||
@@ -82,6 +82,7 @@ extern HB_EXPORT HB_BOOL hb_socketResolveInetAddr( void ** pSockAddr, unsig
|
||||
extern HB_EXPORT char * hb_socketResolveAddr( const char * szAddr, int af );
|
||||
extern HB_EXPORT PHB_ITEM hb_socketGetHosts( const char * szAddr, int af );
|
||||
extern HB_EXPORT PHB_ITEM hb_socketGetAliases( const char * szAddr, int af );
|
||||
extern HB_EXPORT char * hb_socketGetHostName( const void * pSockAddr, unsigned len );
|
||||
extern HB_EXPORT PHB_ITEM hb_socketGetIFaces( int af, HB_BOOL fNoAliases );
|
||||
extern HB_EXPORT int hb_socketAddrGetPort( const void * pSockAddr, unsigned len );
|
||||
extern HB_EXPORT HB_BOOL hb_socketAddrFromItem( void ** pSockAddr, unsigned * puiLen, PHB_ITEM pAddrItm );
|
||||
|
||||
@@ -2776,7 +2776,7 @@ static void init_keys( PHB_GTTRM pTerm )
|
||||
{ EXKEY_F8 |KEY_CTRLMASK|KEY_ALTMASK, "\033[f" }, /* kf20 */
|
||||
{ EXKEY_F9 |KEY_CTRLMASK|KEY_ALTMASK, "\033[g" }, /* kf21 */
|
||||
{ EXKEY_F10|KEY_CTRLMASK|KEY_ALTMASK, "\033[h" }, /* kf22 */
|
||||
{ EXKEY_F11|KEY_CTRLMASK|KEY_ALTMASK, "\033[j" }, /* kf23 */
|
||||
{ EXKEY_F11|KEY_CTRLMASK|KEY_ALTMASK, "\033[i" }, /* kf23 */
|
||||
{ EXKEY_F12|KEY_CTRLMASK|KEY_ALTMASK, "\033[j" }, /* kf24 */
|
||||
|
||||
{ EXKEY_F1 |KEY_CTRLMASK, "\033[k" }, /* kf25 */
|
||||
|
||||
@@ -80,6 +80,9 @@
|
||||
platform supports getaddrinfo()/freeaddrinfo() functions:
|
||||
#define HB_HAS_ADDRINFO
|
||||
|
||||
platform supports getnameinfo() function:
|
||||
#define HB_HAS_NAMEINFO
|
||||
|
||||
platform uses sockaddr structure which contains sa_len member:
|
||||
#define HB_HAS_SOCKADDR_SA_LEN
|
||||
|
||||
@@ -122,6 +125,7 @@
|
||||
# define HB_HAS_INET_NTOP
|
||||
# define HB_HAS_SOCKADDR_STORAGE
|
||||
# define HB_HAS_ADDRINFO
|
||||
# define HB_HAS_NAMEINFO
|
||||
# endif
|
||||
# if !defined( __WATCOMC__ ) && !defined( HB_OS_BEOS ) && !defined( HB_OS_MINIX )
|
||||
# define HB_HAS_INET6
|
||||
@@ -181,6 +185,7 @@
|
||||
# define HB_HAS_INET_NTOP
|
||||
# define HB_HAS_SOCKADDR_STORAGE
|
||||
# define HB_HAS_ADDRINFO
|
||||
# define HB_HAS_NAMEINFO
|
||||
# define HB_HAS_INET6_ADDR_CONST
|
||||
/* # define HB_HAS_INET6 */
|
||||
#endif
|
||||
@@ -2743,7 +2748,10 @@ int hb_socketSelect( PHB_ITEM pArrayRD, HB_BOOL fSetRD,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* DNS functions */
|
||||
|
||||
/*
|
||||
* DNS functions
|
||||
*/
|
||||
HB_BOOL hb_socketResolveInetAddr( void ** pSockAddr, unsigned * puiLen, const char * szAddr, int iPort )
|
||||
{
|
||||
#if defined( AF_INET )
|
||||
@@ -3045,6 +3053,55 @@ PHB_ITEM hb_socketGetAliases( const char * szAddr, int af )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char * hb_socketGetHostName( const void * pSockAddr, unsigned len )
|
||||
{
|
||||
char * szResult = NULL;
|
||||
int af = hb_socketGetAddrFamily( pSockAddr, len );
|
||||
|
||||
if( af != -1 )
|
||||
{
|
||||
#if defined( HB_HAS_NAMEINFO )
|
||||
#if !defined( NI_MAXHOST )
|
||||
#define NI_MAXHOST 1025
|
||||
#endif
|
||||
char szHost[ NI_MAXHOST ];
|
||||
int iResult;
|
||||
|
||||
hb_vmUnlock();
|
||||
iResult = getnameinfo( pSockAddr, len, szHost, NI_MAXHOST, NULL, 0, 0 );
|
||||
hb_vmLock();
|
||||
if( iResult == 0 )
|
||||
szResult = hb_strdup( szHost );
|
||||
#else
|
||||
struct hostent * he = NULL;
|
||||
|
||||
if( af == AF_INET )
|
||||
{
|
||||
const struct sockaddr_in * sa = ( const struct sockaddr_in * ) pSockAddr;
|
||||
hb_vmUnlock();
|
||||
he = gethostbyaddr( ( const char * ) &sa->sin_addr, sizeof( sa->sin_addr ), af );
|
||||
hb_vmLock();
|
||||
}
|
||||
#if defined( HB_HAS_INET6 )
|
||||
else if( af == AF_INET6 )
|
||||
{
|
||||
const struct sockaddr_in6 * sa = ( const struct sockaddr_in6 * ) pSockAddr;
|
||||
hb_vmUnlock();
|
||||
he = gethostbyaddr( ( const char * ) &sa->sin6_addr, sizeof( sa->sin6_addr ), af );
|
||||
hb_vmLock();
|
||||
}
|
||||
#endif
|
||||
if( he && he->h_name )
|
||||
szResult = hb_strdup( he->h_name );
|
||||
#endif
|
||||
}
|
||||
return szResult;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* IFACEs
|
||||
*/
|
||||
#if defined( HB_OS_WIN ) || ( defined( SIOCGIFCONF ) && \
|
||||
!( defined( HB_OS_LINUX ) && defined( __WATCOMC__ ) ) )
|
||||
static void hb_socketArraySetInetAddr( PHB_ITEM pItem, HB_SIZE nPos,
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
* HB_SOCKETSELECT( aRead, lSetRead, aWrite, lSetWrite, aExcep, lSetExcep, [ nTimeout = FOREVER ] ) --> nRet
|
||||
* HB_SOCKETRESOLVEINETADDR( cAddr, nPort ) --> aAddr | NIL
|
||||
* HB_SOCKETRESOLVEADDR( cAddr, [ nFamily = HB_SOCKET_AF_INET ] ) --> cResolved
|
||||
* HB_SOCKETGETHOSTNAME( aAddr ) --> cHostName
|
||||
* HB_SOCKETGETHOSTS( cAddr, [ nFamily = HB_SOCKET_AF_INET ] ) --> aHosts
|
||||
* HB_SOCKETGETIFACES( [ nFamily ], [ lNoAliases ] ) --> aIfaces
|
||||
*/
|
||||
@@ -646,6 +647,24 @@ HB_FUNC( HB_SOCKETRESOLVEADDR )
|
||||
hb_retc( "" );
|
||||
}
|
||||
|
||||
HB_FUNC( HB_SOCKETGETHOSTNAME )
|
||||
{
|
||||
void * addr;
|
||||
unsigned int len;
|
||||
|
||||
if( socketaddrParam( 1, &addr, &len ) )
|
||||
{
|
||||
char * szHostName = hb_socketGetHostName( addr, len );
|
||||
|
||||
if( addr )
|
||||
hb_xfree( addr );
|
||||
if( szHostName )
|
||||
hb_retc_buffer( szHostName );
|
||||
else
|
||||
hb_retc_null();
|
||||
}
|
||||
}
|
||||
|
||||
HB_FUNC( HB_SOCKETGETHOSTS )
|
||||
{
|
||||
PHB_ITEM pItem;
|
||||
|
||||
Reference in New Issue
Block a user