20000321-02:00 GMT+1 Victor Szakats <info@szelvesz.hu>

This commit is contained in:
Viktor Szakats
2000-03-21 00:58:45 +00:00
parent 5b5c18481c
commit cadd7af4b3
15 changed files with 272 additions and 237 deletions

View File

@@ -1,3 +1,33 @@
20000321-02:00 GMT+1 Victor Szakats <info@szelvesz.hu>
+ source/vm/runner.c
- source/runner/runlib.c
- source/runner/Makefile
- source/runner/stdalone/Makefile
- source/runner/stdalone/hbrun.prg
+ utils/hbrun/Makefile
+ utils/hbrun/hbrun.prg
* source/Makefile
source/vm/Makefile
utils/Makefile
makefile.bc
makefile.vc
* Runner library code moved to SOURCE/VM
* Runner standalone utility moved to UTILS/HBRUN
* source/rtl/filesys.c
+ source/rtl/philes.c
- source/rtl/getenv.c
+ source/rtl/gete.c
- source/rtl/stris.c
+ source/rtl/is.c
source/rtl/Makefile
makefile.bc
makefile.vc
+ Harbour callable low-level file handling routines moved to a separate
source file.
* Two files renamed to match Clipper.
20000321-01:10 GMT+1 Victor Szakats <info@szelvesz.hu>
* source/rtl/gtapi.c

View File

@@ -49,9 +49,9 @@ MACRO_DIR = source\macro
PP_DIR = source\pp
RDD_DIR = source\rdd
RTL_DIR = source\rtl
RUNNER_DIR = source\runner
TOOLS_DIR = source\tools
VM_DIR = source\vm
HBRUN_DIR = utils\hbrun
HBTEST_DIR = utils\hbtest
HBDOC_DIR = utils\hbdoc
@@ -77,7 +77,6 @@ NULSYS_LIB = $(LIB_DIR)\nulsys.lib
PP_LIB = $(LIB_DIR)\pp.lib
RDD_LIB = $(LIB_DIR)\rdd.lib
RTL_LIB = $(LIB_DIR)\rtl.lib
RUNNER_LIB = $(LIB_DIR)\runner.lib
TOOLS_LIB = $(LIB_DIR)\tools.lib
VM_LIB = $(LIB_DIR)\vm.lib
@@ -161,12 +160,13 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\fnsplit.obj \
$(OBJ_DIR)\fssize.obj \
$(OBJ_DIR)\fstemp.obj \
$(OBJ_DIR)\getenv.obj \
$(OBJ_DIR)\gete.obj \
$(OBJ_DIR)\gt.obj \
$(OBJ_DIR)\gtapi.obj \
$(OBJ_DIR)\gx.obj \
$(OBJ_DIR)\hardcr.obj \
$(OBJ_DIR)\inkey.obj \
$(OBJ_DIR)\is.obj \
$(OBJ_DIR)\isprint.obj \
$(OBJ_DIR)\langapi.obj \
$(OBJ_DIR)\left.obj \
@@ -188,6 +188,7 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\oldbox.obj \
$(OBJ_DIR)\oldclear.obj \
$(OBJ_DIR)\pad.obj \
$(OBJ_DIR)\philes.obj \
$(OBJ_DIR)\philes53.obj \
$(OBJ_DIR)\philesx.obj \
$(OBJ_DIR)\rat.obj \
@@ -209,7 +210,6 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\str.obj \
$(OBJ_DIR)\strcase.obj \
$(OBJ_DIR)\strings.obj \
$(OBJ_DIR)\stris.obj \
$(OBJ_DIR)\strmatch.obj \
$(OBJ_DIR)\strtran.obj \
$(OBJ_DIR)\strzero.obj \
@@ -349,13 +349,6 @@ DBFCDX_LIB_OBJS = \
\
$(OBJ_DIR)\dbfcdx0.obj
#
# RUNNER.LIB rules
#
RUNNER_LIB_OBJS = \
$(OBJ_DIR)\runlib.obj
#
# PP.LIB rules
#
@@ -413,6 +406,7 @@ VM_LIB_OBJS = \
$(OBJ_DIR)\pcount.obj \
$(OBJ_DIR)\proc.obj \
$(OBJ_DIR)\pvalue.obj \
$(OBJ_DIR)\runner.obj \
\
$(OBJ_DIR)\symbols.obj \
\
@@ -519,7 +513,6 @@ all: \
$(NULSYS_LIB) \
$(DBFNTX_LIB) \
$(DBFCDX_LIB) \
$(RUNNER_LIB) \
$(HB_GT_LIBS) \
$(HBRUN_EXE) \
$(HBPP_EXE) \
@@ -539,7 +532,6 @@ $(NULSYS_LIB) : $(NULSYS_LIB_OBJS)
$(PP_LIB) : $(PP_LIB_OBJS)
$(RDD_LIB) : $(RDD_LIB_OBJS)
$(RTL_LIB) : $(RTL_LIB_OBJS)
$(RUNNER_LIB) : $(RUNNER_LIB_OBJS)
$(TOOLS_LIB) : $(TOOLS_LIB_OBJS)
$(VM_LIB) : $(VM_LIB_OBJS)
$(GTDOS_LIB) : $(GTDOS_LIB_OBJS)
@@ -842,6 +834,10 @@ $(OBJ_DIR)\pvalue.obj : $(VM_DIR)\pvalue.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(VM_LIB) -+$@,,
$(OBJ_DIR)\runner.obj : $(VM_DIR)\runner.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(VM_LIB) -+$@,,
$(OBJ_DIR)\symbols.obj : $(VM_DIR)\symbols.asm
$(AS) $**, $@
tlib $(VM_LIB) -+$@,,
@@ -1065,7 +1061,7 @@ $(OBJ_DIR)\fstemp.obj : $(RTL_DIR)\fstemp.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\getenv.obj : $(RTL_DIR)\getenv.c
$(OBJ_DIR)\gete.obj : $(RTL_DIR)\gete.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
@@ -1096,6 +1092,10 @@ $(OBJ_DIR)\input.obj : $(OBJ_DIR)\input.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\is.obj : $(RTL_DIR)\is.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\isprint.obj : $(RTL_DIR)\isprint.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
@@ -1205,6 +1205,10 @@ $(OBJ_DIR)\pad.obj : $(RTL_DIR)\pad.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\philes.obj : $(RTL_DIR)\philes.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\philes53.obj : $(RTL_DIR)\philes53.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
@@ -1317,10 +1321,6 @@ $(OBJ_DIR)\strings.obj : $(RTL_DIR)\strings.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\stris.obj : $(RTL_DIR)\stris.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
$(OBJ_DIR)\strmatch.obj : $(RTL_DIR)\strmatch.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RTL_LIB) -+$@,,
@@ -1722,14 +1722,6 @@ $(OBJ_DIR)\dbfcdx1.obj : $(RDD_DIR)\dbfcdx\dbfcdx1.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(DBFCDX_LIB) -+$@,,
#
# RUNNER.LIB dependencies
#
$(OBJ_DIR)\runlib.obj : $(RUNNER_DIR)\runlib.c
$(CC) $(CLIBFLAGS) -o$@ $**
tlib $(RUNNER_LIB) -+$@,,
#
# DEBUG.LIB dependencies
#
@@ -1823,11 +1815,9 @@ $(HBPP_EXE) : \
#
# HBRUN.EXE dependencies
#
$(HBRUN_EXE) : \
$(RUNNER_DIR)\stdalone\hbrun.prg \
$(RUNNER_LIB)
$(HBRUN_EXE) : $(HBRUN_DIR)\hbrun.prg
$(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $(RUNNER_DIR)\stdalone\hbrun.prg
$(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $(HBRUN_DIR)\hbrun.prg
$(CC) $(CLIBFLAGS) -o$(OBJ_DIR)\hbrun.obj $(OBJ_DIR)\hbrun.c
echo. $(CFLAGS) > make.tmp
@@ -1842,7 +1832,6 @@ $(HBRUN_EXE) : \
echo. $(RDD_LIB) >> make.tmp
echo. $(MACRO_LIB) >> make.tmp
echo. $(TOOLS_LIB) >> make.tmp
echo. $(RUNNER_LIB) >> make.tmp
echo. $(DBFNTX_LIB) >> make.tmp
echo. $(DBFCDX_LIB) >> make.tmp
$(CC) @make.tmp
@@ -1872,7 +1861,6 @@ $(HBTEST_EXE) : $(HBTEST_EXE_OBJS)
echo. $(HB_GT_LIB) >> make.tmp
echo. $(RDD_LIB) >> make.tmp
echo. $(MACRO_LIB) >> make.tmp
echo. $(RUNNER_LIB) >> make.tmp
echo. $(DBFNTX_LIB) >> make.tmp
echo. $(DBFCDX_LIB) >> make.tmp
$(CC) @make.tmp
@@ -1956,7 +1944,6 @@ $(HBDOC_EXE) : $(HBDOC_EXE_OBJS)
echo. $(RDD_LIB) >> make.tmp
echo. $(MACRO_LIB) >> make.tmp
echo. $(TOOLS_LIB) >> make.tmp
echo. $(RUNNER_LIB) >> make.tmp
echo. $(DBFNTX_LIB) >> make.tmp
echo. $(DBFCDX_LIB) >> make.tmp
$(CC) @make.tmp

View File

@@ -50,9 +50,9 @@ MACRO_DIR = source\macro
PP_DIR = source\pp
RDD_DIR = source\rdd
RTL_DIR = source\rtl
RUNNER_DIR = source\runner
TOOLS_DIR = source\tools
VM_DIR = source\vm
HBRUN_DIR = utils\hbrun
HBTEST_DIR = utils\hbtest
HBDOC_DIR = utils\hbdoc
@@ -79,7 +79,6 @@ NULSYS_LIB = $(LIB_DIR)\nulsys.lib
PP_LIB = $(LIB_DIR)\pp.lib
RDD_LIB = $(LIB_DIR)\rdd.lib
RTL_LIB = $(LIB_DIR)\rtl.lib
RUNNER_LIB = $(LIB_DIR)\runner.lib
TOOLS_LIB = $(LIB_DIR)\tools.lib
VM_LIB = $(LIB_DIR)\vm.lib
@@ -126,7 +125,6 @@ LIBLIST = \
$(DBFCDX_LIB) \
$(DBFNTX_LIB) \
$(NULSYS_LIB) \
$(RUNNER_LIB) \
$(TOOLS_LIB) \
$(VM_LIB) \
$(HB_GT_LIB)
@@ -202,12 +200,13 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\fnsplit.obj \
$(OBJ_DIR)\fssize.obj \
$(OBJ_DIR)\fstemp.obj \
$(OBJ_DIR)\getenv.obj \
$(OBJ_DIR)\gete.obj \
$(OBJ_DIR)\gt.obj \
$(OBJ_DIR)\gtapi.obj \
$(OBJ_DIR)\gx.obj \
$(OBJ_DIR)\hardcr.obj \
$(OBJ_DIR)\inkey.obj \
$(OBJ_DIR)\is.obj \
$(OBJ_DIR)\isprint.obj \
$(OBJ_DIR)\langapi.obj \
$(OBJ_DIR)\left.obj \
@@ -229,6 +228,7 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\oldbox.obj \
$(OBJ_DIR)\oldclear.obj \
$(OBJ_DIR)\pad.obj \
$(OBJ_DIR)\philes.obj \
$(OBJ_DIR)\philes53.obj \
$(OBJ_DIR)\philesx.obj \
$(OBJ_DIR)\rat.obj \
@@ -250,7 +250,6 @@ RTL_LIB_OBJS = \
$(OBJ_DIR)\str.obj \
$(OBJ_DIR)\strcase.obj \
$(OBJ_DIR)\strings.obj \
$(OBJ_DIR)\stris.obj \
$(OBJ_DIR)\strmatch.obj \
$(OBJ_DIR)\strtran.obj \
$(OBJ_DIR)\strzero.obj \
@@ -442,16 +441,6 @@ DBFCDX_LIB_OBJS = \
\
$(OBJ_DIR)\dbfcdx0.obj
#
# RUNNER.LIB rules
#
{$(RUNNER_DIR)}.c{$(OBJ_DIR)}.obj::
$(CC) $(CLIBFLAGS) -Fo$(OBJ_DIR)\ $<
RUNNER_LIB_OBJS = \
$(OBJ_DIR)\runlib.obj
#
# PP.LIB rules
#
@@ -532,6 +521,7 @@ VM_LIB_OBJS = \
$(OBJ_DIR)\pcount.obj \
$(OBJ_DIR)\proc.obj \
$(OBJ_DIR)\pvalue.obj \
$(OBJ_DIR)\runner.obj \
\
$(OBJ_DIR)\symbols.obj \
\
@@ -590,7 +580,6 @@ all: zot \
$(NULSYS_LIB) \
$(DBFNTX_LIB) \
$(DBFCDX_LIB) \
$(RUNNER_LIB) \
$(GTPCA_LIB) \
$(GTSTD_LIB) \
$(GTWIN_LIB) \
@@ -627,7 +616,6 @@ all: \
$(NULSYS_LIB) \
$(DBFNTX_LIB) \
$(DBFCDX_LIB) \
$(RUNNER_LIB) \
$(GTPCA_LIB) \
$(GTSTD_LIB) \
$(GTWIN_LIB) \
@@ -646,11 +634,10 @@ $(HBPP_EXE) : \
$(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $** -o $(HBPP_EXE) /link $(PP_LIB) $(COMMON_LIB)
#
# Runner
# HBRUN.EXE rules
#
$(HBRUN_EXE) : \
$(RUNNER_DIR)\stdalone\hbrun.prg
$(HBRUN_EXE) : $(HBRUN_DIR)\hbrun.prg
$(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $**
$(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $(OBJ_DIR)\hbrun.c -o $(BIN_DIR)\hbrun /link $(LIBS2)
@@ -659,8 +646,8 @@ $(HBRUN_EXE) : \
#
# To compile this you must have a JDK installed
#
$(HBRUNJAV_DLL) : $(RUNNER_DIR)\runjava.c
$(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $(RUNNER_DIR)\runjava.c -o $(BIN_DIR)\runjava.dll /link-dll $(LIBS)
$(HBRUNJAV_DLL) : $(HBRUN_DIR)\runjava.c
$(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $(HBRUN_DIR)\runjava.c -o $(BIN_DIR)\runjava.dll /link-dll $(LIBS)
-del $(BIN_DIR)\runjava.exp
-del $(BIN_DIR)\runjava.lib
@@ -757,9 +744,6 @@ $(DBFNTX_LIB) : $(DBFNTX_LIB_OBJS)
$(NULSYS_LIB) : $(NULSYS_LIB_OBJS)
lib /out:$@ $**
$(RUNNER_LIB) : $(RUNNER_LIB_OBJS)
lib /out:$@ $**
$(TOOLS_LIB) : $(TOOLS_LIB_OBJS)
lib /out:$@ $**
@@ -815,7 +799,6 @@ $(RDD_LIB)2 : $(RDD_LIB_OBJS)
$(DBFCDX_LIB)2 : $(DBFCDX_LIB_OBJS)
$(DBFNTX_LIB)2 : $(DBFNTX_LIB_OBJS)
$(NULSYS_LIB)2 : $(NULSYS_LIB_OBJS)
$(RUNNER_LIB)2 : $(RUNNER_LIB_OBJS)
$(TOOLS_LIB)2 : $(TOOLS_LIB_OBJS)
$(VM_LIB)2 : $(VM_LIB_OBJS)
$(GTPCA_LIB)2 : $(GTPCA_LIB_OBJS)

View File

@@ -14,6 +14,5 @@ DIRS=\
macro \
debug \
tools \
runner \
include $(ROOT)config/dir.cf

View File

@@ -35,12 +35,13 @@ C_SOURCES=\
fnsplit.c \
fssize.c \
fstemp.c \
getenv.c \
gete.c \
gt.c \
gtapi.c \
gx.c \
hardcr.c \
inkey.c \
is.c \
isprint.c \
langapi.c \
left.c \
@@ -62,6 +63,7 @@ C_SOURCES=\
oldbox.c \
oldclear.c \
pad.c \
philes.c \
philes53.c \
philesx.c \
rat.c \
@@ -83,7 +85,6 @@ C_SOURCES=\
str.c \
strcase.c \
strings.c \
stris.c \
strmatch.c \
strtran.c \
strzero.c \

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* The FileSys API
* The FileSys API (C level)
*
* Copyright 1999 {list of individual authors and e-mail addresses}
* www - http://www.harbour-project.org
@@ -43,7 +43,6 @@
* hb_fsReadLarge()
* hb_fsWriteLarge()
* hb_fsCurDirBuff()
* HB_CURDIR()
*
* Copyright 1999 Jose Lalin <dezac@corevia.com>
* hb_fsChDrv()
@@ -67,9 +66,7 @@
#include <ctype.h>
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapifs.h"
#include "hbapierr.h"
#if defined(__GNUC__) && !defined(__MINGW32__)
#include <sys/types.h>
@@ -1287,110 +1284,6 @@ FHANDLE hb_fsExtOpen( BYTE * pFilename, BYTE * pDefExt,
return s_uiErrorLast;
}
HARBOUR HB_FOPEN( void )
{
if( ISCHAR( 1 ) )
hb_retni( hb_fsOpen( ( BYTE * ) hb_parc( 1 ),
ISNUM( 2 ) ? hb_parni( 2 ) : FO_READ | FO_COMPAT ) );
else
hb_errRT_BASE( EG_ARG, 2021, NULL, "FOPEN" ); /* NOTE: Undocumented but existing Clipper Run-time error */
}
HARBOUR HB_FCREATE( void )
{
if( ISCHAR( 1 ) )
hb_retni( hb_fsCreate( ( BYTE * ) hb_parc( 1 ),
ISNUM( 2 ) ? hb_parni( 2 ) : FC_NORMAL ) );
else
hb_retni( FS_ERROR );
}
HARBOUR HB_FREAD( void )
{
ULONG ulRead;
if( ISNUM( 1 ) && ISCHAR( 2 ) && ISBYREF( 2 ) && ISNUM( 3 ) )
{
ulRead = hb_parnl( 3 );
/* NOTE: CA-Clipper determines the maximum size by calling _parcsiz()
instead of _parclen(), this means that the maximum read length
will be one more than the length of the passed buffer, because
the terminating zero could be used if needed. [vszakats] */
if( ulRead <= hb_parcsiz( 2 ) )
/* NOTE: Warning, the read buffer will be directly modified,
this is normal here ! [vszakats] */
ulRead = hb_fsReadLarge( hb_parni( 1 ),
( BYTE * ) hb_parc( 2 ),
ulRead );
else
ulRead = 0;
}
else
ulRead = 0;
hb_retnl( ulRead );
}
HARBOUR HB_FWRITE( void )
{
if( ISNUM( 1 ) && ISCHAR( 2 ) )
hb_retnl( hb_fsWriteLarge( hb_parni( 1 ),
( BYTE * ) hb_parc( 2 ),
ISNUM( 3 ) ? hb_parnl( 3 ) : hb_parclen( 2 ) ) );
else
hb_retnl( 0 );
}
HARBOUR HB_FERROR( void )
{
hb_retni( hb_fsError() );
}
HARBOUR HB_FCLOSE( void )
{
s_uiErrorLast = 0;
if( ISNUM( 1 ) )
{
hb_fsClose( hb_parni( 1 ) );
hb_retl( s_uiErrorLast == 0 );
}
else
hb_retl( FALSE );
}
HARBOUR HB_FERASE( void )
{
s_uiErrorLast = 3;
if( ISCHAR( 1 ) )
hb_retni( hb_fsDelete( ( BYTE * ) hb_parc( 1 ) ) );
else
hb_retni( -1 );
}
HARBOUR HB_FRENAME( void )
{
s_uiErrorLast = 2;
if( ISCHAR( 1 ) && ISCHAR( 2 ) )
hb_retni( hb_fsRename( ( BYTE * ) hb_parc( 1 ), ( BYTE * ) hb_parc( 2 ) ) );
else
hb_retni( -1 );
}
HARBOUR HB_FSEEK( void )
{
if( ISNUM( 1 ) && ISNUM( 2 ) )
hb_retnl( hb_fsSeek( hb_parni( 1 ),
hb_parnl( 2 ),
ISNUM( 3 ) ? hb_parni( 3 ) : FS_SET ) );
else
hb_retnl( 0 );
}
BOOL hb_fsFile( BYTE * pFilename )
{
BOOL bIsFile;
@@ -1423,53 +1316,3 @@ BOOL hb_fsFile( BYTE * pFilename )
return bIsFile;
}
HARBOUR HB_FILE( void )
{
hb_retl( ISCHAR( 1 ) ? hb_fsFile( ( BYTE * ) hb_parc( 1 ) ) : FALSE );
}
HARBOUR HB_FREADSTR( void )
{
if( ISNUM( 1 ) && ISNUM( 2 ) )
{
ULONG ulToRead = ( ULONG ) hb_parnl( 2 );
if( ulToRead > 0 )
{
FHANDLE fhnd = ( FHANDLE ) hb_parni( 1 );
BYTE * buffer = ( BYTE * ) hb_xgrab( ulToRead + 1 );
ULONG ulRead;
ulRead = hb_fsReadLarge( fhnd, buffer, ulToRead );
buffer[ ulRead ] = '\0';
/* NOTE: Clipper will not return zero chars from this functions. */
hb_retc( ( char * ) buffer );
hb_xfree( buffer );
}
else
hb_retc( "" );
}
else
hb_retc( "" );
}
/* NOTE: This function should not return the leading and trailing */
/* (back)slashes. */
HARBOUR HB_CURDIR( void )
{
USHORT uiErrorOld = s_uiErrorLast;
BYTE * pbyBuffer = ( BYTE * ) hb_xgrab( _POSIX_PATH_MAX + 1 );
hb_fsCurDirBuff( ( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 ) ?
( USHORT )( toupper( *hb_parc( 1 ) ) - 'A' + 1 ) : 0, pbyBuffer, _POSIX_PATH_MAX + 1 );
hb_retc( ( char * ) pbyBuffer );
hb_xfree( pbyBuffer );
s_uiErrorLast = uiErrorOld;
}

206
harbour/source/rtl/philes.c Normal file
View File

@@ -0,0 +1,206 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* The FileSys API (Harbour level)
*
* 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/).
*
*/
/*
* The following parts are Copyright of the individual authors.
* www - http://www.harbour-project.org
*
* Copyright 1999 Victor Szakats <info@szelvesz.hu>
* HB_CURDIR()
*
* See doc/license.txt for licensing terms.
*
*/
#include <ctype.h>
#include "hbapi.h"
#include "hbapifs.h"
#include "hbapierr.h"
HARBOUR HB_FOPEN( void )
{
if( ISCHAR( 1 ) )
hb_retni( hb_fsOpen( ( BYTE * ) hb_parc( 1 ),
ISNUM( 2 ) ? hb_parni( 2 ) : FO_READ | FO_COMPAT ) );
else
hb_errRT_BASE( EG_ARG, 2021, NULL, "FOPEN" ); /* NOTE: Undocumented but existing Clipper Run-time error */
}
HARBOUR HB_FCREATE( void )
{
if( ISCHAR( 1 ) )
hb_retni( hb_fsCreate( ( BYTE * ) hb_parc( 1 ),
ISNUM( 2 ) ? hb_parni( 2 ) : FC_NORMAL ) );
else
hb_retni( FS_ERROR );
}
HARBOUR HB_FREAD( void )
{
ULONG ulRead;
if( ISNUM( 1 ) && ISCHAR( 2 ) && ISBYREF( 2 ) && ISNUM( 3 ) )
{
ulRead = hb_parnl( 3 );
/* NOTE: CA-Clipper determines the maximum size by calling _parcsiz()
instead of _parclen(), this means that the maximum read length
will be one more than the length of the passed buffer, because
the terminating zero could be used if needed. [vszakats] */
if( ulRead <= hb_parcsiz( 2 ) )
/* NOTE: Warning, the read buffer will be directly modified,
this is normal here ! [vszakats] */
ulRead = hb_fsReadLarge( hb_parni( 1 ),
( BYTE * ) hb_parc( 2 ),
ulRead );
else
ulRead = 0;
}
else
ulRead = 0;
hb_retnl( ulRead );
}
HARBOUR HB_FWRITE( void )
{
if( ISNUM( 1 ) && ISCHAR( 2 ) )
hb_retnl( hb_fsWriteLarge( hb_parni( 1 ),
( BYTE * ) hb_parc( 2 ),
ISNUM( 3 ) ? hb_parnl( 3 ) : hb_parclen( 2 ) ) );
else
hb_retnl( 0 );
}
HARBOUR HB_FERROR( void )
{
hb_retni( hb_fsError() );
}
HARBOUR HB_FCLOSE( void )
{
hb_fsSetError( 0 );
if( ISNUM( 1 ) )
{
hb_fsClose( hb_parni( 1 ) );
hb_retl( hb_fsError() == 0 );
}
else
hb_retl( FALSE );
}
HARBOUR HB_FERASE( void )
{
hb_fsSetError( 3 );
if( ISCHAR( 1 ) )
hb_retni( hb_fsDelete( ( BYTE * ) hb_parc( 1 ) ) );
else
hb_retni( -1 );
}
HARBOUR HB_FRENAME( void )
{
hb_fsSetError( 2 );
if( ISCHAR( 1 ) && ISCHAR( 2 ) )
hb_retni( hb_fsRename( ( BYTE * ) hb_parc( 1 ), ( BYTE * ) hb_parc( 2 ) ) );
else
hb_retni( -1 );
}
HARBOUR HB_FSEEK( void )
{
if( ISNUM( 1 ) && ISNUM( 2 ) )
hb_retnl( hb_fsSeek( hb_parni( 1 ),
hb_parnl( 2 ),
ISNUM( 3 ) ? hb_parni( 3 ) : FS_SET ) );
else
hb_retnl( 0 );
}
HARBOUR HB_FILE( void )
{
hb_retl( ISCHAR( 1 ) ? hb_fsFile( ( BYTE * ) hb_parc( 1 ) ) : FALSE );
}
HARBOUR HB_FREADSTR( void )
{
if( ISNUM( 1 ) && ISNUM( 2 ) )
{
ULONG ulToRead = ( ULONG ) hb_parnl( 2 );
if( ulToRead > 0 )
{
FHANDLE fhnd = ( FHANDLE ) hb_parni( 1 );
BYTE * buffer = ( BYTE * ) hb_xgrab( ulToRead + 1 );
ULONG ulRead;
ulRead = hb_fsReadLarge( fhnd, buffer, ulToRead );
buffer[ ulRead ] = '\0';
/* NOTE: Clipper will not return zero chars from this functions. */
hb_retc( ( char * ) buffer );
hb_xfree( buffer );
}
else
hb_retc( "" );
}
else
hb_retc( "" );
}
/* NOTE: This function should not return the leading and trailing */
/* (back)slashes. [vszakats] */
HARBOUR HB_CURDIR( void )
{
USHORT uiErrorOld = hb_fsError();
BYTE * pbyBuffer = ( BYTE * ) hb_xgrab( _POSIX_PATH_MAX + 1 );
hb_fsCurDirBuff( ( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 ) ?
( USHORT )( toupper( *hb_parc( 1 ) ) - 'A' + 1 ) : 0, pbyBuffer, _POSIX_PATH_MAX + 1 );
hb_retc( ( char * ) pbyBuffer );
hb_xfree( pbyBuffer );
hb_fsSetError( uiErrorOld );
}

View File

@@ -1,16 +0,0 @@
#
# $Id$
#
ROOT = ../../
C_SOURCES=\
runlib.c \
LIBNAME=runner
DIRS=\
stdalone \
include $(TOP)$(ROOT)config/lib.cf
include $(TOP)$(ROOT)config/dir.cf

View File

@@ -24,6 +24,7 @@ C_SOURCES=\
pcount.c \
proc.c \
pvalue.c \
runner.c \
PRG_SOURCES=\
harbinit.prg \

View File

@@ -5,6 +5,7 @@
ROOT = ../
DIRS=\
hbrun \
hbdoc \
hbtest \
# hbextern \

View File

@@ -6,7 +6,7 @@ ifeq ($(HB_MAIN),)
HB_MAIN = std
endif
ROOT = ../../../
ROOT = ../../
PRG_SOURCES=\
hbrun.prg \