浏览代码

* fix resolve* functions for filesystems with backslashes.

git-svn-id: trunk@39061 -
marco 7 年之前
父节点
当前提交
d7f2ab0d28
共有 1 个文件被更改,包括 10 次插入2 次删除
  1. 10 2
      utils/fpdoc/dw_html.pp

+ 10 - 2
utils/fpdoc/dw_html.pp

@@ -962,19 +962,25 @@ function THTMLWriter.ResolveLinkID(const Name: String; Level : Integer = 0): DOM
 var
 var
   i: Integer;
   i: Integer;
   ThisPackage: TLinkNode;
   ThisPackage: TLinkNode;
+  s:String;
 begin
 begin
   Result:=Engine.ResolveLink(Module,Name, True);
   Result:=Engine.ResolveLink(Module,Name, True);
+  // engine can return backslashes on Windows
   if Length(Result) > 0 then
   if Length(Result) > 0 then
-    if Copy(Result, 1, Length(CurDirectory) + 1) = CurDirectory + '/' then
+   begin
+     s:=Copy(Result, 1, Length(CurDirectory) + 1);
+    if (S= CurDirectory + '/') or (s= CurDirectory + '\') then
       Result := Copy(Result, Length(CurDirectory) + 2, Length(Result))
       Result := Copy(Result, Length(CurDirectory) + 2, Length(Result))
     else if not IsLinkAbsolute(Result) then
     else if not IsLinkAbsolute(Result) then
       Result := BaseDirectory + Result;
       Result := BaseDirectory + Result;
+   end;
 end;
 end;
 
 
 function THTMLWriter.ResolveLinkWithinPackage(AElement: TPasElement;
 function THTMLWriter.ResolveLinkWithinPackage(AElement: TPasElement;
   ASubpageIndex: Integer): String;
   ASubpageIndex: Integer): String;
 var
 var
   ParentEl: TPasElement;
   ParentEl: TPasElement;
+  s : String;
 begin
 begin
   ParentEl := AElement;
   ParentEl := AElement;
   while Assigned(ParentEl) and not (ParentEl.ClassType = TPasPackage) do
   while Assigned(ParentEl) and not (ParentEl.ClassType = TPasPackage) do
@@ -982,7 +988,9 @@ begin
   if Assigned(ParentEl) and (TPasPackage(ParentEl) = Engine.Package) then
   if Assigned(ParentEl) and (TPasPackage(ParentEl) = Engine.Package) then
   begin
   begin
     Result := Allocator.GetFilename(AElement, ASubpageIndex);
     Result := Allocator.GetFilename(AElement, ASubpageIndex);
-    if Copy(Result, 1, Length(CurDirectory) + 1) = CurDirectory + '/' then
+    // engine/allocator can return backslashes on Windows
+    s:=Copy(Result, 1, Length(CurDirectory) + 1);
+    if (S= CurDirectory + '/') or (s= CurDirectory + '\') then
       Result := Copy(Result, Length(CurDirectory) + 2, Length(Result))
       Result := Copy(Result, Length(CurDirectory) + 2, Length(Result))
     else
     else
       Result := BaseDirectory + Result;
       Result := BaseDirectory + Result;