text: #include "stdio.h"
  #ifndef NULL
  /* ANSI C */
  #include "stddef.h"
  #endif
  
  #ifndef SEEK_SET
  #define SEEK_SET 0
  #define SEEK_CUR 1
  #define SEEK_END 2
  #endif
  
  #ifdef MSDOS
  #ifndef NON_UNIX_STDIO
  #define NON_UNIX_STDIO
  #endif
  #endif
  
  /*units*/
  typedef struct
  {	FILE *ufd;	/*0=unconnected*/
  	char *ufnm;
  #ifndef MSDOS
  	long uinode;
  	int udev;
  #endif
  	int url;	/*0=sequential*/
  	flag useek;	/*true=can backspace, use dir, ...*/
  	flag ufmt;
  	flag uprnt;
  	flag ublnk;
  	flag uend;
  	flag uwrt;	/*last io was write*/
  	flag uscrtch;
  } unit;
  
  extern int errno;
  extern flag init;
  extern cilist *elist;	/*active external io list*/
  extern flag reading,external,sequential,formatted;
  extern int (*getn)(),(*putn)();	/*for formatted io*/
  extern long inode();
  extern FILE *cf;	/*current file*/
  extern unit *curunit;	/*current unit*/
  extern unit units[];
  extern VOID sig_die();
  #define err(f,m,s) {if(f) errno= m; else fatal(m,s); return(m);}
  
  /*Table sizes*/
  #define MXUNIT 100
  
  extern int recpos;	/*position in current record*/
  extern int cursor;	/* offset to move to */
  extern int hiwater;	/* so TL doesn't confuse us */
  
  #define WRITE	1
  #define READ	2
  #define SEQ	3
  #define DIR	4
  #define FMT	5
  #define UNF	6
  #define EXT	7
  #define INT	8
  
  #define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)
  