123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- {
- $Id$
- This file is part of the Free Pascal run time library.
- Copyright (c) 2004 by Karoly Balogh for Genesi Sarl
- System unit for MorphOS.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- { These things are set in the makefile, }
- { But you can override them here.}
- { If you use an aout system, set the conditional AOUT}
- { $Define AOUT}
- Unit {$ifdef VER1_0}Sysmorph{$else}System{$endif};
- Interface
- {$define FPC_IS_SYSTEM}
- {$I sysunixh.inc}
- Implementation
- {$I system.inc}
- { OS dependant parts }
- {$I errno.inc} // error numbers
- {$I bunxtype.inc} // c-types, unix base types, unix
- // base structures
- {$I ossysc.inc} // base syscalls
- {$I osmain.inc} // base wrappers *nix RTL (derivatives)
- { more OS independant parts}
- {$I text.inc}
- {$I heap.inc}
- {*****************************************************************************
- UnTyped File Handling
- *****************************************************************************}
- {$i file.inc}
- {*****************************************************************************
- Typed File Handling
- *****************************************************************************}
- {$i typefile.inc}
- procedure SysInitStdIO;
- begin
- OpenStdIO(Input,fmInput,StdInputHandle);
- OpenStdIO(Output,fmOutput,StdOutputHandle);
- OpenStdIO(StdOut,fmOutput,StdOutputHandle);
- OpenStdIO(StdErr,fmOutput,StdErrorHandle);
- end;
- procedure SysInitExecPath;
- var
- hs : string[16];
- link : string;
- i : longint;
- begin
- str(Fpgetpid,hs);
- hs:='/proc/'+hs+'/exe'#0;
- i:=Fpreadlink(@hs[1],@link[1],high(link));
- { it must also be an absolute filename, linux 2.0 points to a memory
- location so this will skip that }
- if (i>0) and (link[1]='/') then
- begin
- link[0]:=chr(i);
- ExecPathStr:=link;
- end;
- end;
- Begin
- IsConsole := TRUE;
- IsLibrary := FALSE;
- StackLength := InitialStkLen;
- StackBottom := Sptr - StackLength;
- { Set up signals handlers }
- InstallSignals;
- { Setup heap }
- InitHeap;
- SysInitExceptions;
- { Arguments }
- SetupCmdLine;
- SysInitExecPath;
- { Setup stdin, stdout and stderr }
- SysInitStdIO;
- { Reset IO Error }
- InOutRes:=0;
- (* This should be changed to a real value during *)
- (* thread driver initialization if appropriate. *)
- ThreadID := 1;
- {$ifdef HASVARIANT}
- initvariantmanager;
- {$endif HASVARIANT}
- End.
- {
- $Log$
- Revision 1.1 2004-02-13 07:19:53 karoly
- * quick hack from Linux system unit
- }
|