On Wed, 23 Jul 2008, David Arturo Macias Corona wrote:
Hi David,
> >2008-07-22 12:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
> > * harbour/source/rtl/filesys.c
> > + implemented hb_fsGetAttr() and hb_fsGetFileTime() for DOS, MS-Win,
> > OS2 and *nixes. Please test it on different platforms.
> What kind of tests ? Can you post some test ?
I guess the first one you've already done - the modifications can
be compiled under OS2.
The second one is a runtime test. You can use the code below for it.
Just try if it works. Please remember that time resolution depends
on used FS and OS API. In OS2 it's 2 seconds.
best regards,
Przemek
#include "fileio.ch"
proc main()
local cFile := "_tst.tmp"
set date format to "YYYY-MM-DD"
ferase( cFile )
fclose( fcreate( cFile ) )
? HB_FSETDATETIME( cFile, 0d20070521, "21:45:37.123" )
? HB_FSETATTR( cFile, FC_READONLY )
aeval( directory( cFile ), { |x| qout( x[1], x[2], x[3], x[4], x[5] ) } )
? HB_FGETDATETIME( cFile ), "0x" + HB_NUMTOHEX( HB_FGETATTR( cFile ) )
? HB_FSETATTR( cFile, ;
HB_BITOR( HB_FGETATTR( cFile ), FC_HIDDEN, FC_SYSTEM ) )
aeval( directory( cFile ), { |x| qout( x[1], x[2], x[3], x[4], x[5] ) } )
? HB_FGETDATETIME( cFile ), "0x" + HB_NUMTOHEX( HB_FGETATTR( cFile ) )
return
#pragma begindump
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapifs.h"
#include "hbapierr.h"
#include "hbdate.h"
HB_FUNC( HB_FSETDATETIME )
{
char * szFile = hb_parc( 1 );
if( szFile )
{
PHB_ITEM pDate, pTime;
long lJulian, lMillisec;
pDate = hb_param( 2, HB_IT_DATE );
lJulian = pDate ? hb_itemGetDL( pDate ) : 0;
pTime = hb_param( 3, HB_IT_STRING );
if( pTime )
{
int hour = 0, minute = 0, second = 0, millisec = 0;
hb_timeStrGet( hb_itemGetCPtr( pTime ), &hour, &minute,
&second, &millisec );
lMillisec = hb_timeStampEncode( hour, minute, second, millisec );
}
else
lMillisec = -1;
hb_retl( hb_fsSetFileTime( ( BYTE * ) szFile, lJulian, lMillisec ) );
}
else
hb_errRT_BASE( EG_ARG, 2021, NULL, HB_ERR_FUNCNAME,
HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_FGETDATETIME )
{
char * szFile = hb_parc( 1 );
if( szFile )
{
long lJulian, lMillisec;
if( hb_fsGetFileTime( ( BYTE * ) szFile, &lJulian, &lMillisec ) )
{
char szDateTime[ 24 ];
hb_retc( hb_dateTimeStampStr( szDateTime, lJulian, lMillisec ) );
}
else
hb_retc( NULL );
}
else
hb_errRT_BASE( EG_ARG, 2021, NULL, HB_ERR_FUNCNAME,
HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_FSETATTR )
{
char * szFile = hb_parc( 1 );
if( szFile && ISNUM( 2 ) )
{
hb_retl( hb_fsSetAttr( ( BYTE * ) szFile, hb_parnl( 2 ) ) );
}
else
hb_errRT_BASE( EG_ARG, 2021, NULL, HB_ERR_FUNCNAME,
HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_FGETATTR )
{
char * szFile = hb_parc( 1 );
if( szFile )
{
ULONG ulAttr;
if( hb_fsGetAttr( ( BYTE * ) szFile, &ulAttr ) )
hb_retnint( ulAttr );
else
hb_retni( -1 );
}
else
hb_errRT_BASE( EG_ARG, 2021, NULL, HB_ERR_FUNCNAME,
HB_ERR_ARGS_BASEPARAMS );
}
#pragma enddump
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour