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 300=1, 1200=2, 2400=0, 9600=3, 19200=4, Local=5
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;

See Also

ref/callinfo.bbs.1614427258.txt · Last modified: 2021/02/27 04:00 by BoonDock
Back to top
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0