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