diff --git a/harbour/utils/hbdoc/ft_funcs.prg b/harbour/utils/hbdoc/ft_funcs.prg
index 2a298be56f..09fcadd144 100644
--- a/harbour/utils/hbdoc/ft_funcs.prg
+++ b/harbour/utils/hbdoc/ft_funcs.prg
@@ -39,8 +39,18 @@
#include 'common.ch'
#define xReadBuffer 4096
-
-STATIC TheHandle
+DECLARE FT_FUSE(CFILE AS CHAR,NMODE AS NUMERIC) AS NUMERIC
+DECLARE ft_FEOF() AS LOGICAL
+DECLARE FReadLn( cLine ) AS CHARACTER
+DECLARE FT_FReadLn() AS CHARACTER
+DECLARE FT_FGotop() AS VARIANT
+DECLARE FT_FSKIP(n AS NUMERIC) AS VARIANT
+DECLARE FT_MKDIR( CDIR AS CHARACTER) AS VARIANT
+DECLARE StrPos( cBuffer AS CHARACTER ) AS NUMERIC
+DECLARE GetNumberofTableItems( cBuffer AS CHARACTER) AS NUMERIC
+DECLARE FREADline( nH AS NUMERIC, @cB AS char, nMaxLine AS NUMERIC)
+DECLARE FILEBASE() AS OBJECT
+STATIC TheHandle As Object
/****
* FT_FUSE(cFile,nMode) ---> nHandle
* Open a File
@@ -52,8 +62,8 @@ STATIC TheHandle
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION FT_FUSE( cFile, nMode )
-
+FUNCTION FT_FUSE( cFile as CHARACTER, nMode AS NUMERIC)
+ Local nHandle as numeric
IF nMode == nil
nMode := 2
ENDIF
@@ -67,7 +77,8 @@ FUNCTION FT_FUSE( cFile, nMode )
theHandle := FileBase():new( cFile ):open()
ENDIF
ENDIF
-RETURN theHandle:nHan
+ nHandle:= theHandle:nHan
+RETURN nHandle
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
@@ -78,8 +89,7 @@ RETURN theHandle:nHan
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
FUNCTION ft_FEOF()
-
- LOCAL lRETURN := theHandle:lAtBottom
+ LOCAL lRETURN as LOGICAL := theHandle:lAtBottom
RETURN lRETURN
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
@@ -90,7 +100,7 @@ RETURN lRETURN
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION FReadLn( nH, cLine )
+FUNCTION FReadLn( cLine AS CHARACTER)
cLine := theHandle:retrieve()
RETURN cLine
@@ -105,9 +115,9 @@ RETURN cLine
*+
FUNCTION FT_FReadLn()
- LOCAL cBuffer := ''
+ LOCAL cBuffer AS CHARACTER := ''
- cBuffer := FReadLn( theHandle:nHan, @cBuffer )
+ cBuffer := FReadLn( @cBuffer )
cBuffer := STRTRAN( cBuffer, CHR( 13 ), '' )
@@ -133,7 +143,7 @@ RETURN NIL
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION FT_FSKIP( n )
+FUNCTION FT_FSKIP( n AS NUMERIC)
TheHandle:Skip( n )
RETURN nil
@@ -146,7 +156,7 @@ RETURN nil
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION FT_MKDIR( CDIR )
+FUNCTION FT_MKDIR( CDIR AS CHARACTER)
MAKEDIR( cdir )
@@ -161,12 +171,11 @@ RETURN nil
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION StrPos( cBuffer )
+FUNCTION StrPos( cBuffer as CHARACTER)
- LOCAL nPos
- LOCAL x
- LOCAL cChar
- DEFAULT nPos TO 0
+ LOCAL nPos AS NUMERIC :=0
+ LOCAL x AS NUMERIC
+ LOCAL cChar AS CHARACTER
FOR x := 1 TO LEN( cBuffer )
cChar := SUBSTR( cBuffer, x, 1 )
IF cChar >= CHR( 64 ) .AND. cChar <= CHR( 90 ) .OR. cChar >= CHR( 97 ) ;
@@ -201,8 +210,8 @@ RETURN nPos
*+
FUNCTION GetNumberofTableItems( cBuffer )
- LOCAL cItem
- LOCAL nItem := 0
+ LOCAL cItem AS CHARACTER
+ LOCAL nItem AS NUMERIC := 0
cBuffer := ALLTRIM( cBuffer )
@@ -218,7 +227,7 @@ FUNCTION GetNumberofTableItems( cBuffer )
nItem ++
RETURN nItem
-#define EOL CHR(13)+CHR(10)
+#define EOL hb_osnewline()
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
@@ -229,12 +238,13 @@ FUNCTION GetNumberofTableItems( cBuffer )
*+
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
-FUNCTION FREADline( nH, cB, nMaxLine )
+FUNCTION FREADline( nH as Num, cB as Char, nMaxLine as Numeric)
- LOCAL cLine
- LOCAL nSavePos
- LOCAL nEol
- LOCAL nNumRead
+ LOCAL cLine as CHARACTER
+ LOCAL nSavePos AS NUMERIC
+ LOCAL nEol AS NUMERIC
+ LOCAL nNumRead AS NUMERIC
+ LOCAL lReturn as Logical
cLine := SPACE( nMaxLine )
cB := ''
nSavePos := FSEEK( nH, 0, FS_RELATIVE )
@@ -245,6 +255,7 @@ FUNCTION FREADline( nH, cB, nMaxLine )
cB := SUBSTR( cLine, 1, nEol - 1 )
FSEEK( nH, nSavePos + nEol + 1, FS_SET )
ENDIF
-RETURN nNumRead != 0
+ lReturn := (nNumRead != 0)
+RETURN lReturn
*+ EOF: FT_FUNCS.PRG
diff --git a/harbour/utils/hbdoc/genhtm.prg b/harbour/utils/hbdoc/genhtm.prg
index 0e5ab02352..d7bc53cd42 100644
--- a/harbour/utils/hbdoc/genhtm.prg
+++ b/harbour/utils/hbdoc/genhtm.prg
@@ -257,6 +257,11 @@ FUNCTION ProcessWww()
oHtm:WriteText( "" )
oHtm:Close()
ENDIF
+ Elseif empty(cSeeAlso)
+ IF lDoc
+ oHtm:WriteText( "" )
+ oHtm:Close()
+ ENDIF
ENDIF
lDoc := .F.
diff --git a/harbour/utils/hbdoc/genng.prg b/harbour/utils/hbdoc/genng.prg
index d372c01d8a..2f7f0c1f39 100644
--- a/harbour/utils/hbdoc/genng.prg
+++ b/harbour/utils/hbdoc/genng.prg
@@ -1515,7 +1515,7 @@ FUNCTION ProcNGDesc( cBuffer, oNgi, cStyle )
IF AT( '
', cBuffer ) > 0
DO WHILE !lendTable
cLine := TRIM( SUBSTR( ReadLN( @lEof ), nCommentLen ) )
- IF AT( "
", cLine ) > 0
+ IF AT( "", cLine ) > 0 .or. AT( "", cLine ) > 0
lendTable := .t.
ELSE
IF LFstTableItem
diff --git a/harbour/utils/hbdoc/hbdoc.prg b/harbour/utils/hbdoc/hbdoc.prg
index 2f6877b846..ab02561a8f 100644
--- a/harbour/utils/hbdoc/hbdoc.prg
+++ b/harbour/utils/hbdoc/hbdoc.prg
@@ -124,6 +124,7 @@ MEMVAR lNorton
MEMVAR aWWW
MEMVAR lTroff
STATIC cTitle:=''
+
/*
*/
@@ -140,23 +141,15 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
LOCAL aExtensions := { "*.ch", "*.prg", "*.c", "*.asm", "*.txt" }
LOCAL i
- LOCAL j
LOCAL nItem
LOCAL nHpj
LOCAL cItem:=''
- LOCAL nPos
+
LOCAL cCompiler // Compiler type
- // Include norton compatable switch for EH
- LOCAL lDone // Done with a loop
- LOCAL cMi // Name params
- LOCAL cLName // Name params
- LOCAL cFName // Name params
- LOCAL aName // Tokenized name
- LOCAL nLen // Length of the token array
LOCAL oHtm
LOCAL oHtm1
LOCAL ppp
- LOCAL cTemp
+ LOCAL aMetaContents:={}
PUBLIC theHandle
PUBLIC aDirList
PUBLIC aDocInfo := {}
@@ -255,7 +248,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
CLEAR SCREEN
SET CURSOR OFF
- ReadLinkFile( cLinkName )
+ ReadLinkFile( cLinkName )
cCompiler := fill_Link_info( cLinkName )
// See if ngi subdirectory is present
@@ -440,9 +433,9 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
asort(adocinfo,,,{|x,y| x[1]+x[2]'+adocinfo[1,1]+'
')
ohtm:WriteText("")
@@ -454,7 +447,13 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
ohtm:WriteText("
")
ohtm:close()
citem:=adocinfo[ppp,1]
- ohtm:=THTML():new('htm\hb'+strtran(adocinfo[ppp,1]," ","")+'.htm')
+ aMetaContents:={}
+ AADD(aMetaContents,{"GENERATOR","HBDOC Harbour document Extractor"})
+ aadd(aMetaContents,{'Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,"+cItem})
+
+ ohtm:=THTML():new('htm\hb'+strtran(adocinfo[ppp,1]," ","")+'.htm',aMetaContents)
+
+// oHtm:WriteMetaTag('Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,"+cItem)
ohtm:WriteText(''+adocinfo[ppp,1]+'
')
ohtm:WriteText("")
oHtm:Writelink(adocinfo[ppp,4],UpperLower(adocinfo[ppp,2]))
@@ -465,7 +464,12 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
endif
enddo
ohtm:close()
- oHtm1 := THTML():New( "htm\harbour.htm" )
+ aMetaContents:={}
+ AADD(aMetaContents,{"GENERATOR","HBDOC Harbour document Extractor"})
+ aadd(aMetaContents,{'Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,"+cItem})
+
+ oHtm1 := THTML():New( "htm\harbour.htm" ,aMetaContents)
+// oHtm:WriteMetaTag('Keywords',"Harbour project, Clipper, xBase, database, Free Software, GNU, compiler, cross platform, 32-bit, FiveWin,Harbour Documentation")
oHtm1:WriteTitle( "Harbour Reference Guide" )
oHtm1:WriteText( "Harbour Reference Guide
" )
oHtm1:WriteText( "HARBOUR
" + hb_osnEwline() + '' )
@@ -1153,7 +1157,6 @@ STATIC FUNCTION ReadLinkFile( cFile )
LOCAL cBuffer := ''
LOCAL NPOS := 0
- LOCAL nlenpos
Local cLine
Local cVer:=''
LOCAL aLocDoc := {}
diff --git a/harbour/utils/hbdoc/html.prg b/harbour/utils/hbdoc/html.prg
index 9f8d2ef514..6e5a23fd2e 100644
--- a/harbour/utils/hbdoc/html.prg
+++ b/harbour/utils/hbdoc/html.prg
@@ -48,18 +48,21 @@ CLASS THTML
DATA nHandle
DATA cFile
- METHOD New( cFile )
+ METHOD New( cFile ,aMetaContents)
METHOD WriteTitle( cTitle )
METHOD WritePar( cPar )
METHOD WriteParBold( cPar )
METHOD WriteLink( cLink )
METHOD WriteText( cText )
+ METHOD WriteMetaTag(cTag,cDescription)
METHOD CLOSE()
ENDCLASS
-METHOD New( cFile ) CLASS THTML
-
+METHOD New( cFile,aMetaContents ) CLASS THTML
+
+ Local nCount
+ ? Valtype(aMetaContents)
IF Nx > 0
FCLOSE( NX )
ENDIF
@@ -69,6 +72,12 @@ METHOD New( cFile ) CLASS THTML
Self:nHandle := FCREATE( Self:cFile )
ENDIF
nX := Self:nHandle
+ FWRITE( Self:nHandle, "" + CRLF )
+ if Valtype(aMetaContents) <> NIL .and. Valtype(aMetaContents)=="A"
+ For nCount:=1 to len(aMetaContents)
+ Self:WriteMetaTag(aMetaContents[nCount,1],aMetaContents[nCount,2])
+ NEXT
+ Endif
FWRITE( Self:nHandle, "" + CRLF )
RETURN Self
@@ -111,7 +120,7 @@ RETURN Self
METHOD CLOSE() CLASS THTML
FWRITE( Self:nHandle, "" + CRLF )
-
+ FWRITE( Self:nHandle, "" + CRLF )
FCLOSE( Self:nHandle )
RETURN Self
@@ -143,4 +152,8 @@ METHOD WriteLink( cLink, cName ) CLASS THTML
RETURN Self
+METHOD WriteMetaTag(cTag,cDescription) Class THtml
+ fWrite(Self:nHandle,''+CRLF)
+return Self
+
*+ EOF: HTML.PRG