* Removed error thrown when trying to build help index if the documentation is installed on a read only file system and tries to store the index file in current directory. (Closes Debian bug#662814)

git-svn-id: trunk@21990 -
This commit is contained in:
mazen 2012-07-31 10:37:03 +00:00
parent 944189f046
commit f6deb01295
2 changed files with 45 additions and 25 deletions

View File

@ -132,13 +132,48 @@ begin
end;
procedure THelpFilesDialog.HandleEvent(var Event: TEvent);
function StoreHtmlIndexFile(const FileName: string; LS: PFPHTMLFileLinkScanner;var Re: Word; SilentFails: Boolean): Boolean;
var
BS: PBufStream;
begin
if ExistsFile(FileName) then
if ConfirmBox(FormatStrStr(msg_filealreadyexistsoverwrite,FileName),nil,true)<>cmYes then
Re:=cmCancel;
if Re<>cmCancel then
begin
PushStatus(FormatStrStr(msg_storinghtmlindexinfile,FileName));
New(BS, Init(FileName, stCreate, 4096));
if Assigned(BS)=false then
begin
if not SilentFails then
begin
ErrorBox(FormatStrStr(msg_cantcreatefile,FileName),nil);
end;
Re:=cmCancel;
end
else
begin
LS^.StoreDocuments(BS^);
if BS^.Status<>stOK then
begin
if not SilentFails then
begin
ErrorBox(FormatStrInt(msg_errorstoringindexdata,BS^.Status),nil);
end;
Re:=cmCancel;
end;
Dispose(BS, Done);
end;
PopStatus;
end;
StoreHtmlIndexFile := Re <> cmCancel;
end;
var I: integer;
D: PFileDialog;
FileName: string;
Re: word;
S: string;
LS: PFPHTMLFileLinkScanner;
BS: PBufStream;
begin
case Event.What of
evKeyDown :
@ -193,30 +228,15 @@ begin
else
begin
FileName:=DirAndNameOf(FileName)+HTMLIndexExt;
if ExistsFile(FileName) then
if ConfirmBox(FormatStrStr(msg_filealreadyexistsoverwrite,FileName),nil,true)<>cmYes then
Re:=cmCancel;
if Re<>cmCancel then
if not StoreHtmlIndexFile(FileName, LS, Re, True) then
begin
PushStatus(FormatStrStr(msg_storinghtmlindexinfile,FileName));
New(BS, Init(FileName, stCreate, 4096));
if Assigned(BS)=false then
begin
ErrorBox(FormatStrStr(msg_cantcreatefile,FileName),nil);
Re:=cmCancel;
end
else
begin
LS^.StoreDocuments(BS^);
if BS^.Status<>stOK then
begin
ErrorBox(FormatStrInt(msg_errorstoringindexdata,BS^.Status),nil);
Re:=cmCancel;
end;
Dispose(BS, Done);
end;
PopStatus;
end;
Re:=ConfirmBox(FormatStrStr('Could not create "%s", try creating it in local dir?', FileName),nil,true);
FileName := GetCurDir + NameAndExtOf(FileName);
if Re = cmYes then
begin
StoreHtmlIndexFile(FileName, LS, Re, False);
end;
end
end;
Dispose(LS, Done);
PopStatus;

View File

@ -1615,7 +1615,7 @@ begin
OK:=Assigned(LS);
if OK then
begin
LS^.SetBaseDir(DirOf(IndexFileName));
{LS^.SetBaseDir(DirOf(IndexFileName)); already set by LoadDocuments to real base dire stored into htx file. This allows storing toc file in current dir in case doc installation dir is read only.}
for I:=0 to LS^.GetDocumentCount-1 do
begin
TLI:=TopicLinks^.AddItem(LS^.GetDocumentURL(I));