|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include "IIglobals.h" ! 3: # include <sccs.h> ! 4: ! 5: SCCSID(@(#)IIgetc.c 8.1 12/31/84) ! 6: ! 7: ! 8: /* ! 9: ** IIGETC.C -- File input routines ! 10: ** ! 11: ** Defines: ! 12: ** IIfopen() ! 13: ** IIgetc() ! 14: ** IIclose() ! 15: ** ! 16: ** Requires: ! 17: ** read() ! 18: ** open() ! 19: ** ! 20: ** Required By: ! 21: ** IIp_err() -- to get text from error files ! 22: ** IIgetpath(); ! 23: ** USER -- as Input routines ! 24: ** ! 25: ** History: ! 26: ** 11/21/78 -- (marc) written to free IIp_err() [IIp_err.c] from ! 27: ** depending on a single I/O package ! 28: */ ! 29: ! 30: ! 31: ! 32: /* ! 33: ** IIFOPEN -- Buffered input file open ! 34: ** ! 35: ** Entirely analogous to fopen(III). ! 36: ** ! 37: ** Parameters: ! 38: ** file - file name to open for READ only ! 39: ** iobuf - iob struct to use for this file ! 40: ** ! 41: ** Returns: ! 42: ** 0 success ! 43: ** -1 failure (errno set by open(II) call) ! 44: ** ! 45: ** Side Effects: ! 46: ** file activity ! 47: ** sets up iobuf ! 48: ** ! 49: ** Requires: ! 50: ** open() ! 51: ** ! 52: ** Called By: ! 53: ** IIp_err() [IIp_err.c] ! 54: ** USER ! 55: ** ! 56: ** History: ! 57: ** 11/21/78 -- (marc) written ! 58: */ ! 59: ! 60: IIfopen(file, iobuf) ! 61: char *file; ! 62: struct iob *iobuf; ! 63: { ! 64: register struct iob *b; ! 65: ! 66: b = iobuf; ! 67: if ((b->fildes = open(file, 0)) < 0) ! 68: return (-1); ! 69: b->nleft = 0; ! 70: return (0); ! 71: } ! 72: ! 73: /* ! 74: ** IIGETC -- Get a character from a file using buffered input ! 75: ** ! 76: ** Entirely analogous to getc(III). ! 77: ** ! 78: ** Parameters: ! 79: ** iobuf -- iob struct for the file from which the character ! 80: ** is to be taken ! 81: ** ! 82: ** Returns: ! 83: ** next character from file (16-bit no sign extension) ! 84: ** -1 -- EOF or error (errno set by read) ! 85: ** ! 86: ** Side Effects: ! 87: ** file activity - may do a read () ! 88: ** fuddles iobuf to reflect number of characters left after call ! 89: ** ! 90: ** Requires: ! 91: ** read() ! 92: ** an fopen(III) or IIfopen() [IIgetc.c] call on iobuf before ! 93: ** being called. (It is unwise to call fopen(), the ! 94: ** IIgetc(), because fopen() and getc(III) are both ! 95: ** in /usr/source/s4/getc.c so the code will be ! 96: ** duplicated). ! 97: ** ! 98: ** Called By: ! 99: ** IIp_err() [IIp_err.c] ! 100: ** USER ! 101: ** ! 102: ** History: ! 103: ** 11/21/78 -- (marc) written ! 104: */ ! 105: ! 106: IIgetc(iobuf) ! 107: struct iob *iobuf; ! 108: { ! 109: register struct iob *b; ! 110: register i; ! 111: register c; ! 112: ! 113: b = iobuf; ! 114: if (--b->nleft >= 0) ! 115: { ! 116: c = *b->nextp++ & 0377; ! 117: return (c); ! 118: } ! 119: ! 120: /* else fill the buffer */ ! 121: i = read(b->fildes, b->buff, sizeof b->buff); ! 122: if (i > 0) ! 123: { ! 124: b->nextp = b->buff; ! 125: b->nleft = --i; ! 126: c = *b->nextp++ & 0377; ! 127: return (c); ! 128: } ! 129: /* EOF or error */ ! 130: return (-1); ! 131: } ! 132: ! 133: /* ! 134: ** IICLOSE -- Close a file opened with IIfopen ! 135: ** ! 136: ** Parameters: ! 137: ** buf -- io buffer ! 138: ** ! 139: ** Returns: ! 140: ** < 0 one error (errno set) ! 141: ** ! 142: ** Side Effects: ! 143: ** closes file ! 144: ** ! 145: ** Requires: ! 146: ** close(II) ! 147: ** ! 148: ** Called By: ! 149: ** USER ! 150: */ ! 151: ! 152: IIclose(buf) ! 153: struct iob *buf; ! 154: { ! 155: ! 156: return (close(buf->fildes)); ! 157: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.