//
// File BN 3-Mai-98
//
//
//
//
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <string.h>

#include "WinMain.h"
#include "System.h"
#include "File.h"

#define __CFILE__ "File"
char FILE_acString[1024];

// *****************************************************************
// f_open
// *****************************************************************
int f_open (char *acDatei)
{
int nRet=FALSE;


if(f_find(acDatei)==TRUE){
nRet = _open(acDatei, _O_BINARY|_O_RDWR, _S_IREAD | _S_IWRITE);
if(nRet==-1){
nRet = FALSE;
}
} else {
sprintf(FILE_acString, "Can not found %s.", acDatei);
AusnahmeFehler(FILE_acString, __CFILE__, __LINE__);
}
return(nRet);
}

// *****************************************************************
// f_opencreate
// *****************************************************************
int f_opencreate (char *acDatei)
{
int nRet=FALSE;
int nRet2=FALSE;


if(f_find(acDatei)==TRUE){
nRet = f_open (acDatei);
} else {
nRet2 = f_create(acDatei);
if(nRet2!=FALSE){
f_close (nRet2);
nRet = f_open (acDatei);
}
}
return(nRet);
}

// *****************************************************************
// f_create
// *****************************************************************
int f_create (char *acDatei)
{
int nRet=FALSE;


nRet = _open(acDatei, _O_CREAT|_O_BINARY|_O_RDWR, _S_IREAD | _S_IWRITE);
if(nRet==-1){
nRet = FALSE;
sprintf(FILE_acString, "Can not create %s.", acDatei);
AusnahmeFehler(FILE_acString, __CFILE__, __LINE__);
} else {
nRet = TRUE;
}
return(nRet);
}


// *****************************************************************
// f_seek
// *****************************************************************
int f_seek (int nHandle, long lPosition)
{
int nRet=FALSE;


if(_lseek(nHandle, lPosition, SEEK_SET)==-1){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_seek_eof
// *****************************************************************
int f_seek_eof (int nHandle)
{
int nRet=FALSE;


if(_lseek(nHandle, 0, SEEK_END)==-1){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_read
// *****************************************************************
int f_read (int nHandle, void *pBuffer, long lLaenge)
{
int nRet=FALSE;


if(_read(nHandle, pBuffer, lLaenge)<=0){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_write
// *****************************************************************
int f_write (int nHandle, void *pBuffer, long lLaenge)
{
int nRet=FALSE;


if(_write(nHandle, pBuffer, lLaenge)==-1){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_close
// *****************************************************************
int f_close (int nHandle)
{
int nRet=FALSE;


if(_close(nHandle)==-1){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_find
// *****************************************************************
int f_find (char *acDatei)
{
int nRet=FALSE;


if(access(acDatei, 0)!=0){
} else {
nRet = TRUE;
}
return(nRet);
}

// *****************************************************************
// f_kill
// *****************************************************************
int f_kill (char *acDatei)
{
int nRet=FALSE;


if(unlink(acDatei)==0){
nRet = TRUE;
} else {
sprintf(FILE_acString, "Can not delete %s.", acDatei);
AusnahmeFehler(FILE_acString, __CFILE__, __LINE__);
}
return(nRet);
}