19990824-20:30 GMT+1

This commit is contained in:
Viktor Szakats
1999-08-24 18:43:47 +00:00
parent af85fb2b21
commit 96c2362c91
5 changed files with 71 additions and 80 deletions

View File

@@ -1,3 +1,45 @@
19990824-20:30 GMT+1 Victor Szel <info@szelvesz.hu>
* include/hbdefs.h
! ISBYREF() macro changed to call hb_parinfo() instead of hb_param(),
it was not working previously since hb_param() was automatically
dereferencing the parameter.
FOPEN() parameter checking was not working correctly because of this.
( WARNING ! THIS SEEMS TO BE A WORKAROUND FOR SOME OTHER PROBLEM
WITH PARAMETERS PASSED BY REFERENCE, PLEASE ALSO NOTE THAT
FRead() IS NOT WORKING RIGHT NOW )
* source/rtl/filesys.c
doc/subcodes.txt
* Huge cleanup, reformatted, eliminated usage of internal structures,
fixed types, standardized variable names, explicit constants changed
to manifest constants, fixed a whole bunch of bugs, simplified code
fragments, optimalized variable usage and scope. 65535U -> (USHORT)-1
% "return;"s removed
* reindented using 3 chars
! FWRITE() and hb_fsWrite() returns 0 instead of 65535 if the write failed.
! FOPEN() runtime error code fixed
! FERASE() return value fixed
! FREAD() will check is the passed buffer size is smaller than the
required read length.
! FREAD(): Added warning about the fact, that the buffer returned by
hb_parc() will be directly modified. (this is strictly prohibited by
Clipper doc).
! hb_fsCreate() didn't reset the last error code on success.
! hb_fsDelete(), bh_fsRename(), hb_fsLock(), hb_fsCommit() - the not
defined platform branch is now setting the last error code.
! hb_fsExtOpen() is now setting the last code the FS_ERROR.
% FREADSTR() made much faster
! FREADSTR() uses hb_fsRead() instead of read()
! hb_fsClose() didn't set the last error code.
! I2BIN(), L2BIN() was returning one more character than Clipper
(it worked OK when bad parameters were passed).
! BIN2L() returned an int instead of long, this is fixed.
* source/rtl/math.c
* Reformatting finished.
19990824-19:05 GMT+1 Victor Szel <info@szelvesz.hu>
* source/rtl/math.c

View File

@@ -1168,16 +1168,11 @@ start from 3000
* $SUBCODE$
* BASE/3006
* $CATEGORY$
* arguments
* (not used yet)
* $ONELINER$
* Invalid type of argument
* $DESCRIPTION$
* The passed argument is of invalid type. This function expects a string
* with the name of file to open.
* $FUNCTION$
* FOPEN
* $STATUS$
* Harbour specific
* $SEEALSO$
*
* $END$

View File

@@ -130,7 +130,7 @@ typedef char SYMBOLSCOPE; /* stores symbol's scope */
#define ISLOG( n ) ( hb_param( n, IT_LOGICAL ) != NULL )
#define ISDATE( n ) ( hb_param( n, IT_DATE ) != NULL )
#define ISMEMO( n ) ( hb_param( n, IT_MEMO ) != NULL )
#define ISBYREF( n ) ( hb_param( n, IT_BYREF ) != NULL )
#define ISBYREF( n ) ( hb_parinfo( n ) & IT_BYREF ) /* Intentionally using a different method */
#define ISARRAY( n ) ( hb_param( n, IT_ARRAY ) != NULL )
#define PCOUNT hb_parinfo( 0 )

View File

@@ -344,7 +344,7 @@ USHORT hb_fsWrite ( FHANDLE hFileHandle, BYTE * pBuff, USHORT uiCount )
errno = 0;
uiWritten = write( hFileHandle, pBuff, uiCount );
s_uiErrorLast = errno;
if( uiWritten == (USHORT)-1 )
if( uiWritten == ( USHORT )-1 )
uiWritten = 0;
#else
@@ -354,7 +354,7 @@ USHORT hb_fsWrite ( FHANDLE hFileHandle, BYTE * pBuff, USHORT uiCount )
errno = 0;
uiWritten = _write( hFileHandle, pBuff, uiCount );
s_uiErrorLast = errno;
if( uiWritten == (USHORT)-1 )
if( uiWritten == ( USHORT )-1 )
uiWritten = 0;
#else
@@ -718,7 +718,7 @@ HARBOUR HB_FREAD( void )
{
ULONG ulRead = 0;
if( ISNUM( 1 ) && hb_param( 2, IT_STRING | IT_BYREF ) != NULL && ISNUM( 3 ) )
if( ISNUM( 1 ) && ISCHAR( 2 ) && ISBYREF( 2 ) && ISNUM( 3 ) )
{
ULONG ulToRead = hb_parnl( 3 );
@@ -730,9 +730,7 @@ HARBOUR HB_FREAD( void )
hb_parc( 2 ),
ulToRead );
}
else ulRead = (ULONG) -1;
}
else ulRead = (ULONG) -1;
hb_retnl( ulRead );
}
@@ -809,7 +807,7 @@ HARBOUR HB_FILE( void )
if( ISCHAR( 1 ) )
{
/*TODO: Check if F_OK is defined in all compilers */
/* TODO: Check if F_OK is defined in all compilers */
#ifdef OS_UNIX_COMPATIBLE
hb_retl( access( hb_parc( 1 ), F_OK ) == 0 );
@@ -1079,7 +1077,7 @@ char * hb_fsFNameMerge( char *szFileName, PHB_FNAME pFileName )
return szFileName;
}
/*
/* TOFIX:
If you call pFileName = hb_fsFNameSplit( "C:FILE.EXT" ) the result is:
pFileName->szPath => (null) must be 'C:'
pFileName->szName => 'C:FILE' must be 'FILE'

View File

@@ -13,13 +13,11 @@
#include "set.h"
#include "errorapi.h"
/* The rest of functions is pulled automatically by initsymb.c */
HARBOUR HB_ABS( void )
{
if( hb_pcount() == 1 )
{
PHB_ITEM pNumber = hb_param(1, IT_NUMERIC);
PHB_ITEM pNumber = hb_param( 1, IT_NUMERIC );
if( pNumber ) switch( pNumber->type )
{
@@ -45,15 +43,10 @@ HARBOUR HB_ABS( void )
stack.Return.item.asDouble.decimal = pNumber->item.asDouble.decimal;
}
else
{
hb_errRT_BASE(EG_ARG, 1089, NULL, "ABS");
}
hb_errRT_BASE( EG_ARG, 1089, NULL, "ABS" );
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "ABS");
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ABS" ); /* NOTE: Clipper catches this at compile time! */
}
HARBOUR HB_EXP( void )
@@ -67,15 +60,10 @@ HARBOUR HB_EXP( void )
stack.Return.item.asDouble.decimal = hb_set.HB_SET_DECIMALS;
}
else
{
hb_errRT_BASE(EG_ARG, 1096, NULL, "EXP");
}
hb_errRT_BASE( EG_ARG, 1096, NULL, "EXP" );
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "EXP");
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "EXP" ); /* NOTE: Clipper catches this at compile time! */
}
HARBOUR HB_INT( void )
@@ -85,15 +73,10 @@ HARBOUR HB_INT( void )
if( ISNUM( 1 ) )
hb_retnl( hb_parnd( 1 ) );
else
{
hb_errRT_BASE( EG_ARG, 1090, NULL, "INT" );
}
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "INT" );
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "INT" ); /* NOTE: Clipper catches this at compile time! */
}
HARBOUR HB_LOG( void )
@@ -111,15 +94,10 @@ HARBOUR HB_LOG( void )
stack.Return.item.asDouble.length = 99;
}
else
{
hb_errRT_BASE(EG_ARG, 1095, NULL, "LOG");
}
hb_errRT_BASE( EG_ARG, 1095, NULL, "LOG" );
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "LOG");
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "LOG" ); /* NOTE: Clipper catches this at compile time! */
}
/* returns the maximum of two date or numerics */
@@ -173,15 +151,10 @@ HARBOUR HB_MAX( void )
hb_retds( l1 >= l2 ? hb_pards( 1 ) : hb_pards( 2 ) );
}
else
{
hb_errRT_BASE( EG_ARG, 1093, NULL, "MAX" );
}
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "MAX" );
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "MAX" ); /* NOTE: Clipper catches this at compile time! */
}
/* returns the minimum of two date or numerics */
@@ -235,15 +208,10 @@ HARBOUR HB_MIN( void )
hb_retds( l1 <= l2 ? hb_pards( 1 ) : hb_pards( 2 ) );
}
else
{
hb_errRT_BASE( EG_ARG, 1092, NULL, "MIN" );
}
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "MIN" );
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "MIN" ); /* NOTE: Clipper catches this at compile time! */
}
/* TOFIX: In Clipper this is written in Clipper, see the source below, */
@@ -262,36 +230,33 @@ FUNCTION MOD(cl_num, cl_base)
cl_num,;
IF(cl_result * cl_base < 0, cl_result + cl_base, cl_result) )
*/
PHB_ITEM pNumber = hb_param(1, IT_NUMERIC);
PHB_ITEM pNumber = hb_param( 1, IT_NUMERIC );
if( pNumber && ISNUM( 2 ) )
{
double dNumber = hb_parnd( 1 );
double dBase = hb_parnd( 2 ); /* dBase! Cool! */
double dResult;
if( dBase )
{
dResult = dNumber - ((long)(dNumber / dBase) * dBase);
double dResult = dNumber - ( ( long )( dNumber / dBase ) * dBase );
if( dResult * dBase < 0 )
hb_retnd(dResult + dBase);
hb_retnd( dResult + dBase );
else
hb_retnd(dResult);
hb_retnd( dResult );
/* Always set default number of decimals after computing mod */
stack.Return.item.asDouble.decimal = hb_set.HB_SET_DECIMALS;
}
else
{
hb_retnd(dNumber);
hb_retnd( dNumber );
/* Set the correct number of decimals */
stack.Return.item.asDouble.decimal = pNumber->item.asDouble.decimal;
}
}
else
{
hb_errRT_BASE( EG_ARG, 1085, NULL, "%" );
}
}
double hb_numRound( double dResult, int iDec )
@@ -322,6 +287,7 @@ double hb_numRound( double dResult, int iDec )
}
szResult = ( char * ) hb_xgrab( iSize + iDec + 1 );
if( szResult )
{
sprintf( szResult, "%*.*f", iSize, iDec, dResult );
@@ -344,15 +310,10 @@ HARBOUR HB_ROUND( void )
stack.Return.item.asDouble.decimal = iDec;
}
else
{
hb_errRT_BASE( EG_ARG, 1094, NULL, "ROUND" );
}
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ROUND" );
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "ROUND" ); /* NOTE: Clipper catches this at compile time! */
}
HARBOUR HB_SQRT( void )
@@ -361,27 +322,22 @@ HARBOUR HB_SQRT( void )
{
if( ISNUM( 1 ) )
{
double dNumber = hb_parnd(1);
double dNumber = hb_parnd( 1 );
if( dNumber > 0 )
{
hb_retnd( sqrt(dNumber) );
hb_retnd( sqrt( dNumber ) );
}
else
/* Clipper doesn't error! */
hb_retnd(0);
hb_retnd( 0 );
/* Always set default number of decimals after SQRT() */
stack.Return.item.asDouble.decimal = hb_set.HB_SET_DECIMALS;
}
else
{
hb_errRT_BASE(EG_ARG, 1097, NULL, "SQRT");
}
hb_errRT_BASE( EG_ARG, 1097, NULL, "SQRT" );
}
else
{
/* NOTE: Clipper catches this at compile time! */
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SQRT");
}
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "SQRT" ); /* NOTE: Clipper catches this at compile time! */
}