diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-12-13 14:32:58 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-12-13 14:32:58 +0100 |
| commit | 0f7616a007edaa1d19c4672a4fd390c072b1eba6 (patch) | |
| tree | a1524927d8986bb54345c47ded84bb3c2a9559c2 /UCore.pas | |
| parent | ae0047b8a5fa76ea76c66d8c5c580eba39178755 (diff) | |
| download | tuxcmd-0f7616a007edaa1d19c4672a4fd390c072b1eba6.tar.xz | |
Error system transformation to GErrorv0.6.74
Note that most coreworkers are broken at the moment.
Diffstat (limited to 'UCore.pas')
| -rw-r--r-- | UCore.pas | 119 |
1 files changed, 71 insertions, 48 deletions
@@ -46,7 +46,7 @@ procedure GetDirSize(AListView: TGTKListView; Engine: TPanelEngine; DataList: TL procedure FillDefaultFstabMounterItems; function CRCGetInfo(FileName: string; Engine: TPanelEngine; var TargetName: string; var TargetCRC: LongWord; var Size: Int64): boolean; -function WriteCRCFile(Engine: TPanelEngine; TargetFile, SplitFileName: string; const FileSize: Int64; const FileCRC: Longword): boolean; +function WriteCRCFile(Sender: TObject; Engine: TPanelEngine; TargetFile, SplitFileName: string; const FileSize: Int64; const FileCRC: Longword): boolean; function ComputeBlockSize(TotalSize: Int64): longint; @@ -110,7 +110,7 @@ var LeftLocalEngine, RightLocalEngine: TPanelEngine; implementation (********************************************************************************************************************************) uses SysUtils, DateUtils, StrUtils, UConfig, UDirDelete, UOverwrite, ULocale, - UNewDir, UFileAssoc, USymlink, UCoreClasses, URemoteWait, UMain, UGnome; + UNewDir, UFileAssoc, USymlink, UCoreClasses, URemoteWait, UMain, UGnome, UError; @@ -416,9 +416,11 @@ var DirStage1List, FilesList, DirStage2List: TList; Item: PDataItem; ItemSL: PDataItemSL; ParentDir: string; + Error: PGError; begin LocalList := TList.Create; - if Engine.GetListing(LocalList, LocalPath, True, False, True) = 0 then begin + Error := nil; + if Engine.GetListing(LocalList, LocalPath, True, False, True, @Error) then begin if not SortForStream then FillDirFiles_sort(LocalList); for i := 0 to LocalList.Count - 1 do begin Item := LocalList[i]; @@ -436,8 +438,14 @@ var DirStage1List, FilesList, DirStage2List: TList; if Item^.IsDir then begin // Recurse to parent ParentDir := IncludeTrailingPathDelimiter(string(Item^.FName)); - if Engine.ChangeDir(ParentDir) = 0 then - FillDirFiles_Recurse(ParentDir, ALevel + 1); + Error := nil; + if Engine.ChangeDir(ParentDir, @Error) then + FillDirFiles_Recurse(ParentDir, ALevel + 1) + else begin + // * TODO: report and handle errors? we should make sure that user knows some of his data won't be copied + DebugMsg(['*** FillDirFiles_Recurse: error changing dir to ''', LocalPath, ''': ', Error^.message]); + g_error_free(Error); + end; // Add end stage ItemSL := DuplicateDataItem(ItemSL); ItemSL^.Stage1 := False; @@ -446,6 +454,9 @@ var DirStage1List, FilesList, DirStage2List: TList; end; end; end else begin + // * TODO: report and handle errors? we should make sure that user knows some of his data won't be copied + DebugMsg(['*** FillDirFiles_Recurse: error getting listing of ''', LocalPath, ''': ', Error^.message]); + g_error_free(Error); // Clear remaining items (in case of error) for i := 0 to LocalList.Count - 1 do FreeDataItem(PDataItem(LocalList[i])); @@ -511,7 +522,8 @@ var ItemSL: PDataItemSL; begin ItemSL := malloc(sizeof(TDataItemSL)); memset(ItemSL, 0, sizeof(TDataItemSL)); - ItemSL^.DataItem := Engine.GetFileInfo(APath, False, True); + // * TODO: report errors? same way as for FillDirFiles + ItemSL^.DataItem := Engine.GetFileInfo(APath, False, True, nil); ItemSL^.Stage1 := True; ItemSL^.Level := 1; Result := ItemSL; @@ -584,21 +596,13 @@ end; (********************************************************************************************************************************) (********************************************************************************************************************************) function MakeDirectory(ListView: TGTKListView; Engine: TPanelEngine; LeftPanel: boolean; NewDir: string): boolean; -var Error: integer; +var Error: PGError; begin - Result := False; - try - Error := Engine.MakeDir(IncludeTrailingPathDelimiter(Engine.Path) + NewDir); - if Error <> 0 then begin - Application.MessageBox(Format(LANGErrorCreatingNewDirectorySInSPanel, [StrToUTF8(NewDir), LANGPanelStrings[LeftPanel], GetErrorString(Error)]), [mbOK], mbError, mbNone, mbOK); - Exit; - end; - Result := True; - except - on E: Exception do begin - Application.MessageBox(Format(LANGErrorCreatingNewDirectorySInSPanelNoPath, [LANGPanelStrings[LeftPanel], E.Message]), [mbOK], mbError, mbNone, mbOK); - Exit; - end; + Error := nil; + Result := Engine.MakeDir(IncludeTrailingPathDelimiter(Engine.Path) + NewDir, @Error); + if not Result then begin + ShowError(FMain, Format('Error creating new directory ''%s'' in %s panel', [StrToUTF8(NewDir), LANGPanelStrings[LeftPanel]]), Error); + g_error_free(Error); end; end; @@ -607,10 +611,11 @@ function CreateSymlink(const FileName, PossibleNewName: string; Engine: TPanelEn var AFSymLink: TFSymlink; function HandleCreateSymlink(const OldName, NewName: string): boolean; - var Res, Response: integer; + var Response: integer; + Error: PGError; begin - Res := Engine.MakeSymLink(NewName, OldName); - Result := Res = 0; + Error := nil; + Result := Engine.MakeSymLink(NewName, OldName, @Error); if not Result then begin try FDirDelete := TFDirDelete.Create(AFSymlink); @@ -618,9 +623,10 @@ var AFSymLink: TFSymlink; FDirDelete.AddButtons(2); FDirDelete.Label1.Caption := LANGTheSymbolicLink; FDirDelete.Label2.Caption := NewName; - FDirDelete.Label3.Caption := Format(LANGCouldNotBeCreatedS, [GetErrorString(Res)]); + FDirDelete.Label3.Caption := Format(LANGCouldNotBeCreatedS, [Error^.message]); FDirDelete.Label3.Visible := True; Response := Integer(FDirDelete.Run); + g_error_free(Error); finally FDirDelete.Free; end; @@ -657,10 +663,11 @@ var Data: PDataItem; AFSymLink: TFSymlink; function HandleEditSymlink(const ExistingName, PointTo: string): boolean; - var Res, Response: integer; + var Response: integer; + Error: PGError; begin - Res := Engine.Remove(ExistingName); - Result := Res = 0; + Error := nil; + Result := Engine.Remove(ExistingName, @Error); if not Result then begin try FDirDelete := TFDirDelete.Create(AFSymlink); @@ -668,9 +675,10 @@ var Data: PDataItem; FDirDelete.AddButtons(2); FDirDelete.Label1.Caption := LANGTheSymbolicLink; FDirDelete.Label2.Caption := StrToUTF8(ExistingName); - FDirDelete.Label3.Caption := Format(LANGCouldNotBeDeletedS, [GetErrorString(Res)]); + FDirDelete.Label3.Caption := Format(LANGCouldNotBeDeletedS, [Error^.message]); FDirDelete.Label3.Visible := True; Response := Integer(FDirDelete.Run); + g_error_free(Error); finally FDirDelete.Free; end; @@ -679,8 +687,9 @@ var Data: PDataItem; end; Exit; end; - Res := Engine.MakeSymLink(ExistingName, PointTo); - Result := Res = 0; + + Error := nil; + Result := Engine.MakeSymLink(ExistingName, PointTo, @Error); if not Result then begin try FDirDelete := TFDirDelete.Create(AFSymlink); @@ -688,9 +697,10 @@ var Data: PDataItem; FDirDelete.AddButtons(2); FDirDelete.Label1.Caption := LANGTheSymbolicLink; FDirDelete.Label2.Caption := StrToUTF8(ExistingName); - FDirDelete.Label3.Caption := Format(LANGCouldNotBeCreatedS, [GetErrorString(Res)]); + FDirDelete.Label3.Caption := Format(LANGCouldNotBeCreatedS, [Error^.message]); FDirDelete.Label3.Visible := True; Response := Integer(FDirDelete.Run); + g_error_free(Error); finally FDirDelete.Free; end; @@ -703,7 +713,7 @@ var Data: PDataItem; begin Result := False; - Data := Engine.GetFileInfo(FileName, False, True); + Data := Engine.GetFileInfo(FileName, False, True, nil); if Data = nil then begin Result := False; Exit; @@ -869,10 +879,11 @@ function CRCGetInfo(FileName: string; Engine: TPanelEngine; var TargetName: stri end; const CRCBlockSize = 32768; -var i, Error, Count, Start: integer; +var i, Count, Start: integer; FD: TEngineFileDes; Buffer: Pointer; s: string; + Error: PGError; begin Result := False; if Pos('.', FileName) > 1 then FileName := ChangeFileExt(FileName, '.crc') @@ -884,15 +895,21 @@ begin Application.MessageBox(LANGAnErrorOccuredWhileInitializingMemoryBlock, [mbOK], mbError, mbNone, mbOK); Exit; end; - FD := Engine.OpenFile(FileName, omRead, Error); - if Error <> 0 then Exit; + Error := nil; + FD := Engine.OpenFile(FileName, omRead, @Error); + if Error <> nil then begin + g_error_free(nil); + Exit; + end; s := ''; repeat - Count := Engine.ReadFile(FD, Buffer, CRCBlockSize, Error); - if Error <> 0 then begin + Error := nil; + Count := Engine.ReadFile(FD, Buffer, CRCBlockSize, @Error); + if Error <> nil then begin libc_free(Buffer); - Engine.CloseFile(FD); + g_error_free(nil); + Engine.CloseFile(FD, nil); Exit; end; // processing begins @@ -911,33 +928,39 @@ begin until Count < CRCBlockSize; if Length(s) > 0 then ProcessLine(s); - Engine.CloseFile(FD); + Engine.CloseFile(FD, nil); libc_free(Buffer); Result := True; end; (********************************************************************************************************************************) -function WriteCRCFile(Engine: TPanelEngine; TargetFile, SplitFileName: string; const FileSize: Int64; const FileCRC: Longword): boolean; +function WriteCRCFile(Sender: TObject; Engine: TPanelEngine; TargetFile, SplitFileName: string; const FileSize: Int64; const FileCRC: Longword): boolean; var FD: TEngineFileDes; - Error, Count: integer; + Count: integer; s: string; + Error: PGError; begin Result := False; if Pos('.', TargetFile) > 1 then TargetFile := ChangeFileExt(TargetFile, '.crc') else TargetFile := TargetFile + '.crc'; - FD := Engine.OpenFile(TargetFile, omWrite, Error); - if Error <> 0 then begin - Application.MessageBox(Format(LANGAnErrorOccuredWhileOpeningFileSS, [TargetFile, GetErrorString(Error)]), [mbOK], mbError, mbNone, mbOK); + Error := nil; + FD := Engine.OpenFile(TargetFile, omWrite, @Error); + if FD = nil then begin + if Error <> nil then begin + ShowError(TCustomGTKForm(Sender), Format('An error occured while opening file ''%s''', [TargetFile]), Error); + g_error_free(Error); + end; Exit; end; s := Format('filename=%s'#13#10'size=%d'#13#10'crc32=%s'#13#10, [SplitFileName, FileSize, WideUpperCase(IntToHex(FileCRC, 8))]); - Count := Engine.WriteFile(FD, @s[1], Length(s), Error); - if (Error <> 0) or (Count <> Length(s)) then begin - Application.MessageBox(Format(LANGAnErrorOccuredWhileWritingFileSS, [TargetFile, GetErrorString(Error)]), [mbOK], mbError, mbNone, mbOK); + Count := Engine.WriteFile(FD, @s[1], Length(s), @Error); + if (Error <> nil) { or (Count <> Length(s)) } then begin + ShowError(TCustomGTKForm(Sender), Format('An error occured while writing file ''%s''', [TargetFile]), Error); + g_error_free(Error); Exit; end; - Engine.CloseFile(FD); + Engine.CloseFile(FD, nil); Result := True; end; |
