diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 73fad3a213..80d53701ea 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,15 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-11-16 17:14 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/contrib/hbnetio/netio.h + * harbour/contrib/hbnetio/netiocli.c + * harbour/contrib/hbnetio/netiosrv.c + * changed USHORT to HB_ERRCODE as error code holder + * use 32bit integers to exchange error codes between server and + client side + * pacified warning + 2009-11-16 16:25 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/contrib/rddsql/sqlbase.c * redirected DBINFO() method to SUPER, to make support for basic diff --git a/harbour/contrib/hbnetio/netio.h b/harbour/contrib/hbnetio/netio.h index c3b0b99d6a..64b9d7af62 100644 --- a/harbour/contrib/hbnetio/netio.h +++ b/harbour/contrib/hbnetio/netio.h @@ -99,16 +99,16 @@ /* { NETIO_DELETE, len[ 2 ]... } + filename[ len ] -> { NETIO_DELETE, ... } */ /* { NETIO_RENAME, len[ 2 ], len2[ 2 ]... } + filename[ len ] + filename[ len2 ] -> { NETIO_RENAME, ... } */ /* { NETIO_OPEN, len[ 2 ], flags[ 2 ], def_ext[], 0, ... } + filename[ len ] -> { NETIO_OPEN, file_no[2], ... } */ -/* { NETIO_READ, file_no[2], size[ 4 ], offset[ 8 ], ... } -> { NETIO_READ, read[ 4 ], err[ 2 ], ... } + data[ read ] */ -/* { NETIO_WRITE, file_no[2], size[ 4 ], offset[ 8 ], ... } + data[ size ] -> { NETIO_WRITE, written[ 4 ], err[ 2 ], ... } */ +/* { NETIO_READ, file_no[2], size[ 4 ], offset[ 8 ], ... } -> { NETIO_READ, read[ 4 ], err[ 4 ], ... } + data[ read ] */ +/* { NETIO_WRITE, file_no[2], size[ 4 ], offset[ 8 ], ... } + data[ size ] -> { NETIO_WRITE, written[ 4 ], err[ 4 ], ... } */ /* { NETIO_LOCK, file_no[2], start[ 8 ], len[ 8 ], flags[ 2 ], ... } -> { NETIO_LOCK, ... } */ /* { NETIO_TRUNC, file_no[2], offset[ 8 ], ... } -> { NETIO_TRUNC, ... } */ -/* { NETIO_SIZE, file_no[2], ... } -> { NETIO_SIZE, size[ 8 ], err[ 2 ], ... } */ +/* { NETIO_SIZE, file_no[2], ... } -> { NETIO_SIZE, size[ 8 ], err[ 4 ], ... } */ /* { NETIO_COMMIT, file_no[2], ... } -> { NETIO_SYNC, ... } */ /* { NETIO_CLOSE, file_no[2], ... } -> { NETIO_CLOSE, ... } */ /* { NETIO_UNLOCK, file_no[2], start[ 8 ], len[ 8 ], flags[ 2 ], ... } -> { NETIO_SYNC, ... } */ /* { NETIO_SYNC, ... } -> NULL */ -/* alternative answer for all messages: -> { NETIO_ERROR, err[ 2 ], ... } */ +/* alternative answer for all messages: -> { NETIO_ERROR, err[ 4 ], ... } */ /* netio errors */ #define NETIO_ERR_UNKNOWN_COMMAND 0xff01 diff --git a/harbour/contrib/hbnetio/netiocli.c b/harbour/contrib/hbnetio/netiocli.c index b9cc4ca425..57437a9e23 100644 --- a/harbour/contrib/hbnetio/netiocli.c +++ b/harbour/contrib/hbnetio/netiocli.c @@ -186,7 +186,7 @@ static BOOL s_fileSendMsg( PHB_CONCLI conn, BYTE * msgbuf, if( iResult != NETIO_SYNC ) { if( iResult == NETIO_ERROR ) - hb_fsSetError( HB_GET_LE_UINT16( &msgbuf[ 4 ] ) ); + hb_fsSetError( ( HB_ERRCODE ) HB_GET_LE_UINT32( &msgbuf[ 4 ] ) ); else if( iResult == iMsg ) fResult = TRUE; break; @@ -635,7 +635,7 @@ static PHB_FILE s_fileOpen( const char * pFilename, const char * pDefExt, if( pFile == NULL ) { hb_errPutOsCode( pError, hb_fsError() ); - hb_errPutGenCode( pError, ( USHORT ) ( ( uiExFlags & FXO_TRUNCATE ) ? EG_CREATE : EG_OPEN ) ); + hb_errPutGenCode( pError, ( HB_ERRCODE ) ( ( uiExFlags & FXO_TRUNCATE ) ? EG_CREATE : EG_OPEN ) ); } } @@ -673,7 +673,9 @@ static BOOL s_fileLock( PHB_FILE pFile, HB_FOFFSET ulStart, HB_FOFFSET ulLen, HB_PUT_LE_UINT64( &msgbuf[ 6 ], ulStart ); HB_PUT_LE_UINT64( &msgbuf[ 14 ], ulLen ); HB_PUT_LE_UINT16( &msgbuf[ 22 ], ( USHORT ) iType ); +#if NETIO_MSGLEN > 24 memset( msgbuf + 24, '\0', sizeof( msgbuf ) - 24 ); +#endif fResult = s_fileSendMsg( pFile->conn, msgbuf, NULL, 0, !fUnLock ); s_fileConUnlock( pFile->conn ); @@ -706,7 +708,7 @@ static ULONG s_fileReadAt( PHB_FILE pFile, void * data, ULONG ulSize, ulResult = ulSize; ulResult = s_fileRecvAll( pFile->conn, data, ulResult ); } - hb_fsSetError( HB_GET_LE_UINT16( &msgbuf[ 8 ] ) ); + hb_fsSetError( ( HB_ERRCODE ) HB_GET_LE_UINT32( &msgbuf[ 8 ] ) ); } s_fileConUnlock( pFile->conn ); } @@ -732,7 +734,7 @@ static ULONG s_fileWriteAt( PHB_FILE pFile, const void * data, ULONG ulSize, if( s_fileSendMsg( pFile->conn, msgbuf, data, ulSize, TRUE ) ) { ulResult = HB_GET_LE_UINT32( &msgbuf[ 4 ] ); - hb_fsSetError( HB_GET_LE_UINT16( &msgbuf[ 8 ] ) ); + hb_fsSetError( ( HB_ERRCODE ) HB_GET_LE_UINT32( &msgbuf[ 8 ] ) ); } s_fileConUnlock( pFile->conn ); } @@ -775,7 +777,7 @@ static HB_FOFFSET s_fileSize( PHB_FILE pFile ) if( s_fileSendMsg( pFile->conn, msgbuf, NULL, 0, TRUE ) ) { llOffset = HB_GET_LE_UINT64( &msgbuf[ 4 ] ); - hb_fsSetError( HB_GET_LE_UINT16( &msgbuf[ 12 ] ) ); + hb_fsSetError( ( HB_ERRCODE ) HB_GET_LE_UINT32( &msgbuf[ 12 ] ) ); } s_fileConUnlock( pFile->conn ); } diff --git a/harbour/contrib/hbnetio/netiosrv.c b/harbour/contrib/hbnetio/netiosrv.c index 94cfab9481..5b974b6d36 100644 --- a/harbour/contrib/hbnetio/netiosrv.c +++ b/harbour/contrib/hbnetio/netiosrv.c @@ -145,12 +145,12 @@ static const char * s_consrvFilePath( char * pszFileName, PHB_CONSRV conn ) return pszFileName; } -static int s_srvFsError( void ) +static HB_ERRCODE s_srvFsError( void ) { - int iError = hb_fsError(); - if( iError == 0 ) - iError = NETIO_ERR_FILE_IO; - return iError; + HB_ERRCODE errCode = hb_fsError(); + if( errCode == 0 ) + errCode = NETIO_ERR_FILE_IO; + return errCode; } static int s_srvFileNew( PHB_CONSRV conn, PHB_FILE pFile ) @@ -504,9 +504,10 @@ HB_FUNC( NETIO_SERVER ) { BYTE msgbuf[ NETIO_MSGLEN ], buffer[ 2048 ], * ptr = NULL, * msg; BOOL fNoAnswer = FALSE; + HB_ERRCODE errCode = 0, errFsCode; long len = 0, size, size2; - int iError = 0, iFileNo; - USHORT uiFalgs, uiFsError; + int iFileNo; + USHORT uiFalgs; char * szExt; PHB_FILE pFile; HB_FOFFSET llOffset, llSize; @@ -521,22 +522,22 @@ HB_FUNC( NETIO_SERVER ) case NETIO_EXISTS: size = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); if( size <= 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( size + conn->rootPathLen >= ( long ) sizeof( buffer ) ) ptr = msg = ( BYTE * ) hb_xgrab( size + conn->rootPathLen + 1 ); msg[ size ] = '\0'; if( s_srvRecvAll( conn, msg, size ) != size ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else { const char * szFile = s_consrvFilePath( ( char * ) msg, conn ); if( !szFile ) - iError = NETIO_ERR_WRONG_FILE_PATH; + errCode = NETIO_ERR_WRONG_FILE_PATH; else if( !hb_fileExists( szFile, NULL ) ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else { HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_EXISTS ); @@ -549,22 +550,22 @@ HB_FUNC( NETIO_SERVER ) case NETIO_DELETE: size = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); if( size <= 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( size + conn->rootPathLen >= ( long ) sizeof( buffer ) ) ptr = msg = ( BYTE * ) hb_xgrab( size + conn->rootPathLen + 1 ); msg[ size ] = '\0'; if( s_srvRecvAll( conn, msg, size ) != size ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else { const char * szFile = s_consrvFilePath( ( char * ) msg, conn ); if( !szFile ) - iError = NETIO_ERR_WRONG_FILE_PATH; + errCode = NETIO_ERR_WRONG_FILE_PATH; else if( !hb_fileDelete( szFile ) ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else { HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_DELETE ); @@ -578,14 +579,14 @@ HB_FUNC( NETIO_SERVER ) size = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); size2 = HB_GET_LE_UINT16( &msgbuf[ 6 ] ); if( size <= 0 || size2 <= 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( HB_MAX( size, size2 ) + conn->rootPathLen >= ( long ) sizeof( buffer ) ) ptr = msg = ( BYTE * ) hb_xgrab( HB_MAX( size, size2 ) + conn->rootPathLen + 1 ); msg[ size ] = '\0'; if( s_srvRecvAll( conn, msg, size ) != size ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else { char * szOldName = NULL; @@ -596,16 +597,16 @@ HB_FUNC( NETIO_SERVER ) msg[ size2 ] = '\0'; if( s_srvRecvAll( conn, msg, size2 ) != size2 ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else if( !szOldName ) - iError = NETIO_ERR_WRONG_FILE_PATH; + errCode = NETIO_ERR_WRONG_FILE_PATH; else { szFile = s_consrvFilePath( ( char * ) msg, conn ); if( !szFile ) - iError = NETIO_ERR_WRONG_FILE_PATH; + errCode = NETIO_ERR_WRONG_FILE_PATH; else if( !hb_fileRename( szOldName, szFile ) ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else { HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_RENAME ); @@ -624,33 +625,33 @@ HB_FUNC( NETIO_SERVER ) NETIO_MSGLEN - 8 ) : NULL; size = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); if( size <= 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( size + conn->rootPathLen >= ( long ) sizeof( buffer ) ) ptr = msg = ( BYTE * ) hb_xgrab( size + conn->rootPathLen + 1 ); msg[ size ] = '\0'; if( s_srvRecvAll( conn, msg, size ) != size ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else if( conn->filesCount >= NETIO_FILES_MAX ) - iError = NETIO_ERR_FILES_MAX; + errCode = NETIO_ERR_FILES_MAX; else { const char * szFile = s_consrvFilePath( ( char * ) msg, conn ); if( !szFile ) - iError = NETIO_ERR_WRONG_FILE_PATH; + errCode = NETIO_ERR_WRONG_FILE_PATH; else { pFile = hb_fileExtOpen( szFile, szExt, uiFalgs, NULL, NULL ); if( !pFile ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else { iFileNo = s_srvFileNew( conn, pFile ); if( iFileNo < 0 ) { - iError = NETIO_ERR_FILES_MAX; + errCode = NETIO_ERR_FILES_MAX; hb_fileClose( pFile ); } else @@ -672,22 +673,22 @@ HB_FUNC( NETIO_SERVER ) size = HB_GET_LE_UINT32( &msgbuf[ 6 ] ); llOffset = HB_GET_LE_INT64( &msgbuf[ 10 ] ); if( size < 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( size >= ( long ) ( sizeof( buffer ) - NETIO_MSGLEN ) ) ptr = msg = ( BYTE * ) hb_xgrab( size + NETIO_MSGLEN ); pFile = s_srvFileGet( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else { len = hb_fileReadAt( pFile, msg + NETIO_MSGLEN, size, llOffset ); - uiFsError = hb_fsError(); + errFsCode = hb_fsError(); HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_READ ); HB_PUT_LE_UINT32( &msg[ 4 ], len ); - HB_PUT_LE_UINT32( &msg[ 8 ], uiFsError ); - memset( msg + 10, '\0', NETIO_MSGLEN - 10 ); + HB_PUT_LE_UINT32( &msg[ 8 ], errFsCode ); + memset( msg + 12, '\0', NETIO_MSGLEN - 12 ); } } break; @@ -697,26 +698,26 @@ HB_FUNC( NETIO_SERVER ) size = HB_GET_LE_UINT32( &msgbuf[ 6 ] ); llOffset = HB_GET_LE_INT64( &msgbuf[ 10 ] ); if( size < 0 ) - iError = NETIO_ERR_WRONG_PARAM; + errCode = NETIO_ERR_WRONG_PARAM; else { if( size >= ( long ) sizeof( buffer ) ) ptr = msg = ( BYTE * ) hb_xgrab( size ); if( s_srvRecvAll( conn, msg, size ) != size ) - iError = NETIO_ERR_READ; + errCode = NETIO_ERR_READ; else { pFile = s_srvFileGet( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else { size = hb_fileWriteAt( pFile, msg, size, llOffset ); - uiFsError = hb_fsError(); + errFsCode = hb_fsError(); HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_WRITE ); HB_PUT_LE_UINT32( &msg[ 4 ], size ); - HB_PUT_LE_UINT32( &msg[ 8 ], uiFsError ); - memset( msg + 10, '\0', NETIO_MSGLEN - 10 ); + HB_PUT_LE_UINT32( &msg[ 8 ], errFsCode ); + memset( msg + 12, '\0', NETIO_MSGLEN - 12 ); } } } @@ -731,9 +732,9 @@ HB_FUNC( NETIO_SERVER ) uiFalgs = HB_GET_LE_UINT16( &msgbuf[ 22 ] ); pFile = s_srvFileGet( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else if( !hb_fileLock( pFile, llOffset, llSize, uiFalgs ) ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else if( !fNoAnswer ) { UINT32 uiMsg = HB_GET_LE_UINT32( msgbuf ); @@ -747,9 +748,9 @@ HB_FUNC( NETIO_SERVER ) llOffset = HB_GET_LE_INT64( &msgbuf[ 6 ] ); pFile = s_srvFileGet( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else if( !hb_fileTruncAt( pFile, llOffset ) ) - iError = s_srvFsError(); + errCode = s_srvFsError(); else { HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_TRUNC ); @@ -761,15 +762,15 @@ HB_FUNC( NETIO_SERVER ) iFileNo = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); pFile = s_srvFileGet( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else { llOffset = hb_fileSize( pFile ); - uiFsError = hb_fsError(); + errFsCode = hb_fsError(); HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_SIZE ); HB_PUT_LE_UINT64( &msg[ 4 ], llOffset ); - HB_PUT_LE_UINT32( &msg[ 12 ], uiFsError ); - memset( msg + 14, '\0', NETIO_MSGLEN - 14 ); + HB_PUT_LE_UINT32( &msg[ 12 ], errFsCode ); + memset( msg + 16, '\0', NETIO_MSGLEN - 16 ); } break; @@ -777,7 +778,7 @@ HB_FUNC( NETIO_SERVER ) iFileNo = HB_GET_LE_UINT16( &msgbuf[ 4 ] ); pFile = s_srvFileFree( conn, iFileNo ); if( pFile == NULL ) - iError = NETIO_ERR_WRONG_FILE_HANDLE; + errCode = NETIO_ERR_WRONG_FILE_HANDLE; else { hb_fileClose( pFile ); @@ -798,7 +799,7 @@ HB_FUNC( NETIO_SERVER ) continue; default: /* unkown message */ - iError = NETIO_ERR_UNKNOWN_COMMAND; + errCode = NETIO_ERR_UNKNOWN_COMMAND; break; } @@ -808,22 +809,22 @@ HB_FUNC( NETIO_SERVER ) memset( msg + 4, '\0', NETIO_MSGLEN - 4 ); len = NETIO_MSGLEN; } - else if( iError != 0 ) + else if( errCode != 0 ) { HB_PUT_LE_UINT32( &msg[ 0 ], NETIO_ERROR ); - HB_PUT_LE_UINT16( &msg[ 4 ], iError ); - memset( msg + 6, '\0', NETIO_MSGLEN - 6 ); + HB_PUT_LE_UINT32( &msg[ 4 ], errCode ); + memset( msg + 8, '\0', NETIO_MSGLEN - 8 ); len = NETIO_MSGLEN; } else len += NETIO_MSGLEN; - iError = s_srvSendAll( conn, msg, len ) != len; + errCode = s_srvSendAll( conn, msg, len ) != len; if( ptr ) hb_xfree( ptr ); - if( iError ) + if( errCode ) break; } }