home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mksmvp10.zip / MKOPEN.PAS < prev    next >
Pascal/Delphi Source File  |  1997-09-27  |  3KB  |  120 lines

  1. Unit MKOpen; {Open a message area using an MsgAreaId}
  2.  
  3. {$I MKB.Def}
  4.  
  5. {
  6.      MKOpen - Copyright 1993 by Mark May - MK Software
  7.      You are free to use this code in your programs, however
  8.      it may not be included in Source/TPU function libraries
  9.      without my permission.
  10.  
  11.      Mythical Kingom Tech BBS (513)237-7737 HST/v32
  12.      FidoNet: 1:110/290
  13.      Rime: ->MYTHKING
  14.      You may also reach me at maym@dmapub.dma.org
  15. }
  16.  
  17.  
  18. Interface
  19.  
  20. Uses MKMsgAbs;
  21.  
  22. Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  23. Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  24. Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
  25. Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  26. Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
  27.  
  28. Implementation
  29.  
  30.  
  31. Uses MKMsgHud, MKMsgFid, MKMsgSqu, MKMsgEzy, MKMsgJam;
  32.  
  33. { Area ids begin with identifier for msg base type }
  34. { The following characters are already reserved    }
  35. {   B = PC-Board            }
  36. {   E = Ezycomm             }
  37. {   F = Fido *.Msg          }
  38. {   H = Hudson              }
  39. {   I = ISR - msg fossil    }
  40. {   J = JAM                 }
  41. {   M = MK-Merlin           }
  42. {   P = *.PKT               }
  43. {   Q = QWK/REP             }
  44. {   R = Renegade            }
  45. {   S = Squish              }
  46. {   W = Wildcat             }
  47.  
  48.  
  49. Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  50.   Begin
  51.   If InitMsgPtr(Msg, MsgAreaId) Then
  52.     Begin
  53.     OpenMsgArea := True;
  54.     If Msg^.OpenMsgBase <> 0 Then
  55.       Begin
  56.       OpenMsgArea := False;
  57.       If DoneMsgPtr(Msg) Then;
  58.       End;
  59.     End
  60.   Else
  61.     OpenMsgArea := False;
  62.   End;
  63.  
  64.  
  65. Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  66.   Begin
  67.   If InitMsgPtr(Msg, MsgAreaId) Then
  68.     Begin
  69.     OpenOrCreateMsgArea := True;
  70.     If Not Msg^.MsgBaseExists Then
  71.       If Not Msg^.CreateMsgBase(200, 10) = 0 Then
  72.         OpenOrCreateMsgArea := False;
  73.     If Msg^.OpenMsgBase <> 0 Then
  74.       Begin
  75.       OpenOrCreateMsgArea := False;
  76.       If DoneMsgPtr(Msg) Then;
  77.       End;
  78.     End;
  79.   End;
  80.  
  81.  
  82. Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
  83.   Begin
  84.   If Msg <> Nil Then
  85.     Begin
  86.     CloseMsgArea := (Msg^.CloseMsgBase = 0);
  87.     If DoneMsgPtr(Msg) Then;
  88.     End
  89.   Else
  90.     CloseMsgArea := False;
  91.   End;
  92.  
  93.  
  94. Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
  95.   Begin
  96.   Msg := Nil;
  97.   InitMsgPtr := True;
  98.   Case UpCase(MsgAreaId[1]) of
  99.     'H': Msg := New(HudsonMsgPtr, Init);
  100.     'S': Msg := New(SqMsgPtr, Init);
  101.     'F': Msg := New(FidoMsgPtr, Init);
  102.     'E': Msg := New(EzyMsgPtr, Init);
  103.     'J': Msg := New(JamMsgPtr, Init);
  104.     Else
  105.       InitMsgPtr := False;
  106.     End;
  107.   If Msg <> Nil Then
  108.     Msg^.SetMsgPath(Copy(MsgAreaId, 2, 128));
  109.   End;
  110.  
  111.  
  112. Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
  113.   Begin
  114.   If Msg <> Nil Then
  115.     Dispose(Msg, Done);
  116.   Msg := Nil;
  117.   End;
  118.  
  119. End.
  120.