Annotation of 42BSD/ingres/source/libq/IIgetc.c, revision 1.1

1.1     ! root        1: # include      <ingres.h>
        !             2: # include      "IIglobals.h"
        !             3: # include      <sccs.h>
        !             4: 
        !             5: SCCSID(@(#)IIgetc.c    7.1     2/5/81)
        !             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.