mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 17:20:08 +02:00
144 lines
3.0 KiB
ObjectPascal
144 lines
3.0 KiB
ObjectPascal
{
|
|
$Id$
|
|
This file is part of the Free Pascal run time library.
|
|
Copyright (c) 1999-2000 by the Free Pascal development team
|
|
|
|
Convert .html to htm files, together with links.
|
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
for details about the copyright.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
**********************************************************************}
|
|
{$mode objfpc}
|
|
{$h+}
|
|
program makehtm;
|
|
|
|
uses sysutils;
|
|
|
|
Var
|
|
Verbose : Boolean;
|
|
FileCount : Boolean;
|
|
DeleteHtml : Boolean;
|
|
|
|
Procedure ConvertFile (FileName : String);
|
|
|
|
Var
|
|
OFileName : String;
|
|
Infile,OutFile : Text;
|
|
Line : String;
|
|
|
|
begin
|
|
Try
|
|
OFileName:=ChangeFileExt(FileName,'.htm');
|
|
If Verbose then
|
|
Writeln('Converting ',FileName,' to ',OFileName)
|
|
else
|
|
Write('.');
|
|
Assign(InFile,FileName);
|
|
Assign(OutFile,OFileName);
|
|
Reset(Infile);
|
|
Try
|
|
Rewrite(OutFile);
|
|
Try
|
|
While Not EOF(Infile) do
|
|
begin
|
|
ReadLn(Infile,Line);
|
|
Line:=Stringreplace(Line,'.html','.htm',[rfReplaceAll]);
|
|
Writeln(OutFile,Line);
|
|
end
|
|
Finally
|
|
Close(OutFile);
|
|
end;
|
|
finally
|
|
Close(InFile);
|
|
end;
|
|
If DeleteHtml then
|
|
begin
|
|
If Verbose then
|
|
Writeln('Deleting input file : ',FileName);
|
|
DeleteFile(FileName);
|
|
end;
|
|
except
|
|
On E : Exception do
|
|
Writeln('Error converting ',FileName,' to ',OFileName,' : ',E.Message);
|
|
end;
|
|
end;
|
|
|
|
Function DoDirectory(DirName : String; Recurse : Boolean) : Integer;
|
|
|
|
Var
|
|
Info : TSearchRec;
|
|
|
|
begin
|
|
Result:=0;
|
|
DirName:=IncludeTrailingPathDelimiter(DirName);
|
|
If FindFirst(Dirname+'*.html',0,Info)=0 then
|
|
Try
|
|
Repeat
|
|
ConvertFile(DirName+Info.Name);
|
|
Inc(Result);
|
|
Until (FindNext(Info)<>0);
|
|
Finally
|
|
FindClose(Info);
|
|
end;
|
|
If Recurse then
|
|
If FindFirst(Dirname+'*',faDirectory,Info)=0 then
|
|
Try
|
|
Repeat
|
|
With Info do
|
|
If ((Attr and faDirectory)<>0) and (Name<>'.') and (Name<>'..') then
|
|
Result:=Result+DoDirectory(DirName+Name,Recurse);
|
|
Until (FindNext(Info)<>0);
|
|
Finally
|
|
FindClose(Info);
|
|
end;
|
|
end;
|
|
|
|
Procedure DoDirs;
|
|
|
|
Var
|
|
I : integer;
|
|
Count,Total : Integer;
|
|
Dir : String;
|
|
|
|
begin
|
|
Total:=0;
|
|
for I:=1 to ParamCount do
|
|
begin
|
|
Dir:=Paramstr(I);
|
|
if (Dir<>'-v') then
|
|
begin
|
|
Count:=DoDirectory(Dir,True);
|
|
if Not verbose then
|
|
Writeln;
|
|
Writeln('Directory ',Dir,' : ',Count,' files.');
|
|
Total:=Total+Count;
|
|
end;
|
|
end;
|
|
Writeln('Total files ',Total);
|
|
end;
|
|
|
|
Procedure DoParams;
|
|
|
|
Var
|
|
I : integer;
|
|
|
|
begin
|
|
Verbose:=False;
|
|
DeleteHtml:=False;
|
|
For I:=1 to ParamCount do
|
|
If paramstr(i)='-v' then
|
|
Verbose:=True
|
|
else if paramstr(i)='-r' then
|
|
DeleteHtml:=True;
|
|
end;
|
|
|
|
begin
|
|
DoParams;
|
|
DoDirs;
|
|
end.
|