home *** CD-ROM | disk | FTP | other *** search
- Unit MKOpen; {Open a message area using an MsgAreaId}
-
- {$I MKB.Def}
-
- Interface
-
- Uses MKMsgAbs;
-
- Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
- Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
-
- Implementation
-
-
- Uses MKMsgHud, MKMsgFid, MKMsgSqu, MKMsgEzy, MKMsgJam;
-
- { Area ids begin with identifier for msg base type }
- { The following characters are already reserved }
- { B = PC-Board }
- { E = Ezycomm }
- { F = Fido *.Msg }
- { H = Hudson }
- { I = ISR - msg fossil }
- { J = JAM }
- { M = MK }
- { P = *.PKT }
- { Q = QWK/REP }
- { S = Squish }
- { W = Wildcat }
-
-
- Function OpenMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Begin
- If InitMsgPtr(Msg, MsgAreaId) Then
- Begin
- OpenMsgArea := True;
- If Msg^.OpenMsgBase <> 0 Then
- Begin
- OpenMsgArea := False;
- DoneMsgPtr(Msg);
- End;
- End
- Else
- OpenMsgArea := False;
- End;
-
-
- Function OpenOrCreateMsgArea(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Begin
- If InitMsgPtr(Msg, MsgAreaId) Then
- Begin
- OpenOrCreateMsgArea := True;
- If Not Msg^.MsgBaseExists Then
- If Not Msg^.CreateMsgBase(200, 10) = 0 Then
- OpenOrCreateMsgArea := False;
- If Msg^.OpenMsgBase <> 0 Then
- Begin
- OpenOrCreateMsgArea := False;
- DoneMsgPtr(Msg);
- End;
- End;
- End;
-
-
- Function CloseMsgArea(Var Msg: AbsMsgPtr): Boolean;
- Begin
- If Msg <> Nil Then
- Begin
- CloseMsgArea := (Msg^.CloseMsgBase = 0);
- DoneMsgPtr(Msg);
- End
- Else
- CloseMsgArea := False;
- End;
-
-
- Function InitMsgPtr(Var Msg: AbsMsgPtr; MsgAreaId: String): Boolean;
- Begin
- Msg := Nil;
- InitMsgPtr := True;
- Case UpCase(MsgAreaId[1]) of
- 'H': Msg := New(HudsonMsgPtr, Init);
- 'S': Msg := New(SqMsgPtr, Init);
- 'F': Msg := New(FidoMsgPtr, Init);
- 'E': Msg := New(EzyMsgPtr, Init);
- 'J': Msg := New(JamMsgPtr, Init);
- Else
- InitMsgPtr := False;
- End;
- If Msg <> Nil Then
- Msg^.SetMsgPath(Copy(MsgAreaId, 2, 128));
- End;
-
-
- Function DoneMsgPtr(Var Msg: AbsMsgPtr): Boolean;
- Begin
- If Msg <> Nil Then
- Dispose(Msg, Done);
- Msg := Nil;
- End;
-
- End.