makehtm.pp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. {$mode objfpc}
  2. {$h+}
  3. program makehtm;
  4. uses sysutils;
  5. Var
  6. Verbose : Boolean;
  7. FileCount : Boolean;
  8. Procedure ConvertFile (FileName : String);
  9. Var
  10. OFileName : String;
  11. Infile,OutFile : Text;
  12. Line : String;
  13. begin
  14. Try
  15. OFileName:=ChangeFileExt(FileName,'.htm');
  16. If Verbose then
  17. Writeln('Converting ',FileName,' to ',OFileName)
  18. else
  19. Write('.');
  20. Assign(InFile,FileName);
  21. Assign(OutFile,OFileName);
  22. Reset(Infile);
  23. Try
  24. Rewrite(OutFile);
  25. Try
  26. While Not EOF(Infile) do
  27. begin
  28. ReadLn(Infile,Line);
  29. Line:=Stringreplace(Line,'.html','.htm',[rfReplaceAll]);
  30. Writeln(OutFile,Line);
  31. end
  32. Finally
  33. Close(OutFile);
  34. end;
  35. finally
  36. Close(InFile);
  37. end;
  38. except
  39. On E : Exception do
  40. Writeln('Error converting ',FileName,' to ',OFileName,' : ',E.Message);
  41. end;
  42. end;
  43. Function DoDirectory(DirName : String; Recurse : Boolean) : Integer;
  44. Var
  45. Info : TSearchRec;
  46. begin
  47. Result:=0;
  48. DirName:=IncludeTrailingPathDelimiter(DirName);
  49. If FindFirst(Dirname+'*.html',0,Info)=0 then
  50. Try
  51. Repeat
  52. ConvertFile(DirName+Info.Name);
  53. Inc(Result);
  54. Until (FindNext(Info)<>0);
  55. Finally
  56. FindClose(Info);
  57. end;
  58. If Recurse then
  59. If FindFirst(Dirname+'*',faDirectory,Info)=0 then
  60. Try
  61. Repeat
  62. With Info do
  63. If ((Attr and faDirectory)<>0) and (Name<>'.') and (Name<>'..') then
  64. Result:=Result+DoDirectory(DirName+Name,Recurse);
  65. Until (FindNext(Info)<>0);
  66. Finally
  67. FindClose(Info);
  68. end;
  69. end;
  70. Procedure DoDirs;
  71. Var
  72. I : integer;
  73. Count,Total : Integer;
  74. Dir : String;
  75. begin
  76. Total:=0;
  77. for I:=1 to ParamCount do
  78. begin
  79. Dir:=Paramstr(I);
  80. if (Dir<>'-v') then
  81. begin
  82. Count:=DoDirectory(Dir,True);
  83. if Not verbose then
  84. Writeln;
  85. Writeln('Directory ',Dir,' : ',Count,' files.');
  86. Total:=Total+Count;
  87. end;
  88. end;
  89. Writeln('Total files ',Total);
  90. end;
  91. Procedure DoParams;
  92. Var
  93. I : integer;
  94. begin
  95. For I:=1 to ParamCount do
  96. If paramstr(i)='-v' then
  97. Verbose:=True;
  98. end;
  99. begin
  100. DoParams;
  101. DoDirs;
  102. end.