#include <stddef.h>
#include <stdio.h>
#include <limits.h>
#include <stdarg.h>
#include <stdlib.h>

#include <dos/dos.h>

extern FILE *_firstfile,*_lastfile;

/*  oeffnet Dateien */
/*  noch sehr eingeschraenkt    */
FILE *fopen(const char *name,const char *mode)
{
    FILE *f;long amigamode=0;int append;
    if(*mode=='w') amigamode=MODE_NEWFILE; else amigamode=MODE_OLDFILE;
    if(*mode=='a') append=1; else append=0;
    if(!(f=malloc(sizeof(FILE)))) return(0);
    f->count=0;
    f->base=0;
    f->bufsize=0;
    f->next=0;
    if(*mode=='r') f->flags=_READABLE; else f->flags=_WRITEABLE;
    if(*mode=='b') mode++;
    if(*mode=='+') {f->flags|=_READABLE|_WRITEABLE;amigamode=MODE_READWRITE;}
    f->filehandle=(char *)Open(name,amigamode);
    if(!f->filehandle){free(f);return(0);}
    if(IsInteractive(f->filehandle)) f->flags|=_LINEBUF;
    if(_lastfile){
        _lastfile->next=f;f->prev=_lastfile;_lastfile=f;
    }else{
        _firstfile=_lastfile=f;
    }
    if(append) fseek(f,0,SEEK_END);
    return(f);
}
