Annotation of 43BSD/ingres/source/libq/IIgetc.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.