home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / MMSRC029.ZIP / mmail-0.29 / mmail / qwk.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-07-25  |  2.3 KB  |  110 lines

  1. /*
  2.  * MultiMail offline mail reader
  3.  * QWK
  4.  
  5.  Copyright (c) 1997 John Zero <john@graphisoft.hu>
  6.  Copyright (c) 1999 William McBrine <wmcbrine@clark.net>
  7.  
  8.  Distributed under the GNU General Public License.
  9.  For details, see the file COPYING in the parent directory. */
  10.  
  11. #ifndef QWK_H
  12. #define QWK_H
  13.  
  14. #include "pktbase.h"
  15.  
  16. #define ndxRecLen 5
  17.  
  18. #define getQfield(d, s, l) { strncpy(d, s, l); d[l] = '\0'; }
  19.  
  20. class qheader {
  21.     struct qwkmsg_header {
  22.         char status;
  23.         char msgnum[7];        // in ASCII
  24.         char date[8];        // ASCII MM-DD-YY date
  25.         char time[5];        // time in HH:MM ASCII
  26.         char to[25];        // TO
  27.         char from[25];        // FROM
  28.         char subject[25];    // subject of message
  29.         char password[12];    // message passw.
  30.         char refnum[8];        // in ASCII
  31.         char chunks[6];        // number of 128 byte chunks
  32.         char alive;        // msg is alive/killed
  33.         unsigned char confLSB;
  34.         unsigned char confMSB;
  35.         char res[3];
  36.     };
  37.  
  38.  public:
  39.     char from[26], to[26], subject[72], date[15];
  40.     int msglen, msgnum, refnum, origArea;
  41.     bool privat;
  42.     //netaddress na;    // not yet used, but could be!
  43.  
  44.     bool init(FILE *);
  45.     void output(FILE *);
  46. };
  47.  
  48. class qwkpack : public pktbase
  49. {
  50.     struct AREAs {
  51.         char *name;
  52.         int num, nummsgs, attr;
  53.         char numA[10];    // padded to deal with alignment bug (EMX)
  54.     } *areas;
  55.  
  56.     FILE *msgdatFile, *ctrdatFile;
  57.  
  58.     char textfiles[3][13];
  59.     char controlname[26];
  60.     int numMsgs;
  61.     bool qwke;
  62.  
  63.     void readControlDat();
  64.     void readDoorId();
  65.     void readToReader();
  66.     void readIndices();
  67.     void initMessagesDat();
  68.     unsigned long MSBINtolong(unsigned const char *);
  69.     int getYNum(int, unsigned long);
  70.     char *nextLine();
  71.  public:
  72.     qwkpack(mmail *);
  73.     ~qwkpack();
  74.     int getXNum(int);
  75.     area_header *getNextArea();
  76.     int getNoOfLetters();
  77.     letter_header *getNextLetter();
  78.     const char *getBody(letter_header &);
  79.     bool isQWKE();
  80.     const char *ctrlName();
  81. };
  82.  
  83. class qwkreply : public pktreply
  84. {
  85.     class upl_qwk : public upl_base
  86.     {
  87.      public:
  88.         qheader qHead;
  89.     };
  90.  
  91.     bool qwke;
  92.  
  93.     bool getRep1(FILE *, upl_qwk *);
  94.     void getReplies(FILE *);
  95.     int monthval(const char *);
  96.     void addRep1(FILE *, upl_base *);
  97.     void addHeader(FILE *);
  98.     const char *repTemplate(const char *, bool);
  99.     bool makeOffConfig();
  100.  public:
  101.     qwkreply(mmail *, specific_driver *);
  102.     ~qwkreply();
  103.     area_header *getNextArea();
  104.     letter_header *getNextLetter();
  105.     void enterLetter(letter_header &, const char *, int);
  106.     bool getOffConfig();
  107. };
  108.  
  109. #endif
  110.