home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Troubleshooting Netware Systems
/
CSTRIAL0196.BIN
/
attach
/
msj
/
v10n10
/
vb40.exe
/
WCIMR.EXE
/
WCPROCES.BAS
< prev
next >
Wrap
BASIC Source File
|
1995-10-01
|
8KB
|
239 lines
Attribute VB_Name = "WCIMProcess"
Function ProcessThread(ThdNum As Integer) As String
On Error Resume Next
' gThreadList is type Thread
Dim ThrdMsg As ForumThdMsg
Dim FNum As Integer
Dim Strg$
' Get the thread header, and save the offset for further reading
Posn = GetThreadHeader(gThreadList(ThdNum))
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
' Advance past the already-read thread header
Seek #FNum, Posn
ProcessThread = ""
' Loop for each thread entry, reading the messages
For i = 1 To gThreadList(ThdNum).Header.count
' Read the next thread message (based on file position)
RC = GetNextThreadMsg(FNum, ThrdMsg)
Reply$ = "Section: " & gThreadList(ThdNum).Header.forumname.SData & _
" (" & gThreadList(ThdNum).Header.sectionname.SData & ")" & Chr$(13) & Chr$(10) & _
"Msg: " & ThrdMsg.MessageID & " (Reply to: " & ThrdMsg.ParentID
If ThrdMsg.numreplies = 1 Then
Reply$ = Reply$ & " - 1 reply to this msg."
Else
If ThrdMsg.numreplies > 1 Then
Reply$ = Reply$ & " - " & ThrdMsg.numreplies & " replies to this msg."
End If
End If
Reply$ = Reply$ & ")"
' Build the message string and append it to the thread display
Strg$ = Reply$ & Chr$(13) & Chr$(10) & _
"From: " & ThrdMsg.AuthorName.SData & " (" & ThrdMsg.AuthorAddr.SData & ")" & Chr$(13) & Chr$(10) & _
"To : " & ThrdMsg.RecipName.SData & " (" & ThrdMsg.RecipAddr.SData & ")" & Chr$(13) & Chr$(10) & _
"Date: " & TSToString(ThrdMsg.Created) & Chr$(13) & Chr$(10) & _
"Subject: " & gThreadList(ThdNum).Header.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
StrReplace(ThrdMsg.MsgText, Chr$(10), Chr$(13) & Chr$(10)) & _
Chr$(13) & Chr$(10) & String(70, "=") & Chr$(13) & Chr$(10)
Strg$ = StdReplace(Strg$)
ProcessThread = ProcessThread & Strg$
Next i
Close FNum
End Function
Function ProcessEMail(ThdNum As Integer) As String
On Error Resume Next
' gThreadList is type Thread
' Dim ThrdMsg As ForumThdMsg
Dim FNum As Integer
Dim MsgHdr As MessageHeader
Dim MsgStrg As String
Dim EMailHdr As EMailHeader
Dim ct As Integer
' Figure out the length of the read-in common header
Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Service.SLen + 1
' Open the email file
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
Seek #FNum, Posn
' Reset the edit box
' Get the message header
RC = GetMessageHeader(FNum, MsgHdr)
Get #FNum, , MsgHdr.flags
Get #FNum, , MsgHdr.NumAddlRecips
ct = 0
While ct < MsgHdr.NumAddlRecips
'rc = GetRecipient(FNum, M.AddlRecips(count + 1))
ct = ct + 1
Wend
RC = GetEMailHeader(FNum, EMailHdr)
MsgLen = LOF(FNum) - Seek(FNum)
If (MsgLen <= 0) Then Exit Function
MsgStrg = String(MsgLen, " ")
Get #FNum, , MsgStrg
Strg$ = "From: " & MsgHdr.AuthName.SData & " (" & MsgHdr.AuthAddr.SData & ")" & Chr$(13) & Chr$(10) & _
"To: " & MsgHdr.PrimaryRecips.Name.SData & " (" & MsgHdr.PrimaryRecips.Addr.SData & ")" & Chr$(13) & Chr$(10) & _
"Date: " & TSToString(MsgHdr.Created) & Chr$(13) & Chr$(10) & _
"Subject: " & MsgHdr.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
MsgStrg
Strg$ = StdReplace(Strg$)
Close FNum
ProcessEMail = Strg$
End Function
Function ProcessNews(ThdNum As Integer) As String
On Error Resume Next
Dim MsgStrg As String
Dim N As ENSStory
Dim FNum As Integer
Posn = gThreadList(ThdNum).ComHdr.StrucSize + 10
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
Seek #FNum, Posn
z = GetNews(FNum, N)
Close #FNum
ProcessNews = N.Story
End Function
Function ProcessMsg(ThdNum As Integer) As String
On Error Resume Next
Dim ForumMsg As ForumMsgHeader
Dim MsgHdr As MessageHeader
Dim FNum As Integer
Dim Strg$
' We've already read in all the common headers. Calculate the
' length (including the variable length of the PStrings) and
' use it as an offset from the beginning of the file.
Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Service.SLen + 1
' Open the thread/email file
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
Seek #FNum, Posn
' Get the message header
RC = GetMessageHeader(FNum, MsgHdr)
Get #FNum, , MsgHdr.flags
' Get the forum message header and body
RC = GetForumMsgHeader(FNum, ForumMsg)
Close FNum
Reply$ = "Section: " & gThreadList(ThdNum).Header.forumname.SData
Reply$ = Reply$ & " (" & gThreadList(ThdNum).Header.sectionname.SData & ")"
Reply$ = Reply$ & Chr$(13) & Chr$(10) & "Msg: " & ForumMsg.msgid
' Search and replace the special characters in the message, and
' change ctrl-j to ctrl-m/ctrl-j
' Build the message string and append it to the thread display
Strg$ = Reply$ & Chr$(13) & Chr$(10) & _
"From: " & MsgHdr.AuthName.SData & " (" & MsgHdr.AuthAddr.SData & ")" & Chr$(13) & Chr$(10) & _
"To : " & MsgHdr.PrimaryRecips.Name.SData & " (" & MsgHdr.PrimaryRecips.Addr.SData & ")" & Chr$(13) & Chr$(10) & _
"Date: " & TSToString(MsgHdr.Created) & Chr$(13) & Chr$(10) & _
"Subject: " & MsgHdr.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
StrReplace(ForumMsg.body, Chr$(10), Chr$(13) & Chr$(10)) & _
Chr$(13) & Chr$(10)
Strg$ = StdReplace(Strg$)
ProcessMsg = Strg$
End Function
Function ProcessUndef(ThdNum As Integer) As String
On Error Resume Next
' For an undefined file, just open it and dump it to
' the edit window
Dim Strg As String
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
Strg = String(LOF(FNum), " ")
Get #FNum, , Strg
Close #FNum
ProcessUndef = Strg
End Function
Function ProcessIPlex(ThdNum As Integer) As String
On Error Resume Next
ProcessIPlex = "(not implemented - IPLEX msg)"
End Function
Function ProcessDisp(ThdNum As Integer) As String
On Error Resume Next
Dim MsgStrg As String
Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
gThreadList(ThdNum).ComPStr.Service.SLen + 1
FNum = FreeFile
Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
Seek #FNum, Posn
MsgLen = LOF(FNum) - Seek(FNum)
MsgStrg = String(MsgLen, " ")
Get #FNum, , MsgStrg
Close #FNum
MsgStrg = StdReplace(MsgStrg)
ProcessDisp = MsgStrg
End Function