Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * pANS stdio -- setvbuf
3
 */
4
#include "iolib.h"
5
#include <stdlib.h>
6
int setvbuf(FILE *f, char *buf, int mode, size_t size){
7
	if(f->state!=OPEN){
8
		f->state=ERR;
9
		return -1;
10
	}
11
	f->state=RDWR;
12
	switch(mode){
13
	case _IOLBF:
14
		f->flags|=LINEBUF;
15
	case _IOFBF:
16
		if(buf==0){
17
			buf=malloc(size);
18
			if(buf==0){
19
				f->state=ERR;
20
				return -1;
21
			}
22
			f->flags|=BALLOC;
23
		}
24
		f->bufl=size;
25
		break;
26
	case _IONBF:
27
		buf=f->unbuf;
28
		f->bufl=0;
29
		break;
30
	}
31
	f->rp=f->wp=f->lp=f->buf=buf;
32
	f->state=RDWR;
33
	return 0;
34
}
35
int _IO_setvbuf(FILE *f){
36
	if(f==stderr || (f==stdout && isatty(1)))
37
		return setvbuf(f, (char *)0, _IOLBF, BUFSIZ);
38
	return setvbuf(f, (char *)0, _IOFBF, BUFSIZ);
39
}