2008-09-15 04:33 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/pack_src.sh
* added file list to archive so it's possible to recreate it later without SVN data
* harbour/common.mak
* harbour/make_b32.mak
* harbour/make_gcc.mak
+ added HBVMMT library for default builds
BCC version not tested - please test.
* harbour/source/vm/hvm.c
* moved language and code page setting before class and error initialization
* harbour/source/rtl/fserror.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/filesys.c
! fixed overloading FS error codes by other operations, f.e. accessing
TLS data by OS API function call
This commit is contained in:
@@ -8,6 +8,27 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-09-15 04:33 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/bin/pack_src.sh
|
||||
* added file list to archive so it's possible to recreate it later without SVN data
|
||||
|
||||
* harbour/common.mak
|
||||
* harbour/make_b32.mak
|
||||
* harbour/make_gcc.mak
|
||||
+ added HBVMMT library for default builds
|
||||
BCC version not tested - please test.
|
||||
|
||||
* harbour/source/vm/hvm.c
|
||||
* moved language and code page setting before class and error initialization
|
||||
|
||||
* harbour/source/rtl/fserror.c
|
||||
* harbour/source/rtl/fstemp.c
|
||||
* harbour/source/rtl/fssize.c
|
||||
* harbour/source/rtl/hbffind.c
|
||||
* harbour/source/rtl/filesys.c
|
||||
! fixed overloading FS error codes by other operations, f.e. accessing
|
||||
TLS data by OS API function call
|
||||
|
||||
2008-09-15 01:00 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* source/common/hbverdsp.c
|
||||
* Undone prev change.
|
||||
|
||||
@@ -67,16 +67,21 @@ hb_collect_all_svn()
|
||||
done
|
||||
}
|
||||
|
||||
hb_rmflst="no"
|
||||
hb_flst="bin/hb_flst.tmp"
|
||||
#format=`cat $hb_rootdir/.svn/format`
|
||||
if [ "$format" = 4 ] || [ "$format" = 8 ]; then
|
||||
(cd "$hb_rootdir";hb_collect_all) > "$hb_rootdir/$hb_flst"
|
||||
else
|
||||
(cd "$hb_rootdir";hb_collect_all_svn) > "$hb_rootdir/$hb_flst"
|
||||
if [ -d "$hb_rootdir/.svn" ] || [ ! -r "$hb_rootdir/$hb_flst" ]; then
|
||||
hb_rmflst="yes"
|
||||
#format=`cat $hb_rootdir/.svn/format`
|
||||
if [ "$format" = 4 ] || [ "$format" = 8 ]; then
|
||||
(cd "$hb_rootdir";hb_collect_all) > "$hb_rootdir/$hb_flst"
|
||||
else
|
||||
(cd "$hb_rootdir";hb_collect_all_svn) > "$hb_rootdir/$hb_flst"
|
||||
fi
|
||||
echo "$hb_flst" >> "$hb_rootdir/$hb_flst"
|
||||
fi
|
||||
if [ "$hb_archbin" = "zip" ]; then
|
||||
(cd "$hb_rootdir";$hb_archbin -r -q $hb_filename . "-i@$hb_flst")
|
||||
else
|
||||
(cd "$hb_rootdir";$hb_archbin $hb_archopt $hb_filename --files-from "$hb_flst")
|
||||
fi
|
||||
rm -fR "$hb_rootdir/$hb_flst"
|
||||
[ "$hb_rmflst" != "yes" ] || rm -fR "$hb_rootdir/$hb_flst"
|
||||
|
||||
@@ -94,6 +94,8 @@ BIN_DIR = bin\$(HB_CC_NAME)
|
||||
OBJ_DIR = obj\$(HB_CC_NAME)
|
||||
LIB_DIR = lib\$(HB_CC_NAME)
|
||||
|
||||
MT_OBJ_DIR = obj\$(HB_CC_NAME)_mt
|
||||
|
||||
DLL_ROOTDIR = obj\dll
|
||||
DLL_OBJ_DIR = $(DLL_ROOTDIR)\$(HB_CC_NAME)
|
||||
|
||||
@@ -103,6 +105,8 @@ HB_DEST_DIRS = \
|
||||
$(OBJ_DIR) \
|
||||
$(LIB_DIR) \
|
||||
\
|
||||
$(MT_OBJ_DIR) \
|
||||
\
|
||||
$(DLL_ROOTDIR) \
|
||||
$(DLL_OBJ_DIR)
|
||||
|
||||
@@ -211,6 +215,7 @@ COMMON_LIB = $(LIB_DIR)\$(LIBPREF)hbcommon$(LIBEXT)
|
||||
COMPILER_LIB = $(LIB_DIR)\$(LIBPREF)hbcplr$(LIBEXT)
|
||||
PP_LIB = $(LIB_DIR)\$(LIBPREF)hbpp$(LIBEXT)
|
||||
VM_LIB = $(LIB_DIR)\$(LIBPREF)hbvm$(LIBEXT)
|
||||
VMMT_LIB = $(LIB_DIR)\$(LIBPREF)hbvmmt$(LIBEXT)
|
||||
RTL_LIB = $(LIB_DIR)\$(LIBPREF)hbrtl$(LIBEXT)
|
||||
MACRO_LIB = $(LIB_DIR)\$(LIBPREF)hbmacro$(LIBEXT)
|
||||
DEBUG_LIB = $(LIB_DIR)\$(LIBPREF)hbdebug$(LIBEXT)
|
||||
|
||||
@@ -93,6 +93,8 @@ MKLIB = tlib.exe
|
||||
|
||||
DLL_OBJS = $(TMP_DLL_OBJS:$(OBJ_DIR)=$(DLL_OBJ_DIR))
|
||||
|
||||
VMMT_LIB_OBJS = $(VM_LIB_OBJS:$(OBJ_DIR)=$(MT_OBJ_DIR))
|
||||
|
||||
#**********************************************************
|
||||
# C compiler, Harbour compiler and Linker flags.
|
||||
#**********************************************************
|
||||
@@ -104,6 +106,7 @@ INCLUDE_DIR = include
|
||||
|
||||
# C Compiler Flags
|
||||
CFLAGS = -I$(INCLUDE_DIR) -I$(OBJ_DIR) $(C_USR)
|
||||
CFLAGSMT = -tWM -DHB_MT_VM $(CFLAGSMT)
|
||||
|
||||
#-----------
|
||||
!ifndef BCC_NOOPTIM
|
||||
@@ -120,7 +123,9 @@ CFLAGS = -I$(INCLUDE_DIR) -I$(OBJ_DIR) $(C_USR)
|
||||
!endif
|
||||
#-----------
|
||||
!if "$(HB_BUILD_ST)" != "yes"
|
||||
CFLAGS = -tWM $(CFLAGS) -DHB_MT_VM
|
||||
CFLAGS = $(CFLAGS) $(CFLAGSMT)
|
||||
!else
|
||||
HB_BUILD_TARGETS = $(HB_BUILD_TARGETS) $(VMMT_LIB)
|
||||
!endif
|
||||
#-----------
|
||||
!if "$(HB_GT_DEFAULT)" != ""
|
||||
@@ -185,6 +190,17 @@ ARFLAGS = /P32 $(A_USR)
|
||||
$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)\$&.c
|
||||
#**********************************************************
|
||||
|
||||
#**********************************************************
|
||||
# General *.c --> *.obj COMPILE rule for STATIC MT Libraries
|
||||
{$(ALL_SRC_DIRS)}.c{$(MT_OBJ_DIR)}$(OBJEXT):
|
||||
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $<
|
||||
#**********************************************************
|
||||
# General *.prg --> *.obj COMPILE rule for STATIC MT Libraries
|
||||
{$(ALL_SRC_DIRS)}.prg{$(MT_OBJ_DIR)}$(OBJEXT):
|
||||
$(HB) $(HARBOURFLAGS) -o$(MT_OBJ_DIR)\ $**
|
||||
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $(MT_OBJ_DIR)\$&.c
|
||||
#**********************************************************
|
||||
|
||||
#**********************************************************
|
||||
# General *.c --> *.obj COMPILE rule for SHARED Libraries
|
||||
{$(ALL_LIB_SRC_DIRS)}.c{$(DLL_OBJ_DIR)}$(OBJEXT):
|
||||
@@ -276,6 +292,14 @@ $(VM_LIB) :: $(VM_LIB_OBJS)
|
||||
+)
|
||||
!
|
||||
#**********************************************************
|
||||
$(VMMT_LIB) :: BasicExes
|
||||
$(VMMT_LIB) :: $(VMMT_LIB_OBJS)
|
||||
IF EXIST "$(VMMT_LIB)" $(DEL) "$(VMMT_LIB)" > NUL
|
||||
$(MKLIB) "$(VMMT_LIB)" $(ARFLAGS) @&&!
|
||||
+$(**: = &^
|
||||
+)
|
||||
!
|
||||
#**********************************************************
|
||||
$(RTL_LIB) :: BasicExes
|
||||
$(RTL_LIB) :: $(RTL_LIB_OBJS)
|
||||
IF EXIST "$(RTL_LIB)" $(DEL) "$(RTL_LIB)" > NUL
|
||||
@@ -638,6 +662,9 @@ doClean:
|
||||
-if exist $(OBJ_DIR)\*.obj $(DEL) $(OBJ_DIR)\*.obj > nul
|
||||
-if exist $(OBJ_DIR)\*.c $(DEL) $(OBJ_DIR)\*.c > nul
|
||||
-if exist $(OBJ_DIR)\*.h $(DEL) $(OBJ_DIR)\*.h > nul
|
||||
-if exist $(MT_OBJ_DIR)\*.obj $(DEL) $(MT_OBJ_DIR)\*.obj > nul
|
||||
-if exist $(MT_OBJ_DIR)\*.c $(DEL) $(MT_OBJ_DIR)\*.c > nul
|
||||
-if exist $(MT_OBJ_DIR)\*.h $(DEL) $(MT_OBJ_DIR)\*.h > nul
|
||||
-if exist $(INCLUDE_DIR)\hbverbld.h $(DEL) $(INCLUDE_DIR)\hbverbld.h > nul
|
||||
-if exist $(DLL_OBJ_DIR)\*.obj $(DEL) $(DLL_OBJ_DIR)\*.obj > nul
|
||||
-if exist $(DLL_OBJ_DIR)\*.c $(DEL) $(DLL_OBJ_DIR)\*.c > nul
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
# (if you don't have slang installed)
|
||||
#
|
||||
# HB_COMMERCE - If set to yes disables pure GNU modules (slang,GPM,...)
|
||||
# HB_BUILD_ST - If set to yes builds harbour in SingleThread mode
|
||||
# HB_BUILD_DLL - If set to yes enables building harbour VM+RTL
|
||||
# dll in addition to normal static build (currently not working)
|
||||
# HB_BUILD_DEBUG - If set to yes causes to compile with debug info
|
||||
@@ -56,6 +57,12 @@
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
# GCC has ST mode as default
|
||||
ifeq ($(HB_BUILD_ST),)
|
||||
HB_BUILD_ST=yes
|
||||
endif
|
||||
|
||||
|
||||
#**********************************************************
|
||||
|
||||
ifndef ECHO
|
||||
@@ -130,13 +137,15 @@ endif
|
||||
#**********************************************************
|
||||
|
||||
# Default sources directory search paths
|
||||
VPATH := $(ALL_SRC_DIRS) $(LIB_DIR) $(BIN_DIR) $(OBJ_DIR) $(DLL_OBJ_DIR)
|
||||
VPATH := $(ALL_SRC_DIRS) $(LIB_DIR) $(BIN_DIR) $(OBJ_DIR) $(MT_OBJ_DIR) $(DLL_OBJ_DIR)
|
||||
|
||||
#**********************************************************
|
||||
|
||||
# Some definitions cannot be kept in common.mak
|
||||
# due to serious limitations of Microsoft Nmake
|
||||
|
||||
VMMT_LIB_OBJS = $(subst $(OBJ_DIR),$(MT_OBJ_DIR),$(VM_LIB_OBJS))
|
||||
|
||||
# Do not perform an extra compilation phase for shared libraries
|
||||
# if gcc -fPIC compilation flag is already passed to a makefile
|
||||
ifeq ($(findstring -fPIC,$(C_USR) $(CFLAGS)),-fPIC)
|
||||
@@ -160,6 +169,7 @@ endif
|
||||
INCLUDE_DIR := include
|
||||
|
||||
CFLAGS := -W -Wall -I$(INCLUDE_DIR) $(C_USR) $(CFLAGS) -I$(OBJ_DIR)
|
||||
CFLAGSMT := -DHB_MT_VM $(CFLAGSMT)
|
||||
#-----------
|
||||
ifndef GCC_NOOPTIM
|
||||
CFLAGS := -O3 $(CFLAGS)
|
||||
@@ -181,6 +191,15 @@ CLIBFLAGS := -c $(CFLAGS)
|
||||
CLIBFLAGSDLL := -DHB_DYNLIB $(CLIBFLAGS) $(CLIBFLAGSDLL)
|
||||
CEXEFLAGSDLL := $(CFLAGS) $(CEXEFLAGSDLL)
|
||||
|
||||
ifeq ($(findstring $(HB_ARCHITECTURE),dos),)
|
||||
ifneq ($(HB_BUILD_ST),yes)
|
||||
CLIBFLAGS += $(CFLAGSMT)
|
||||
CLIBFLAGSDLL += $(CFLAGSMT)
|
||||
else
|
||||
HB_BUILD_TARGETS += $(VMMT_LIB)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Under architectures other than "DOS based" add -fPIC
|
||||
# to gcc compiler flags for compiling shared libraries
|
||||
ifeq ($(findstring $(HB_ARCHITECTURE),w32 os2),)
|
||||
@@ -248,9 +267,18 @@ $(OBJ_DIR)/%$(OBJEXT) : %.prg
|
||||
$(HB) $(HARBOURFLAGS) -o$(OBJ_DIR)/ $<
|
||||
$(CC) $(CLIBFLAGS) -o$@ $(OBJ_DIR)/$(<F:.prg=.c)
|
||||
#----------------------------------------------------------
|
||||
# General *.prg --> *.o COMPILE rule for STATIC MT Libraries
|
||||
$(MT_OBJ_DIR)/%$(OBJEXT) : %.prg
|
||||
$(HB) $(HARBOURFLAGS) -o$(MT_OBJ_DIR)/ $<
|
||||
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $(MT_OBJ_DIR)/$(<F:.prg=.c)
|
||||
#----------------------------------------------------------
|
||||
# General *.c --> *.o COMPILE rule for STATIC Libraries
|
||||
$(OBJ_DIR)/%$(OBJEXT) : %.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $<
|
||||
#----------------------------------------------------------
|
||||
# General *.c --> *.o COMPILE rule for STATIC MT Libraries
|
||||
$(MT_OBJ_DIR)/%$(OBJEXT) : %.c
|
||||
$(CC) $(CLIBFLAGS) $(CFLAGSMT) -o$@ $<
|
||||
#*******************************************************
|
||||
# General *.prg --> *.o COMPILE rule for SHARED Libraries
|
||||
$(DLL_OBJ_DIR)/%$(OBJEXT) : %.prg
|
||||
@@ -306,6 +334,9 @@ $(COMPILER_LIB) : $(COMPILER_LIB_OBJS)
|
||||
$(VM_LIB) : $(VM_LIB_OBJS)
|
||||
$(MKLIB) $(ARFLAGS) $@ $^
|
||||
#**********************************************************
|
||||
$(VMMT_LIB) : $(VMMT_LIB_OBJS)
|
||||
$(MKLIB) $(ARFLAGS) $@ $^
|
||||
#**********************************************************
|
||||
ifneq ($(findstring $(HB_ARCHITECTURE),w32 os2),)
|
||||
$(MAIN_LIB) : $(MAIN_LIB_OBJS)
|
||||
$(MKLIB) $(ARFLAGS) $@ $^
|
||||
@@ -546,6 +577,9 @@ doClean:
|
||||
-$(DEL) $(OBJ_DIR)/*$(OBJEXT)
|
||||
-$(DEL) $(OBJ_DIR)/*.c
|
||||
-$(DEL) $(OBJ_DIR)/*.h
|
||||
-$(DEL) $(MT_OBJ_DIR)/*$(OBJEXT)
|
||||
-$(DEL) $(MT_OBJ_DIR)/*.c
|
||||
-$(DEL) $(MT_OBJ_DIR)/*.h
|
||||
-$(DEL) $(INCLUDE_DIR)/hbverbld.h
|
||||
-$(DEL) $(DLL_OBJ_DIR)/*$(OBJEXT)
|
||||
-$(DEL) $(DLL_OBJ_DIR)/*.c
|
||||
|
||||
@@ -622,9 +622,8 @@ HB_EXPORT HB_FHANDLE hb_fsPOpen( BYTE * pFilename, BYTE * pMode )
|
||||
close( hPipeHandle[1] );
|
||||
}
|
||||
}
|
||||
hb_vmLock();
|
||||
|
||||
hb_fsSetIOError( hFileHandle != FS_ERROR, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
if( pbyTmp )
|
||||
hb_xfree( pbyTmp );
|
||||
@@ -660,8 +659,8 @@ HB_EXPORT HB_FHANDLE hb_fsOpen( BYTE * pFilename, USHORT uiFlags )
|
||||
hb_vmUnlock();
|
||||
hFile = ( HANDLE ) CreateFileA( ( char * ) pFilename, dwMode, dwShare,
|
||||
NULL, dwCreat, dwAttr, NULL );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( hFile != ( HANDLE ) INVALID_HANDLE_VALUE, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
hFileHandle = ( HB_FHANDLE ) hFile;
|
||||
}
|
||||
@@ -685,8 +684,8 @@ HB_EXPORT HB_FHANDLE hb_fsOpen( BYTE * pFilename, USHORT uiFlags )
|
||||
#else
|
||||
hFileHandle = open( ( char * ) pFilename, flags | share, mode );
|
||||
#endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( hFileHandle != FS_ERROR, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -720,9 +719,8 @@ HB_EXPORT HB_FHANDLE hb_fsCreate( BYTE * pFilename, ULONG ulAttr )
|
||||
hb_vmUnlock();
|
||||
hFile = ( HANDLE ) CreateFileA( ( char * ) pFilename, dwMode, dwShare,
|
||||
NULL, dwCreat, dwAttr, NULL );
|
||||
hb_vmLock();
|
||||
|
||||
hb_fsSetIOError( hFile != ( HANDLE ) INVALID_HANDLE_VALUE, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
hFileHandle = ( HB_FHANDLE ) hFile;
|
||||
}
|
||||
@@ -740,8 +738,8 @@ HB_EXPORT HB_FHANDLE hb_fsCreate( BYTE * pFilename, ULONG ulAttr )
|
||||
#else
|
||||
hFileHandle = open( ( char * ) pFilename, flags | share, mode );
|
||||
#endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( hFileHandle != FS_ERROR, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -781,9 +779,8 @@ HB_EXPORT HB_FHANDLE hb_fsCreateEx( BYTE * pFilename, ULONG ulAttr, USHORT uiFla
|
||||
hb_vmUnlock();
|
||||
hFile = ( HANDLE ) CreateFileA( ( char * ) pFilename, dwMode, dwShare,
|
||||
NULL, dwCreat, dwAttr, NULL );
|
||||
hb_vmLock();
|
||||
|
||||
hb_fsSetIOError( hFile != ( HANDLE ) INVALID_HANDLE_VALUE, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
hFileHandle = ( HB_FHANDLE ) hFile;
|
||||
}
|
||||
@@ -799,8 +796,8 @@ HB_EXPORT HB_FHANDLE hb_fsCreateEx( BYTE * pFilename, ULONG ulAttr, USHORT uiFla
|
||||
#else
|
||||
hFileHandle = open( ( char * ) pFilename, flags | share, mode );
|
||||
#endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( hFileHandle != FS_ERROR, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -940,8 +937,8 @@ HB_EXPORT BOOL hb_fsGetFileTime( BYTE * pszFileName, LONG * plJulian, LONG * plM
|
||||
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
hb_fsClose( hFile );
|
||||
}
|
||||
}
|
||||
@@ -966,9 +963,8 @@ HB_EXPORT BOOL hb_fsGetFileTime( BYTE * pszFileName, LONG * plJulian, LONG * plM
|
||||
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
if( fFree )
|
||||
hb_xfree( pszFileName );
|
||||
@@ -1008,28 +1004,26 @@ HB_EXPORT BOOL hb_fsGetAttr( BYTE * pszFileName, ULONG * pulAttr )
|
||||
*pulAttr = hb_fsAttrFromRaw( dwAttr );
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined( HB_OS_DOS )
|
||||
hb_vmUnlock();
|
||||
{
|
||||
#if defined( __DJGPP__ ) || defined(__BORLANDC__)
|
||||
int attr;
|
||||
hb_vmUnlock();
|
||||
attr = _chmod( ( char * ) pszFileName, 0, 0 );
|
||||
hb_vmLock();
|
||||
int attr = _chmod( ( char * ) pszFileName, 0, 0 );
|
||||
if( attr != -1 )
|
||||
#else
|
||||
unsigned int attr = 0;
|
||||
hb_vmUnlock();
|
||||
if( _dos_getfileattr( ( char * ) pszFileName, &attr ) == 0 )
|
||||
#endif
|
||||
{
|
||||
*pulAttr = hb_fsAttrFromRaw( attr );
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
}
|
||||
hb_vmLock();
|
||||
#elif defined( HB_OS_OS2 )
|
||||
{
|
||||
FILESTATUS3 fs3;
|
||||
@@ -1037,13 +1031,13 @@ HB_EXPORT BOOL hb_fsGetAttr( BYTE * pszFileName, ULONG * pulAttr )
|
||||
|
||||
hb_vmUnlock();
|
||||
ulrc = DosQueryPathInfo( ( PSZ ) pszFileName, FIL_STANDARD, &fs3, sizeof( fs3 ) );
|
||||
hb_vmLock();
|
||||
if( ulrc == NO_ERROR )
|
||||
{
|
||||
*pulAttr = hb_fsAttrFromRaw( fs3.attrFile );
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined( HB_OS_UNIX )
|
||||
{
|
||||
@@ -1055,8 +1049,8 @@ HB_EXPORT BOOL hb_fsGetAttr( BYTE * pszFileName, ULONG * pulAttr )
|
||||
*pulAttr = hb_fsAttrFromRaw( sStat.st_mode );
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
{
|
||||
@@ -1116,8 +1110,8 @@ HB_EXPORT BOOL hb_fsSetFileTime( BYTE * pszFileName, LONG lJulian, LONG lMillise
|
||||
SystemTimeToFileTime( &st, &local_ft );
|
||||
LocalFileTimeToFileTime( &local_ft, &ft );
|
||||
fResult = SetFileTime( DosToWinHandle( hFile ), NULL, &ft, &ft ) != 0;
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
hb_fsClose( hFile );
|
||||
}
|
||||
}
|
||||
@@ -1167,9 +1161,9 @@ HB_EXPORT BOOL hb_fsSetFileTime( BYTE * pszFileName, LONG lJulian, LONG lMillise
|
||||
ulrc = DosSetPathInfo( ( PSZ ) pszFileName, FIL_STANDARD,
|
||||
&fs3, sizeof( fs3 ), DSPI_WRTTHRU );
|
||||
}
|
||||
hb_vmLock();
|
||||
fResult = ulrc == NO_ERROR;
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
if( fFree )
|
||||
hb_xfree( pszFileName );
|
||||
}
|
||||
@@ -1179,11 +1173,10 @@ HB_EXPORT BOOL hb_fsSetFileTime( BYTE * pszFileName, LONG lJulian, LONG lMillise
|
||||
|
||||
pszFileName = hb_fsNameConv( pszFileName, &fFree );
|
||||
|
||||
hb_vmUnlock();
|
||||
if( lJulian <= 0 && lMillisec )
|
||||
{
|
||||
hb_vmUnlock();
|
||||
fResult = utime( ( char * ) pszFileName, NULL ) == 0;
|
||||
hb_vmLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1191,7 +1184,6 @@ HB_EXPORT BOOL hb_fsSetFileTime( BYTE * pszFileName, LONG lJulian, LONG lMillise
|
||||
struct tm new_value;
|
||||
time_t tim;
|
||||
|
||||
hb_vmUnlock();
|
||||
if( lJulian <= 0 || lMillisec < 0 )
|
||||
{
|
||||
time_t current_time;
|
||||
@@ -1226,9 +1218,9 @@ HB_EXPORT BOOL hb_fsSetFileTime( BYTE * pszFileName, LONG lJulian, LONG lMillise
|
||||
# endif
|
||||
buf.actime = buf.modtime = mktime( &new_value );
|
||||
fResult = utime( ( char * ) pszFileName, &buf ) == 0;
|
||||
hb_vmLock();
|
||||
}
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
if( fFree )
|
||||
hb_xfree( pszFileName );
|
||||
}
|
||||
@@ -1267,8 +1259,8 @@ HB_EXPORT BOOL hb_fsSetAttr( BYTE * pszFileName, ULONG ulAttr )
|
||||
dwFlags |= FILE_ATTRIBUTE_NORMAL;
|
||||
hb_vmUnlock();
|
||||
fResult = SetFileAttributesA( ( char * ) pszFileName, dwFlags );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined( HB_OS_OS2 )
|
||||
{
|
||||
@@ -1293,9 +1285,9 @@ HB_EXPORT BOOL hb_fsSetAttr( BYTE * pszFileName, ULONG ulAttr )
|
||||
ulrc = DosSetPathInfo( ( PSZ ) pszFileName, FIL_STANDARD,
|
||||
&fs3, sizeof( fs3 ), DSPI_WRTTHRU );
|
||||
}
|
||||
hb_vmLock();
|
||||
fResult = ulrc == NO_ERROR;
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined( HB_OS_DOS )
|
||||
|
||||
@@ -1306,8 +1298,8 @@ HB_EXPORT BOOL hb_fsSetAttr( BYTE * pszFileName, ULONG ulAttr )
|
||||
# else
|
||||
fResult = _dos_setfileattr( ( char * ) pszFileName, ulAttr ) != -1;
|
||||
# endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined( HB_OS_UNIX_COMPATIBLE )
|
||||
{
|
||||
@@ -1330,8 +1322,8 @@ HB_EXPORT BOOL hb_fsSetAttr( BYTE * pszFileName, ULONG ulAttr )
|
||||
}
|
||||
hb_vmUnlock();
|
||||
fResult = chmod( ( char * ) pszFileName, iAttr ) != -1;
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
{
|
||||
@@ -1363,16 +1355,16 @@ HB_EXPORT USHORT hb_fsRead( HB_FHANDLE hFileHandle, BYTE * pBuff, USHORT uiCount
|
||||
|
||||
hb_vmUnlock();
|
||||
fResult = ReadFile( DosToWinHandle( hFileHandle ), pBuff, ( DWORD ) uiCount, &dwRead, NULL );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
uiRead = fResult ? ( USHORT ) dwRead : 0;
|
||||
}
|
||||
#else
|
||||
hb_vmUnlock();
|
||||
uiRead = read( hFileHandle, pBuff, uiCount );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( uiRead != ( USHORT ) -1, 0 );
|
||||
hb_vmLock();
|
||||
#endif
|
||||
|
||||
if( uiRead == ( USHORT ) -1 )
|
||||
@@ -1411,8 +1403,8 @@ HB_EXPORT USHORT hb_fsWrite( HB_FHANDLE hFileHandle, const BYTE * pBuff, USHORT
|
||||
dwWritten = 0;
|
||||
fResult = SetEndOfFile( DosToWinHandle( hFileHandle ) );
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
uiWritten = fResult ? ( USHORT ) dwWritten : 0;
|
||||
}
|
||||
@@ -1421,8 +1413,8 @@ HB_EXPORT USHORT hb_fsWrite( HB_FHANDLE hFileHandle, const BYTE * pBuff, USHORT
|
||||
{
|
||||
hb_vmUnlock();
|
||||
uiWritten = write( hFileHandle, pBuff, uiCount );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( uiWritten != ( USHORT ) -1, 0 );
|
||||
hb_vmLock();
|
||||
if( uiWritten == ( USHORT ) -1 )
|
||||
uiWritten = 0;
|
||||
}
|
||||
@@ -1467,8 +1459,8 @@ HB_EXPORT ULONG hb_fsReadLarge( HB_FHANDLE hFileHandle, BYTE * pBuff, ULONG ulCo
|
||||
{
|
||||
hb_vmUnlock();
|
||||
ulRead = read( hFileHandle, pBuff, ulCount );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( ulRead != (ULONG) -1, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
{
|
||||
@@ -1511,8 +1503,8 @@ HB_EXPORT ULONG hb_fsReadLarge( HB_FHANDLE hFileHandle, BYTE * pBuff, ULONG ulCo
|
||||
ulRead += ( ULONG ) uiRead;
|
||||
pPtr += uiRead;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( ulLeftToRead == 0, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1554,8 +1546,8 @@ HB_EXPORT ULONG hb_fsWriteLarge( HB_FHANDLE hFileHandle, const BYTE * pBuff, ULO
|
||||
{
|
||||
hb_vmUnlock();
|
||||
ulWritten = write( hFileHandle, pBuff, ulCount );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( ulWritten != ( ULONG ) -1, 0 );
|
||||
hb_vmLock();
|
||||
if( ulWritten == ( ULONG ) -1 )
|
||||
ulWritten = 0;
|
||||
}
|
||||
@@ -1601,8 +1593,8 @@ HB_EXPORT ULONG hb_fsWriteLarge( HB_FHANDLE hFileHandle, const BYTE * pBuff, ULO
|
||||
ulWritten += ( ULONG ) uiWritten;
|
||||
pPtr += uiWritten;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( ulLeftToWrite == 0, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#endif
|
||||
else
|
||||
@@ -1698,8 +1690,8 @@ HB_EXPORT void hb_fsCommit( HB_FHANDLE hFileHandle )
|
||||
close( dup_handle );
|
||||
fResult = TRUE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -1760,8 +1752,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
#elif defined(HB_OS_OS2)
|
||||
{
|
||||
struct _FILELOCK fl, ful;
|
||||
@@ -1794,8 +1786,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined(_MSC_VER) || defined(__DMC__)
|
||||
{
|
||||
@@ -1817,8 +1809,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
lseek( hFileHandle, ulOldPos, SEEK_SET );
|
||||
}
|
||||
#elif defined(__MINGW32__)
|
||||
@@ -1841,8 +1833,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
lseek( hFileHandle, ulOldPos, SEEK_SET );
|
||||
}
|
||||
#elif defined(HB_OS_UNIX)
|
||||
@@ -1881,8 +1873,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined(HAVE_POSIX_IO) && !defined(__IBMCPP__) && ( !defined(__GNUC__) || defined(__DJGPP__) )
|
||||
|
||||
@@ -1900,8 +1892,8 @@ HB_EXPORT BOOL hb_fsLock( HB_FHANDLE hFileHandle, ULONG ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -1980,8 +1972,8 @@ HB_EXPORT BOOL hb_fsLockLarge( HB_FHANDLE hFileHandle, HB_FOFFSET ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#elif defined(HB_USE_LARGEFILE64)
|
||||
{
|
||||
@@ -2017,8 +2009,8 @@ HB_EXPORT BOOL hb_fsLockLarge( HB_FHANDLE hFileHandle, HB_FOFFSET ulStart,
|
||||
default:
|
||||
bResult = FALSE;
|
||||
}
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
#else
|
||||
bResult = hb_fsLock( hFileHandle, (ULONG) ulStart, (ULONG) ulLength, uiMode );
|
||||
@@ -2199,15 +2191,15 @@ HB_EXPORT BOOL hb_fsDelete( BYTE * pFilename )
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = DeleteFileA( ( char * ) pFilename );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HB_FS_FILE_IO)
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = ( remove( ( char * ) pFilename ) == 0 );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2276,8 +2268,8 @@ HB_EXPORT BOOL hb_fsMkDir( BYTE * pDirname )
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = CreateDirectoryA( ( char * ) pDirname, NULL );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HAVE_POSIX_IO) || defined(__MINGW32__)
|
||||
|
||||
@@ -2289,8 +2281,8 @@ HB_EXPORT BOOL hb_fsMkDir( BYTE * pDirname )
|
||||
# else
|
||||
bResult = ( mkdir( ( char * ) pDirname, S_IRWXU | S_IRWXG | S_IRWXO ) == 0 );
|
||||
# endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2318,15 +2310,15 @@ HB_EXPORT BOOL hb_fsChDir( BYTE * pDirname )
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = SetCurrentDirectoryA( ( char * ) pDirname );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HAVE_POSIX_IO) || defined(__MINGW32__)
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = ( chdir( ( char * ) pDirname ) == 0 );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2354,15 +2346,15 @@ HB_EXPORT BOOL hb_fsRmDir( BYTE * pDirname )
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = RemoveDirectoryA( ( char * ) pDirname );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HAVE_POSIX_IO) || defined(__MINGW32__)
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = ( rmdir( ( char * ) pDirname ) == 0 );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2422,29 +2414,29 @@ HB_EXPORT USHORT hb_fsCurDirBuff( USHORT uiDrive, BYTE * pbyBuffer, ULONG ulLen
|
||||
|
||||
hb_vmUnlock();
|
||||
fResult = GetCurrentDirectoryA( ulLen, ( char * ) pbyBuffer );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HB_OS_OS2)
|
||||
|
||||
hb_vmUnlock();
|
||||
fResult = ( _getcwd1( (char *) pbyBuffer, uiDrive + 'A' - 1 ) == 0 );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HAVE_POSIX_IO)
|
||||
|
||||
hb_vmUnlock();
|
||||
fResult = ( getcwd( ( char * ) pbyBuffer, ulLen ) != NULL );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(__MINGW32__)
|
||||
|
||||
hb_vmUnlock();
|
||||
fResult = ( _getdcwd( uiDrive, pbyBuffer, ulLen ) != NULL );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2617,8 +2609,8 @@ HB_EXPORT BOOL hb_fsIsDevice( HB_FHANDLE hFileHandle )
|
||||
|
||||
hb_vmUnlock();
|
||||
bResult = GetFileType( DosToWinHandle( hFileHandle ) ) == FILE_TYPE_CHAR;
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#elif defined(HB_FS_FILE_IO)
|
||||
|
||||
@@ -2628,8 +2620,8 @@ HB_EXPORT BOOL hb_fsIsDevice( HB_FHANDLE hFileHandle )
|
||||
#else
|
||||
bResult = isatty( hFileHandle ) != 0;
|
||||
#endif
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( bResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
#else
|
||||
|
||||
@@ -2877,6 +2869,7 @@ HB_EXPORT BOOL hb_fsEof( HB_FHANDLE hFileHandle )
|
||||
}
|
||||
#else
|
||||
fResult = eof( hFileHandle ) != 0;
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
#endif
|
||||
|
||||
hb_vmLock();
|
||||
|
||||
@@ -223,20 +223,21 @@ HB_EXPORT void hb_fsSetError( USHORT uiError )
|
||||
/* set error code for last operation */
|
||||
HB_EXPORT void hb_fsSetIOError( BOOL fResult, USHORT uiOperation )
|
||||
{
|
||||
PHB_IOERRORS pIOErrors = hb_stackIOErrors();
|
||||
USHORT uiOsErrorLast, uiErrorLast;
|
||||
PHB_IOERRORS pIOErrors;
|
||||
|
||||
/* TODO: implement it */
|
||||
HB_SYMBOL_UNUSED( uiOperation );
|
||||
|
||||
if( fResult )
|
||||
{
|
||||
pIOErrors->uiOsErrorLast = pIOErrors->uiErrorLast = 0;
|
||||
uiOsErrorLast = uiErrorLast = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(HB_WIN32_IO) || defined(HB_OS_WIN_32)
|
||||
pIOErrors->uiOsErrorLast = ( USHORT ) GetLastError();
|
||||
pIOErrors->uiErrorLast = ( USHORT ) hb_WinToDosError( pIOErrors->uiOsErrorLast );
|
||||
uiOsErrorLast = ( USHORT ) GetLastError();
|
||||
uiErrorLast = ( USHORT ) hb_WinToDosError( uiOsErrorLast );
|
||||
#elif defined(_MSC_VER) || defined(__DMC__)
|
||||
#ifdef __XCC__
|
||||
extern unsigned long _doserrno;
|
||||
@@ -245,16 +246,19 @@ HB_EXPORT void hb_fsSetIOError( BOOL fResult, USHORT uiOperation )
|
||||
#endif
|
||||
if( _doserrno != 0 )
|
||||
{
|
||||
pIOErrors->uiOsErrorLast = pIOErrors->uiErrorLast = _doserrno;
|
||||
uiOsErrorLast = uiErrorLast = _doserrno;
|
||||
}
|
||||
else
|
||||
{
|
||||
pIOErrors->uiOsErrorLast = errno;
|
||||
pIOErrors->uiErrorLast = hb_errnoToDosError( errno );
|
||||
uiOsErrorLast = errno;
|
||||
uiErrorLast = hb_errnoToDosError( errno );
|
||||
}
|
||||
#else
|
||||
pIOErrors->uiOsErrorLast = errno;
|
||||
pIOErrors->uiErrorLast = hb_errnoToDosError( pIOErrors->uiOsErrorLast );
|
||||
uiOsErrorLast = errno;
|
||||
uiErrorLast = hb_errnoToDosError( uiOsErrorLast );
|
||||
#endif
|
||||
}
|
||||
pIOErrors = hb_stackIOErrors();
|
||||
pIOErrors->uiOsErrorLast = uiOsErrorLast;
|
||||
pIOErrors->uiErrorLast = uiErrorLast;
|
||||
}
|
||||
|
||||
@@ -102,10 +102,10 @@ HB_FOFFSET hb_fsFSize( BYTE * pszFileName, BOOL bUseDirEntry )
|
||||
pszFileName = hb_fsNameConv( pszFileName, &fFree );
|
||||
hb_vmUnlock();
|
||||
fResult = stat64( ( char * ) pszFileName, &statbuf ) == 0;
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
if( fFree )
|
||||
hb_xfree( pszFileName );
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
if( fResult )
|
||||
return ( HB_FOFFSET ) statbuf.st_size;
|
||||
#else
|
||||
@@ -114,10 +114,10 @@ HB_FOFFSET hb_fsFSize( BYTE * pszFileName, BOOL bUseDirEntry )
|
||||
pszFileName = hb_fsNameConv( pszFileName, &fFree );
|
||||
hb_vmUnlock();
|
||||
fResult = stat( ( char * ) pszFileName, &statbuf ) == 0;
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
if( fFree )
|
||||
hb_xfree( pszFileName );
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
if( fResult )
|
||||
return ( HB_FOFFSET ) statbuf.st_size;
|
||||
#endif
|
||||
|
||||
@@ -105,9 +105,9 @@ static BOOL hb_fsTempName( BYTE * pszBuffer, const BYTE * pszDir, const BYTE * p
|
||||
|
||||
#endif
|
||||
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
hb_vmLock();
|
||||
|
||||
hb_fsSetIOError( fResult, 0 );
|
||||
return fResult;
|
||||
}
|
||||
|
||||
@@ -225,8 +225,8 @@ HB_EXPORT HB_FHANDLE hb_fsCreateTemp( const BYTE * pszDir, const BYTE * pszPrefi
|
||||
hb_strncat( ( char * ) pszName, "XXXXXX", _POSIX_PATH_MAX );
|
||||
hb_vmUnlock();
|
||||
fd = ( HB_FHANDLE ) mkstemp( ( char * ) pszName );
|
||||
hb_vmLock();
|
||||
hb_fsSetIOError( fd != ( HB_FHANDLE ) -1, 0 );
|
||||
hb_vmLock();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
||||
@@ -838,14 +838,14 @@ HB_EXPORT void hb_fsFindClose( PHB_FFIND ffind )
|
||||
{
|
||||
if( ffind )
|
||||
{
|
||||
hb_vmUnlock();
|
||||
|
||||
/* Do platform dependant cleanup */
|
||||
|
||||
if( ffind->info )
|
||||
{
|
||||
PHB_FFIND_INFO info = ( PHB_FFIND_INFO ) ffind->info;
|
||||
|
||||
hb_vmUnlock();
|
||||
|
||||
#if defined(HB_OS_DOS)
|
||||
|
||||
#if defined(__DJGPP__) || defined(__BORLANDC__)
|
||||
@@ -893,11 +893,11 @@ HB_EXPORT void hb_fsFindClose( PHB_FFIND ffind )
|
||||
|
||||
#endif
|
||||
|
||||
hb_vmLock();
|
||||
|
||||
hb_xfree( ( void * ) ffind->info );
|
||||
}
|
||||
|
||||
hb_xfree( ( void * ) ffind );
|
||||
|
||||
hb_vmLock();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -758,17 +758,18 @@ HB_EXPORT void hb_vmInit( BOOL bStartMainProc )
|
||||
#if defined( HB_MT_VM )
|
||||
hb_vmStackAdd( NULL );
|
||||
#endif
|
||||
hb_clsInit(); /* initialize Classy/OO system */
|
||||
hb_errInit();
|
||||
|
||||
/* initialize dynamic symbol for evaluating codeblocks */
|
||||
hb_symEval.pDynSym = hb_dynsymGetCase( hb_symEval.szName );
|
||||
|
||||
/* Set the language and codepage to the default */
|
||||
/* This trick is needed to stringify the macro value */
|
||||
hb_langSelectID( HB_MACRO2STRING( HB_LANG_DEFAULT ) );
|
||||
hb_cdpSelectID( HB_MACRO2STRING( HB_CODEPAGE_DEFAULT ) );
|
||||
|
||||
hb_clsInit(); /* initialize Classy/OO system */
|
||||
hb_errInit();
|
||||
|
||||
/* initialize dynamic symbol for evaluating codeblocks */
|
||||
hb_symEval.pDynSym = hb_dynsymGetCase( hb_symEval.szName );
|
||||
|
||||
hb_setInitialize( hb_stackSetStruct() );
|
||||
hb_conInit();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user