/* fifo.h */ #ifndef _fifo_h #define _fifo_h #ifndef lint static char fifo_RCSid[] = "$Id: fifo.h,v 1.4 1995/01/19 03:06:44 ambar Exp $"; USE(fifo_RCSid); #endif #ifndef FI_BSIZE #define FI_BSIZE 1024 #define FI_BAND 1023 #endif typedef struct fi_blk FI_BLK; struct fi_blk { char blk[FI_BSIZE]; FI_BLK *next; }; typedef struct fifo FIFO; struct fifo { FI_BLK *head; int hoff; /* offset into header block */ FI_BLK *tail; int toff; /* offset into tail block */ int blocks; /* # of blocks currently allocated for fifo */ int maxblk; /* max # of blocks allowed */ int flags; }; #define FI_CHANGE 1 /* tells fi gets fifo has been updated */ #define FI_FAILED 2 /* fi_gets could not get a line on last try */ #define FI_FREE 4 FIFO *fi_open(); char *fi_gets(); #define fi_readok(fi) (((fi)->head!=(fi)->tail) || ((fi)->toff!=(fi)->hoff)) #define fi_writeok(fi) ((fi)->blocks<(fi)->maxblk) #endif /* _fifo_h */