#ifndef  CLIB_DOS_PROTOS_H
#define  CLIB_DOS_PROTOS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  DOS_DOS_H
#include <dos/dos.h>
#endif
#ifndef  DOS_DOSEXTENS_H
#include <dos/dosextens.h>
#endif
#ifndef  DOS_RECORD_H
#include <dos/record.h>
#endif
#ifndef  DOS_RDARGS_H
#include <dos/rdargs.h>
#endif
#ifndef  DOS_DOSASL_H
#include <dos/dosasl.h>
#endif
#ifndef  DOS_VAR_H
#include <dos/var.h>
#endif
#ifndef  DOS_NOTIFY_H
#include <dos/notify.h>
#endif
#ifndef  DOS_DATETIME_H
#include <dos/datetime.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

BPTR Open( STRPTR name, long accessMode );
LONG Close( BPTR file );
LONG Read( BPTR file, APTR buffer, long length );
LONG Write( BPTR file, APTR buffer, long length );
BPTR Input( void );
BPTR Output( void );
LONG Seek( BPTR file, long position, long offset );
LONG DeleteFile( STRPTR name );
LONG Rename( STRPTR oldName, STRPTR newName );
BPTR Lock( STRPTR name, long type );
VOID UnLock( BPTR lock );
BPTR DupLock( BPTR lock );
LONG Examine( BPTR lock, struct FileInfoBlock *fileInfoBlock );
LONG ExNext( BPTR lock, struct FileInfoBlock *fileInfoBlock );
LONG Info( BPTR lock, struct InfoData *parameterBlock );
BPTR CreateDir( STRPTR name );
BPTR CurrentDir( BPTR lock );
LONG IoErr( void );
BPTR LoadSeg( STRPTR name );
LONG UnLoadSeg( BPTR seglist );
LONG SetComment( STRPTR name, STRPTR comment );
LONG SetProtection( STRPTR name, long protect );
struct DateStamp *DateStamp( struct DateStamp *date );
void Delay( long timeout );
BPTR ParentDir( BPTR lock );
LONG IsInteractive( BPTR file );
APTR AllocDosObject( unsigned long type, struct TagItem *tags );
APTR AllocDosObjectTagList( unsigned long type, struct TagItem *tags );
APTR AllocDosObjectTags( unsigned long type, unsigned long tag1type, ... );
void FreeDosObject( unsigned long type, APTR ptr );
BPTR SelectInput( BPTR fh );
BPTR SelectOutput( BPTR fh );
LONG FGetC( BPTR fh );
LONG FPutC( BPTR fh, long ch );
LONG UnGetC( BPTR fh, long character );
LONG FRead( BPTR fh, APTR block, unsigned long blocklen,unsigned long number );
LONG FWrite( BPTR fh, APTR block, unsigned long blocklen,unsigned long number );
STRPTR FGets( BPTR fh, STRPTR buf, unsigned long buflen );
LONG FPuts( BPTR fh, STRPTR str );
void VFWritef( BPTR fh, STRPTR format, LONG *argarray );
LONG VFPrintf( BPTR fh, STRPTR format, APTR argarray );
LONG FPrintf( BPTR fh, STRPTR format, ... );
LONG Flush( BPTR fh );
LONG SetVBuf( BPTR fh, STRPTR buff, long type, long size );
BPTR DupLockFromFH( BPTR fh );
BPTR OpenFromLock( BPTR lock );
BOOL ExamineFH( BPTR fh, struct FileInfoBlock *fib );
LONG SetFileDate( STRPTR name, struct DateStamp *date );
LONG NameFromLock( BPTR lock, STRPTR buffer, long len );
LONG NameFromFH( BPTR fh, STRPTR buffer, long len );
WORD SplitName(STRPTR name,unsigned long seperator,STRPTR buf,long oldpos,long size);
LONG SameLock( BPTR lock1, BPTR lock2 );
LONG SetMode( BPTR fh, long mode );
LONG ChangeMode( long type, BPTR fh, long newmode );
LONG SetIoErr( long result );
BOOL PrintFault( long code, STRPTR header );
struct Process *CreateNewProc( struct TagItem *tags );
struct Process *CreateNewProcTagList( struct TagItem *tags );
struct Process *CreateNewProcTags( unsigned long tag1type, ... );
BOOL SetCurrentDirName( STRPTR name );
BOOL GetCurrentDirName( STRPTR buf, long len );
BOOL SetPrompt( STRPTR name );
BOOL GetPrompt( STRPTR buf, long len );
BPTR SetProgramDir( BPTR lock );
BPTR GetProgramDir( void );
LONG SystemTagList( STRPTR command, struct TagItem *tags );
LONG System( STRPTR command, struct TagItem *tags );
LONG SystemTags( STRPTR command, unsigned long tag1type, ... );
BOOL IsFileSystem( STRPTR name );
LONG Relabel( STRPTR drive, STRPTR newname );
LONG Inhibit( STRPTR name, long onoff );
LONG AddBuffers( STRPTR name, long number );
LONG CompareDates( struct DateStamp *date1, struct DateStamp *date2 );
LONG DateToStr( struct DateTime *datetime );
LONG StrToDate( struct DateTime *datetime );
LONG CheckSignal( long mask );
struct RDArgs *ReadArgs( STRPTR arg_template, LONG *array,struct RDArgs *args );
LONG MatchFirst( STRPTR pat, struct AnchorPath *anchor );
LONG MatchNext( struct AnchorPath *anchor );
void MatchEnd( struct AnchorPath *anchor );
void FreeArgs( struct RDArgs *args );
STRPTR FilePart( STRPTR path );
STRPTR PathPart( STRPTR path );
BOOL AddPart( STRPTR dirname, STRPTR filename, unsigned long size );
BOOL StartNotify( struct NotifyRequest *notify );
void EndNotify( struct NotifyRequest *notify );
BOOL SetVar( STRPTR name, STRPTR buffer, long size, long flags );
LONG GetVar( STRPTR name, STRPTR buffer, long size, long flags );
LONG DeleteVar( STRPTR name, unsigned long flags );
struct LocalVar *FindVar( STRPTR name, unsigned long type );
BOOL SameDevice( BPTR lock1, BPTR lock2 );
void FWritef( BPTR fh, STRPTR format, ... );
LONG WriteChars( STRPTR buf, unsigned long buflen );
LONG PutStr( STRPTR str );
LONG VPrintf( STRPTR format, APTR argarray );
LONG Printf( STRPTR format, ... );
LONG Execute( STRPTR string, BPTR file, BPTR file2 );
LONG RunCommand( BPTR seg, long stack, STRPTR paramptr, long paramlen );
LONG AssignLock( STRPTR name, BPTR lock );
BOOL AssignLate( STRPTR name, STRPTR path );
BOOL AssignPath( STRPTR name, STRPTR path );
BOOL AssignAdd( STRPTR name, BPTR lock );
LONG RemAssignList( STRPTR name, BPTR lock );
BPTR NewLoadSeg( STRPTR file, struct TagItem *tags );
BPTR NewLoadSegTagList( STRPTR file, struct TagItem *tags );
BPTR NewLoadSegTags( STRPTR file, unsigned long tag1type, ... );


#ifdef __IGNORE_NOT_SUPPORTED__

  BOOL Fault( long code, STRPTR header, STRPTR buffer, long len );

  struct MsgPort *CreateProc( STRPTR name, long pri, BPTR segList,long stackSize );
  void Exit( long returnCode );
  struct MsgPort *DeviceProc( STRPTR name );
  LONG WaitForChar( BPTR file, long timeout );
  BOOL LockRecord( BPTR fh,ULONG offset,ULONG length,ULONG mode,ULONG timeout );
  BOOL LockRecords( struct RecordLock *recArray, unsigned long timeout );
  BOOL UnLockRecord( BPTR fh, unsigned long offset, unsigned long length );
  BOOL UnLockRecords( struct RecordLock *recArray );
  BPTR ParentOfFH( BPTR fh );
  LONG ExAll(BPTR lock,struct ExAllData *buffer,long size,long data,struct ExAllControl *control);
  LONG ReadLink(struct MsgPort*,BPTR lock,STRPTR path,STRPTR buffer,ULONG size );
  LONG MakeLink( STRPTR name, long dest, long soft );
  LONG SetFileSize( BPTR fh, long pos, long mode );
  LONG ErrorReport( long code, long type, unsigned long arg1,struct MsgPort *device );
  struct CommandLineInterface *Cli( void );
  struct MsgPort *GetConsoleTask( void );
  struct MsgPort *SetConsoleTask( struct MsgPort *task );
  struct MsgPort *GetFileSysTask( void );
  struct MsgPort *SetFileSysTask( struct MsgPort *task );
  STRPTR GetArgStr( void );
  BOOL SetArgStr( STRPTR string );
  struct Process *FindCliProc( unsigned long num );
  ULONG MaxCli( void );
  BOOL SetProgramName( STRPTR name );
  BOOL GetProgramName( STRPTR buf, long len );
  struct DevProc *GetDeviceProc( STRPTR name, struct DevProc *dp );
  void FreeDeviceProc( struct DevProc *dp );
  struct DosList *LockDosList( unsigned long flags );
  void UnLockDosList( unsigned long flags );
  struct DosList *AttemptLockDosList( unsigned long flags );
  BOOL RemDosEntry( struct DosList *dlist );
  LONG AddDosEntry( struct DosList *dlist );
  struct DosList *FindDosEntry( struct DosList *dlist, STRPTR name,unsigned long flags );
  struct DosList *NextDosEntry( struct DosList *dlist, unsigned long flags );
  struct DosList *MakeDosEntry( STRPTR name, long type );
  void FreeDosEntry( struct DosList *dlist );
  BOOL Format( STRPTR filesystem, STRPTR volumename, unsigned long dostype );
  BPTR InternalLoadSeg( BPTR fh, BPTR table, LONG *funcarray, LONG *stack );
  BOOL InternalUnLoadSeg( BPTR seglist, void (*freefunc)() );
  LONG AddSegment( STRPTR name, BPTR seg, long system );
  struct Segment *FindSegment( STRPTR name, struct Segment *seg, long system );
  LONG RemSegment( struct Segment *seg );
  LONG FindArg( STRPTR keyword, STRPTR arg_template );
  LONG ReadItem( STRPTR name, long maxchars, struct CSource *cSource );
  LONG StrToLong( STRPTR string, LONG *value );
  LONG ParsePattern( STRPTR pat, STRPTR buf, long buflen );
  BOOL MatchPattern( STRPTR pat, STRPTR str );
  LONG CliInitNewcli( struct DosPacket *dp );
  LONG CliInitRun( struct DosPacket *dp );
  LONG ParsePatternNoCase( STRPTR pat, STRPTR buf, long buflen );
  BOOL MatchPatternNoCase( STRPTR pat, STRPTR str );
  void ExAllEnd( BPTR lock, struct ExAllData *buffer, long size, long data,struct ExAllControl *control );
  BOOL SetOwner( STRPTR name, long owner_info );

#else  /** __IGNORE_NOT_SUPPORTED__ **/

#define Fault Fault_NOT_SUPPORTED
  BOOL Fault(struct NOT_SUPPORTED*, long code, STRPTR header, STRPTR buffer, long len );

#define CreateProc CreateProc_NOT_SUPPORTED
  struct MsgPort *CreateProc(struct NOT_SUPPORTED*, STRPTR name, long pri, BPTR segList,long stackSize );
#define Exit Exit_NOT_SUPPORTED
  void Exit(struct NOT_SUPPORTED*, long returnCode );
#define DeviceProc DeviceProc_NOT_SUPPORTED
  struct MsgPort *DeviceProc(struct NOT_SUPPORTED*, STRPTR name );
#define WaitForChar WaitForChar_NOT_SUPPORTED
  LONG WaitForChar(struct NOT_SUPPORTED*, BPTR file, long timeout );
#define LockRecord LockRecord_NOT_SUPPORTED
  BOOL LockRecord(struct NOT_SUPPORTED*, BPTR fh,ULONG offset,ULONG length,ULONG mode,ULONG timeout );
#define LockRecords LockRecords_NOT_SUPPORTED
  BOOL LockRecords(struct NOT_SUPPORTED*, struct RecordLock *recArray, unsigned long timeout );
#define UnLockRecord UnLockRecord_NOT_SUPPORTED
  BOOL UnLockRecord(struct NOT_SUPPORTED*, BPTR fh, unsigned long offset, unsigned long length );
#define UnLockRecords UnLockRecords_NOT_SUPPORTED
  BOOL UnLockRecords(struct NOT_SUPPORTED*, struct RecordLock *recArray );
#define ParentOfFH ParentOfFH_NOT_SUPPORTED
  BPTR ParentOfFH(struct NOT_SUPPORTED*, BPTR fh );
#define ExAll ExAll_NOT_SUPPORTED
  LONG ExAll(struct NOT_SUPPORTED*,BPTR lock,struct ExAllData *buffer,long size,long data,struct ExAllControl *control);
#define ReadLink ReadLink_NOT_SUPPORTED
  LONG ReadLink(struct NOT_SUPPORTED*,struct MsgPort*,BPTR lock,STRPTR path,STRPTR buffer,ULONG size );
#define MakeLink MakeLink_NOT_SUPPORTED
  LONG MakeLink(struct NOT_SUPPORTED*, STRPTR name, long dest, long soft );
#define SetFileSize SetFileSize_NOT_SUPPORTED
  LONG SetFileSize(struct NOT_SUPPORTED*, BPTR fh, long pos, long mode );
#define ErrorReport ErrorReport_NOT_SUPPORTED
  LONG ErrorReport(struct NOT_SUPPORTED*, long code, long type, unsigned long arg1,struct MsgPort *device );
#define Cli Cli_NOT_SUPPORTED
  struct CommandLineInterface *Cli(struct NOT_SUPPORTED*);
#define GetConsoleTask GetConsoleTask_NOT_SUPPORTED
  struct MsgPort *GetConsoleTask(struct NOT_SUPPORTED*);
#define SetConsoleTask SetConsoleTask_NOT_SUPPORTED
  struct MsgPort *SetConsoleTask(struct NOT_SUPPORTED*, struct MsgPort *task );
#define GetFileSysTask GetFileSysTask_NOT_SUPPORTED
  struct MsgPort *GetFileSysTask(struct NOT_SUPPORTED*);
#define SetFileSysTask SetFileSysTask_NOT_SUPPORTED
  struct MsgPort *SetFileSysTask(struct NOT_SUPPORTED*, struct MsgPort *task );
#define GetArgStr GetArgStr_NOT_SUPPORTED
  STRPTR GetArgStr(struct NOT_SUPPORTED*);
#define SetArgStr SetArgStr_NOT_SUPPORTED
  BOOL SetArgStr(struct NOT_SUPPORTED*, STRPTR string );
#define FindCliProc FindCliProc_NOT_SUPPORTED
  struct Process *FindCliProc(struct NOT_SUPPORTED*, unsigned long num );
#define MaxCli MaxCli_NOT_SUPPORTED
  ULONG MaxCli(struct NOT_SUPPORTED*);
#define SetProgramName SetProgramName_NOT_SUPPORTED
  BOOL SetProgramName(struct NOT_SUPPORTED*, STRPTR name );
#define GetProgramName GetProgramName_NOT_SUPPORTED
  BOOL GetProgramName(struct NOT_SUPPORTED*, STRPTR buf, long len );
#define GetDeviceProc GetDeviceProc_NOT_SUPPORTED
  struct DevProc *GetDeviceProc(struct NOT_SUPPORTED*, STRPTR name, struct DevProc *dp );
#define FreeDeviceProc FreeDeviceProc_NOT_SUPPORTED
  void FreeDeviceProc(struct NOT_SUPPORTED*, struct DevProc *dp );
#define LockDosList LockDosList_NOT_SUPPORTED
  struct DosList *LockDosList(struct NOT_SUPPORTED*, unsigned long flags );
#define UnLockDosList UnLockDosList_NOT_SUPPORTED
  void UnLockDosList(struct NOT_SUPPORTED*, unsigned long flags );
#define AttemptLockDosList AttemptLockDosList_NOT_SUPPORTED
  struct DosList *AttemptLockDosList(struct NOT_SUPPORTED*, unsigned long flags );
#define RemDosEntry RemDosEntry_NOT_SUPPORTED
  BOOL RemDosEntry(struct NOT_SUPPORTED*, struct DosList *dlist );
#define AddDosEntry AddDosEntry_NOT_SUPPORTED
  LONG AddDosEntry(struct NOT_SUPPORTED*, struct DosList *dlist );
#define FindDosEntry FindDosEntry_NOT_SUPPORTED
  struct DosList *FindDosEntry(struct NOT_SUPPORTED*, struct DosList *dlist, STRPTR name,unsigned long flags );
#define NextDosEntry NextDosEntry_NOT_SUPPORTED
  struct DosList *NextDosEntry(struct NOT_SUPPORTED*, struct DosList *dlist, unsigned long flags );
#define MakeDosEntry MakeDosEntry_NOT_SUPPORTED
  struct DosList *MakeDosEntry(struct NOT_SUPPORTED*, STRPTR name, long type );
#define FreeDosEntry FreeDosEntry_NOT_SUPPORTED
  void FreeDosEntry(struct NOT_SUPPORTED*, struct DosList *dlist );
#define Format Format_NOT_SUPPORTED
  BOOL Format(struct NOT_SUPPORTED*, STRPTR filesystem, STRPTR volumename, unsigned long dostype );
#define InternalLoadSeg InternalLoadSeg_NOT_SUPPORTED
  BPTR InternalLoadSeg(struct NOT_SUPPORTED*, BPTR fh, BPTR table, LONG *funcarray, LONG *stack );
#define InternalUnLoadSeg InternalUnLoadSeg_NOT_SUPPORTED
  BOOL InternalUnLoadSeg(struct NOT_SUPPORTED*, BPTR seglist, void (*freefunc)() );
#define AddSegment AddSegment_NOT_SUPPORTED
  LONG AddSegment(struct NOT_SUPPORTED*, STRPTR name, BPTR seg, long system );
#define FindSegment FindSegment_NOT_SUPPORTED
  struct Segment *FindSegment(struct NOT_SUPPORTED*, STRPTR name, struct Segment *seg, long system );
#define RemSegment RemSegment_NOT_SUPPORTED
  LONG RemSegment(struct NOT_SUPPORTED*, struct Segment *seg );
#define FindArg FindArg_NOT_SUPPORTED
  LONG FindArg(struct NOT_SUPPORTED*, STRPTR keyword, STRPTR arg_template );
#define ReadItem ReadItem_NOT_SUPPORTED
  LONG ReadItem(struct NOT_SUPPORTED*, STRPTR name, long maxchars, struct CSource *cSource );
#define StrToLong StrToLong_NOT_SUPPORTED
  LONG StrToLong(struct NOT_SUPPORTED*, STRPTR string, LONG *value );
#define ParsePattern ParsePattern_NOT_SUPPORTED
  LONG ParsePattern(struct NOT_SUPPORTED*, STRPTR pat, STRPTR buf, long buflen );
#define MatchPattern MatchPattern_NOT_SUPPORTED
  BOOL MatchPattern(struct NOT_SUPPORTED*, STRPTR pat, STRPTR str );
#define CliInitNewcli CliInitNewcli_NOT_SUPPORTED
  LONG CliInitNewcli(struct NOT_SUPPORTED*, struct DosPacket *dp );
#define CliInitRun CliInitRun_NOT_SUPPORTED
  LONG CliInitRun(struct NOT_SUPPORTED*, struct DosPacket *dp );
#define ParsePatternNoCase ParsePatternNoCase_NOT_SUPPORTED
  LONG ParsePatternNoCase(struct NOT_SUPPORTED*, STRPTR pat, STRPTR buf, long buflen );
#define MatchPatternNoCase MatchPatternNoCase_NOT_SUPPORTED
  BOOL MatchPatternNoCase(struct NOT_SUPPORTED*, STRPTR pat, STRPTR str );
#define ExAllEnd ExAllEnd_NOT_SUPPORTED
  void ExAllEnd(struct NOT_SUPPORTED*, BPTR lock, struct ExAllData *buffer, long size, long data,struct ExAllControl *control );
#define SetOwner SetOwner_NOT_SUPPORTED
  BOOL SetOwner(struct NOT_SUPPORTED*, STRPTR name, long owner_info );

#endif /** __IGNORE_NOT_SUPPORTED__ **/






#ifdef __cplusplus
}
#endif

#endif   /* CLIB_DOS_PROTOS_H */
