home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progpas / prok344.arj / DATA.DOC < prev    next >
Text File  |  1991-04-01  |  17KB  |  373 lines

  1.  
  2. (*
  3.  * DATA.DOC - DOOR support data provided by ProKIT
  4.  *
  5.  * (C) 1988 Samuel H. Smith (rev. 8-aug-88)
  6.  *
  7.  
  8. (*********************************************************************8
  9.  *
  10.  * This describes the layout of the PCBoard 14.0 database records and
  11.  * the various free variables that are provided by the ProKIT library.
  12.  *
  13.  *)
  14.  
  15. type
  16.    {layout of the PCBOARD.SYS file while doors are open}
  17.    pcb_sys_rec = record
  18.     {1  }display:        char2;          {display on console?  -1 or 0}
  19.     {3  }printer:        char2;          {print log?           -1 or 0}
  20.     {5  }page_bell:      char2;          {bother sysop?        -1 or 0}
  21.     {7  }alarm:          char2;          {caller alarm sound?  -1 or 0}
  22.     {9  }sysop_next:     char;           {force sysop on next? 'N', 'X' or ' '}
  23.  
  24.     case integer of
  25.     1: (
  26.     {10 }errcheck:       char2;          {error check/correcting modem? -1 or 0}
  27.     {12 }graphics:       char;           {ansi graphics mode?   'Y','N','7'}
  28.     {13 }nodechat:       char;           {node chat status 'U' or 'A'}
  29.     {14 }openbps:        char5;          {BPS rate to open modem port at}
  30.     {19 }connectbps:     char5;          {BPS connect rate or 'Local'}
  31.     {24 }usernum:        integer;        {record number in user file}
  32.     {26 }firstname:      char15;         {caller's first name}
  33.     {41 }password:       char12;         {caller's password}
  34.     {53 }time_on:        integer;        {when the user logged on in MINUTES}
  35.     {55 }prev_used:      integer;        {minutes used in prev calls today, <0}
  36.     {57 }time_logged:    char5;          {hh:mm time the user logged on}
  37.     {62 }time_limit:     integer;        {maximum minutes allowed from PWRD}
  38.     {64 }down_limit:     integer;        {daily download limit/1024 from PWRD}
  39.     {66 }curconf:        byte;           {active conference when door opened}
  40.     {67 }joined:         bitmap;         {areas user has been in}
  41.     {72 }ydone:          bitmap;         {areas user has done 'Y' on}
  42.     {77 }time_added:     integer;        {highest conference added time in mins}
  43.     {79 }time_credit:    integer;        {upload/chat time credit in minutes}
  44.     {81 }slanguage:      char4;          {language used, blank, .FRE etc}
  45.     {85 }name:           char25;         {caller's full name}
  46.     {110}sminsleft:      integer;        {minutes left when door opened}
  47.     {112}snodenum:       byte;           {current node number}
  48.     {113}seventtime:     char5;          {hh:mm event time}
  49.     {118}seventactive:   char2;          {event time active? "-1" or "0 "}
  50.     {120}sslide:         char2;          {slide event? "-1" or " 0"}
  51.     {122}smemmsg:        single;         {memorized message number}
  52.     {126}scomport:       char;           {com port number '0','1','2'}
  53.     {127}fill99:         char2           {filler UNDOCUMENTED}
  54.     {record size: 128}
  55.       );
  56.  
  57.     2: (
  58.       offline_filler:    array[1..119] of char      {filler, spaces}
  59.       );
  60.    end;
  61.  
  62.  
  63.    {layout of the USERS file}
  64.    pcb_user_rec = record
  65.     {1  }name:          char25;
  66.     {26 }city:          char24;
  67.     {50 }passwd:        char12;         {no spaces allowed}
  68.     {62 }busphone:      char13;
  69.     {75 }phone:         char13;
  70.     {88 }date:          char6;          {yymmdd of last call}
  71.     {94 }time:          char5;          {hh:mm  of last call}
  72.     {99 }expert:        char;           {pcboard expert status Y or N}
  73.     {100}protocol:      char;           {X, C, Y, N}
  74.     {101}space1:        char;           {space - reserved}
  75.     {102}filedate:      char6;          {yymmdd of last file directory}
  76.     {108}level:         byte;           {security level}
  77.     {109}total_calls:   integer;        {number of times on system}
  78.     {111}pagelen:       byte;           {page length}
  79.     {112}uploads:       integer;        {number of uploads}
  80.     {114}downloads:     integer;        {number of downloads}
  81.     {116}downbytes:     double;         {daily download bytes so far}
  82.     {124}usercomment:   char30;         {user entered comment field}
  83.     {154}sysopcomment:  char30;         {sysop maintained comment field}
  84.     {184}lastused:      integer;        {minutes used so far today}
  85.     {186}expdate:       char6;          {yymmdd expiration date}
  86.     {192}explevel:      byte;           {expired security level}
  87.     {193}curconf:       byte;           {current conference number}
  88.     {194}conferences:   bitmap;         {area registration 1-39 (5 bytes)}
  89.     {199}expconf:       bitmap;         {expired conference registration}
  90.     {204}scanconf:      bitmap;         {user configured scan conferences}
  91.     {209}downtotal:     double;         {total bytes downloaded, all calls}
  92.     {217}uptotal:       double;         {total bytes uploaded, all calls}
  93.     {225}dead:          char;           {positive delete flag, Y or N}
  94.  
  95.     {226}lastread:      array[0..39] of single;
  96.                                         {last message pointer, main+39 conf's}
  97.  
  98.     {386}reserved:      char4;          {reserved for future use}
  99.  
  100. (*
  101.  * THE FOLLOWING USERS FILE BYTES ARE TAKEN OVER BY PRODOOR
  102.  * FOR STORAGE OF PRODOOR-SPECIFIC DATA FOR A USER.  OTHER DOOR
  103.  * PROGRAMS SHOULD TAKE CARE TO NOT CONFLICT WITH THESE BYTE
  104.  * POSITIONS!
  105.  *)
  106.     {390}curconfh:      byte;           {reserved for future use}
  107.  
  108.     {391}extrarec:      word;           {record number for extra user record}
  109.  
  110.     {393}flags:         byte;           {prodoor user flag bits}
  111.  
  112.     {394}mailconf:      byte;           {conference user has mail in}
  113.  
  114.     {395}scratchnum:    byte;           {scratch file number - incremented for
  115.                                          each use of a scratch file}
  116.  
  117.     {396}dooruse:       byte;           {times in prodoor, up to 255}
  118.  
  119.     {397}earned_k:      word;           {prodoor; earned kbytes}
  120.  
  121.     {399}reserve3:      word;           {used by qmail??}
  122.     {total size: 400}
  123.    end;
  124.  
  125.  
  126. const
  127.    {bit values in conf_flags}
  128.    conf_scan_blts    = 1;     {qmail include blts?}
  129.    conf_scan_files   = 2;     {qmail scan new files?}
  130.  
  131. type
  132. (* layout of CNAMES/CONFINFO record *)
  133.    pcbconf_rec = record
  134.       conf_name:              string[10];
  135.  
  136.       conf_private_ul:        boolean;
  137.       conf_private_mail:      boolean;
  138.       conf_echo_mail:         boolean;
  139.       conf_addsec:            integer;
  140.       conf_addtime:           integer;    {minutes}
  141.       conf_msgblocks:         integer;    {1-32 message blocks; 1024 msgs each}
  142.  
  143.       conf_msgfile:           string[31];  {conference message base pathname}
  144.       conf_public_uplist:     string[31];  {public uploads listing pathname}
  145.       conf_updir:             string[31];  {conference upload dir}
  146.       conf_private_uplist:    string[31];  {private uploads listing pathname}
  147.       conf_private_updir:     string[31];  {private uploads dir}
  148.  
  149.       conf_newsfile:          string[31];  {conference news pathname}
  150.  
  151.       conf_doormenu:          string[31];  {door menu pathname}
  152.       conf_doorinfo:          string[31];  {door info data pathname}
  153.  
  154.       conf_bltmenu:           string[31];  {bulletin menu pathname}
  155.       conf_bltinfo:           string[31];  {bulletin info pathname}
  156.  
  157.       conf_minsec:            byte;        {minimum security to join
  158.                                             if conference is non-public}
  159.  
  160.       conf_maxsec:            byte;        {maximum security to join
  161.                                             if conference is non-public}
  162.  
  163.       conf_dirmenu:           string[31];  {file area menu pathname}
  164.       conf_dirinfo:           string[31];  {file area info pathname}
  165.  
  166.       conf_autojoin:          boolean;     {auto-rejoin on logon?}
  167.  
  168.       conf_spare2:            byte;
  169.       conf_dlinfo:            string[31];  {download path info pathname}
  170.  
  171.       conf_public:            boolean;     {is this conference public?}
  172.  
  173.       conf_packopt:           string[15];  {propack options}
  174.  
  175.       conf_flags:             byte;        {Qmail flag bits}
  176.  
  177.       conf_spare3:            byte;        {spare flag bits}
  178.  
  179.       conf_msgs_read:         single;      {Number of messages downloaded/read
  180.                                             from this conference}
  181.  
  182.       conf_msgs_entered:      single;      {Number of messages uploaded to this
  183.                                             conference}
  184.  
  185.       conf_spare4:            integer;     {unallocated, used during rearrange}
  186.  
  187.       conf_spare5:            char4;       {unallocated}
  188.    end;
  189.  
  190.  
  191. (* layout of pcboard.dat *)
  192.    pcbsetup_rec = record
  193.       sysop_name:             varstring;  {sysop display name}
  194.       use_realname:           boolean;    {use real name for sysop?}
  195.       local_graphics:         boolean;    {graphics on in local mode?}
  196.       security_dir:           varstring;  {security messages location}
  197.       chat_dir:               varstring;  {node chat files location}
  198.       pcbtext_dir:            varstring;  {pcbtext file location}
  199.       userix_dir:             varstring;  {user index location}
  200.       users_path:             varstring;  {user file pathname}
  201.       caller_path:            varstring;  {caller log pathname}
  202.       cnames_path:            varstring;  {cnames file pathname}
  203.       pwrd_path:              varstring;  {pwrd file pathname}
  204.       fsec_path:              varstring;  {fsec file pathname}
  205.       upsec_path:             varstring;  {upsec file pathname}
  206.       tcan_path:              varstring;  {tcan file pathname}
  207.       welcome_path:           varstring;  {welcome file pathname}
  208.       newuser_path:           varstring;  {newuser file pathname}
  209.       closed_path:            varstring;  {closed file pathname}
  210.       warning_path:           varstring;  {30 day expiration warning pathname}
  211.       expired_path:           varstring;  {expired user message pathname}
  212.       usernet_path:           varstring;  {usernet.dat file pathname}
  213.       conference_menu:        varstring;  {conference menu pathname}
  214.       tranlog_path:           varstring;  {down/upload transfer log pathname}
  215.       logoff_path:            varstring;  {logoff message pathname}
  216.       language_path:          varstring;  {multi-lingual data file}
  217.  
  218.       hayesv_modem:           boolean;    {hayes-v modem?}
  219.       initial_speed:          word;       {modem initial/top open speed}
  220.       lock_speed:             boolean;    {lock modem at initial speed}
  221.       modem_initial:          varstring;  {modem initial command}
  222.       modem_offhook:          varstring;  {modem off-hook command}
  223.       reset_modem:            boolean;    {reset modem during recycle?}
  224.       recycle_offhook:        boolean;    {modem offhook during recycle?}
  225.       allow_300:              boolean;    {allow 300 baud connections?}
  226.       start_300:              string5;    {starting hh:mm for 300 baud}
  227.       stop_300:               string5;    {ending hh:mm for 300 baud}
  228.       disable_scan:           boolean;    {disable message scan prompt}
  229.       disable_blanker:        boolean;    {disable 3 minute screen blanker}
  230.       disable_filter:         boolean;    {disable high-bit filter}
  231.       disable_quick:          boolean;    {disable quick logon/join}
  232.       multi_lingual:          boolean;    {run in multi-lingual mode?}
  233.       only_pwchange:          boolean;    {allow only password changes?}
  234.       closed_board:           boolean;    {run in closed-board mode?}
  235.       disable_graphics:       boolean;    {disable graphics mode?}
  236.       dos_recycle:            boolean;    {exit to dos after each caller}
  237.       subscription_mode:      boolean;    {enable expired user checks}
  238.       allow_esc_codes:        boolean;    {allow escape codes in messages}
  239.       validate_to:            boolean;    {validate "TO:" in messages}
  240.       enforce_time_limit:     boolean;    {enforce daily time limits?}
  241.       new_news:               boolean;    {display only NEW news files?}
  242.       timeout_minutes:        integer;    {keyboard timeout in minutes}
  243.       under_network:          boolean;    {running multi-node?}
  244.       node_number:            varstring;  {node number}
  245.       network_timeout:        integer;    {network timeout in seconds}
  246.       chat_delay:             integer;    {node chat delay in seconds}
  247.       system_name:            varstring;  {name of the bbs system}
  248.       macro_string:           array[1..10] of varstring;
  249.                                           {shift-F1 thru F10 macros}
  250.       public_conferences:     string40;   {public conferences}
  251.       msg_lines:              integer;    {maximum message lines (1-99)}
  252.       ansi_intensity:         varstring;  {default intensity}
  253.       ansi_color:             varstring;  {color for inputs/filedisps}
  254.       event_active:           boolean;    {is event active?}
  255.       event_time:             string8;    {event time hh:mm}
  256.       event_buffer:           integer;    {minutes buffer before event}
  257.       event_noul:             boolean;    {disable uploads before event}
  258.       slide_event:            boolean;    {slide event time if needed}
  259.       disable_freecheck:      boolean;    {disable free space check}
  260.       printer_num:            integer;    {printer port number 1..3}
  261.       min_upload_free:        integer;    {stop uploads if free space less (K)}
  262.  
  263.       newuser_level:          integer;    {level given to new users}
  264.       refused_level:          integer;    {level for those who refuse to reg.}
  265.    end;
  266.  
  267.  
  268. (* layout of usernet.dat *)
  269.  
  270.    usernet_rec = record
  271.       status:  char2;      {chatting-with-node-number or status code}
  272.       nodeno:  char2;      {this-node-number or "R " if chat request sent}
  273.       name:    char25;     {name of caller on this node}
  274.       city:    char24;     {location of caller on this node}
  275.    end;
  276.  
  277.  
  278. (* flag bits in user.flags byte *)
  279.  
  280. const
  281.    flag_hasmail = $01;   {user has mail waiting?}
  282.   {flag_expert  = $02;}  {is user an expert?}
  283.    flag_hotkeys = $04;   {does user want hotkeys?}
  284.    flag_init    = $20;   {set before prodoor runs the first time}
  285.    flag_oldfmt  = $40;   {set by old versions of prodoor, must be clear in new}
  286.  
  287.  
  288. (* user file index PCBNDX.X record layout *)
  289. type
  290.    user_ix_rec = record
  291.       urec: word;
  292.       name: char25;
  293.    end;
  294.  
  295. var
  296.    user_ix:  user_ix_rec;
  297.  
  298.  
  299. (* ---------------------------------------------------------------- *)
  300. (* variables *)
  301.  
  302. var
  303.    version:           string[37];       {prokit version number}
  304.    linenum:           integer;          {current line number}
  305.  
  306.    pcbsetup:          pcbsetup_rec;     {data from PCBOARD.DAT}
  307.    pcbsys:            pcb_sys_rec;      {data from PCBOARD.SYS}
  308.  
  309.    user:              pcb_user_rec;     {data from USERS}
  310.    conf_info:         pcbconf_rec;      {data from CONFINFO}
  311.    conf_count:        integer;          {number of conferences}
  312.    current_conf:      integer;          {currently selected conference}
  313.  
  314.    username:          string30;         {full user name}
  315.    first_name:        string20;         {user's first name}
  316.    userlevel:         integer;          {user's adjusted security level}
  317.  
  318.    home_dir:          filenames;        {home/system directory}
  319.    comspec:           filenames;        {COMSPEC environment}
  320.  
  321.    cmdline:           string;           {current command line}
  322.    par:               string;           {current command parameter}
  323.    parn:              integer;          {atoi of par}
  324.  
  325.    par1:              anystring;
  326.    par2:              anystring;    { $2$  }
  327.    par3:              anystring;    { $3$  }
  328.    par4:              anystring;    { $4$  }
  329.    par5:              word;         { $5W$ }
  330.    par6:              word;         { $6W$ }
  331.    par7:              longint;      { $7L$ }
  332.    par8:              single;       { $8S$ }
  333.  
  334.    config_file:       filenames;   {filename of configuration file}
  335.    sys_dir:           filenames;   {directory where pcboard.sys is stored}
  336.  
  337.    alti_fd:           text;
  338.  
  339.    pending_keys:      anystring;   {pending function keys}
  340.  
  341.    extuser_file:      filenames;   {extuser data file}
  342.    confinfo_file:     filenames;   {confinfo data file}
  343.  
  344.    set_pcb:           anystring;   {PCB environment settings}
  345.  
  346. const
  347.    hotkeys_active:    boolean = false;   {hotkeys active next get_cmdline}
  348.  
  349.    status_active:     boolean = false;   {is status display active?}
  350.  
  351.    chat_active:       boolean = false;   {is sysop chat active? (disables
  352.                                           time-left and 3 minute timeouts)}
  353.  
  354.    event_pending:     boolean = false;   {true if event will run on exit}
  355.  
  356.    process_fkeys:     boolean = true;    {false to disable sysop keys}
  357.  
  358.    key_source:        (sysop_key, user_key) = sysop_key;
  359.                                          {set by get_key}
  360.  
  361.    alt_i:             boolean = false;   {file input in effect?}
  362.  
  363.    alt_p:             boolean = false;   {printing all display text?}
  364.  
  365.    allow_flagging:    boolean = true;    {include (F)lag option in MORE prompt}
  366.  
  367.    dump_user:         boolean = false;   {set by F8, CD loss or time elapsed}
  368.  
  369.    language:          string[4] = '';    {selected alternate language .LNG}
  370.  
  371.    extuser:           extuser_ptr = nil; {variable allocation EXTUSER record}
  372.  
  373.