home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume8 / mdcopy / part02 / mdiskio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-02  |  2.8 KB  |  111 lines

  1. /*
  2.  * mdiskio.h
  3.  *
  4.  * definitions and declarations to manage files which span diskettes.
  5.  *
  6.  * March 1989    created by greg yachuk.  placed in the public domain.
  7.  */
  8.  
  9. #ifndef    S_IREAD
  10. #include <sys/types.h>
  11. #include <sys/stat.h>
  12. #endif
  13.  
  14. #ifndef    SEEK_SET            /* sometimes defined in stdio.h */
  15. #define    SEEK_SET    0
  16. #define    SEEK_CUR    1
  17. #define    SEEK_END    2
  18. #endif
  19.  
  20. struct mdiskbuf {
  21.     char   *bufptr;            /* pointer to next position to fill */
  22.     int    bufcnt;            /* number of bytes left to fill */
  23.     char   *buffer;            /* buffer of data */
  24.     char   *basename;        /* base name of the file */
  25.     char   *filename;        /* constructed filename */
  26.     int    seq;            /* next sequence number to be used */
  27.     char    fid;            /* file id */
  28.     char    spare;            /* in case we can't allocate a buffer */
  29.     char    flags;            /* high level flags */
  30.     int    oflag;            /* file creation flags */
  31.     char *(*filenm)();        /* to construct new filename */
  32.     int   (*ateof)();        /* at *final* EOF? */
  33.     int   (*prompt)();        /* to prompt between diskettes */
  34. };
  35.  
  36. #define    MDFILE    struct mdiskbuf
  37. extern MDFILE _mdstdin;
  38. extern MDFILE _mdstdout;
  39. extern MDFILE _mdstderr;
  40.  
  41. #define    mdstdin        &_mdstdin
  42. #define    mdstdout    &_mdstdout
  43. #define    mdstderr    &_mdstderr
  44.  
  45. #define    _MDREAD        0x01
  46. #define    _MDWRITE    0x02
  47. #define    _MDRDWR        0x04
  48. #define    _MDEMPTY    0x08
  49.  
  50. #define    _MDERR        0x10
  51. #define    _MDEOF        0x20
  52.  
  53. #define    _MDPERMS    S_IREAD|S_IWRITE
  54.  
  55. #ifndef    MSDOS
  56. #define    O_BINARY    0
  57. #define    O_TEXT        0
  58. #endif
  59.  
  60. #ifdef    BSD
  61. #define    memmove(d,s,c)    bcopy((s),(d),(c))
  62. #endif
  63.  
  64. #define    mdsetbase(d,n)    ((d)->basename=(n))
  65. #define    mdsetseq(d,n)    ((d)->seq=(n))
  66. #define    mdfnfilenm(d,f)    ((d)->filenm=(f))
  67. #define mdfnateof(d,f)    ((d)->ateof=(f))
  68. #define    mdfnprompt(d,f)    ((d)->prompt=(f))
  69.  
  70. #define    mdfileno(d)    ((d)->fid)
  71. #define    mdseqno(d)    ((d)->seq)
  72.  
  73. #define    mdeof(d)    ((d)->flags & _MDEOF)
  74. #define    mderror(d)    ((d)->flags & _MDERR)
  75. #define    mdclrerr(d)    ((d)->flags &= ~_MDERR)
  76.  
  77. #define    mdputc(c,d)    (!(d)?(c):((--(d)->bufcnt>=0)?(int)(*(d)->bufptr++=(c))\
  78.              :_mdflush((c),(d))))
  79. #define    mdgetc(d)    (--(d)->bufcnt>=0 ? 0xff & *(d)->bufptr++ : _mdfill(d))
  80.  
  81. #define    _mdopen(d)    ((d)->fid = open(((d)->filenm)(d),(d)->oflag,_MDPERMS))
  82. #define    _mdclose(d)    (close((d)->fid),(d)->fid=(-1))
  83.  
  84. #ifdef    __STDC__
  85. MDFILE *mdopen(char *name,char *mode,char *(*fnfilenm)(),int seq);
  86. int    mdclose(MDFILE *mdp);
  87. int    mdflush(MDFILE *mdp);
  88. long    mdtell(MDFILE *mdp);
  89. long    mdseek(MDFILE *mdp,long c,int orig);
  90. int    mdungetc(int c,MDFILE *mdp);
  91. int    mdsetbuf(MDFILE *mdp, int blen);
  92. int    mdread(char *ptr,int size,int nitems,MDFILE *mdp);
  93. int    mdwrite(char *ptr,int size,int nitems,MDFILE *mdp);
  94. int    mdateof(MDFILE *mdp,int mode);
  95. int    mdalleof(MDFILE *mdp,int mode);
  96. int    mdnoteof(MDFILE *mdp,int mode);
  97. #else
  98. MDFILE *mdopen();
  99. int    mdclose();
  100. int    mdflush();
  101. long    mdtell();
  102. long    mdseek();
  103. int    mdungetc();
  104. int    mdsetbuf();
  105. int    mdread();
  106. int    mdwrite();
  107. int    mdateof();
  108. int    mdalleof();
  109. int    mdnoteof();
  110. #endif
  111.