Index: rtl/unix/unxdeclh.inc =================================================================== --- rtl/unix/unxdeclh.inc (revision 7420) +++ rtl/unix/unxdeclh.inc (working copy) @@ -18,11 +18,18 @@ {$ifdef solaris} Function fpFlock (fd,mode : longint) : cint;{$ifdef IN_SYSTEM}forward;{$endif IN_SYSTEM} {$else solaris} +{$ifndef beos} Function fpFlock (fd,mode : longint) : cint; cdecl; external clib name 'flock'; +{$endif beos} {$endif solaris} +{$ifndef beos} Function fStatFS(Fd:Longint;Var Info:tstatfs):cint; cdecl; external clib name 'fstatfs'; +{$endif beos} + Function fsync (fd : cint) : cint; cdecl; external clib name 'fsync'; +{$ifndef beos} Function StatFS (Path:pchar;Var Info:tstatfs):cint; cdecl; external clib name 'statfs'; +{$endif beos} function pipe (var fildes: filedesarray):cint; cdecl; external clib name 'pipe'; function fpgettimeofday(tp: ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'gettimeofday'; Index: rtl/unix/initc.pp =================================================================== --- rtl/unix/initc.pp (revision 7420) +++ rtl/unix/initc.pp (working copy) @@ -72,6 +72,10 @@ function geterrnolocation: pcint; cdecl;external clib name '___errno'; {$endif} +{$ifdef beos} +function geterrnolocation: pcint; cdecl;external 'root' name '_errnop'; +{$endif} + function fpgetCerrno:cint; begin Index: rtl/unix/sockets.pp =================================================================== --- rtl/unix/sockets.pp (revision 7420) +++ rtl/unix/sockets.pp (working copy) @@ -44,10 +44,14 @@ EsockEINVAL = EsysEINVAL; EsockEACCESS = ESysEAcces; EsockEMFILE = ESysEmfile; +{$ifndef beos} EsockEMSGSIZE = ESysEMsgSize; +{$endif beos} EsockENOBUFS = ESysENoBufs; EsockENOTCONN = ESysENotConn; +{$ifndef beos} EsockENOTSOCK = ESysENotSock; +{$endif beos} EsockEPROTONOSUPPORT = ESysEProtoNoSupport; EsockEWOULDBLOCK = ESysEWouldBlock; Index: rtl/unix/ttyname.inc =================================================================== --- rtl/unix/ttyname.inc (revision 7420) +++ rtl/unix/ttyname.inc (working copy) @@ -54,14 +54,15 @@ mysearch:=true; exit; end; - end - else if (ino_t(d^.d_fileno)=myino) and (st.st_dev=mydev) then + end; + // BeOS +{ else if (ino_t(d^.d_fileno)=myino) and (st.st_dev=mydev) then begin fpclosedir(dirstream^); ttyname:=name; mysearch:=true; exit; - end; + end;} end; d:=fpReaddir(dirstream^); end; @@ -73,8 +74,8 @@ TTYName:=''; if (fpfstat(handle,st)=-1) or (isatty (handle)<>1) then exit; - mydev:=st.st_dev; - myino:=st.st_ino; +// BeOS mydev:=st.st_dev; +// BeOS myino:=st.st_ino; mysearch('/dev'); end; Index: rtl/unix/oscdeclh.inc =================================================================== --- rtl/unix/oscdeclh.inc (revision 7420) +++ rtl/unix/oscdeclh.inc (working copy) @@ -75,7 +75,11 @@ function fpmmap (addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external clib name 'mmap'+suffix64bit; function fpmunmap (addr:pointer;len:size_t):cint; cdecl; external clib name 'munmap'; function FpIOCtl (Handle:cint;Ndx: culong;Data: Pointer):cint; cdecl; external clib name 'ioctl'; +{$ifdef beos} + Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external 'net' name 'select'; +{$else} Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external clib name 'select'; +{$endif} function fpgetenv (name : pchar):pchar; cdecl; external clib name 'getenv'; Function FpKill (pid : TPid; sig: cInt): cInt; cdecl; external clib name 'kill'; Function FpGetpid : TPid; cdecl;external clib name 'getpid'; @@ -99,7 +103,10 @@ {$linklib aio} Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep'; {$else solaris} +{$ifndef beos} Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep'; +{$else} +{$endif} {$endif solaris} function fpNice (N:cint):cint; cdecl; external clib name 'nice'; Function fpGetPriority (Which,Who:cint):cint; cdecl; external clib name 'getpriority'; @@ -107,7 +114,11 @@ Function fpSymlink (oldname,newname:pchar):cint; cdecl; external clib name 'symlink'; Function fpReadLink (name,linkname:pchar;maxlen:size_t):cint; cdecl; external clib name 'readlink'; Function FpUmask (cmask : TMode): TMode; cdecl; external clib name 'umask'; +{$ifndef beos} function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'settimeofday'; +{$else} +// function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; +{$endif} function FpGetRLimit(resource : cInt; rlim : PRLimit) : cInt; cdecl; external clib name 'getrlimit'; {$ifdef HAS_UGETRLIMIT} { there is no ugetrlimit libc call, just map it to the getrlimit call in these cases } Index: rtl/unix/unix.pp =================================================================== --- rtl/unix/unix.pp (revision 7420) +++ rtl/unix/unix.pp (working copy) @@ -570,13 +570,17 @@ Function fpFlock (var T : text;mode : cint) : cint; begin +{$ifndef beos} fpFlock:=fpFlock(TextRec(T).Handle,mode); +{$endif} end; Function fpFlock (var F : File;mode : cint) :cint; begin +{$ifndef beos} fpFlock:=fpFlock(FileRec(F).Handle,mode); +{$endif} end; Function SelectText(var T:Text;TimeOut :PTimeval):cint; @@ -623,11 +627,13 @@ fpseterrno(ESysEBADF); exit; end; - {$if not(defined(bsd)) and not(defined(solaris)) } + {$if not(defined(bsd)) and not(defined(solaris)) and not(defined(beos)) } p^.dd_nextoff:=fplseek(p^.dd_fd,loc,seek_set); {$endif} + {$if not(defined(beos))} p^.dd_size:=0; p^.dd_loc:=0; + {$endif} end; function TellDir(p:pdir):TOff; @@ -638,7 +644,9 @@ telldir:=-1; exit; end; + {$ifndef beos} telldir:=fplseek(p^.dd_fd,0,seek_cur) + {$endif} { We could try to use the nextoff field here, but on my 1.2.13 kernel, this gives nothing... This may have to do with the readdir implementation of libc... I also didn't find any trace of Index: rtl/inc/lineinfo.pp =================================================================== --- rtl/inc/lineinfo.pp (revision 7420) +++ rtl/inc/lineinfo.pp (working copy) @@ -815,8 +815,45 @@ {$ifdef beos} {$i osposixh.inc} -{$i syscall.inc} -{$i beos.inc} + +{ ------------------------- Images --------------------------- } + +type + // Descriptive formats + status_t = Longint; + team_id = Longint; + image_id = Longint; + + { image types } +const + B_APP_IMAGE = 1; + B_LIBRARY_IMAGE = 2; + B_ADD_ON_IMAGE = 3; + B_SYSTEM_IMAGE = 4; + +type + image_info = packed record + id : image_id; + _type : longint; + sequence: longint; + init_order: longint; + init_routine: pointer; + term_routine: pointer; + device: dev_t; + node: ino_t; + name: array[0..MAXPATHLEN-1] of char; +{ name: string[255]; + name2: string[255]; + name3: string[255]; + name4: string[255]; + name5: string[5]; +} + text: pointer; + data: pointer; + text_size: longint; + data_size: longint; + end; + function get_next_image_info(team: team_id; var cookie:longint; var info:image_info; size: size_t) : status_t;cdecl; external 'root' name '_get_next_image_info'; function LoadElf32Beos:boolean; Index: compiler/systems/i_beos.pas =================================================================== --- compiler/systems/i_beos.pas (revision 7420) +++ compiler/systems/i_beos.pas (working copy) @@ -57,7 +57,7 @@ Cprefix : ''; newline : #10; dirsep : '/'; - assem : as_gas; + assem : as_i386_elf32; assemextern : as_gas; link : nil; linkextern : nil; Index: fv/platform.inc =================================================================== --- fv/platform.inc (revision 7420) +++ fv/platform.inc (working copy) @@ -206,6 +206,12 @@ {$DEFINE OS_UNIX} {$ENDIF} +{$IFDEF BEOS} + {$UNDEF OS_DOS} + {$DEFINE OS_BEOS} + {$DEFINE OS_UNIX} +{$ENDIF} + {------------------------------------------------} { FPC Netware COMPILER changes operating system } {------------------------------------------------} Index: packages/base/Makefile.fpc =================================================================== --- packages/base/Makefile.fpc (revision 7420) +++ packages/base/Makefile.fpc (working copy) @@ -16,6 +16,8 @@ mysql ibase postgres oracle odbc imagemagick httpd dirs_openbsd=gdbint libasync \ mysql ibase postgres oracle odbc imagemagick httpd +dirs_beos=gdbint libasync graph \ + mysql ibase postgres odbc sqlite pthreads imagemagick dirs_freebsd=gdbint libasync graph \ mysql ibase postgres oracle odbc sqlite pthreads imagemagick httpd dirs_darwin=libasync \ Index: packages/base/libasync/Makefile.fpc =================================================================== --- packages/base/libasync/Makefile.fpc (revision 7420) +++ packages/base/libasync/Makefile.fpc (working copy) @@ -14,6 +14,7 @@ [compiler] sourcedir_linux=unix +sourcedir_beos=unix sourcedir_freebsd=unix sourcedir_darwin=unix sourcedir_solaris=unix Index: packages/base/gdbint/gdbint.pp =================================================================== --- packages/base/gdbint/gdbint.pp (revision 7420) +++ packages/base/gdbint/gdbint.pp (working copy) @@ -219,6 +219,30 @@ {$LINKLIB user32} {$endif win32} +{$ifdef beos} + { still need some work... stollen from netbsd} + {$undef NotImplemented} + {$LINKLIB gdb} + {$ifdef GDB_HAS_SIM} + {$LINKLIB sim} + {$endif GDB_HAS_SIM} + {$LINKLIB bfd} + {$LINKLIB readline} + {$LINKLIB opcodes} + {$LINKLIB history} + {$LINKLIB iberty} + {$LINKLIB ncurses} + {$LINKLIB m} + {$LINKLIB iberty} + {$LINKLIB intl} + {$ifdef GDB_USES_EXPAT_LIB} + {$LINKLIB expat} + {$endif GDB_USES_EXPAT_LIB} + { does not seem to exist on netbsd LINKLIB dl} + {$LINKLIB c} + {$LINKLIB gcc} +{$endif beos} + {$ifdef go32v2} {$define supportexceptions} {$endif go32v2} Index: packages/fcl-base/Makefile.fpc =================================================================== --- packages/fcl-base/Makefile.fpc (revision 7420) +++ packages/fcl-base/Makefile.fpc (working copy) @@ -9,6 +9,7 @@ [require] packages=paszlib hash packages_linux=netdb libasync pthreads +packages_beos=netdb libasync pthreads packages_freebsd=netdb libasync pthreads packages_darwin=netdb libasync pthreads packages_solaris=netdb libasync pthreads @@ -34,6 +35,7 @@ iostream zstream cachecls avl_tree \ eventlog custapp cgiapp wformat whtml wtex rttiutils bufstream \ streamex blowfish zipper streamio inicol pooledmm libtar streamcoll +units_beos=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf units_freebsd=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp units_darwin=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp units_solaris=process ssockets resolve fpasync syncobjs simpleipc dbugmsg dbugintf daemonapp