home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
mint
/
mntlib16.lzh
/
MNTLIB16
/
FCLOSE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-08-03
|
974b
|
48 lines
/* from Dale Schumacher's dLibs */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
extern int __mint;
int fclose(fp)
register FILE *fp;
{
register int f;
register int error = 0;
if(fp == NULL)
return(EOF); /* NULL file pointer file */
f = fp->_flag;
if((f & (_IORW | _IOREAD | _IOWRT)) == 0)
return(EOF); /* file not open! */
if(f & _IOWRT) /* only bother flushing for write */
error = fflush(fp);
#ifdef __OLD__
if(fp->_bsiz != BUFSIZ) /* throw away non-standard buffer */
#else
if(!(f & _IOMYBUF)) /* throw away non-standard buffer */
#endif
{
fp->_base = NULL;
fp->_ptr = NULL;
fp->_bsiz = 0;
}
#ifndef __OLD__
else
{
free(fp->_base);
fp->_base = NULL;
fp->_ptr = NULL;
fp->_bsiz = 0;
}
#endif
fp->_flag = 0; /* clear status */
if (__mint == 0)
if(f & _IODEV) /* leave tty's alone */
return(0);
error |= close(fp->_file);
return(error ? EOF : 0);
}