diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0f1c172651..e22376d2ef 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,15 @@ The license applies to all entries newer than 2009-04-28. */ +2012-04-25 00:03 UTC+0200 Viktor Szakats (harbour syenar.net) + * contrib/hbmisc/udpds.prg + + updated to be CP agnostic + + changed protocol to use UTF8 through the wire + ; NOTE: requires not yet committed HB_BLEFT() + + * include/harbour.hbx + * minor + 2012-04-24 17:34 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * harbour/include/harbour.hbx * harbour/src/rtl/chruni.c diff --git a/harbour/contrib/hbmisc/udpds.prg b/harbour/contrib/hbmisc/udpds.prg index e431605c63..2a005b5ed5 100644 --- a/harbour/contrib/hbmisc/udpds.prg +++ b/harbour/contrib/hbmisc/udpds.prg @@ -31,15 +31,16 @@ FUNCTION hb_UDPDS_Find( nPort, cName ) IF ! Empty( hSocket := hb_socketOpen( , HB_SOCKET_PT_DGRAM ) ) hb_socketSetBroadcast( hSocket, .T. ) - IF hb_socketSendTo( hSocket, Chr( 5 ) + cName + Chr( 0 ), , , { HB_SOCKET_AF_INET, "255.255.255.255", nPort } ) == Len( cName ) + 2 + cName := hb_StrToUTF8( cName ) + IF hb_socketSendTo( hSocket, hb_BChar( 5 ) + cName + hb_BChar( 0 ), , , { HB_SOCKET_AF_INET, "255.255.255.255", nPort } ) == hb_BLen( cName ) + 2 nTime := hb_milliseconds() nEnd := nTime + 100 /* 100ms delay is enough on LAN */ aRet := {} DO WHILE nEnd > nTime cBuffer := Space( 2000 ) nLen := hb_socketRecvFrom( hSocket, @cBuffer, , , @aAddr, nEnd - nTime ) - IF Left( cBuffer, Len( cName ) + 2 ) == Chr( 6 ) + cName + Chr( 0 ) - AAdd( aRet, { aAddr[ 2 ], SubStr( cBuffer, Len( cName ) + 3, nLen - Len( cName ) - 2 ) } ) + IF hb_BLeft( cBuffer, hb_BLen( cName ) + 2 ) == hb_BChar( 6 ) + cName + hb_BChar( 0 ) + AAdd( aRet, { aAddr[ 2 ], hb_BSubStr( cBuffer, hb_BLen( cName ) + 3, nLen - hb_BLen( cName ) - 2 ) } ) ENDIF nTime := hb_milliseconds() ENDDO @@ -75,6 +76,9 @@ STATIC PROCEDURE UDPDS( hSocket, cName, cVersion ) LOCAL cBuffer, nLen, aAddr + cName := hb_StrToUTF8( cName ) + cVersion := iif( hb_isString( cVersion ), hb_StrToUTF8( cVersion ), "" ) + DO WHILE .T. cBuffer := Space( 2000 ) BEGIN SEQUENCE WITH {| oErr | Break( oErr ) } @@ -95,9 +99,9 @@ STATIC PROCEDURE UDPDS( hSocket, cName, cVersion ) * Broadcast request: ENQ, ServerName, NUL * Server response: ACK, ServerName, NUL, Version */ - IF Left( cBuffer, nLen ) == Chr( 5 ) + cName + Chr( 0 ) + IF hb_BLeft( cBuffer, nLen ) == hb_BChar( 5 ) + cName + hb_BChar( 0 ) BEGIN SEQUENCE WITH {| oErr | Break( oErr ) } - hb_socketSendTo( hSocket, Chr( 6 ) + cName + Chr( 0 ) + iif( cVersion == NIL, "", cVersion ), , , aAddr ) + hb_socketSendTo( hSocket, hb_BChar( 6 ) + cName + hb_BChar( 0 ) + cVersion, , , aAddr ) END SEQUENCE ENDIF ENDIF diff --git a/harbour/include/harbour.hbx b/harbour/include/harbour.hbx index 3763899104..512867a9a9 100644 --- a/harbour/include/harbour.hbx +++ b/harbour/include/harbour.hbx @@ -621,13 +621,13 @@ DYNAMIC hb_isSymbol DYNAMIC hb_isTimeStamp DYNAMIC hb_jsonDecode DYNAMIC hb_jsonEncode -DYNAMIC hb_KeyChar -DYNAMIC hb_KeyClear -DYNAMIC hb_KeyIns -DYNAMIC hb_KeyLast -DYNAMIC hb_KeyNext -DYNAMIC hb_KeyPut -DYNAMIC hb_KeyStd +DYNAMIC hb_keyChar +DYNAMIC hb_keyClear +DYNAMIC hb_keyIns +DYNAMIC hb_keyLast +DYNAMIC hb_keyNext +DYNAMIC hb_keyPut +DYNAMIC hb_keyStd DYNAMIC hb_langErrMsg DYNAMIC hb_langMessage DYNAMIC hb_langName