home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / MKMSG102.ZIP / MKOPEN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-08-15  |  2.5 KB  |  106 lines

  1. Unit MKOpen; {Open a message area using an MsgAreaId}
  2.  
  3. {$I MKB.Def}
  4.  
  5. Interface
  6.  
  7. Uses MKMsgAbs;
  8.  
  9. Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  10. Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  11. Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
  12. Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  13. Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
  14.  
  15. Implementation
  16.  
  17.  
  18. Uses MKMsgHud, MKMsgFid, MKMsgSqu, MKMsgEzy, MKMsgJam;
  19.  
  20. { Area ids begin with identifier for msg base type }
  21. { The following characters are already reserved    }
  22. {   B = PC-Board            }
  23. {   E = Ezycomm             }
  24. {   F = Fido *.Msg          }
  25. {   H = Hudson              }
  26. {   I = ISR - msg fossil    }
  27. {   J = JAM                 }
  28. {   M = MK                  }
  29. {   P = *.PKT               }
  30. {   Q = QWK/REP             }
  31. {   S = Squish              }
  32. {   W = Wildcat             }
  33.  
  34.  
  35. Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  36.   Begin
  37.   If InitMsgPtr(Msg, MsgAreaId) Then
  38.     Begin
  39.     OpenMsgArea := True;
  40.     If Msg^.OpenMsgBase <> 0 Then
  41.       Begin
  42.       OpenMsgArea := False;
  43.       DoneMsgPtr(Msg);
  44.       End;
  45.     End
  46.   Else
  47.     OpenMsgArea := False;
  48.   End;
  49.  
  50.  
  51. Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  52.   Begin
  53.   If InitMsgPtr(Msg, MsgAreaId) Then
  54.     Begin
  55.     OpenOrCreateMsgArea := True;
  56.     If Not Msg^.MsgBaseExists Then
  57.       If Not Msg^.CreateMsgBase(200, 10) = 0 Then
  58.         OpenOrCreateMsgArea := False;
  59.     If Msg^.OpenMsgBase <> 0 Then
  60.       Begin
  61.       OpenOrCreateMsgArea := False;
  62.       DoneMsgPtr(Msg);
  63.       End;
  64.     End;
  65.   End;
  66.  
  67.  
  68. Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
  69.   Begin
  70.   If Msg <> Nil Then
  71.     Begin
  72.     CloseMsgArea := (Msg^.CloseMsgBase = 0);
  73.     DoneMsgPtr(Msg);
  74.     End
  75.   Else
  76.     CloseMsgArea := False;
  77.   End;
  78.  
  79.  
  80. Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  81.   Begin
  82.   Msg := Nil;
  83.   InitMsgPtr := True;
  84.   Case UpCase(MsgAreaId[1]) of
  85.     'H': Msg := New(HudsonMsgPtr, Init);
  86.     'S': Msg := New(SqMsgPtr, Init);
  87.     'F': Msg := New(FidoMsgPtr, Init);
  88.     'E': Msg := New(EzyMsgPtr, Init);
  89.     'J': Msg := New(JamMsgPtr, Init);
  90.     Else
  91.       InitMsgPtr := False;
  92.     End;
  93.   If Msg <> Nil Then
  94.     Msg^.SetMsgPath(Copy(MsgAreaId, 2, 128));
  95.   End;
  96.  
  97.  
  98. Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
  99.   Begin
  100.   If Msg <> Nil Then
  101.     Dispose(Msg, Done);
  102.   Msg := Nil;
  103.   End;
  104.  
  105. End.
  106.