/* * Lˆ um arquivo do disco para a memoria e retorna uma string com o conteudo do * mesmo... no segundo parametro ela retorna o tamanho de bytes lidos do arquivo. * * O primeiro parametro ‚ o nome do arquivo que deve ser lido do hd * 19/11/2006 09:58:59 */ char *xStrReadFile(char *s, ULONG * BytesRead ) { int fh; char *Buff; ULONG nEnd, nStart, Length; HB_TRACE( HB_TR_DEBUG, (" xStrReadFile( '%s' )", s )); *BytesRead = 0; // 31/07/2008 - 16:35:30 if (!hb_spFile( ( BYTE * ) s, NULL )) { HB_TRACE( HB_TR_DEBUG, (" Arquivo nao existe: %s", s )); return NULL; } else { HB_TRACE( HB_TR_DEBUG, (" Arquivo existe: %s", s )); } fh = hb_fsOpen( ( BYTE * ) s , 0 ); // 0 -> FO_READ HB_TRACE( HB_TR_DEBUG, (" HANDLE: %d", fh )); nEnd = hb_fsSeek( fh, 0 , 2 ); nStart = hb_fsSeek( fh , 0 , 0 ); HB_TRACE( HB_TR_DEBUG, (" Start .: %lu", nStart )); HB_TRACE( HB_TR_DEBUG, (" End ...: %lu", nEnd )); Length = nEnd - nStart; Buff = (char *) hb_xgrab( Length+1 ); * BytesRead = hb_fsReadLarge( fh , ( BYTE * ) Buff, Length ); Buff[ * BytesRead ] = '\0'; hb_fsClose( fh ); return Buff; }
HB_FHANDLE hb_spOpen( BYTE * pFilename, USHORT uiFlags ) { BYTE path[ _POSIX_PATH_MAX + 1 ]; HB_TRACE(HB_TR_DEBUG, ("hb_spOpen(%p, %hu)", pFilename, uiFlags)); if( hb_spFile( pFilename, path ) ) return hb_fsOpen( path, uiFlags ); else return hb_fsOpen( pFilename, uiFlags ); }
HB_FHANDLE hb_spOpen( const char * pszFileName, HB_USHORT uiFlags ) { char szPath[ HB_PATH_MAX ]; HB_TRACE( HB_TR_DEBUG, ( "hb_spOpen(%p, %hu)", pszFileName, uiFlags ) ); if( hb_spFile( pszFileName, szPath ) ) return hb_fsOpen( szPath, uiFlags ); else return hb_fsOpen( pszFileName, uiFlags ); }