|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)fgetc_.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: /* ! 10: * get a character from a logical unit bypassing formatted I/O ! 11: * ! 12: * calling sequence: ! 13: * integer fgetc ! 14: * ierror = fgetc (unit, char) ! 15: * where: ! 16: * char will return a character from logical unit ! 17: * ierror will be 0 if successful; a system error code otherwise. ! 18: */ ! 19: ! 20: #include "../libI77/fiodefs.h" ! 21: #include "../libI77/f_errno.h" ! 22: ! 23: extern unit units[]; /* logical units table from iolib */ ! 24: ! 25: long fgetc_(u, c, clen) ! 26: long *u; char *c; long clen; ! 27: { ! 28: int i; ! 29: unit *lu; ! 30: ! 31: if (*u < 0 || *u >= MXUNIT) ! 32: return((long)(errno=F_ERUNIT)); ! 33: lu = &units[*u]; ! 34: if (!lu->ufd) ! 35: return((long)(errno=F_ERNOPEN)); ! 36: if (lu->uwrt && ! nowreading(lu)) ! 37: return((long)errno); ! 38: if ((i = getc (lu->ufd)) < 0) ! 39: { ! 40: if (feof(lu->ufd)) ! 41: return(-1L); ! 42: i = errno; ! 43: clearerr(lu->ufd); ! 44: return((long)i); ! 45: } ! 46: *c = i; ! 47: return(0L); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.