Files
harbour-core/contrib/hbpipeio/tests/test.prg
Viktor Szakats 58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00

66 lines
2.0 KiB
Plaintext

/*
* demonstration/test code for PIPEIO
*
* Copyright 2015 Przemyslaw Czerpak <druzus / at / priv.onet.pl>
*
*/
#require "hbpipeio"
#include "fileio.ch"
PROCEDURE Main()
LOCAL pFile, cData, cBuffer, cResult, nLen, nDone
IF Empty( pFile := hb_vfOpenProcess( "gzip", FO_READWRITE, 1000 ) )
? "Cannot open file."
ELSE
? "writting..."
cData := hb_tsToStr( hb_dateTime() ) + hb_eol() + ;
Version() + hb_eol() + ;
OS() + hb_eol() + ;
Replicate( "0123456789" + hb_eol(), 1000 ) + ;
"END" + hb_eol()
nDone := 0
WHILE nDone < hb_BLen( cData ) .AND. ;
( nLen := hb_vfWrite( pFile, hb_BSubStr( cData, nDone + 1 ) ) ) > 0
nDone += nLen
? "written: " + hb_ntos( nLen )
ENDDO
? "total bytes written: " + hb_ntos( nDone ) + ;
", error: " + hb_ntos( FError() )
/* close input stream for GZIP process to indicate end of data */
hb_vfConfig( pFile, HB_VF_SHUTDOWN, FO_WRITE )
?
cResult := ""
? "reading..."
cBuffer := Space( 1000 )
WHILE ( nLen := hb_vfRead( pFile, @cBuffer ) ) > 0
cResult += hb_BLeft( cBuffer, nLen )
? "read: " + hb_ntos( nLen )
ENDDO
? "total bytes read: " + hb_ntos( hb_BLen( cResult ) ) + ;
", error: " + hb_ntos( FError() )
/* close the pipe file and wait for child process termination */
? "closing..."
hb_vfClose( pFile )
? "DONE"
?
hb_vfErase( "data.gz" )
? "write data.gz " + hb_ntos( hb_BLen( cResult ) ) + " -> " + ;
iif( hb_BLen( cResult ) > 0 .AND. hb_memoWrit( "data.gz", cResult ), ;
"OK", "ERROR" )
/* check if we can decode data compressed by GZIP */
IF hb_ZUncompress( cResult ) == cData
? "OK, GZIP output decompressed correctly and muches the source"
ELSE
? "ERROR, decompressed GZIP output does not much the source"
ENDIF
ENDIF
?
RETURN