* tests/longdev.prg
* tests/hbpptest/hbpptest.prg
* tests/testcgi.prg
* tests/foreach.prg
* tests/onidle.prg
* tests/tstchbx.prg
* tests/codebl.prg
* tests/tstdbi.prg
* tests/vmasort.prg
* tests/tstasort.prg
* tests/testbrw.prg
* tests/inkeytst.prg
* tests/testrdd2.prg
* tests/keywords.prg
* tests/testhtml.prg
* tests/readhrb.prg
* tests/stripem.prg
* tests/wvtext.prg
* tests/testpre.prg
* tests/seconds.prg
* tests/fsplit.prg
* tests/mousetst.prg
* contrib/hbmysql/tmysql.prg
* contrib/hbct/numconv.prg
* contrib/hbct/ctmisc.prg
* contrib/hbodbc/todbc.prg
* contrib/hbapollo/tests/apollo.prg
* contrib/hbnf/acctyear.prg
* contrib/hbnf/acctadj.prg
* contrib/hbnf/nwsem.prg
* contrib/hbnf/week.prg
* contrib/hbnf/acctmnth.prg
* contrib/hbnf/savearr.prg
* contrib/hbnf/madd.prg
* contrib/hbnf/mouse1.prg
* contrib/hbnf/month.prg
* contrib/hbnf/findith.prg
* contrib/hbnf/acctweek.prg
* contrib/hbnf/pegs.prg
* contrib/hbnf/acctqtr.prg
* contrib/hbnf/nooccur.prg
* contrib/hbnf/dayofyr.prg
* contrib/hbnf/menu1.prg
* contrib/hbnf/sqzn.prg
* contrib/hbnf/asum.prg
* contrib/hbnf/aavg.prg
* contrib/hbnf/any2any.prg
* contrib/hbnf/adessort.prg
* contrib/hbnf/amedian.prg
* contrib/hbnf/blink.prg
* contrib/hbnf/qtr.prg
* contrib/hbnf/aredit.prg
* contrib/hbnf/xbox.prg
* contrib/hbnf/ftround.prg
* contrib/hbnf/invclr.prg
* contrib/hbnf/tempfile.prg
* contrib/hbnf/diskfunc.prg
* contrib/hbnf/mouse2.prg
* contrib/hbnf/daytobow.prg
* contrib/hbnf/anomatch.prg
* contrib/hbnf/datecnfg.prg
* contrib/hbnf/tbwhile.prg
* contrib/hbnf/year.prg
* contrib/hbnf/elapsed.prg
* contrib/hbnf/dfile.prg
* contrib/hbnf/clrsel.prg
* contrib/hbmisc/twirler.prg
* contrib/hbmisc/fileread.prg
* contrib/hbmisc/stringp.prg
* contrib/hbgf/hbgfw32/winctrl.prg
* contrib/hbgf/hbgfw32/form.prg
* contrib/hbgf/hbgfos2/winctrl.prg
* contrib/hbgf/hbgfos2/tform.prg
* contrib/hbtip/httpcln.prg
* contrib/hbvpdf/hbvpdf.prg
* contrib/hbvpdf/hbvpdft.prg
* contrib/examples/guestbk/guestbk.prg
* contrib/examples/pe/editorhi.prg
* Some more general code cleanups ( if() -> iif() ).
115 lines
2.8 KiB
Plaintext
115 lines
2.8 KiB
Plaintext
//
|
|
// $Id$
|
|
//
|
|
|
|
/*
|
|
* ReadHRB
|
|
*
|
|
* This program will read the .hrb file and shows its contents
|
|
*
|
|
* ReadHRB <program file> {No .hrb extension please}
|
|
*
|
|
* Written by Eddie Runia <eddie@runia.com>
|
|
* www - http://www.harbour-project.org
|
|
*
|
|
* Placed in the public domain
|
|
*/
|
|
|
|
#include "set.ch"
|
|
|
|
function Main( cFrom )
|
|
|
|
local hFile
|
|
local cBlock := " "
|
|
local n, m
|
|
local nVal
|
|
local nSymbols
|
|
local nFuncs
|
|
local cMode := "SYMBOL"
|
|
local cScope
|
|
local nLenCount
|
|
local nIdx
|
|
local aTypes := { "NOLINK", "FUNC", "EXTERN" }
|
|
|
|
set( _SET_EXACT, .T. )
|
|
set( _SET_ALTERNATE, "readhrb.out" )
|
|
set( _SET_ALTERNATE, .T. )
|
|
|
|
if cFrom == NIL
|
|
cFrom := "hello.hrb"
|
|
else
|
|
cFrom += ".hrb"
|
|
endif
|
|
|
|
hFile := fOpen( cFrom )
|
|
if hFile == -1
|
|
QOut( "No such file:", cFrom )
|
|
else
|
|
cBlock := fReadStr( hFile, 4 )
|
|
nSymbols := asc(substr(cBlock,1,1)) +;
|
|
asc(substr(cBlock,2,1)) *256 +;
|
|
asc(substr(cBlock,3,1)) *65536 +;
|
|
asc(substr(cBlock,4,1)) *16777216
|
|
for n := 1 to nSymbols
|
|
cBlock := fReadStr( hFile, 1 )
|
|
do while asc( cBlock ) != 0
|
|
QQOut( cBlock )
|
|
cBlock := fReadStr( hFile, 1 )
|
|
enddo
|
|
cScope := fReadStr( hFile, 1 )
|
|
QQOut(" Scope ", Hex2Val(asc(cScope)))
|
|
cScope := fReadStr( hFile, 1 )
|
|
nIdx := asc( cScope ) + 1
|
|
QQOut(" Type ", aTypes[ nIdx ] )
|
|
QOut()
|
|
next n
|
|
|
|
cBlock := fReadStr( hFile, 4 )
|
|
nFuncs := asc(substr(cBlock,1,1)) +;
|
|
asc(substr(cBlock,2,1)) *256 +;
|
|
asc(substr(cBlock,3,1)) *65536 +;
|
|
asc(substr(cBlock,4,1)) *16777216
|
|
for n := 1 to nFuncs
|
|
QOut()
|
|
cBlock := fReadStr( hFile, 1 )
|
|
do while asc( cBlock ) != 0
|
|
QQOut( cBlock )
|
|
cBlock := fReadStr( hFile, 1 )
|
|
enddo
|
|
QOut( "Len = " )
|
|
cBlock := fReadStr( hFile, 4 )
|
|
|
|
nLenCount := asc(substr(cBlock,1,1)) +;
|
|
asc(substr(cBlock,2,1)) *256 +;
|
|
asc(substr(cBlock,3,1)) *65536 +;
|
|
asc(substr(cBlock,4,1)) *16777216 +1
|
|
QQOut( str(nLenCount) )
|
|
QOut()
|
|
|
|
for m:=1 to nLenCount
|
|
cBlock := fReadStr( hFile, 1 )
|
|
nVal := asc( cBlock )
|
|
QQOut( Hex2Val( nVal ) )
|
|
if nVal > 32 .and. nVal < 128
|
|
QQOut( "("+cBlock+")" )
|
|
endif
|
|
if m != nLenCount
|
|
QQOut(",")
|
|
endif
|
|
next m
|
|
next n
|
|
|
|
fClose( cFrom )
|
|
end if
|
|
set( _SET_ALTERNATE, .F. )
|
|
return nil
|
|
|
|
|
|
function Hex2Val( nVal )
|
|
|
|
return HexDigit( int(nVal / 16) ) + HexDigit( int(nVal % 16) )
|
|
|
|
function HexDigit( nDigit )
|
|
|
|
return iif(nDigit>=10, chr( 55 + nDigit ), chr( 48 + nDigit ) )
|