Annotation of researchv10no/cmd/odist/pax/include/sfio.h, revision 1.1

1.1     ! root        1: #ifndef _SFIO_H                /* protect against multiple #includes */
        !             2: #define _SFIO_H
        !             3: 
        !             4: #if __STDC__ || __cplusplus || c_plusplus
        !             5: #define _SFA_(x)       x
        !             6: #else
        !             7: #define _SFA_(x)       ()
        !             8: #endif
        !             9: 
        !            10: #ifndef NULL
        !            11: #define NULL   0
        !            12: #endif
        !            13: #ifndef EOF
        !            14: #define EOF    (-1)
        !            15: #endif
        !            16: #ifndef SEEK_SET
        !            17: #define SEEK_SET       0
        !            18: #define SEEK_CUR       1
        !            19: #define SEEK_END       2
        !            20: #endif
        !            21: 
        !            22: typedef struct _sfdc_  Sfdisc_t;
        !            23: typedef struct _sfio_  Sfile_t, SFIO;
        !            24: 
        !            25: /* discipline structure */
        !            26: struct _sfdc_
        !            27: {
        !            28:        int     (*readf) _SFA_((Sfile_t*, unsigned char*, int, char*));
        !            29:        int     (*writef) _SFA_((Sfile_t*, const unsigned char*, int, char*));
        !            30:        long    (*seekf) _SFA_((Sfile_t*, long, int, char*));
        !            31:        int     (*exceptf) _SFA_((Sfile_t*, int, char*));
        !            32:        char    *handle;        /* to store any state information       */
        !            33: };
        !            34: 
        !            35: /* a file structure */
        !            36: struct _sfio_
        !            37: {
        !            38:        unsigned char   *next;  /* next position to read/write from     */
        !            39:        unsigned char   *endw;  /* end of write buffer                  */
        !            40:        unsigned char   *endr;  /* end of read buffer                   */
        !            41:        unsigned char   *endb;  /* end of buffer                        */
        !            42:        struct _sfio_   *push;  /* the stream that was pushed on        */
        !            43:        short           flags;  /* type of stream                       */
        !            44:        short           file;   /* file descriptor                      */
        !            45:        long            orig;   /* where we start in the file           */
        !            46: #ifdef _SFIO_PRIVATE
        !            47:        _SFIO_PRIVATE
        !            48: #endif
        !            49: };
        !            50: 
        !            51: /* bits for various types of files */
        !            52: #define        SF_READ         000001  /* open for reading                     */
        !            53: #define SF_WRITE       000002  /* open for writing                     */
        !            54: #define SF_STRING      000004  /* a string stream                      */
        !            55: #define SF_APPEND      000010  /* associated file is in append mode    */
        !            56: #define SF_RELATIVE    000020  /* file pos is relative to starting pos */
        !            57: #define SF_MALLOC      000040  /* buffered space malloc-ed             */
        !            58: #define SF_LINE                000100  /* line buffering                       */
        !            59: #define SF_KEEPFD      000200  /* keep file opened when closing stream */
        !            60: #define SF_SHARE       000400  /* file stream that is shared           */
        !            61: #define SF_REUSE       001000  /* keep stream space after closing      */
        !            62: #define SF_FLAGS       000777  /* PUBLIC FLAGS PASSABLE TO SFNEW()     */
        !            63: #define SF_SETS                001743  /* flags passable to sfset()            */
        !            64: 
        !            65: #define SF_EOF         002000  /* eof was detected                     */
        !            66: #define SF_ERROR       004000  /* an error happened                    */
        !            67: 
        !            68: #define SF_BUFSIZE     8192    /* suggested default buffer size        */
        !            69: #define SF_UNBOUND     (-1)    /* unbounded buffer size                */
        !            70: 
        !            71: #define        sfstdin         (&_Sfstdin)     /* standard input stream        */
        !            72: #define        sfstdout        (&_Sfstdout)    /* standard output stream       */
        !            73: #define        sfstderr        (&_Sfstderr)    /* standard error stream        */
        !            74: 
        !            75: #if __cplusplus
        !            76: extern "C"
        !            77: {
        !            78: #endif
        !            79: 
        !            80: extern int             _Sfi;
        !            81: extern Sfile_t         _Sfstdin, _Sfstdout, _Sfstderr;
        !            82: 
        !            83: extern Sfile_t         *sfnew _SFA_((Sfile_t*, unsigned char*, int, int, int));
        !            84: extern Sfile_t         *sfopen _SFA_((Sfile_t*, const char*, const char*));
        !            85: extern Sfile_t         *sfdopen _SFA_((int, const char*));
        !            86: extern Sfile_t         *sfpopen _SFA_((const char*, const char*, Sfile_t**));
        !            87: extern Sfile_t         *sfstack _SFA_((Sfile_t*, Sfile_t*));
        !            88: extern Sfile_t         *_sftmpfile _SFA_((int));
        !            89: extern int             _sfflsbuf _SFA_((Sfile_t*, int));
        !            90: extern int             _sffilbuf _SFA_((Sfile_t*, int));
        !            91: extern int             _sfsync _SFA_((Sfile_t*));
        !            92: extern int             _sfpeek _SFA_((Sfile_t*, unsigned char**));
        !            93: extern int             sfclrlock _SFA_((Sfile_t*));
        !            94: extern unsigned char*  sfsetbuf _SFA_((Sfile_t*, unsigned char*, int));
        !            95: extern Sfdisc_t*       sfsetdisc _SFA_((Sfile_t*,Sfdisc_t*));
        !            96: extern int             sfnotice _SFA_((void(*)(Sfile_t*, int)));
        !            97: extern int             sfset _SFA_((Sfile_t*, int, int));
        !            98: extern int             sfpool _SFA_((Sfile_t*, Sfile_t*, int));
        !            99: extern int             sfread _SFA_((Sfile_t*, unsigned char*, int));
        !           100: extern int             sfwrite _SFA_((Sfile_t*, const unsigned char*, int));
        !           101: extern int             sfmove _SFA_((Sfile_t*, Sfile_t*, long, const char*));
        !           102: extern int             sfclose _SFA_((Sfile_t*));
        !           103: extern long            sftell _SFA_((Sfile_t*));
        !           104: extern long            sfseek _SFA_((Sfile_t*, long, int));
        !           105: extern int             sfllen _SFA_((long));
        !           106: extern int             sfdlen _SFA_((double));
        !           107: extern int             sfputs _SFA_((Sfile_t*, const char*, int));
        !           108: extern char            *sfgets _SFA_((Sfile_t*, char*, int));
        !           109: extern int             sfnputc _SFA_((Sfile_t*, unsigned char, int));
        !           110: extern int             _sfputu _SFA_((Sfile_t*, unsigned long));
        !           111: extern int             _sfputl _SFA_((Sfile_t*, long));
        !           112: extern long            _sfgetl _SFA_((Sfile_t*));
        !           113: extern unsigned long   _sfgetu _SFA_((Sfile_t*));
        !           114: extern long            _sfgetl _SFA_((Sfile_t*));
        !           115: extern int             _sfputd _SFA_((Sfile_t*, double));
        !           116: extern double          sfgetd _SFA_((Sfile_t*));
        !           117: extern int             sfungetc _SFA_((Sfile_t*, int));
        !           118: extern char            *_sfcvt _SFA_((double, int, int*, int*, int));
        !           119: extern int             sfprintf _SFA_((Sfile_t*, const char*, ...));
        !           120: extern int             sfsprintf _SFA_((char*, int, const char*, ...));
        !           121: extern int             sfscanf _SFA_((Sfile_t*, const char*, ...));
        !           122: extern int             sfsscanf _SFA_((const char*, const char*, ...));
        !           123: 
        !           124: #if __STDC__ || __cplusplus
        !           125: #include       <stdarg.h>
        !           126: #endif
        !           127: extern int             sfvprintf _SFA_((Sfile_t*, const char*, va_list));
        !           128: extern int             sfvscanf _SFA_((Sfile_t*, const char*, va_list));
        !           129: 
        !           130: /* function analogues of fast in-line functions */
        !           131: extern int             sfgetc _SFA_((Sfile_t*));
        !           132: extern long            sfgetl _SFA_((Sfile_t*));
        !           133: extern unsigned long   sfgetu _SFA_((Sfile_t*));
        !           134: extern int             sfputc _SFA_((Sfile_t*,int));
        !           135: extern int             sfputd _SFA_((Sfile_t*,double));
        !           136: extern int             sfputl _SFA_((Sfile_t*,long));
        !           137: extern int             sfputu _SFA_((Sfile_t*,unsigned long));
        !           138: extern int             sfpeek _SFA_((Sfile_t*, unsigned char**));
        !           139: extern int             sfsync _SFA_((Sfile_t*));
        !           140: extern Sfile_t*                sfpushed _SFA_((Sfile_t*));
        !           141: extern Sfile_t*                sftmp _SFA_((int));
        !           142: extern int             sfslen _SFA_((void));
        !           143: extern int             sfulen _SFA_((unsigned long));
        !           144: extern long            sforigin _SFA_((Sfile_t*));
        !           145: extern int             sfclearerr _SFA_((Sfile_t*));
        !           146: extern int             sfeof _SFA_((Sfile_t*));
        !           147: extern int             sferror _SFA_((Sfile_t*));
        !           148: extern int             sffileno _SFA_((Sfile_t*));
        !           149: extern char*           sfecvt _SFA_((double,int,int*,int*));
        !           150: extern char*           sffcvt _SFA_((double,int,int*,int*));
        !           151: 
        !           152: #if __cplusplus
        !           153: }
        !           154: #endif
        !           155: 
        !           156: /* fast in-line functions */
        !           157: #define sfputc(f,c)    ((f)->next >= (f)->endw ? \
        !           158:                                _sfflsbuf(f,(int)((unsigned char)(c))) : \
        !           159:                                (int)(*(f)->next++ = (unsigned char)(c)))
        !           160: #define sfgetc(f)      ((f)->next >= (f)->endr ? _sffilbuf(f,1) : (int)(*(f)->next++))
        !           161: #define sfslen()       (_Sfi)
        !           162: #define sffileno(f)    ((f)->file)
        !           163: #define sforigin(f)    (((f)->flags&SF_STRING) ? 0L : (f)->orig)
        !           164: #define sfeof(f)       (((f)->flags&(SF_EOF|SF_STRING)) && (f)->next >= (f)->endb)
        !           165: #define sferror(f)     ((f)->flags&SF_ERROR)
        !           166: #define sfclearerr(f)  ((f)->flags &= ~(SF_ERROR|SF_EOF))
        !           167: #define sfpushed(f)    ((f)->push)
        !           168: #define sftmp(n)       ((n) >= 0 ? _sftmpfile(n) : \
        !           169:                                    sfnew((Sfile_t*)0,(unsigned char*)0,-1,-1, \
        !           170:                                        SF_READ|SF_WRITE|SF_STRING))
        !           171: 
        !           172: #define sfpeek(f,bufp) (((bufp) || \
        !           173:                          ((f)->flags&(SF_READ|SF_WRITE|SF_STRING)) == \
        !           174:                           (SF_READ|SF_WRITE|SF_STRING)) ? _sfpeek(f,bufp) : \
        !           175:                                ((f)->endb - (f)->next))
        !           176: #define sfsync(f)      (((f) && (((Sfile_t*)(f))->flags&SF_STRING)) ? 0 : _sfsync(f))
        !           177: 
        !           178: /* coding long integers in a portable and compact fashion */
        !           179: #define SF_SBITS       6
        !           180: #define SF_UBITS       7
        !           181: #define SF_SIGN                (1 << SF_SBITS)
        !           182: #define SF_MORE                (1 << SF_UBITS)
        !           183: #define SF_U1          SF_MORE
        !           184: #define SF_U2          (SF_U1*SF_U1)
        !           185: #define SF_U3          (SF_U2*SF_U1)
        !           186: #define SF_U4          (SF_U3*SF_U1)
        !           187: #define sfulen(v)      ((v) < SF_U1 ? 1 : (v) < SF_U2 ? 2 : \
        !           188:                         (v) < SF_U3 ? 3 : (v) < SF_U4 ? 4 : 5)
        !           189: #define sfgetu(f)      ((_Sfi = sfgetc(f)) < 0 ? -1 : \
        !           190:                                ((_Sfi&SF_MORE) ? _sfgetu(f) : (unsigned long)_Sfi))
        !           191: #define sfgetl(f)      ((_Sfi = sfgetc(f)) < 0 ? -1 : \
        !           192:                                ((_Sfi&(SF_MORE|SF_SIGN)) ? _sfgetl(f) : (long)_Sfi))
        !           193: #define sfputu(f,v)    _sfputu((f),(unsigned long)(v))
        !           194: #define sfputl(f,v)    _sfputl((f),(long)(v))
        !           195: #define sfputd(f,v)    _sfputd((f),(double)(v))
        !           196: 
        !           197: #define sfecvt(v,n,d,s)        _sfcvt((v),(n),(d),(s),1)
        !           198: #define sffcvt(v,n,d,s)        _sfcvt((v),(n),(d),(s),0)
        !           199: 
        !           200: #endif /* _SFIO_H */

unix.superglobalmegacorp.com

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