Line | |
---|
1 | /*
|
---|
2 | * fclose.c - flush a stream and close the file
|
---|
3 | */
|
---|
4 | /* $Header: /cvsup/minix/src/lib/stdio/fclose.c,v 1.1.1.1 2005/04/21 14:56:35 beng Exp $ */
|
---|
5 |
|
---|
6 | #include <stdio.h>
|
---|
7 | #include <stdlib.h>
|
---|
8 | #include "loc_incl.h"
|
---|
9 |
|
---|
10 | int _close(int d);
|
---|
11 |
|
---|
12 | int
|
---|
13 | fclose(FILE *fp)
|
---|
14 | {
|
---|
15 | register int i, retval = 0;
|
---|
16 |
|
---|
17 | for (i=0; i<FOPEN_MAX; i++)
|
---|
18 | if (fp == __iotab[i]) {
|
---|
19 | __iotab[i] = 0;
|
---|
20 | break;
|
---|
21 | }
|
---|
22 | if (i >= FOPEN_MAX)
|
---|
23 | return EOF;
|
---|
24 | if (fflush(fp)) retval = EOF;
|
---|
25 | if (_close(fileno(fp))) retval = EOF;
|
---|
26 | if ( io_testflag(fp,_IOMYBUF) && fp->_buf )
|
---|
27 | free((void *)fp->_buf);
|
---|
28 | if (fp != stdin && fp != stdout && fp != stderr)
|
---|
29 | free((void *)fp);
|
---|
30 | return retval;
|
---|
31 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.