2007-09-05 16:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/hbgtmk.sh
* replaced CVS checkout commands by SVN checkout
# This script checks you have all tools to build Harbour binaries
# installed then takes current Harbour sources from SourceForge SVN
# repository and build binary RPMs at your local host
If possible I think it will be good to put this script on
Harbour home page so Linux users using RPM based distributions
can simply download it and execute. It should greatly help them
and it will reduce some repeated questions.
* harbour/include/hbapifs.h
* harbour/source/rtl/filesys.c
+ added hb_fsNameConv() function, hb_fileNameConv() kept only for
backward compatibility - it should not be used
* use hb_fsNameConv() instead of hb_fileNameConv()
* updated conversion code to use hb_fsFNameSplit()/hb_fsFNameMerge()
and respect some other DOS like conditions
* harbour/include/hbdate.h
* harbour/source/common/hbdate.c
* harbour/source/rtl/seconds.c
* use MT safe localtime_r() instead of localtime() in Linux
+ hb_dateTimeStamp(), hb_timeStampStr(), hb_timeStampDecode(),
hb_dateTimeStampStr(), hb_dateTimeStampStrGet()
* harbour/contrib/libct/files.c
* harbour/contrib/libct/disk.c
* harbour/contrib/hbzlib/hbcomprs.c
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/disksphb.c
* harbour/source/rtl/file.c
* use hb_fsNameConv() instead of hb_fileNameConv()
* harbour/source/debug/dbgentry.c
+ added modifications by Phil Krylow borowed from xHarbour for
supporting :: in command line expressions
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfdbt/dbfdbt1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/delim1.c
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/sdf1.c
* minor clenup:
use hb_parptr(n) instead of hb_itemGetPtr(hb_param(n,HB_IT_POINTER))
This commit is contained in:
@@ -8,6 +8,56 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2007-09-05 16:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/hbgtmk.sh
|
||||
* replaced CVS checkout commands by SVN checkout
|
||||
# This script checks you have all tools to build Harbour binaries
|
||||
# installed then takes current Harbour sources from SourceForge SVN
|
||||
# repository and build binary RPMs at your local host
|
||||
|
||||
If possible I think it will be good to put this script on
|
||||
Harbour home page so Linux users using RPM based distributions
|
||||
can simply download it and execute. It should greatly help them
|
||||
and it will reduce some repeated questions.
|
||||
|
||||
* harbour/include/hbapifs.h
|
||||
* harbour/source/rtl/filesys.c
|
||||
+ added hb_fsNameConv() function, hb_fileNameConv() kept only for
|
||||
backward compatibility - it should not be used
|
||||
* use hb_fsNameConv() instead of hb_fileNameConv()
|
||||
* updated conversion code to use hb_fsFNameSplit()/hb_fsFNameMerge()
|
||||
and respect some other DOS like conditions
|
||||
|
||||
* harbour/include/hbdate.h
|
||||
* harbour/source/common/hbdate.c
|
||||
* harbour/source/rtl/seconds.c
|
||||
* use MT safe localtime_r() instead of localtime() in Linux
|
||||
+ hb_dateTimeStamp(), hb_timeStampStr(), hb_timeStampDecode(),
|
||||
hb_dateTimeStampStr(), hb_dateTimeStampStrGet()
|
||||
|
||||
* harbour/contrib/libct/files.c
|
||||
* harbour/contrib/libct/disk.c
|
||||
* harbour/contrib/hbzlib/hbcomprs.c
|
||||
* harbour/source/rtl/diskspac.c
|
||||
* harbour/source/rtl/fstemp.c
|
||||
* harbour/source/rtl/disksphb.c
|
||||
* harbour/source/rtl/file.c
|
||||
* use hb_fsNameConv() instead of hb_fileNameConv()
|
||||
|
||||
* harbour/source/debug/dbgentry.c
|
||||
+ added modifications by Phil Krylow borowed from xHarbour for
|
||||
supporting :: in command line expressions
|
||||
|
||||
* harbour/source/rdd/dbfntx/dbfntx1.c
|
||||
* harbour/source/rdd/dbfdbt/dbfdbt1.c
|
||||
* harbour/source/rdd/dbfcdx/dbfcdx1.c
|
||||
* harbour/source/rdd/delim1.c
|
||||
* harbour/source/rdd/dbf1.c
|
||||
* harbour/source/rdd/dbffpt/dbffpt1.c
|
||||
* harbour/source/rdd/sdf1.c
|
||||
* minor clenup:
|
||||
use hb_parptr(n) instead of hb_itemGetPtr(hb_param(n,HB_IT_POINTER))
|
||||
|
||||
2007-09-03 01:23 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
- harbour/contrib/apollo/makefile
|
||||
+ harbour/contrib/apollo/Makefile
|
||||
|
||||
@@ -4223,8 +4223,7 @@ void HB_EXPORT hb_fsDirectory( PHB_ITEM pDir, char* szSkleton, char* szAttribute
|
||||
|
||||
if ( szSkleton && strlen( szSkleton ) > 0 )
|
||||
{
|
||||
szDirSpec = (BYTE *) hb_fileNameConv( hb_strdup( szSkleton ) );
|
||||
bAlloc = TRUE;
|
||||
szDirSpec = hb_fsNameConv( szSkleton, &bAlloc );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -212,10 +212,11 @@ HB_FUNC( VOLUME )
|
||||
char *sRoot = NULL;
|
||||
char *sVolName = NULL;
|
||||
char sRootBuf[3], sVolNameBuf[12];
|
||||
BOOL fFree;
|
||||
|
||||
if( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 )
|
||||
{
|
||||
sDiskName = hb_fileNameConv( hb_strdup( hb_parcx( 1 ) ) );
|
||||
sDiskName = hb_fsNameConv( ( BYTE * ) hb_parc( 1 ), &fFree );
|
||||
|
||||
if( ( fname = hb_fsFNameSplit( ( char * ) sDiskName ) ) != NULL )
|
||||
{
|
||||
@@ -237,6 +238,8 @@ HB_FUNC( VOLUME )
|
||||
strncpy( sVolNameBuf, ( char * ) sDiskName, 11 );
|
||||
sVolName = sVolNameBuf;
|
||||
}
|
||||
if( fFree )
|
||||
hb_xfree( sDiskName );
|
||||
}
|
||||
#if defined(HB_OS_WIN_32)
|
||||
bReturn = SetVolumeLabel( sRoot, sVolName );
|
||||
|
||||
@@ -103,6 +103,7 @@ static PHB_FFIND _hb_fileStart( BOOL fNext )
|
||||
{
|
||||
char * szFile = hb_parc( 1 );
|
||||
USHORT uiAttr = HB_FA_ALL;
|
||||
BOOL fFree;
|
||||
|
||||
if( s_ffind )
|
||||
{
|
||||
@@ -117,11 +118,12 @@ static PHB_FFIND _hb_fileStart( BOOL fNext )
|
||||
hb_vmAtExit( _hb_fileClose, NULL );
|
||||
s_fInit = TRUE;
|
||||
}
|
||||
szFile = ( char * ) hb_fileNameConv( hb_strdup( szFile ) );
|
||||
szFile = ( char * ) hb_fsNameConv( ( BYTE * ) szFile, &fFree );
|
||||
if( ISNUM( 2 ) )
|
||||
uiAttr = hb_parni( 2 );
|
||||
s_ffind = hb_fsFindFirst( szFile, uiAttr );
|
||||
hb_xfree( szFile );
|
||||
if( fFree )
|
||||
hb_xfree( szFile );
|
||||
}
|
||||
}
|
||||
else if( fNext && s_ffind )
|
||||
@@ -320,12 +322,13 @@ HB_FUNC( FILEDELETE )
|
||||
BYTE * pDirSpec;
|
||||
PHB_FFIND ffind;
|
||||
USHORT uiAttr = HB_FA_ALL;
|
||||
BOOL fFree;
|
||||
|
||||
pDirSpec = hb_fileNameConv( hb_strdup( hb_parc( 1 ) ) );
|
||||
pDirSpec = hb_fsNameConv( ( BYTE * ) hb_parc( 1 ), &fFree );
|
||||
if( ISNUM( 2 ) )
|
||||
uiAttr = hb_parni( 2 );
|
||||
|
||||
if( ( ffind = hb_fsFindFirst( ( const char * ) pDirSpec, uiAttr ) ) != NULL )
|
||||
if( ( ffind = hb_fsFindFirst( ( char * ) pDirSpec, uiAttr ) ) != NULL )
|
||||
{
|
||||
PHB_FNAME pFilepath;
|
||||
|
||||
@@ -346,7 +349,8 @@ HB_FUNC( FILEDELETE )
|
||||
|
||||
hb_fsFindClose( ffind );
|
||||
}
|
||||
hb_xfree( pDirSpec );
|
||||
if( fFree )
|
||||
hb_xfree( pDirSpec );
|
||||
}
|
||||
|
||||
hb_retl( bReturn );
|
||||
|
||||
@@ -6,15 +6,13 @@
|
||||
# ---------------------------------------------------------------
|
||||
# Copyright 2003 Przemyslaw Czerpak <druzus@polbox.com>
|
||||
# This script checks you have all tools to build Harbour binaries
|
||||
# installed then takes current Harbour sources from SourceForge CVS
|
||||
# and build binary RPMs at your local host
|
||||
# installed then takes current Harbour sources from SourceForge SVN
|
||||
# repository and build binary RPMs at your local host
|
||||
#
|
||||
# See doc/license.txt for licensing terms.
|
||||
# ---------------------------------------------------------------
|
||||
|
||||
# ssh is not necessary for anonymous access on SourceForge
|
||||
# export CVS_RSH=ssh
|
||||
export CVSROOT=":pserver:anonymous@harbour-project.cvs.sourceforge.net:/cvsroot/harbour-project"
|
||||
export SVNURL="https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour"
|
||||
export PROJECT=harbour
|
||||
|
||||
test_reqrpm()
|
||||
@@ -23,30 +21,17 @@ test_reqrpm()
|
||||
}
|
||||
|
||||
TOINST_LST=""
|
||||
for i in cvs make gcc binutils bash ncurses ncurses-devel
|
||||
for i in subversion make gcc binutils bash ncurses ncurses-devel
|
||||
do
|
||||
test_reqrpm "$i" || TOINST_LST="${TOINST_LST} $i"
|
||||
done
|
||||
|
||||
_cvs_RSH="${CVS_RSH}"
|
||||
[ -n "${_cvs_RSH}" ] || _cvs_RSH="rsh"
|
||||
|
||||
if ! which ${_cvs_RSH} &>/dev/null
|
||||
then
|
||||
if [ "${_cvs_RSH}" = "ssh" ]
|
||||
then
|
||||
TOINST_LST="${TOINST_LST} [open]ssh-clients"
|
||||
else
|
||||
TOINST_LST="${TOINST_LST} ${_cvs_RSH}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "${TOINST_LST}" ] || [ "$1" = "--force" ]
|
||||
then
|
||||
cd
|
||||
mkdir -p CVS
|
||||
cd CVS
|
||||
if cvs -z3 co "${PROJECT}"; then
|
||||
mkdir -p SVN
|
||||
cd SVN
|
||||
if svn co "${SVNURL}"; then
|
||||
cd "${PROJECT}"
|
||||
./make_rpm.sh "$*"
|
||||
fi
|
||||
|
||||
@@ -225,6 +225,7 @@ extern USHORT hb_fsAttrFromRaw( ULONG raw_attr );
|
||||
extern ULONG hb_fsAttrToRaw( USHORT uiAttr );
|
||||
extern USHORT hb_fsAttrEncode( const char * szAttr );
|
||||
extern char * hb_fsAttrDecode( USHORT uiAttr, char * szAttr );
|
||||
extern HB_EXPORT BYTE * hb_fsNameConv( BYTE * szFileName, BOOL * pfFree );
|
||||
extern HB_EXPORT BYTE * hb_fileNameConv( char *str );
|
||||
|
||||
HB_EXTERN_END
|
||||
|
||||
@@ -59,6 +59,11 @@ HB_EXTERN_BEGIN
|
||||
|
||||
extern HB_EXPORT double hb_dateSeconds( void );
|
||||
extern HB_EXPORT double hb_secondsCPU( int n );
|
||||
extern HB_EXPORT void hb_dateTimeStamp( LONG * plJulian, LONG * plMilliSec );
|
||||
extern HB_EXPORT char * hb_timeStampStr( char * szTime, LONG lMillisec );
|
||||
extern HB_EXPORT void hb_timeStampDecode( LONG lMillisec, int * piHour, int * piMinutes, int * piSeconds, int * piMSec );
|
||||
extern HB_EXPORT char * hb_dateTimeStampStr( char * szDateTime, LONG lJulian, LONG lMillisec );
|
||||
extern HB_EXPORT void hb_dateTimeStampStrGet( const char * szDateTime, LONG * plJulian, LONG * plMillisec );
|
||||
extern HB_EXPORT void hb_dateToday( int * piYear, int * piMonth, int * piDay );
|
||||
extern HB_EXPORT void hb_dateTimeStr( char * pszTime );
|
||||
extern HB_EXPORT char * hb_dateCMonth( int iMonth );
|
||||
|
||||
@@ -268,6 +268,18 @@ HB_EXPORT void hb_dateToday( int * piYear, int * piMonth, int * piDay )
|
||||
*piMonth = st.wMonth;
|
||||
*piDay = st.wDay;
|
||||
|
||||
#elif defined( HB_OS_LINUX ) && !defined( __WATCOMC__ )
|
||||
|
||||
time_t t;
|
||||
struct tm st;
|
||||
|
||||
time( &t );
|
||||
localtime_r( &t, &st );
|
||||
|
||||
*piYear = st.tm_year + 1900;
|
||||
*piMonth = st.tm_mon + 1;
|
||||
*piDay = st.tm_mday;
|
||||
|
||||
#else
|
||||
|
||||
time_t t;
|
||||
@@ -293,6 +305,16 @@ HB_EXPORT void hb_dateTimeStr( char * pszTime )
|
||||
GetLocalTime( &st );
|
||||
snprintf( pszTime, 9, "%02d:%02d:%02d", st.wHour, st.wMinute, st.wSecond );
|
||||
}
|
||||
#elif defined( HB_OS_LINUX ) && !defined( __WATCOMC__ )
|
||||
{
|
||||
time_t t;
|
||||
struct tm st;
|
||||
|
||||
time( &t );
|
||||
localtime_r( &t, &st );
|
||||
|
||||
snprintf( pszTime, 9, "%02d:%02d:%02d", st.tm_hour, st.tm_min, st.tm_sec );
|
||||
}
|
||||
#else
|
||||
{
|
||||
time_t t;
|
||||
@@ -304,3 +326,114 @@ HB_EXPORT void hb_dateTimeStr( char * pszTime )
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_timeStampDecode( LONG lMillisec, int * piHour, int * piMinutes,
|
||||
int * piSeconds, int * piMSec )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_timeStampDecode(%ld, %p, %p, %p, %p)", lMillisec, piHour, piMinutes, piSeconds, piMSec));
|
||||
|
||||
if( lMillisec <= 0 )
|
||||
{
|
||||
*piHour = *piMinutes = *piSeconds = *piMSec = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*piMSec = lMillisec % 1000;
|
||||
lMillisec /= 1000;
|
||||
*piSeconds = lMillisec % 60;
|
||||
lMillisec /= 60;
|
||||
*piMinutes = lMillisec % 60;
|
||||
lMillisec /= 60;
|
||||
if( lMillisec >= 24 )
|
||||
*piHour = *piMinutes = *piSeconds = *piMSec = 0;
|
||||
else
|
||||
*piHour = ( int ) lMillisec;
|
||||
}
|
||||
}
|
||||
|
||||
/* This function always closes the time with a zero byte, so it needs a
|
||||
13 character long buffer. */
|
||||
|
||||
HB_EXPORT char * hb_timeStampStr( char * szTime, LONG lMillisec )
|
||||
{
|
||||
int iHour, iMinutes, iSeconds, iMSec;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_timeStampStr(%p, %ld)", szTime, lMillisec));
|
||||
|
||||
hb_timeStampDecode( lMillisec, &iHour, &iMinutes, &iSeconds, &iMSec );
|
||||
snprintf( szTime, 13, "%02d:%02d:%02d.%03d",
|
||||
iHour, iMinutes, iSeconds, iMSec );
|
||||
szTime[ 12 ] = '\0';
|
||||
|
||||
return szTime;
|
||||
}
|
||||
|
||||
/* This function always closes the time with a zero byte, so it needs a
|
||||
24 character long buffer. */
|
||||
|
||||
HB_EXPORT char * hb_dateTimeStampStr( char * szDateTime, LONG lJulian, LONG lMillisec )
|
||||
{
|
||||
int iYear, iMonth, iDay, iHour, iMinutes, iSeconds, iMSec;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStampStr(%p, %ld, %ld)", szDateTime, lJulian, lMillisec));
|
||||
|
||||
hb_dateDecode( lJulian, &iYear, &iMonth, &iDay );
|
||||
hb_timeStampDecode( lMillisec, &iHour, &iMinutes, &iSeconds, &iMSec );
|
||||
snprintf( szDateTime, 24, "%04d-%02d-%02d %02d:%02d:%02d.%03d",
|
||||
iYear, iMonth, iDay, iHour, iMinutes, iSeconds, iMSec );
|
||||
szDateTime[ 23 ] = '\0';
|
||||
|
||||
return szDateTime;
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_dateTimeStampStrGet( const char * szDateTime, LONG * plJulian, LONG * plMillisec )
|
||||
{
|
||||
int iLen;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStampStr(%s, %p, %p)", szDateTime, plJulian, plMillisec));
|
||||
|
||||
*plJulian = *plMillisec = 0;
|
||||
iLen = szDateTime ? hb_strnlen( szDateTime, 23 ) : 0;
|
||||
if( iLen >= 10 )
|
||||
{
|
||||
int iYear, iMonth, iDay;
|
||||
|
||||
iYear = ( ( ( int ) ( szDateTime[ 0 ] - '0' ) * 10 +
|
||||
( int ) ( szDateTime[ 1 ] - '0' ) ) * 10 +
|
||||
( int ) ( szDateTime[ 2 ] - '0' ) ) * 10 +
|
||||
( int ) ( szDateTime[ 3 ] - '0' );
|
||||
iMonth = ( szDateTime[ 5 ] - '0' ) * 10 + ( szDateTime[ 6 ] - '0' );
|
||||
iDay = ( szDateTime[ 8 ] - '0' ) * 10 + ( szDateTime[ 9 ] - '0' );
|
||||
|
||||
*plJulian = hb_dateEncode( iYear, iMonth, iDay );
|
||||
if( iLen >= 16 )
|
||||
{
|
||||
int iHour, iMinutes, iSeconds = 0, iMSec = 0;
|
||||
|
||||
iHour = ( szDateTime[ 11 ] - '0' ) * 10 +
|
||||
( szDateTime[ 12 ] - '0' );
|
||||
iMinutes = ( szDateTime[ 14 ] - '0' ) * 10 +
|
||||
( szDateTime[ 15 ] - '0' );
|
||||
if( iHour >= 0 && iHour < 24 && iMinutes >= 0 && iMinutes < 60 )
|
||||
{
|
||||
if( iLen >= 19 )
|
||||
{
|
||||
iSeconds = ( szDateTime[ 17 ] - '0' ) * 10 +
|
||||
( szDateTime[ 18 ] - '0' );
|
||||
if( iSeconds < 0 || iSeconds >= 60 )
|
||||
iSeconds = 0;
|
||||
else if( iLen >= 23 )
|
||||
{
|
||||
iMSec = ( ( szDateTime[ 20 ] - '0' ) * 10 +
|
||||
( szDateTime[ 21 ] - '0' ) ) * 10 +
|
||||
( szDateTime[ 22 ] - '0' );
|
||||
if( iMSec < 0 || iMSec >= 1000 )
|
||||
iMSec = 0;
|
||||
}
|
||||
}
|
||||
*plMillisec = ( ( ( iHour * 60 ) + iMinutes ) * 60 + iSeconds ) *
|
||||
1000 + iMSec;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1034,6 +1034,41 @@ hb_dbgEvalMacro( char *szExpr, PHB_ITEM pItem )
|
||||
#define IS_IDENT_START( c ) ( isalpha( (UCHAR) (c) ) || (c) == '_' )
|
||||
#define IS_IDENT_CHAR( c ) ( IS_IDENT_START( (c) ) || isdigit( (UCHAR) (c) ) )
|
||||
|
||||
static int
|
||||
hb_dbgEvalSubstituteVar( HB_WATCHPOINT *watch, char *szWord, int nStart, int nLen )
|
||||
{
|
||||
int j;
|
||||
char *t;
|
||||
|
||||
for ( j = 0; j < watch->nVars; j++ )
|
||||
{
|
||||
if ( !strcmp( szWord, watch->aVars[ j ] ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( j == watch->nVars )
|
||||
{
|
||||
*ARRAY_ADD( char *, watch->aVars, watch->nVars ) = szWord;
|
||||
}
|
||||
else
|
||||
{
|
||||
FREE( szWord );
|
||||
}
|
||||
|
||||
t = (char *) ALLOC( strlen( watch->szExpr ) - nLen + 9 + 1 );
|
||||
memmove( t, watch->szExpr, nStart );
|
||||
memmove( t + nStart, "__dbg[", 6 );
|
||||
t[ nStart + 6 ] = '0' + ( ( j + 1 ) / 10 );
|
||||
t[ nStart + 7 ] = '0' + ( ( j + 1 ) % 10 );
|
||||
t[ nStart + 8 ] = ']';
|
||||
strcpy( t + nStart + 9, watch->szExpr + nStart + nLen );
|
||||
FREE( watch->szExpr );
|
||||
watch->szExpr = t;
|
||||
return nStart + 9;
|
||||
}
|
||||
|
||||
|
||||
static PHB_ITEM
|
||||
hb_dbgEvalMakeBlock( HB_WATCHPOINT *watch )
|
||||
{
|
||||
@@ -1084,34 +1119,7 @@ hb_dbgEvalMakeBlock( HB_WATCHPOINT *watch )
|
||||
}
|
||||
}
|
||||
hb_strupr( szWord );
|
||||
for ( j = 0; j < watch->nVars; j++ )
|
||||
{
|
||||
if ( !strcmp( szWord, watch->aVars[ j ] ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( j == watch->nVars )
|
||||
{
|
||||
*ARRAY_ADD( char *, watch->aVars, watch->nVars ) = szWord;
|
||||
}
|
||||
else
|
||||
{
|
||||
FREE( szWord );
|
||||
}
|
||||
{
|
||||
char *t = (char *) ALLOC( strlen( watch->szExpr ) - nLen + 9 + 1 );
|
||||
|
||||
memmove( t, watch->szExpr, nStart );
|
||||
memmove( t + nStart, "__dbg[", 6 );
|
||||
t[ nStart + 6 ] = '0' + ( ( j + 1 ) / 10 );
|
||||
t[ nStart + 7 ] = '0' + ( ( j + 1 ) % 10 );
|
||||
t[ nStart + 8 ] = ']';
|
||||
strcpy( t + nStart + 9, watch->szExpr + nStart + nLen );
|
||||
FREE( watch->szExpr );
|
||||
watch->szExpr = t;
|
||||
i = nStart + 9;
|
||||
}
|
||||
i = hb_dbgEvalSubstituteVar( watch, szWord, nStart, nLen );
|
||||
bAfterId = TRUE;
|
||||
continue;
|
||||
}
|
||||
@@ -1143,6 +1151,12 @@ hb_dbgEvalMakeBlock( HB_WATCHPOINT *watch )
|
||||
|| ( c == '-' && watch->szExpr[ i + 1 ] == '>'
|
||||
&& IS_IDENT_START( watch->szExpr[ i + 2 ] ) ) )
|
||||
{
|
||||
if ( c == ':' && watch->szExpr[ i + 1 ] == ':' )
|
||||
{
|
||||
i = hb_dbgEvalSubstituteVar( watch, hb_strdup( "SELF" ), i, 1 );
|
||||
bAfterId = TRUE;
|
||||
continue;
|
||||
}
|
||||
if ( c == '-' )
|
||||
{
|
||||
i++;
|
||||
|
||||
@@ -4615,11 +4615,11 @@ HB_FUNC( DBF_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount, uiRddId;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
uiRddId = hb_parni( 4 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBF_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBF_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if( pTable )
|
||||
{
|
||||
|
||||
@@ -9437,11 +9437,11 @@ HB_FUNC( SIXCDX_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount, uiRddId;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
uiRddId = hb_parni( 4 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("SIXCDX_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("SIXCDX_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if ( pTable )
|
||||
{
|
||||
@@ -9501,11 +9501,11 @@ HB_FUNC( DBFCDX_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount, uiRddId;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
uiRddId = hb_parni( 4 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFCDX_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFCDX_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if ( pTable )
|
||||
{
|
||||
|
||||
@@ -796,10 +796,10 @@ HB_FUNC( DBFDBT_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFDBT_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFDBT_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if( pTable )
|
||||
{
|
||||
|
||||
@@ -4676,11 +4676,11 @@ static void hb_dbffptRegisterRDD( USHORT * pusRddId )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount, uiRddId;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
uiRddId = hb_parni( 4 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFFPT_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("DBFFPT_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if( pTable )
|
||||
{
|
||||
|
||||
@@ -7627,8 +7627,8 @@ HB_FUNC( DBFNTX_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount, uiRddId;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
uiRddId = hb_parni( 4 );
|
||||
|
||||
if( pTable )
|
||||
|
||||
@@ -1511,14 +1511,17 @@ HB_FUNC( DELIM_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
* uiCount = RDDFUNCSCOUNT;
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("DELIM_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("DELIM_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if( pTable )
|
||||
{
|
||||
if( uiCount )
|
||||
* uiCount = RDDFUNCSCOUNT;
|
||||
hb_retni( hb_rddInherit( pTable, &delimTable, &delimSuper, NULL ) );
|
||||
}
|
||||
else
|
||||
hb_retni( FAILURE );
|
||||
}
|
||||
|
||||
@@ -1237,14 +1237,17 @@ HB_FUNC( SDF_GETFUNCTABLE )
|
||||
RDDFUNCS * pTable;
|
||||
USHORT * uiCount;
|
||||
|
||||
uiCount = ( USHORT * ) hb_itemGetPtr( hb_param( 1, HB_IT_POINTER ) );
|
||||
* uiCount = RDDFUNCSCOUNT;
|
||||
pTable = ( RDDFUNCS * ) hb_itemGetPtr( hb_param( 2, HB_IT_POINTER ) );
|
||||
uiCount = ( USHORT * ) hb_parptr( 1 );
|
||||
pTable = ( RDDFUNCS * ) hb_parptr( 2 );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("SDF_GETFUNCTABLE(%i, %p)", uiCount, pTable));
|
||||
HB_TRACE(HB_TR_DEBUG, ("SDF_GETFUNCTABLE(%p, %p)", uiCount, pTable));
|
||||
|
||||
if( pTable )
|
||||
{
|
||||
if( uiCount )
|
||||
* uiCount = RDDFUNCSCOUNT;
|
||||
hb_retni( hb_rddInherit( pTable, &sdfTable, &sdfSuper, NULL ) );
|
||||
}
|
||||
else
|
||||
hb_retni( FAILURE );
|
||||
}
|
||||
|
||||
@@ -194,40 +194,37 @@ HB_FUNC( DISKSPACE )
|
||||
}
|
||||
#elif defined(HB_OS_UNIX)
|
||||
{
|
||||
#if defined(__WATCOMC__)
|
||||
struct stat st;
|
||||
char *szName = hb_parc( 1 );
|
||||
BOOL fFree = FALSE;
|
||||
|
||||
if( !szName )
|
||||
szName = ( char * ) "/";
|
||||
szName = hb_fileNameConv( hb_strdup( szName ) );
|
||||
|
||||
if( stat( szName, &st) == 0 )
|
||||
dSpace = ( double ) st.st_blocks * ( double ) st.st_blksize;
|
||||
else
|
||||
bError = TRUE;
|
||||
szName = ( char * ) hb_fsNameConv( ( BYTE * ) szName, &fFree );
|
||||
|
||||
hb_xfree( szName );
|
||||
#else
|
||||
struct statvfs st;
|
||||
char *szName = hb_parc( 1 );
|
||||
|
||||
if( !szName )
|
||||
szName = ( char * ) "/";
|
||||
szName = ( char * ) hb_fileNameConv( hb_strdup( szName ) );
|
||||
|
||||
if( statvfs( szName, &st ) == 0 )
|
||||
{
|
||||
if( getuid() == 0 )
|
||||
dSpace = ( double ) st.f_bfree * ( double ) st.f_bsize;
|
||||
#if defined(__WATCOMC__)
|
||||
struct stat st;
|
||||
if( stat( szName, &st) == 0 )
|
||||
dSpace = ( double ) st.st_blocks * ( double ) st.st_blksize;
|
||||
else
|
||||
dSpace = ( double ) st.f_bavail * ( double ) st.f_bsize;
|
||||
}
|
||||
else
|
||||
bError = TRUE;
|
||||
|
||||
hb_xfree( szName );
|
||||
bError = TRUE;
|
||||
#else
|
||||
struct statvfs st;
|
||||
if( statvfs( szName, &st ) == 0 )
|
||||
{
|
||||
if( getuid() == 0 )
|
||||
dSpace = ( double ) st.f_bfree * ( double ) st.f_bsize;
|
||||
else
|
||||
dSpace = ( double ) st.f_bavail * ( double ) st.f_bsize;
|
||||
}
|
||||
else
|
||||
bError = TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
if( fFree )
|
||||
hb_xfree( szName );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -330,8 +330,10 @@ HB_FUNC( HB_DISKSPACE )
|
||||
#elif defined(HB_OS_UNIX) && !defined(__WATCOMC__)
|
||||
{
|
||||
struct statvfs sf;
|
||||
BOOL fFree = FALSE;
|
||||
|
||||
szPath = ( char * ) hb_fsNameConv( ( BYTE * ) szPath, &fFree );
|
||||
|
||||
szPath = ( char * ) hb_fileNameConv( hb_strdup( szPath ) );
|
||||
if( statvfs( szPath, &sf ) == 0 )
|
||||
{
|
||||
switch( uiType )
|
||||
@@ -357,7 +359,9 @@ HB_FUNC( HB_DISKSPACE )
|
||||
}
|
||||
else
|
||||
hb_fsSetIOError( FALSE, 0 );
|
||||
hb_xfree( szPath );
|
||||
|
||||
if( fFree )
|
||||
hb_xfree( szPath );
|
||||
}
|
||||
#else
|
||||
{
|
||||
|
||||
@@ -56,10 +56,11 @@
|
||||
HB_EXPORT BOOL hb_fsFile( BYTE * pFilename )
|
||||
{
|
||||
PHB_FFIND ffind;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsFile(%s)", ( char * ) pFilename));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename ) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
if( ( ffind = hb_fsFindFirst( ( char * ) pFilename, HB_FA_ALL ) ) != NULL )
|
||||
{
|
||||
@@ -68,22 +69,36 @@ HB_EXPORT BOOL hb_fsFile( BYTE * pFilename )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
hb_xfree( pFilename );
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HB_EXPORT BOOL hb_fsIsDirectory( BYTE * pFilename )
|
||||
{
|
||||
BOOL bResult = FALSE;
|
||||
BOOL bResult = FALSE, fFree;
|
||||
PHB_FFIND ffind;
|
||||
int iLen;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsIsDirectory(%s)", ( char * ) pFilename));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename ) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
iLen = strlen( ( char * ) pFilename );
|
||||
while( iLen && strchr( OS_PATH_DELIMITER_LIST, pFilename[ iLen - 1 ] ) )
|
||||
pFilename[ --iLen ] = '\0';
|
||||
--iLen;
|
||||
|
||||
if( pFilename[ iLen ] )
|
||||
{
|
||||
if( fFree )
|
||||
pFilename[ iLen ] = '\0';
|
||||
else
|
||||
{
|
||||
pFilename = ( BYTE * ) hb_strndup( ( char * ) pFilename, iLen );
|
||||
fFree = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if( iLen && iLen <= _POSIX_PATH_MAX )
|
||||
{
|
||||
@@ -95,6 +110,8 @@ HB_EXPORT BOOL hb_fsIsDirectory( BYTE * pFilename )
|
||||
}
|
||||
}
|
||||
|
||||
hb_xfree( pFilename );
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
@@ -638,10 +638,11 @@ HB_EXPORT FHANDLE hb_fsPOpen( BYTE * pFilename, BYTE * pMode )
|
||||
HB_EXPORT FHANDLE hb_fsOpen( BYTE * pFilename, USHORT uiFlags )
|
||||
{
|
||||
FHANDLE hFileHandle;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsOpen(%p, %hu)", pFilename, uiFlags));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
#if defined(HB_WIN32_IO)
|
||||
{
|
||||
@@ -685,7 +686,8 @@ HB_EXPORT FHANDLE hb_fsOpen( BYTE * pFilename, USHORT uiFlags )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pFilename );
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return hFileHandle;
|
||||
}
|
||||
@@ -693,10 +695,11 @@ HB_EXPORT FHANDLE hb_fsOpen( BYTE * pFilename, USHORT uiFlags )
|
||||
HB_EXPORT FHANDLE hb_fsCreate( BYTE * pFilename, USHORT uiAttr )
|
||||
{
|
||||
FHANDLE hFileHandle;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsCreate(%p, %hu)", pFilename, uiAttr));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename ) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
#if defined(HB_WIN32_IO)
|
||||
{
|
||||
@@ -734,7 +737,8 @@ HB_EXPORT FHANDLE hb_fsCreate( BYTE * pFilename, USHORT uiAttr )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pFilename );
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return hFileHandle;
|
||||
}
|
||||
@@ -748,10 +752,11 @@ HB_EXPORT FHANDLE hb_fsCreate( BYTE * pFilename, USHORT uiAttr )
|
||||
HB_EXPORT FHANDLE hb_fsCreateEx( BYTE * pFilename, USHORT uiAttr, USHORT uiFlags )
|
||||
{
|
||||
FHANDLE hFileHandle;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsCreateEx(%p, %hu, %hu)", pFilename, uiAttr, uiFlags));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename ) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
#if defined( HB_WIN32_IO )
|
||||
{
|
||||
@@ -787,7 +792,8 @@ HB_EXPORT FHANDLE hb_fsCreateEx( BYTE * pFilename, USHORT uiAttr, USHORT uiFlags
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pFilename );
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return hFileHandle;
|
||||
}
|
||||
@@ -1712,10 +1718,11 @@ HB_EXPORT ULONG hb_fsTell( FHANDLE hFileHandle )
|
||||
HB_EXPORT BOOL hb_fsDelete( BYTE * pFilename )
|
||||
{
|
||||
BOOL bResult;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsDelete(%s)", (char*) pFilename));
|
||||
|
||||
pFilename = hb_fileNameConv( hb_strdup( ( char * ) pFilename ) );
|
||||
pFilename = hb_fsNameConv( pFilename, &fFree );
|
||||
|
||||
#if defined(HB_OS_WIN_32)
|
||||
|
||||
@@ -1739,7 +1746,8 @@ HB_EXPORT BOOL hb_fsDelete( BYTE * pFilename )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pFilename ) ;
|
||||
if( fFree )
|
||||
hb_xfree( pFilename );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
@@ -1747,11 +1755,12 @@ HB_EXPORT BOOL hb_fsDelete( BYTE * pFilename )
|
||||
HB_EXPORT BOOL hb_fsRename( BYTE * pOldName, BYTE * pNewName )
|
||||
{
|
||||
BOOL bResult;
|
||||
BOOL fFreeOld, fFreeNew;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsRename(%s, %s)", (char*) pOldName, (char*) pNewName));
|
||||
|
||||
pOldName = hb_fileNameConv( hb_strdup( ( char * ) pOldName ) );
|
||||
pNewName = hb_fileNameConv( hb_strdup( ( char * ) pNewName ) );
|
||||
pOldName = hb_fsNameConv( pOldName, &fFreeOld );
|
||||
pNewName = hb_fsNameConv( pNewName, &fFreeNew );
|
||||
|
||||
#if defined(HB_OS_WIN_32)
|
||||
|
||||
@@ -1770,8 +1779,10 @@ HB_EXPORT BOOL hb_fsRename( BYTE * pOldName, BYTE * pNewName )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pOldName ) ;
|
||||
hb_xfree( pNewName ) ;
|
||||
if( fFreeOld )
|
||||
hb_xfree( pOldName );
|
||||
if( fFreeNew )
|
||||
hb_xfree( pNewName );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
@@ -1779,10 +1790,11 @@ HB_EXPORT BOOL hb_fsRename( BYTE * pOldName, BYTE * pNewName )
|
||||
HB_EXPORT BOOL hb_fsMkDir( BYTE * pDirname )
|
||||
{
|
||||
BOOL bResult;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsMkDir(%s)", (char*) pDirname));
|
||||
|
||||
pDirname = hb_fileNameConv( hb_strdup( ( char * ) pDirname ) );
|
||||
pDirname = hb_fsNameConv( pDirname, &fFree );
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsMkDir(%s)", (char*) pDirname));
|
||||
|
||||
@@ -1809,7 +1821,8 @@ HB_EXPORT BOOL hb_fsMkDir( BYTE * pDirname )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree(pDirname) ;
|
||||
if( fFree )
|
||||
hb_xfree( pDirname );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
@@ -1817,10 +1830,11 @@ HB_EXPORT BOOL hb_fsMkDir( BYTE * pDirname )
|
||||
HB_EXPORT BOOL hb_fsChDir( BYTE * pDirname )
|
||||
{
|
||||
BOOL bResult;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsChDir(%s)", (char*) pDirname));
|
||||
|
||||
pDirname = hb_fileNameConv( hb_strdup( ( char * ) pDirname ) );
|
||||
pDirname = hb_fsNameConv( pDirname, &fFree );
|
||||
|
||||
#if defined(HB_OS_WIN_32)
|
||||
|
||||
@@ -1839,7 +1853,8 @@ HB_EXPORT BOOL hb_fsChDir( BYTE * pDirname )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pDirname );
|
||||
if( fFree )
|
||||
hb_xfree( pDirname );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
@@ -1847,10 +1862,11 @@ HB_EXPORT BOOL hb_fsChDir( BYTE * pDirname )
|
||||
HB_EXPORT BOOL hb_fsRmDir( BYTE * pDirname )
|
||||
{
|
||||
BOOL bResult;
|
||||
BOOL fFree;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_fsRmDir(%s)", (char*) pDirname));
|
||||
|
||||
pDirname = hb_fileNameConv( hb_strdup( ( char * ) pDirname ) );
|
||||
pDirname = hb_fsNameConv( pDirname, &fFree );
|
||||
|
||||
#if defined(HB_OS_WIN_32)
|
||||
|
||||
@@ -1869,7 +1885,8 @@ HB_EXPORT BOOL hb_fsRmDir( BYTE * pDirname )
|
||||
|
||||
#endif
|
||||
|
||||
hb_xfree( pDirname );
|
||||
if( fFree )
|
||||
hb_xfree( pDirname );
|
||||
|
||||
return bResult;
|
||||
}
|
||||
@@ -1903,7 +1920,7 @@ HB_EXPORT USHORT hb_fsCurDirBuff( USHORT uiDrive, BYTE * pbyBuffer, ULONG ulLen
|
||||
/*
|
||||
* do not cover this code by OS_HAS_DRIVE_LETTER macro
|
||||
* It will allow us to add drive emulation in hb_fsCurDrv()/hb_fsChDrv()
|
||||
* and hb_fileNameConv()
|
||||
* and hb_fsNameConv()
|
||||
*/
|
||||
#if !defined(HB_OS_OS2) && !defined(__MINGW32__)
|
||||
if( uiDrive )
|
||||
@@ -2326,79 +2343,113 @@ HB_EXPORT BOOL hb_fsEof( FHANDLE hFileHandle )
|
||||
#endif
|
||||
}
|
||||
|
||||
HB_EXPORT BYTE * hb_fileNameConv( char *str ) {
|
||||
HB_EXPORT BYTE * hb_fsNameConv( BYTE * szFileName, BOOL * pfFree )
|
||||
{
|
||||
/*
|
||||
Convert file and dir case. The allowed SET options are:
|
||||
LOWER - Convert all caracters of file to lower
|
||||
UPPER - Convert all caracters of file to upper
|
||||
MIXED - Leave as is
|
||||
LOWER - Convert all caracters of file to lower
|
||||
UPPER - Convert all caracters of file to upper
|
||||
MIXED - Leave as is
|
||||
|
||||
The allowed environment options are:
|
||||
FILECASE - define the case of file
|
||||
DIRCASE - define the case of path
|
||||
DIRSEPARATOR - define separator of path (Ex. "/")
|
||||
FILECASE - define the case of file
|
||||
DIRCASE - define the case of path
|
||||
DIRSEPARATOR - define separator of path (Ex. "/")
|
||||
TRIMFILENAME - strip trailing and leading spaces (also from extension)
|
||||
*/
|
||||
char *filename;
|
||||
ULONG ulDirLen, ulFileLen;
|
||||
|
||||
/* strip trailing and leading spaces */
|
||||
if( hb_set.HB_SET_TRIMFILENAME )
|
||||
if( hb_set.HB_SET_TRIMFILENAME ||
|
||||
hb_set.HB_SET_DIRSEPARATOR != '\\' ||
|
||||
hb_set.HB_SET_FILECASE != HB_SET_CASE_MIXED ||
|
||||
hb_set.HB_SET_DIRCASE != HB_SET_CASE_MIXED )
|
||||
{
|
||||
char *szFileTrim;
|
||||
PHB_FNAME pFileName;
|
||||
ULONG ulLen;
|
||||
|
||||
ulLen = hb_strRTrimLen( str, strlen( str ), FALSE );
|
||||
szFileTrim = hb_strLTrim( str, &ulLen );
|
||||
if ( str != szFileTrim )
|
||||
if( pfFree )
|
||||
{
|
||||
memmove( str, szFileTrim, ulLen );
|
||||
szFileName = ( BYTE * ) hb_strdup( ( char * ) szFileName );
|
||||
*pfFree = TRUE;
|
||||
}
|
||||
str[ulLen] = '\0';
|
||||
}
|
||||
|
||||
if( hb_set.HB_SET_DIRSEPARATOR != '\\' )
|
||||
{
|
||||
char *p = str;
|
||||
while( *p )
|
||||
if( hb_set.HB_SET_DIRSEPARATOR != '\\' )
|
||||
{
|
||||
if( *p == '\\' )
|
||||
BYTE *p = szFileName;
|
||||
while( *p )
|
||||
{
|
||||
*p = hb_set.HB_SET_DIRSEPARATOR;
|
||||
if( *p == '\\' )
|
||||
*p = hb_set.HB_SET_DIRSEPARATOR;
|
||||
p++;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Look for filename (Last "\" or DIRSEPARATOR) */
|
||||
if( ( filename = strrchr( str, hb_set.HB_SET_DIRSEPARATOR ) ) != NULL )
|
||||
{
|
||||
filename++;
|
||||
}
|
||||
else
|
||||
{
|
||||
filename = str;
|
||||
}
|
||||
ulFileLen = strlen( filename );
|
||||
ulDirLen = filename - str;
|
||||
pFileName = hb_fsFNameSplit( ( char * ) szFileName );
|
||||
|
||||
/* FILECASE */
|
||||
if( ulFileLen > 0 )
|
||||
{
|
||||
/* strip trailing and leading spaces */
|
||||
if( hb_set.HB_SET_TRIMFILENAME )
|
||||
{
|
||||
if( pFileName->szName )
|
||||
{
|
||||
ulLen = strlen( pFileName->szName );
|
||||
ulLen = hb_strRTrimLen( pFileName->szName, ulLen, FALSE );
|
||||
pFileName->szName = hb_strLTrim( pFileName->szName, &ulLen );
|
||||
pFileName->szName[ulLen] = '\0';
|
||||
}
|
||||
if( pFileName->szExtension )
|
||||
{
|
||||
ulLen = strlen( pFileName->szExtension );
|
||||
ulLen = hb_strRTrimLen( pFileName->szExtension, ulLen, FALSE );
|
||||
pFileName->szExtension = hb_strLTrim( pFileName->szExtension, &ulLen );
|
||||
pFileName->szExtension[ulLen] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* FILECASE */
|
||||
if( hb_set.HB_SET_FILECASE == HB_SET_CASE_LOWER )
|
||||
hb_strLower( filename, strlen(filename) );
|
||||
{
|
||||
if( pFileName->szName )
|
||||
hb_strLower( pFileName->szName, strlen( pFileName->szName ) );
|
||||
if( pFileName->szExtension )
|
||||
hb_strLower( pFileName->szExtension, strlen( pFileName->szExtension ) );
|
||||
}
|
||||
else if( hb_set.HB_SET_FILECASE == HB_SET_CASE_UPPER )
|
||||
hb_strUpper( filename, strlen(filename) );
|
||||
{
|
||||
if( pFileName->szName )
|
||||
hb_strUpper( pFileName->szName, strlen( pFileName->szName ) );
|
||||
if( pFileName->szExtension )
|
||||
hb_strUpper( pFileName->szExtension, strlen( pFileName->szExtension ) );
|
||||
}
|
||||
|
||||
/* DIRCASE */
|
||||
if( pFileName->szPath )
|
||||
{
|
||||
if( hb_set.HB_SET_DIRCASE == HB_SET_CASE_LOWER )
|
||||
hb_strLower( pFileName->szPath, strlen( pFileName->szPath ) );
|
||||
else if( hb_set.HB_SET_DIRCASE == HB_SET_CASE_UPPER )
|
||||
hb_strUpper( pFileName->szPath, strlen( pFileName->szPath ) );
|
||||
}
|
||||
|
||||
hb_fsFNameMerge( ( char * ) szFileName, pFileName );
|
||||
}
|
||||
else if( pfFree )
|
||||
*pfFree = FALSE;
|
||||
|
||||
return szFileName;
|
||||
}
|
||||
|
||||
HB_EXPORT BYTE * hb_fileNameConv( char * szFileName )
|
||||
{
|
||||
BOOL fFree;
|
||||
BYTE * szNew;
|
||||
|
||||
szNew = hb_fsNameConv( ( BYTE * ) szFileName, &fFree );
|
||||
if( fFree )
|
||||
{
|
||||
hb_strncpy( szFileName, ( char * ) szNew, strlen( szFileName ) );
|
||||
hb_xfree( szNew );
|
||||
}
|
||||
|
||||
/* DIRCASE */
|
||||
if( ulDirLen > 0 )
|
||||
{
|
||||
if( hb_set.HB_SET_DIRCASE == HB_SET_CASE_LOWER )
|
||||
hb_strLower( str, ulDirLen );
|
||||
else if( hb_set.HB_SET_DIRCASE == HB_SET_CASE_UPPER )
|
||||
hb_strUpper( str, ulDirLen );
|
||||
}
|
||||
return ( BYTE * ) str;
|
||||
return ( BYTE * ) szFileName;
|
||||
}
|
||||
|
||||
HB_EXPORT BOOL hb_fsDisableWaitLocks( int iSet )
|
||||
|
||||
@@ -229,7 +229,7 @@ HB_EXPORT FHANDLE hb_fsCreateTemp( const BYTE * pszDir, const BYTE * pszPrefix,
|
||||
d = modf( d, &x );
|
||||
pszName[ iLen++ ] = n + ( n > 9 ? 'a' - 10 : '0' );
|
||||
}
|
||||
hb_fileNameConv( ( char * ) pszName );
|
||||
hb_fsNameConv( pszName, NULL );
|
||||
fd = hb_fsCreateEx( pszName, uiAttr, FO_EXCLUSIVE | FO_EXCL );
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#if defined( HB_OS_BSD)
|
||||
#if ( defined( HB_OS_BSD ) || defined( HB_OS_LINUX ) ) && !defined( __WATCOMC__ )
|
||||
#include <sys/time.h>
|
||||
#else
|
||||
#include <sys/timeb.h>
|
||||
@@ -66,8 +66,66 @@
|
||||
#endif
|
||||
#if defined( HB_OS_WIN_32 )
|
||||
#include <windows.h>
|
||||
#elif defined(_MSC_VER)
|
||||
#define timeb _timeb
|
||||
#define ftime _ftime
|
||||
#endif
|
||||
|
||||
HB_EXPORT void hb_dateTimeStamp( LONG * plJulian, LONG * plMilliSec )
|
||||
{
|
||||
#if defined(HB_OS_WIN_32)
|
||||
SYSTEMTIME st;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStamp(%p,%p)", plJulian, plMilliSec));
|
||||
|
||||
GetLocalTime( &st );
|
||||
|
||||
*plJulian = hb_dateEncode( st.wYear, st.wMonth, st.wDay );
|
||||
*plMilliSec = ( ( st.wHour * 60 + st.wMinute ) * 60 + st.wSecond ) * 1000 +
|
||||
st.wMilliseconds;
|
||||
#elif defined( HB_OS_LINUX ) && !defined( __WATCOMC__ )
|
||||
struct timeval tv;
|
||||
struct tm st;
|
||||
time_t seconds;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStamp(%p,%p)", plJulian, plMilliSec));
|
||||
|
||||
gettimeofday( &tv, NULL );
|
||||
seconds = tv.tv_sec;
|
||||
localtime_r( &seconds, &st );
|
||||
*plJulian = hb_dateEncode( st.tm_year + 1900, st.tm_mon + 1, st.tm_mday );
|
||||
*plMilliSec = ( ( st.tm_hour * 60 + st.tm_min ) * 60 + st.tm_sec ) * 1000 +
|
||||
tv.tv_usec / 1000;
|
||||
#elif defined( HB_OS_BSD )
|
||||
struct timeval tv;
|
||||
struct tm * st;
|
||||
time_t seconds;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStamp(%p,%p)", plJulian, plMilliSec));
|
||||
|
||||
gettimeofday( &tv, NULL );
|
||||
seconds = tv.tv_sec;
|
||||
st = localtime( &seconds );
|
||||
*plJulian = hb_dateEncode( st->tm_year + 1900, st->tm_mon + 1, st->tm_mday );
|
||||
*plMilliSec = ( ( st->tm_hour * 60 + st->tm_min ) * 60 + st->tm_sec ) * 1000 +
|
||||
tv->tv_usec / 1000.0;
|
||||
#else
|
||||
struct timeb tb;
|
||||
struct tm * st;
|
||||
time_t seconds;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateTimeStamp(%p,%p)", plJulian, plMilliSec));
|
||||
|
||||
ftime( &tb );
|
||||
seconds = tb.time;
|
||||
st = localtime( &seconds );
|
||||
|
||||
*plJulian = hb_dateEncode( st->tm_year + 1900, st->tm_mon + 1, st->tm_mday );
|
||||
*plMilliSec = ( ( st->tm_hour * 60 + st->tm_min ) * 60 + st->tm_sec ) * 1000 +
|
||||
tb.millitm;
|
||||
#endif
|
||||
}
|
||||
|
||||
HB_EXPORT double hb_dateSeconds( void )
|
||||
{
|
||||
#if defined(HB_OS_WIN_32)
|
||||
@@ -81,39 +139,49 @@ HB_EXPORT double hb_dateSeconds( void )
|
||||
( SystemTime.wMinute * 60 ) +
|
||||
SystemTime.wSecond +
|
||||
( ( double ) SystemTime.wMilliseconds / 1000.0 );
|
||||
#else
|
||||
#if defined(_MSC_VER)
|
||||
#define timeb _timeb
|
||||
#define ftime _ftime
|
||||
#endif
|
||||
#if defined(HB_OS_BSD)
|
||||
#elif defined( HB_OS_LINUX ) && !defined( __WATCOMC__ )
|
||||
struct timeval tv;
|
||||
struct timezone tz;
|
||||
#else
|
||||
struct timeb tb;
|
||||
#endif
|
||||
struct tm oTime;
|
||||
time_t seconds;
|
||||
time_t fraction;
|
||||
struct tm * oTime;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateSeconds()"));
|
||||
|
||||
#if defined(HB_OS_BSD)
|
||||
gettimeofday( &tv, &tz );
|
||||
seconds = tv.tv_sec - tz.tz_minuteswest * 60;
|
||||
fraction = tv.tv_usec / 1000U;
|
||||
gettimeofday( &tv, NULL );
|
||||
seconds = tv.tv_sec;
|
||||
localtime_r( &seconds, &oTime );
|
||||
return ( oTime.tm_hour * 3600 ) +
|
||||
( oTime.tm_min * 60 ) +
|
||||
oTime.tm_sec +
|
||||
( ( double ) tv.tv_usec / 1000000.0 );
|
||||
#elif defined( HB_OS_BSD )
|
||||
struct timeval tv;
|
||||
struct tm * oTime;
|
||||
time_t seconds;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateSeconds()"));
|
||||
|
||||
gettimeofday( &tv, NULL );
|
||||
seconds = tv.tv_sec;
|
||||
oTime = localtime( &seconds );
|
||||
return ( oTime->tm_hour * 3600 ) +
|
||||
( oTime->tm_min * 60 ) +
|
||||
oTime->tm_sec +
|
||||
( ( double ) tv.tv_usec / 1000000.0 );
|
||||
#else
|
||||
struct timeb tb;
|
||||
struct tm * oTime;
|
||||
time_t seconds;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_dateSeconds()"));
|
||||
|
||||
ftime( &tb );
|
||||
seconds = tb.time;
|
||||
fraction = tb.millitm;
|
||||
#endif
|
||||
|
||||
oTime = localtime( &seconds );
|
||||
|
||||
return ( oTime->tm_hour * 3600 ) +
|
||||
( oTime->tm_min * 60 ) +
|
||||
oTime->tm_sec +
|
||||
( ( double ) fraction / 1000.0 );
|
||||
( ( double ) tb.millitm / 1000.0 );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user