19991001-05:40 GMT+1

This commit is contained in:
Viktor Szakats
1999-10-01 03:53:40 +00:00
parent 9a9fc12c65
commit 2936528ce7
4 changed files with 121 additions and 3 deletions

View File

@@ -1,9 +1,17 @@
19991001-05:40 GMT+1 Victor Szel <info@szelvesz.hu>
+ source/rtl/dircmd.prg
source/rtl/Makefile
funclist.txt
+ __DIR() function added, so the DIR command is working now.
( Please add this file to the non-GNU make files )
19991001-05:30 GMT+1 Victor Szel <info@szelvesz.hu>
* source/rtl/filesys.c
! BIN2I(), BIN2L() made Clipper compatible, for strings shorter than
the expected length. One test call still fails, probable because of
different int size.
the expected length. One test call still fails, probably because of
different int size on 32 bit platforms.
* include/hbdefs.h
! MKINT() casted to long instead of int.
* include/external.ch
@@ -11,6 +19,7 @@
+ W2BIN removed.
+ tests/working/rtl_test.prg
+ BIN2W(), BIN2I(), BIN2L(), L2BIN(), I2BIN() regression tests added.
+ FNAME*() tests enabled.
- doc/*.nfo (removed)
+ doc/depend.txt (added)
+ The long filename files converted to one file with short name, the

View File

@@ -280,7 +280,7 @@ __dbSort ;N;
__dbTotal ;N;
__dbUpdate ;N;
__dbZap ;N;
__Dir ;N;
__Dir ;R;
__Eject ;R;
__Keyboard ;R;
__LabelForm ;N;

View File

@@ -46,6 +46,7 @@ PRG_SOURCES=\
asort.prg \
browdb.prg \
devoutp.prg \
dircmd.prg \
errorsys.prg \
fieldbl.prg \
harbinit.prg \

View File

@@ -0,0 +1,108 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* __DIR() function
*
* Copyright 1999 {list of individual authors and e-mail addresses}
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version, with one exception:
*
* The exception is that if you link the Harbour Runtime Library (HRL)
* and/or the Harbour Virtual Machine (HVM) with other files to produce
* an executable, this does not by itself cause the resulting executable
* to be covered by the GNU General Public License. Your use of that
* executable is in no way restricted on account of linking the HRL
* and/or HVM code into it.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
* their web site at http://www.gnu.org/).
*
*/
#include "directry.ch"
#include "fileio.ch"
PROCEDURE __Dir( cFileMask )
LOCAL cPath
LOCAL cName
LOCAL cExt
IF Empty( cFileMask )
QOut( "Database Files # Records Last Update Size" )
aEval( Directory( hb_FNameMerge( Set( _SET_DEFAULT ), "*", ".dbf" ) ),;
{| aDirEntry | PutDbf( aDirEntry ) } )
ELSE
hb_FNameSplit( LTrim( cFileMask ), @cPath, @cName, @cExt )
IF Empty( cPath )
cPath := Set( _SET_DEFAULT )
ENDIF
aEval( Directory( hb_FNameMerge( cPath, cName, cExt ) ),;
{| aDirEntry | PutNormal( aDirEntry ) } )
ENDIF
QOut()
RETURN
STATIC PROCEDURE PutDBF( aDirEntry )
LOCAL fhnd
LOCAL buffer
LOCAL nRecCount := 0
LOCAL dLastUpdate := SToD( "" )
IF ( fhnd := fOpen( aDirEntry[ F_NAME ] ) ) != F_ERROR
buffer := Replicate( Chr( 0 ), 8 )
IF fRead( fhnd, @buffer, 8 ) == 8 .AND. ;
( Bin2W( Left( buffer, 1 ) ) == 3 .OR. ;
Bin2W( Left( buffer, 1 ) ) == 131 )
nRecCount := Bin2L( SubStr( buffer, 5, 4 ) )
dLastUpdate := SToD( StrZero( Bin2W( SubStr( buffer, 2, 1 ) ) + 1900, 4 ) +;
StrZero( Bin2W( SubStr( buffer, 3, 1 ) ), 2 ) +;
StrZero( Bin2W( SubStr( buffer, 4, 1 ) ), 2 ) )
ENDIF
fClose( fhnd )
ENDIF
QOut( PadR( aDirEntry[ F_NAME ], 15 ) +;
Str( nRecCount, 12 ) + " " +;
DToC( dLastUpdate ) +;
Str( aDirEntry[ F_SIZE ], 12 ) )
RETURN
STATIC PROCEDURE PutNormal( aDirEntry )
LOCAL cName
LOCAL cExt
hb_FNameSplit( aDirEntry[ F_NAME ], NIL, @cName, @cExt )
QOut( PadR( cName, 8 ) + " " +;
PadR( cExt, 3 ) + " " +;
Str( aDirEntry[ F_SIZE ], 8 ) + " " +;
DToC( aDirEntry[ F_DATE ] ) )
RETURN