scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 1#include <stdlib.h>
 2#include <stdio.h>
 3
 4#include "../libc.h"
 5#include "../syscall.h"
 6
 7#undef fclose
 8
 9int
10fclose(FILE *fp)
11{
12	int r = EOF;
13
14	if ((fp->flags & _IOSTRG) == 0 &&
15	    fp->flags & (_IOWRITE | _IOREAD | _IORW)) {
16		r = 0;
17		if (_flsbuf(fp) == EOF)
18			r = EOF;
19		if (_close(fp->fd) < 0)
20			r = EOF;
21	}
22
23	if (fp->flags & _IOALLOC) {
24		free(fp->buf);
25		fp->rp = fp->wp = fp->lp = fp->buf = NULL;
26	}
27
28	fp->flags &= ~(_IOWRITE | _IOREAD | _IORW |
29	               _IOERR | _IOEOF |
30	               _IOALLOC |
31	               _IOTXT |
32	               _IOSTRG);
33
34	return r;
35}