Synchronet v3.18b-Win32 (install) has been released (Sept-2020).

Synchronet v3.19a, now under development, requires libarchive-dev to build successfully.

You can donate to the Synchronet project using PayPal.

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)

Save_Caller_Info.pas
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


In Other Languages
Translations of this page: