This is an old revision of the document!
Callinfo.bbs
External Program Data File (a.k.a. drop file), CALLINFO.BBS
format from the RBBS software.
This file should normally be created in the current node's directory
(example: C:\sbbs\node1
). The current node's directory can be easily passed
to external programs via command line (using the %n command line specifier
in SCFG) or more easily retrieved by external programs be reading the
SBBSNODE environment variable.
The CALLINFO.BBS
is a plain text file consisting of CRLF-delimited lines, parsed one line at a time.
Line | Example | Description | Comment |
---|---|---|---|
01 | Jim Harrer | User Name | |
02 | 5 | Baud | |
03 | Bakersfield, CA | Calling From | |
04 | 1000 | Security Level | |
05 | 120 | User Time Left | |
06 | MONO | Color or Mono | |
07 | WCATIS#1 | Password | |
08 | 1 | User Reference Number | |
09 | 0 | Time On | |
10 | 12:44 | Time Str | |
11 | 12:44 05/08/89 | Time-Date | {Changed in v2.0 } |
12 | ABCDEFGHIJKLMNOYZ | Conference Joined | |
13 | 0 | Daily Downloads | |
14 | 100 | Max Downloads | |
15 | 0 | Daily Download K | |
16 | 10 | Max Download K | |
17 | 555-555-5555 | Phone Number | |
18 | 05/08/89 12:44 | Date-Time | |
19 | NOVICE | Novice or Expert | |
20 | All | Transfer Method | All, Ymodem, Ymodem/G, Xmodem, Xmodem/CRC, Xmodem-1K, Xmodem-1K/G, Ascii |
21 | 04/24/89 | Last New Date | |
22 | 190 | Times on | |
23 | 23 | Lines per Page | |
24 | 808 | Highest Message Read | |
25 | 0 | Uploads | |
26 | 2 | Downloads | |
27 | 8 | Databits (7 or 8) | |
28 | LOCAL | LOCAL or REMOTE | |
29 | COM0 | COM Port | |
30 | 06/26/58 | Birth Date | |
31 | 38400 | Com Port Speed | Baud Init or Baud Rate |
32 | FALSE | Already Connected | |
33 | Normal Connection | MNP/ARQ or Normal Connection | |
34 | 05/08/89 13:44 | Date Time (Global) | |
35 | 1 | Node ID | |
36 | 0 | Door Number |
Note: In order to keep track of midnight rollovers, line 11 was modified in version 2.0 to include MM/DD/YY.
Datastructure
Most of the original software was written in Pascal. This is a routine to write the file (in Pascal)
procedure Save_Caller_Info;
{ Save the callers information when exiting to a live program or Dropping to DOS from remote. } var FileOut : Text; DateTime : String; OldSlash : Char; begin Assign(FileOut, HomePath+'CALLINFO.BBS'); Rewrite(FileOut); CheckError('Rewriting CALLINFO.BBS'); Update_User_Info_Before_LogOff; with User do begin OldSlash := SlashChar; SlashChar := '/'; WriteLn(FileOut, UserName); { Line 1 } case Baud of B300 : WriteLn(FileOut, '1'); { Line 2 } B1200 : WriteLn(FileOut, '2'); B2400 : WriteLn(FileOut, '0'); B9600 : WriteLn(FileOut, '3'); B19200 : WriteLn(FileOut, '4'); BLocal : WriteLn(FileOut, '5'); end; WriteLn(FileOut, CallingFrom); { Line 3 } WriteLn(FileOut, SecurityLevel); { Line 4 } WriteLn(FileOut, User.TimeLeft); { Line 5 } if ColorMenus then WriteLn(FileOut, 'COLOR') else { Line 6 } WriteLn(FileOut, 'MONO'); WriteLn(FileOut, Password); { Line 7 } WriteLn(FileOut, UserRefNum); { Line 8 } WriteLn(FileOut, TimeOn); { Line 9 } WriteLn(FileOut, TimeStr); { Line 10 } with DateTimeCalled do DateTime := TimeToTimeString('hh:mm', T)+' '+DatetoDateString('mm/dd/yy', D); WriteLn(FileOut, DateTime); { Line 11 } WriteLn(FileOut, ConfJoined); { Line 12 } WriteLn(FileOut, DailyDL); { Line 13 } WriteLn(FileOut, Cfig.SecMaxDL[Array_Level]); { Line 14 } WriteLn(FileOut, Sc(DailyDK)); { Line 15 } WriteLn(FileOut, Sc(Cfig.SecMaxDK[Array_Level]/1024)); { Line 16 } WriteLn(FileOut, User.PhoneNumber); { Line 17 } WriteLn(FileOut, DatetoDateString('mm/dd/yy', TimeDate.D)+Space+ TimeToTimeString('hh:mm', TimeDate.T)); { Line 18 } if User.Xpert = Novice then WriteLn(FileOut, 'NOVICE') else { Line 19 } WriteLn(FileOut, 'EXPERT'); case User.TransferMethod of { Line 20 } All : WriteLn(FileOut, 'All'); Ymodem : WriteLn(FileOut, 'Ymodem'); YmodemG : WriteLn(FileOut, 'Ymodem/G'); Xmodem : WriteLn(FileOut, 'Xmodem'); XmodemCRC : WriteLn(FileOut, 'Xmodem/CRC'); Xmodem1K : WriteLn(FileOut, 'Xmodem-1K'); Xmodem1KG : WriteLn(FileOut, 'Xmodem-1K/G'); ASCii : WriteLn(FileOut, 'Ascii'); end; WriteLn(FileOut, DatetoDateString('mm/dd/yy', LastNew.D)); { Line 21 } WriteLn(FileOut, Sc(TimesOn)); { Line 22 } WriteLn(FileOut, Sc(LinesPerPage)); { Line 23 } WriteLn(FileOut, Sc(UsersHighestMsgRead(HighMsg, ConfJoined))); { Line 24 } WriteLn(FileOut, Sc(Uploads)); { Line 25 } WriteLn(FileOut, Sc(Downloads)); { Line 26 } if DataBits = SevenBits then WriteLn(FileOut, '7 { Databits } ') else WriteLn(FileOut, '8 { Databits }'); { Line 27 } if Local then WriteLn(FileOut, 'LOCAL') else WriteLn(FileOut, 'REMOTE'); { Line 28 } WriteLn(FileOut, 'COM'+Sc(Cfig.CommPort)); { Line 29 } WriteLn(FileOut, DatetoDateString('mm/dd/yy', BirthDate)); { Line 30 } { Write Comm Port Speed } if Cfig.FixedRate then WriteLn(FileOut, Cfig.BaudInit) else WriteLn(FileOut, BaudRate); { Line 31 } WriteLn(FileOut, AlreadyConnected); { Line 32 } if MNP_Connection then WriteLn(FileOut, 'MNP/ARQ Connection') else WriteLn(FileOut, 'Normal Connection'); { Line 33 } with GlobalNinfo.TimeOff do DateTime := DatetoDateString('mm/dd/yy', D)+' '+TimeToTimeString('hh:mm', T); WriteLn(FileOut, DateTime); { Line 34 } WriteLn(FileOut, Cfig.NodeID); { Line 35 } WriteLn(FileOut, DoorNumber); { Line 36 } SlashChar := OldSlash; end; { With } Close(FileOut); CheckError('Closing CALLINFO.BBS File'); end;