2010-10-13 20:59 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/utils/hbmk2/hbmk2.prg
    * use "~hbmk" instead of ".hbmk" as temporary directory name in DOS
      builds to avoid problem with unsupported file names.
      TODO: for better customization we need new function:
            HB_FNameCheck( <cFileName> ) -> <lNameOK>
  * harbour/contrib/hbmzip/hbmzip.c
    ! fixed GPF when file datetime is passed as 3-rd argument to
      HB_ZipFileCreate()
    % eliminated repeated code
This commit is contained in:
Przemyslaw Czerpak
2010-10-13 18:59:17 +00:00
parent 34fbea1e35
commit bdfbd4ef4f
3 changed files with 32 additions and 51 deletions

View File

@@ -16,6 +16,17 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-10-13 20:59 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/utils/hbmk2/hbmk2.prg
* use "~hbmk" instead of ".hbmk" as temporary directory name in DOS
builds to avoid problem with unsupported file names.
TODO: for better customization we need new function:
HB_FNameCheck( <cFileName> ) -> <lNameOK>
* harbour/contrib/hbmzip/hbmzip.c
! fixed GPF when file datetime is passed as 3-rd argument to
HB_ZipFileCreate()
% eliminated repeated code
2010-10-13 21:52 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/src/rtl/gtstd/gtstd.c
* code cleanup to make some compilers happy

View File

@@ -205,7 +205,7 @@ HB_FUNC( HB_ZIPFILECREATE )
int iMethod = hb_parnidef( 7, Z_DEFLATED );
int iLevel = hb_parnidef( 8, Z_DEFAULT_COMPRESSION );
long lJulian, lMillisec;
int iYear, iMonth, iDay, iHour, iMinute, iSecond;
int iYear, iMonth, iDay, iHour, iMinute, iSecond, iMSec;
zip_fileinfo zfi;
@@ -215,12 +215,12 @@ HB_FUNC( HB_ZIPFILECREATE )
{
hb_partdt( &lJulian, &lMillisec, 3 );
hb_dateDecode( lJulian, &iYear, &iMonth, &iDay );
hb_timeDecode( lMillisec, &iHour, &iMinute, &iSecond, NULL );
hb_timeDecode( lMillisec, &iHour, &iMinute, &iSecond, &iMSec );
}
else
{
hb_dateDecode( hb_pardl( 3 ), &iYear, &iMonth, &iDay );
hb_timeStrGet( hb_parc( 4 ), &iHour, &iMinute, &iSecond, NULL );
hb_timeStrGet( hb_parc( 4 ), &iHour, &iMinute, &iSecond, &iMSec );
}
zfi.tmz_date.tm_hour = iHour;
@@ -233,6 +233,10 @@ HB_FUNC( HB_ZIPFILECREATE )
zfi.internal_fa = hb_parnl( 5 );
zfi.external_fa = hb_parnl( 6 );
#if !defined( HB_OS_UNIX )
if( ( zfi.external_fa & 0xFFFF0000 ) == 0 )
zfi.external_fa = hb_translateExtAttr( szZipName, zfi.external_fa );
#endif
hb_retni( zipOpenNewFileInZip3( hZip, szZipName, &zfi,
NULL, 0, NULL, 0,
@@ -434,10 +438,13 @@ HB_FUNC( HB_UNZIPFILEINFO )
ufi.tmu_date.tm_sec, 0 );
hb_stortdt( lJulian, lMillisec, 3 );
hb_snprintf( buf, sizeof( buf ), "%02d:%02d:%02d",
ufi.tmu_date.tm_hour, ufi.tmu_date.tm_min,
ufi.tmu_date.tm_sec );
hb_storc( buf, 4 );
if( HB_ISBYREF( 4 ) )
{
hb_snprintf( buf, sizeof( buf ), "%02d:%02d:%02d",
ufi.tmu_date.tm_hour, ufi.tmu_date.tm_min,
ufi.tmu_date.tm_sec );
hb_storc( buf, 4 );
}
hb_stornl( ufi.internal_fa, 5 );
hb_stornl( ufi.external_fa, 6 );
hb_stornl( ufi.compression_method, 7 );
@@ -590,53 +597,12 @@ static HB_BOOL hb_zipGetFileInfoFromHandle( HB_FHANDLE hFile, HB_U32 * pulCRC, H
static HB_BOOL hb_zipGetFileInfo( const char * szFileName, HB_U32 * pulCRC, HB_BOOL * pfText )
{
HB_FHANDLE hFile;
HB_BOOL fText = pfText != NULL, fResult = HB_FALSE;
HB_U32 ulCRC = 0;
HB_BOOL fResult = HB_FALSE;
hFile = hb_fsOpen( szFileName, FO_READ );
fResult = hb_zipGetFileInfoFromHandle( hFile, pulCRC, pfText );
if( hFile != FS_ERROR )
{
unsigned char * pString = ( unsigned char * ) hb_xgrab( HB_Z_IOBUF_SIZE );
HB_SIZE nRead, u;
do
{
nRead = hb_fsReadLarge( hFile, pString, HB_Z_IOBUF_SIZE );
if( nRead > 0 )
{
ulCRC = crc32( ulCRC, pString, ( uInt ) nRead );
if( fText )
{
for( u = 0; u < nRead; ++u )
{
if( pString[ u ] < 0x20 ?
( pString[ u ] != HB_CHAR_HT &&
pString[ u ] != HB_CHAR_LF &&
pString[ u ] != HB_CHAR_CR &&
pString[ u ] != HB_CHAR_EOF ) :
( pString[ u ] >= 0x7f && pString[ u ] < 0xA0 &&
pString[ u ] != ( unsigned char ) HB_CHAR_SOFT1 ) )
{
fText = HB_FALSE;
break;
}
}
}
}
}
while( nRead == HB_Z_IOBUF_SIZE );
fResult = ( hb_fsError() == 0 );
hb_xfree( pString );
hb_fsClose( hFile );
}
if( pulCRC )
*pulCRC = ulCRC;
if( pfText )
*pfText = fText;
return fResult;
}

View File

@@ -257,7 +257,11 @@ REQUEST hbmk_KEYW
#define _COMPEMBED_BASE_ ( "comp" + hb_ps() )
#define _WORKDIR_BASE_ ".hbmk"
#if defined( __PLATFORM__DOS )
#define _WORKDIR_BASE_ "~hbmk"
#else
#define _WORKDIR_BASE_ ".hbmk"
#endif
#define _WORKDIR_DEF_ ( _WORKDIR_BASE_ + hb_ps() + hbmk[ _HBMK_cPLAT ] + hb_ps() + hbmk[ _HBMK_cCOMP ] )
#define _BCC_BIN_DETECT() FindInPath( "bcc32.exe" )