4.3BSD/usr/contrib/cpm/src/cpmfio.h
/* cpmfio.h 1.5 83/05/13 */
#define C_NFILE 5 /* max number of concurrently open cp/m files */
typedef struct c_iobuf {
int c_cnt; /* bytes left in buffer */
int c_blk; /* block number within the current extent */
/* (starting at 0) */
int c_seccnt; /* number of physical sectors left in */
/* the current extent */
int c_ext; /* current extent's directory index */
int c_extno; /* extent number within current file */
char *c_buf; /* next character position */
char *c_base; /* location of buffer */
short c_flag; /* access mode (READ or WRITE) */
struct directory *c_dirp; /* pointer to the current */
/* extent's directory entry */
} C_FILE;
extern C_FILE c_iob[C_NFILE];
#define c_getc(p) (--(p)->c_cnt>=0 ? *(p)->c_buf++&0377 : c_fillbuf(p))
#define c_putc(x,p) (--(p)->c_cnt>=0 ? ((int)(*(p)->c_buf++=(unsigned)(x))) : c_flsbuf((unsigned)(x), p))
C_FILE *c_open(), *c_creat();
#define READ 0x01
#define WRITE 0x02
#define RW 0x03
#define MODFLG 0x08
#define BINARY 0x10