|
|
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.