|
|
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: #include "stdio.int.h"
11:
12: int
13: _fputa(c, fp) int c; register FILE *fp;
14: {
15: register _FILE2 *f2p;
16:
17: #if _ASCII
18: register int isascii;
19:
20: isascii = fp->_ff2 & _FASCII;
21: #endif
22: /* Seek to end. */
23: if (lseek(fileno(fp), 0L, SEEK_END) == -1L)
24: return EOF;
25:
26: /* Restore appropriate put function pointer. */
27: f2p = fp->_f2p;
28: switch (fp->_mode) {
29:
30: case _MODE_UNINIT:
31: f2p->_pt = &_fpinit;
32: break;
33:
34: case _MODE_FBUF:
35: #if _ASCII
36: f2p->_pt = isascii ? &_fputba : &_fputb;
37: #else
38: f2p->_pt = &_fputb;
39: #endif
40: break;
41:
42: case _MODE_LBUF:
43: #if _ASCII
44: f2p->_pt = isascii ? &_fputta : &_fputt;
45: #else
46: f2p->_pt = &_fputt;
47: #endif
48: break;
49:
50: case _MODE_NBUF:
51: #if _ASCII
52: f2p->_pt = isascii ? &_fputca : &_fputc;
53: #else
54: f2p->_pt = &_fputc;
55: #endif
56: break;
57:
58: default:
59: return EOF; /* should not happen */
60: break;
61: }
62:
63: /* Put the character. */
64: return (*f2p->_pt)(c, fp);
65: }
66:
67: /* 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.