|
|
1.1 root 1: /*
2: * libc/stdio/_fputa.c
3: * ANSI-compliant C standard i/o library internals.
4: * _fputa()
5: * Append character to end of file.
6: * Executed on first write after seek on append mode stream.
7: */
8:
9: #include <stdio.h>
10:
11: int
12: _fputa(c, fp) int c; register FILE *fp;
13: {
14: register _FILE2 *f2p;
15:
16: #if _ASCII
17: register int isascii;
18:
19: isascii = fp->_ff2 & _FASCII;
20: #endif
21: /* Seek to end. */
22: if (lseek(fileno(fp), 0L, SEEK_END) == -1L)
23: return EOF;
24:
25: /* Restore appropriate put function pointer. */
26: f2p = fp->_f2p;
27: switch (fp->_mode) {
28:
29: case _MODE_UNINIT:
30: f2p->_pt = &_fpinit;
31: break;
32:
33: case _MODE_FBUF:
34: #if _ASCII
35: f2p->_pt = isascii ? &_fputba : &_fputb;
36: #else
37: f2p->_pt = &_fputb;
38: #endif
39: break;
40:
41: case _MODE_LBUF:
42: #if _ASCII
43: f2p->_pt = isascii ? &_fputta : &_fputt;
44: #else
45: f2p->_pt = &_fputt;
46: #endif
47: break;
48:
49: case _MODE_NBUF:
50: #if _ASCII
51: f2p->_pt = isascii ? &_fputca : &_fputc;
52: #else
53: f2p->_pt = &_fputc;
54: #endif
55: break;
56:
57: default:
58: return EOF; /* should not happen */
59: break;
60: }
61:
62: /* Put the character. */
63: return (*f2p->_pt)(c, fp);
64: }
65:
66: /* end of libc/stdio/_fputa.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.