mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: Haiku initial support
This commit is contained in:
parent
0bcb9b1d7c
commit
ebd030ca48
13 changed files with 106 additions and 49 deletions
|
|
@ -28,7 +28,7 @@ unit DCUnix;
|
|||
interface
|
||||
|
||||
uses
|
||||
InitC, BaseUnix, SysUtils;
|
||||
InitC, BaseUnix, UnixType, SysUtils;
|
||||
|
||||
const
|
||||
{$IF DEFINED(LINUX)}
|
||||
|
|
@ -38,6 +38,9 @@ const
|
|||
O_CLOEXEC = &04000000;
|
||||
{$ELSEIF DEFINED(NETBSD)}
|
||||
O_CLOEXEC = $00400000;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
FD_CLOEXEC = 1;
|
||||
O_CLOEXEC = $00000040;
|
||||
{$ELSE}
|
||||
O_CLOEXEC = 0;
|
||||
{$ENDIF}
|
||||
|
|
@ -90,9 +93,14 @@ type
|
|||
pw_change: time_t; //en< password change time
|
||||
pw_class: PChar; //en< user access class
|
||||
{$ENDIF}
|
||||
{$IF NOT DEFINED(HAIKU)}
|
||||
pw_gecos: PChar; //en< real name
|
||||
{$ENDIF}
|
||||
pw_dir: PChar; //en< home directory
|
||||
pw_shell: PChar; //en< shell program
|
||||
{$IF DEFINED(HAIKU)}
|
||||
pw_gecos: PChar; //en< real name
|
||||
{$ENDIF}
|
||||
{$IF DEFINED(BSD)}
|
||||
pw_expire: time_t; //en< account expiration
|
||||
pw_fields: cint; //en< internal: fields filled in
|
||||
|
|
@ -215,6 +223,10 @@ const
|
|||
{$ELSEIF DEFINED(BSD)}
|
||||
_SC_OPEN_MAX = 5;
|
||||
RLIM_INFINITY = rlim_t(High(QWord) shr 1);
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
_SC_OPEN_MAX = 20;
|
||||
RLIMIT_NOFILE = 4;
|
||||
RLIM_INFINITY = $ffffffff;
|
||||
{$ENDIF}
|
||||
|
||||
procedure tzset(); cdecl; external clib;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ uses
|
|||
Classes, SysUtils, BaseUnix, TermIO, InitC, VTEmuCtl;
|
||||
|
||||
// Under Linux and BSD forkpty is situated in libutil.so library
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{$LINKLIB util}
|
||||
{$ENDIF}
|
||||
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ uses
|
|||
, BaseUnix, Unix, uMyUnix, dl
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, CocoaAll, uMyDarwin
|
||||
{$ELSE}
|
||||
{$ELSEIF NOT DEFINED(HAIKU)}
|
||||
, uGio, uClipboard, uXdg, uKde
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
|
@ -400,6 +400,10 @@ begin
|
|||
CFRelease(theFileNameUrlRef);
|
||||
end;
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= False;
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
sCmdLine: String;
|
||||
|
|
@ -466,6 +470,7 @@ var
|
|||
sbfs: TStatFS;
|
||||
begin
|
||||
Result := High(Int64);
|
||||
{$IF NOT DEFINED(HAIKU)}
|
||||
if (fpStatFS(PAnsiChar(CeUtf8ToSys(Path)), @sbfs) = 0) then
|
||||
begin
|
||||
{$IFDEF BSD}
|
||||
|
|
@ -475,6 +480,7 @@ begin
|
|||
{$ENDIF}
|
||||
Result:= $FFFFFFFF; // 4 Gb
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ var
|
|||
|
||||
implementation
|
||||
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{$DEFINE X11}
|
||||
{$ENDIF}
|
||||
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ uses
|
|||
{$IF (NOT DEFINED(FPC_USE_LIBC)) or (DEFINED(BSD) AND NOT DEFINED(DARWIN))}
|
||||
, SysCall
|
||||
{$ENDIF}
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
, uMimeActions, uMimeType, uGVolume
|
||||
{$ENDIF}
|
||||
{$IFDEF LINUX}
|
||||
|
|
@ -373,7 +373,7 @@ begin
|
|||
end;
|
||||
|
||||
function GetDefaultAppCmd(const FileName: String): String;
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
var
|
||||
Filenames: TStringList;
|
||||
begin
|
||||
|
|
@ -391,7 +391,7 @@ end;
|
|||
{$ENDIF}
|
||||
|
||||
function GetFileMimeType(const FileName: String): String;
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
begin
|
||||
Result:= uMimeType.GetFileMimeType(FileName);
|
||||
end;
|
||||
|
|
@ -521,7 +521,7 @@ function UnmountDrive(Drive: PDrive): Boolean;
|
|||
begin
|
||||
if Drive^.IsMounted then
|
||||
begin
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if Drive^.DriveType = dtSpecial then
|
||||
begin
|
||||
Exit(uGVolume.Unmount(Drive^.Path));
|
||||
|
|
@ -546,7 +546,7 @@ end;
|
|||
|
||||
function EjectDrive(Drive: PDrive): Boolean;
|
||||
begin
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
Result:= uGVolume.Eject(Drive^.Path);
|
||||
if not Result then
|
||||
{$ENDIF}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ function GetPipeFileName(const FileName: String; Global : Boolean): String;
|
|||
begin
|
||||
{$IF DEFINED(DARWIN)}
|
||||
Result:= NSGetTempPath + FileName;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
Result:= IncludeTrailingBackslash(GetTempDir) + FileName;
|
||||
{$ELSE}
|
||||
Result:= IncludeTrailingBackslash(GetUserRuntimeDir) + FileName;
|
||||
{$ENDIF}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ uses
|
|||
fMain, fFileProperties, DCOSUtils, DCStrUtils, uExts, uArchiveFileSourceUtil
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, MacOSAll
|
||||
{$ELSE}
|
||||
{$ELSEIF NOT DEFINED(HAIKU)}
|
||||
, uKeyFile, uMimeActions, uOSForms, uSysFolders
|
||||
{$IF DEFINED(LINUX)}
|
||||
, uRabbitVCS
|
||||
|
|
@ -92,7 +92,7 @@ var
|
|||
// list.
|
||||
ContextMenuActionList: TExtActionList = nil;
|
||||
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
|
||||
function GetGnomeTemplateMenu(out Items: TStringList): Boolean;
|
||||
var
|
||||
|
|
@ -197,7 +197,7 @@ end;
|
|||
|
||||
function GetTemplateMenu(out Items: TStringList): Boolean;
|
||||
begin
|
||||
{$IF DEFINED(DARWIN)}
|
||||
{$IF DEFINED(DARWIN) OR DEFINED(HAIKU)}
|
||||
Result:= False;
|
||||
{$ELSE}
|
||||
case GetDesktopEnvironment of
|
||||
|
|
@ -322,7 +322,7 @@ var
|
|||
I: LongInt;
|
||||
FileNames: TStringList;
|
||||
begin
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
FileNames := TStringList.Create;
|
||||
for I := 0 to FFiles.Count - 1 do
|
||||
FileNames.Add(FFiles[I].FullPath);
|
||||
|
|
@ -417,6 +417,10 @@ begin
|
|||
CFRelease(ApplicationArrayRef);
|
||||
end;
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= False;
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
I: LongInt;
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ procedure ShowTrashContextMenu(Parent: TWinControl; X, Y : Integer;
|
|||
}
|
||||
function ShowOpenIconDialog(Owner: TCustomControl; var sFileName : String) : Boolean;
|
||||
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{en
|
||||
Show open with dialog
|
||||
@param(FileList List of files to open with)
|
||||
|
|
@ -139,15 +139,12 @@ uses
|
|||
{$ENDIF}
|
||||
{$IFDEF UNIX}
|
||||
, BaseUnix, Errors, fFileProperties, uJpegThumb, uOpenDocThumb
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, MacOSAll, uQuickLook, uMyDarwin
|
||||
{$ELSEIF NOT DEFINED(HAIKU)}
|
||||
, uDCReadSVG, uMagickWand, uGio, uGioFileSource, uVfsModule, uVideoThumb
|
||||
, uDCReadWebP, uFolderThumb, uAudioThumb, uDefaultTerminal, uDCReadHEIF
|
||||
, uTrashFileSource
|
||||
{$ELSE}
|
||||
, MacOSAll, uQuickLook, uMyDarwin
|
||||
{$ENDIF}
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
, fOpenWith
|
||||
, uTrashFileSource, fOpenWith
|
||||
{$ENDIF}
|
||||
{$IF DEFINED(LCLQT) and not DEFINED(DARWIN)}
|
||||
, qt4, qtwidgets
|
||||
|
|
@ -639,7 +636,7 @@ begin
|
|||
with TfrmMain(MainForm) do
|
||||
StaticTitle:= StaticTitle + ' - ROOT PRIVILEGES';
|
||||
end;
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if HasGio then
|
||||
begin
|
||||
if TGioFileSource.IsSupportedPath('trash://') then
|
||||
|
|
@ -944,7 +941,7 @@ begin
|
|||
end;
|
||||
{$ENDIF}
|
||||
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
procedure ShowOpenWithDialog(TheOwner: TComponent; const FileList: TStringList);
|
||||
begin
|
||||
fOpenWith.ShowOpenWithDlg(TheOwner, FileList);
|
||||
|
|
|
|||
|
|
@ -51,15 +51,15 @@ uses
|
|||
, fgl
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
, DCFileAttributes
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, CocoaUtils, uMyDarwin
|
||||
{$ELSEIF NOT DEFINED(HAIKU)}
|
||||
, Contnrs, uGio
|
||||
{$IFDEF LCLGTK2}
|
||||
, gtk2
|
||||
{$ELSE}
|
||||
, uUnixIconTheme
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
, CocoaUtils, uMyDarwin
|
||||
{$ENDIF}
|
||||
{$ENDIF};
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ type
|
|||
FOneDrivePath: String;
|
||||
{$ELSEIF DEFINED(DARWIN)}
|
||||
FUseSystemTheme: Boolean;
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT DEFINED(HAIKU)}
|
||||
{en
|
||||
Maps file extension to MIME icon name(s).
|
||||
}
|
||||
|
|
@ -205,7 +205,7 @@ type
|
|||
function GetSystemArchiveIcon: PtrInt;
|
||||
function GetSystemExecutableIcon: PtrInt;
|
||||
{$ENDIF}
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{en
|
||||
Loads MIME icons names and creates a mapping: file extension -> MIME icon name.
|
||||
Doesn't need to be synchronized as long as it's only called from Load().
|
||||
|
|
@ -230,7 +230,7 @@ type
|
|||
{$ENDIF}
|
||||
function GetBuiltInDriveIcon(Drive : PDrive; IconSize : Integer; clBackColor : TColor) : Graphics.TBitmap;
|
||||
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
procedure LoadApplicationThemeIcon;
|
||||
{$ENDIF}
|
||||
|
||||
|
|
@ -698,7 +698,7 @@ procedure TPixMapManager.CreateIconTheme;
|
|||
var
|
||||
DirList: array of string;
|
||||
begin
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{$IFDEF LCLGTK2}
|
||||
// get current gtk theme
|
||||
FIconTheme:= gtk_icon_theme_get_for_screen(gdk_screen_get_default);
|
||||
|
|
@ -723,7 +723,7 @@ end;
|
|||
|
||||
procedure TPixMapManager.DestroyIconTheme;
|
||||
begin
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
{$IFDEF LCLGTK2}
|
||||
FIconTheme:= nil;
|
||||
{$ELSE}
|
||||
|
|
@ -734,7 +734,7 @@ begin
|
|||
FreeThenNil(FDCIconTheme);
|
||||
end;
|
||||
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
|
||||
procedure TPixMapManager.LoadMimeIconNames;
|
||||
const
|
||||
|
|
@ -1132,7 +1132,7 @@ var
|
|||
begin
|
||||
// This function must be called under FPixmapsLock.
|
||||
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
Result := nil;
|
||||
// Try to load icon from system theme
|
||||
if gShowIcons > sim_standart then
|
||||
|
|
@ -1425,7 +1425,7 @@ begin
|
|||
|
||||
{$IF DEFINED(DARWIN)}
|
||||
FUseSystemTheme:= NSAppKitVersionNumber >= 1038;
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT DEFINED(HAIKU)}
|
||||
FExtToMimeIconName := TFPDataHashTable.Create;
|
||||
FHomeFolder := IncludeTrailingBackslash(GetHomeDir);
|
||||
{$ENDIF}
|
||||
|
|
@ -1460,7 +1460,7 @@ destructor TPixMapManager.Destroy;
|
|||
var
|
||||
I : Integer;
|
||||
K: TDriveType;
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
J : Integer;
|
||||
nodeList: TFPObjectList;
|
||||
{$ENDIF}
|
||||
|
|
@ -1493,7 +1493,7 @@ begin
|
|||
|
||||
{$IF DEFINED(MSWINDOWS)}
|
||||
ImageList_Destroy(FSysImgList);
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
for I := 0 to FExtToMimeIconName.HashTable.Count - 1 do
|
||||
begin
|
||||
nodeList := TFPObjectList(FExtToMimeIconName.HashTable.Items[I]);
|
||||
|
|
@ -1531,7 +1531,7 @@ begin
|
|||
// (via LoadPixMapManager in doublecmd.lpr).
|
||||
|
||||
// Load icon themes.
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if gShowIcons > sim_standart then
|
||||
begin
|
||||
LoadMimeIconNames; // For use with GetMimeIcon
|
||||
|
|
@ -1699,7 +1699,7 @@ begin
|
|||
|
||||
(* /Set archive icons *)
|
||||
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
LoadApplicationThemeIcon;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
|
@ -1986,7 +1986,7 @@ begin
|
|||
// and contains desktop.ini file
|
||||
(not (DirectAccess and (IsSysFile or FileIsReadOnly(Attributes)) and mbFileExists(FullPath + '\desktop.ini'))) or
|
||||
(ScreenInfo.ColorDepth < 16) then
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if (IconsMode = sim_all_and_exe) and (DirectAccess) then
|
||||
begin
|
||||
if not LoadIcon then Exit(-1);
|
||||
|
|
@ -2032,7 +2032,7 @@ begin
|
|||
|
||||
if (Extension = '') then
|
||||
begin
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$IF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if IconsMode = sim_all_and_exe then
|
||||
begin
|
||||
if DirectAccess and (Attributes and S_IXUGO <> 0) then
|
||||
|
|
@ -2067,7 +2067,7 @@ begin
|
|||
else if Ext = 'ico' then
|
||||
Exit(FiDefaultIconID)
|
||||
end;
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT DEFINED(DARWIN)}
|
||||
{$ELSEIF DEFINED(UNIX) AND NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
if IconsMode = sim_all_and_exe then
|
||||
begin
|
||||
if DirectAccess and ((Ext = 'desktop') or (Ext = 'directory')) then
|
||||
|
|
@ -2090,7 +2090,7 @@ begin
|
|||
if IconsMode <= sim_standart then
|
||||
Exit(FiDefaultIconID);
|
||||
|
||||
{$IF DEFINED(UNIX)}
|
||||
{$IF DEFINED(UNIX) AND NOT DEFINED(HAIKU)}
|
||||
|
||||
if LoadIcon = False then
|
||||
Exit(-1);
|
||||
|
|
@ -2354,7 +2354,7 @@ begin
|
|||
// 'Bitmap' should not be freed, because it only points to DriveIconList.
|
||||
end;
|
||||
|
||||
{$IF NOT DEFINED(DARWIN)}
|
||||
{$IF NOT (DEFINED(DARWIN) OR DEFINED(HAIKU))}
|
||||
|
||||
procedure TPixMapManager.LoadApplicationThemeIcon;
|
||||
var
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ uses
|
|||
, BaseUnix, Unix, DCUnix
|
||||
{$IF DEFINED(DARWIN)}
|
||||
, CocoaAll, uMyDarwin
|
||||
{$ELSE}
|
||||
{$ELSEIF NOT DEFINED(HAIKU)}
|
||||
, uXdg
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
|
@ -110,6 +110,10 @@ end;
|
|||
begin
|
||||
Result:= GetHomeDir + '/Library/Preferences/' + ApplicationName;
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= GetHomeDir + '/config/settings/' + ApplicationName;
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
uinfo: PPasswordRecord;
|
||||
|
|
@ -136,6 +140,10 @@ end;
|
|||
begin
|
||||
Result:= NSGetFolderPath(NSCachesDirectory);
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= GetHomeDir + '/config/cache/' + ApplicationName;
|
||||
end;
|
||||
{$ELSE}
|
||||
var
|
||||
uinfo: PPasswordRecord;
|
||||
|
|
@ -157,6 +165,10 @@ end;
|
|||
begin
|
||||
Result:= NSGetFolderPath(NSApplicationSupportDirectory);
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= GetAppConfigDir;
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
Result:= IncludeTrailingPathDelimiter(GetUserDataDir) + ApplicationName;
|
||||
|
|
|
|||
|
|
@ -70,7 +70,10 @@ uses
|
|||
{$IF DEFINED(MSWINDOWS)}
|
||||
Windows,
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
ipc, baseunix, uPipeServer,
|
||||
baseunix, uPipeServer,
|
||||
{$IFNDEF HAIKU}
|
||||
ipc,
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
Forms, StrUtils, FileUtil, uRegExprA, uGlobs, uDebug;
|
||||
|
||||
|
|
@ -137,6 +140,10 @@ begin
|
|||
Result:= True;
|
||||
end;
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
Result:= True;
|
||||
end;
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
const
|
||||
SEM_PERM = 6 shl 6 { 0600 };
|
||||
|
|
@ -221,6 +228,10 @@ procedure TUniqueInstance.DisposeMutex;
|
|||
{$IF DEFINED(MSWINDOWS)}
|
||||
begin
|
||||
ReleaseMutex(FHandle);
|
||||
end;
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
begin
|
||||
|
||||
end;
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
var
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ const
|
|||
SCM_RIGHTS = $01; //* Transfer file descriptors. */
|
||||
|
||||
type
|
||||
msglen_t = {$IFDEF BSD}cint{$ELSE}size_t{$ENDIF};
|
||||
msglen_t = {$IF DEFINED(BSD) OR DEFINED(HAIKU)}cint{$ELSE}size_t{$ENDIF};
|
||||
|
||||
Pmsghdr = ^msghdr;
|
||||
msghdr = record
|
||||
|
|
@ -53,6 +53,19 @@ function recvmsg(__fd: cInt; __message: pmsghdr; __flags: cInt): ssize_t; cdecl;
|
|||
|
||||
{$IF DEFINED(LINUX)}
|
||||
|
||||
type
|
||||
ucred = record
|
||||
pid : pid_t;
|
||||
uid : uid_t;
|
||||
gid : gid_t;
|
||||
end;
|
||||
|
||||
{$ELSEIF DEFINED(HAIKU)}
|
||||
|
||||
const
|
||||
MSG_NOSIGNAL = $0800;
|
||||
SO_PEERCRED = $4000000;
|
||||
|
||||
type
|
||||
ucred = record
|
||||
pid : pid_t;
|
||||
|
|
@ -133,7 +146,7 @@ begin
|
|||
end;
|
||||
|
||||
procedure SetSocketClientProcessId(fd: cint);
|
||||
{$IF DEFINED(LINUX) OR DEFINED(DARWIN)}
|
||||
{$IF DEFINED(LINUX) OR DEFINED(DARWIN) OR DEFINED(HAIKU)}
|
||||
begin
|
||||
|
||||
end;
|
||||
|
|
@ -178,7 +191,7 @@ end;
|
|||
{$ENDIF}
|
||||
|
||||
function GetSocketClientProcessId(fd: cint): pid_t;
|
||||
{$IF DEFINED(LINUX)}
|
||||
{$IF DEFINED(LINUX) OR DEFINED(HAIKU)}
|
||||
var
|
||||
cred: ucred;
|
||||
ALength: TSockLen;
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ end;
|
|||
{$ENDIF}
|
||||
|
||||
initialization
|
||||
{$IF DEFINED(DARWIN)}
|
||||
{$IF DEFINED(DARWIN) OR DEFINED(HAIKU)}
|
||||
FAdministratorPrivileges:= True;
|
||||
{$ELSEIF DEFINED(UNIX)}
|
||||
{$IFDEF LINUX}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue