home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / WWIV412S.ZIP / VARDEC.H < prev    next >
C/C++ Source or Header  |  1990-07-15  |  18KB  |  578 lines

  1. #ifndef _VARDEC_H_
  2. #define _VARDEC_H_
  3.  
  4. /*****************************************************************************
  5.  
  6.                 WWIV Version 4
  7.               Copyright (C) 1988 by Wayne Bell
  8.  
  9. Distribution of the source code for WWIV, in any form, modified or unmodified,
  10. without PRIOR, WRITTEN APPROVAL by the author, is expressly prohibited.
  11. Distribution of compiled versions of WWIV is limited to copies compiled BY
  12. THE AUTHOR.  Distribution of any copies of WWIV not compiled by the author
  13. is expressly prohibited.
  14.  
  15.  
  16. *****************************************************************************/
  17.  
  18.  
  19.  
  20. /* These are the variable type declarations.  There are a few things you
  21.  * should note while reading these:
  22.  *
  23.  * unsigned char = 8 bits
  24.  * unsigned short= 16 bits
  25.  * unsigned long = 32 bits
  26.  * float         = 32 bits floating point
  27.  *
  28.  * You will notice that usually there are two "unsigned char" declarations.
  29.  * The reason for this is that the first group of unsigned char variables are
  30.  * taken to be actual character.  The second group are using "unsigned char"
  31.  * as a numeric variable of 8 bits long.
  32.  *
  33.  * All variables are declared to be unsigned (excepting float, of course).
  34.  * The reason is that most variables have meaning only for positive numbers,
  35.  * so allowing negative values would cut the number of valid values in half,
  36.  * wasting one bit (oh no!).  Many people will say, "Why bother?", but since
  37.  * the negatives aren't used anyway, might as well allow the whole range of
  38.  * postive values.
  39.  */
  40.  
  41.  
  42.  
  43. /* DATA FOR EVERY USER */
  44. typedef struct {
  45.     char        name[31],        /* user's name */
  46.             realname[21],        /* user's real name */
  47.             callsign[7],        /* user's amateur callsign */
  48.             phone[13],        /* user's phone number */
  49.             pw[9],            /* user's password */
  50.             laston[9],        /* last date on */
  51.             firston[9],        /* first date on */
  52.             note[41],        /* sysop's note about user */
  53.             macros[3][81],        /* macro keys */
  54.             sex;            /* user's sex */
  55.     unsigned char    age,            /* user's age */
  56.             inact,            /* if deleted or inactive */
  57.             comp_type,        /* computer type */
  58.             defprot,        /* deflt transfer protocol */
  59.             defed,            /* default editor */
  60.             screenchars,screenlines,/* screen size */
  61.             sl,            /* security level */
  62.             dsl,            /* transfer security level */
  63.             exempt,            /* exempt from ratios, etc */
  64.             colors[8],        /* user's colors */
  65.             votes[20],        /* user's votes */
  66.             illegal,        /* illegal logons */
  67.             waiting,        /* number mail waiting */
  68.             sysopsub,        /* sysop sub board number */
  69.             ontoday;        /* num times on today */
  70.     unsigned short    homeuser,homesys,    /* where user can be found */
  71.             forwardusr,forwardsys,    /* where to forward mail */
  72.             msgpost,        /* number messages posted */
  73.             emailsent,        /* number of email sent */
  74.             feedbacksent,        /* number of f-back sent */
  75.             posttoday,        /* number posts today */
  76.             etoday,            /* number emails today */
  77.             ar,            /* board access */
  78.             dar,            /* directory access */
  79.             restrict,        /* restrictions on account */
  80.             ass_pts,        /* bad things the user did */
  81.             uploaded,        /* number files uploaded */
  82.             downloaded,        /* number files downloaded */
  83.             lastrate,        /* last baud rate on */
  84.             logons;            /* total number of logons */
  85.     unsigned long    msgread,        /* total num msgs read */
  86.             uk,            /* number of k uploaded */
  87.             dk,            /* number of k downloaded */
  88.             qscn,            /* which subs to n-scan */
  89.             qscnptr[33],        /* q-scan pointers */
  90.             nscn1,nscn2,        /* which dirs to n-scan */
  91.             daten,            /* numerical time last on */
  92.             sysstatus;        /* status/defaults */
  93.     float        timeontoday,        /* time on today */
  94.             extratime,        /* time left today */
  95.             timeon,            /* total time on system */
  96.             pos_account,        /* $ credit */
  97.             neg_account,        /* $ debit */
  98.             gold;            /* game money */
  99.     unsigned char    bwcolors[8];        /* b&w colors */
  100.     unsigned char    month,day,year;        /* user's birthday */
  101.     unsigned int    emailnet,        /* email sent into net */
  102.             postnet;        /* posts sent into net */
  103.     unsigned short    fsenttoday1;        /* feedbacks today */
  104.         unsigned char   num_extended;           /* num lines of ext desc */
  105.         unsigned char   optional_val;           /* optional lines in msgs */
  106.         char            res[33];                /* reserved bytes */
  107. } userrec;
  108.  
  109.  
  110. /* SECLEV DATA FOR 1 SL */
  111. typedef struct {
  112.     unsigned short    time_per_day,        /* time allowed on per day */
  113.             time_per_logon,        /* time allowed on per logon */
  114.             messages_read,        /* messages allowed to read */
  115.             emails,            /* number emails allowed */
  116.             posts;            /* number posts allowed */
  117.     unsigned long    ability;        /* bit mapped abilities */
  118. } slrec;
  119.  
  120.  
  121. /* AUTO-VALIDATION DATA */
  122. typedef struct {
  123.     unsigned char    sl,            /* SL */
  124.             dsl;            /* DSL */
  125.     unsigned short    ar,            /* AR */
  126.             dar,            /* DAR */
  127.             restrict;        /* restrictions */
  128. } valrec;
  129.  
  130. typedef struct {
  131.         char            extension[4],           /* extension for archive */
  132.                         arca[32],
  133.                         arce[32],
  134.                         arcl[32];
  135. } arcrec;
  136.  
  137.  
  138. /* STATIC SYSTEM INFORMATION */
  139. typedef struct {
  140.     char        newuserpw[21],        /* new user password */
  141.             systempw[21],        /* system password */
  142.             msgsdir[81],        /* path for msgs directory */
  143.             gfilesdir[81],        /* path for gfiles dir */
  144.             datadir[81],        /* path for data directory */
  145.             dloadsdir[81],        /* path for dloads dir */
  146.             ramdrive,        /* drive for ramdisk */
  147.             tempdir[81],        /* path for temporary directory */
  148.                         resx[84],               /* reserved for never */
  149.             bbs_init_modem[51],    /* modem initialization cmd */
  150.             answer[21],        /* modem answer cmd */
  151.             connect_300[21],    /* modem responses for */
  152.             connect_1200[21],    /* connections made at */
  153.             connect_2400[21],    /* various speeds */
  154.             connect_9600[21],
  155.             connect_19200[21],
  156.             no_carrier[21],        /* modem disconnect */
  157.             ring[21],        /* modem ring */
  158.             terminal[21],        /* DOS cmd for run term prg */
  159.             systemname[51],        /* BBS system name */
  160.             systemphone[13],    /* BBS system phone number */
  161.             sysopname[51],        /* sysop's name */
  162.             executestr[51];        /* mail route path name */
  163.     unsigned char    newusersl,        /* new user SL */
  164.             newuserdsl,        /* new user DSL */
  165.             maxwaiting,        /* max mail waiting */
  166.             comport[5],        /* what connected to comm */
  167.             com_ISR[5],        /* Com Interrupts */
  168.             primaryport,        /* primary comm port */
  169.             newuploads,        /* file dir new uploads go */
  170.             closedsystem;        /* if system is closed */
  171.     unsigned short    systemnumber,        /* BBS system number */
  172.             baudrate[5],        /* Baud rate for com ports */
  173.             com_base[5],        /* Com base addresses */
  174.             maxusers,        /* max users on system */
  175.             newuser_restrict,    /* new user restrictions */
  176.             sysconfig,        /* System configuration */
  177.             sysoplowtime,        /* Chat time on */
  178.             sysophightime,        /* Chat time off */
  179.             executetime;        /* time to run mail router */
  180.     float        req_ratio,        /* required up/down ratio */
  181.             newusergold;        /* new user gold */
  182.     slrec        sl[256];        /* security level data */
  183.     valrec        autoval[10];        /* sysop quik-validation data*/
  184.     char        hangupphone[21],    /* string to hang up phone */
  185.             pickupphone[21];    /* string to pick up phone */
  186.     unsigned int    netlowtime,        /* net time on */
  187.             nethightime;        /* net time off */
  188.     char            connect_300_a[21],    /* alternate connect str's */
  189.             connect_1200_a[21],
  190.             connect_2400_a[21],
  191.             connect_9600_a[21],
  192.             connect_19200_a[21];
  193.         arcrec          arcs[4];
  194.         char            beginday_c[51],
  195.                         logon_c[51];
  196.         int             userreclen,
  197.                         waitingoffset,
  198.                         inactoffset;
  199.         char            newuser_c[51];
  200.         unsigned long   wwiv_reg_number;
  201.         char            dial_prefix[21];
  202.         float           post_call_ratio;
  203.         char            upload_c[51];
  204.         char            dszbatchdl[81];
  205.         char            res[129];               /* RESERVED */
  206. } configrec;
  207.  
  208.  
  209.  
  210. /* DYNAMIC SYSTEM STATUS */
  211. typedef struct {
  212.     char        date1[9],        /* last date active */
  213.             date2[9],        /* date before now */
  214.             date3[9],        /* two days ago */
  215.             log1[13],        /* yesterday's log */
  216.             log2[13],        /* two days ago log */
  217.             gfiledate[9],        /* date gfiles last updated */
  218.             resx[9];        /* reserved for nothing */
  219.     unsigned short    users,            /* Current number of users */
  220.             callernum,        /* Current caller number */
  221.             callstoday,        /* Number of calls today */
  222.             msgposttoday,        /* Messages posted today*/
  223.             emailtoday,        /* Email sent today */
  224.             fbacktoday,        /* Feedback sent today */
  225.             uptoday,        /* files uploaded today */
  226.             activetoday;        /* Minutes active today */
  227.     unsigned long    qscanptr;        /* Q-scan pointer value */
  228.     char        amsganon;        /* auto-message anony stat */
  229.     unsigned short    amsguser;        /* user who wrote a-msg */
  230.     unsigned long    callernum1;        /* caller number */
  231.         unsigned int    net_edit_stuff;         /* word for net editor */
  232.         unsigned int    wwiv_version;           /* tell what version it is */
  233.         unsigned int    net_version;            /* tell what version of net */
  234.         float           net_bias;               /* network bias factor */
  235.         long            last_connect,           /* date last connect.net */
  236.                         last_bbslist;           /* date last bbslist.net */
  237.         float           net_req_free;           /* net free factor def 3 */
  238.         char            res[31];                /* RESERVED */
  239. } statusrec;
  240.  
  241.  
  242.  
  243. /* MESSAGE BASE INFORMATION */
  244. typedef struct {
  245.     char        name[41],        /* board name */
  246.             filename[9],        /* board database filename */
  247.             key;            /* board special key */
  248.     unsigned char    readsl,            /* sl required to read */
  249.             postsl,            /* sl required to post */
  250.             anony,            /* anonymous board? */
  251.             age;            /* minimum age for sub */
  252.     unsigned short    maxmsgs,        /* max # of msgs */
  253.             ar,            /* AR for sub-board */
  254.             storage_type,        /* how messages are stored */
  255.             type;            /* 4 digit board type */
  256. } subboardrec;
  257.  
  258.  
  259.  
  260. /* UPLOAD DIRECTORY INFORMATION */
  261. typedef struct {
  262.     char        name[41],        /* directory name */
  263.             filename[9],        /* direct database filename */
  264.             path[81];        /* filename path */
  265.     unsigned char    dsl,            /* DSL for directory */
  266.             age;            /* minimum age for directory */
  267.     unsigned short    dar,            /* DAR for directory */
  268.             maxfiles,        /* max files for directory */
  269.             mask,            /* file type mask */
  270.             type;            /* 4 digit directory type */
  271. } directoryrec;
  272.         
  273.  
  274.  
  275. /* QUICK REFERNCE TO FIND USER NUMBER FROM NAME */
  276. typedef struct {
  277.     char        name[31];
  278.     unsigned short    number;
  279. } smalrec;
  280.  
  281.  
  282.  
  283. /* TYPE TO TELL WHERE A MESSAGE IS STORED */
  284. typedef struct {
  285.     unsigned char    storage_type;        /* how it is stored */
  286.     unsigned long    stored_as;        /* where it is stored */
  287. } messagerec;
  288.  
  289.  
  290.  
  291. /* DATA HELD FOR EVERY POST */
  292. typedef struct {
  293.     char        title[81];        /* title of post */
  294.     unsigned char    anony,            /* anony-stat of message */
  295.             status;            /* bit-mapped status */
  296.     unsigned short    ownersys,owneruser;    /* who posted it */
  297.     unsigned long    qscan,            /* qscan pointer */
  298.             daten;            /* numerical date posted */
  299.     messagerec    msg;            /* where to find it */
  300. } postrec;
  301.  
  302.  
  303.  
  304. /* DATA HELD FOR EVERY E-MAIL OR F-BACK */
  305. typedef struct {
  306.     char        title[81];        /* E-mail title */
  307.     unsigned char    anony,            /* anonymous mail? */
  308.             status;            /* status for e-mail */
  309.     unsigned short    fromsys,fromuser,    /* originating system,user */
  310.             tosys,touser;        /* destination system,user */
  311.     unsigned long    daten;            /* date it was sent */
  312.     messagerec    msg;            /* where to find it */
  313. } mailrec;
  314.  
  315.  
  316.  
  317. /* SHORT RESPONSE FOR USER, TELLING HIS MAIL HAS BEEN READ */
  318. typedef struct {
  319.     char        message[81];        /* short message to user */
  320.     unsigned short    tosys,touser;        /* who it is to */
  321. } shortmsgrec;
  322.  
  323.  
  324.  
  325. /* VOTING RESPONSE DATA */
  326. typedef struct {
  327.     char        response[81];        /* Voting question response */
  328.     unsigned short    numresponses;        /* number of responses */
  329. } voting_response;
  330.  
  331.  
  332.  
  333. /* VOTING DATA INFORMATION */
  334. typedef struct {
  335.     char        question[81];        /* Question */
  336.     unsigned char    numanswers;        /* number of responses */
  337.     voting_response    responses[20];        /* actual responses */
  338. } votingrec;
  339.  
  340.  
  341.  
  342. /* DATA HELD FOR EVERY UPLOAD */
  343. typedef struct {
  344.     char        filename[13],        /* filename */
  345.             description[59],    /* file description */
  346.             date[9],        /* date u/l'ed */
  347.             upby[46];        /* name of upload user */
  348.     unsigned char    filetype;        /* file type for apples */
  349.     unsigned short    numdloads,        /* number times d/l'ed */
  350.             ownersys,ownerusr,    /* who uploaded it */
  351.             mask;            /* file type mask */
  352.     unsigned long    daten,            /* date uploaded */
  353.             numbytes;        /* number bytes long file is */
  354. } uploadsrec;
  355.  
  356.  
  357.  
  358. /* ZLOG INFORMATION FOR PAST SYSTEM USAGE */
  359. typedef struct {
  360.     char        date[9];        /* zlog for what date */
  361.     unsigned short    active,            /* number minutes active */
  362.             calls,            /* number calls */
  363.             posts,            /* number posts */
  364.             email,            /* number e-mail */
  365.             fback,            /* number f-back */
  366.             up;            /* number uploads */
  367. } zlogrec;
  368.  
  369.  
  370.  
  371. /* DATA FOR OTHER PROGRAMS AVAILABLE */
  372. typedef struct {
  373.     char        filename[81],        /* filename for .chn file */
  374.             description[81];    /* description of it */
  375.     unsigned char    sl,            /* seclev restriction */
  376.             ansir;            /* if ANSI required */
  377.     unsigned short    ar;            /* AR restriction */
  378. } chainfilerec;
  379.  
  380.  
  381.  
  382. /* DATA FOR EXTERNAL PROTOCOLS */
  383. typedef struct {
  384.     char        description[81],    /* protocol description */
  385.             receivefn[81],        /* receive filename */
  386.             sendfn[81];        /* send filename */
  387.     unsigned short    ok1,ok2,        /* if sent */
  388.             nok1,nok2;        /* if not sent */
  389. } externalrec;
  390.  
  391.  
  392. /* DATA FOR EXTERNAL EDITORS */
  393. typedef struct {
  394.     char        description[81],    /* description of editor */
  395.             filename[81];        /* how to run the editor */
  396.     unsigned long    config;            /* configuration for editor */
  397.         char        filenamecon[81];    /* how to run locally */
  398.     char        res[119];
  399. } editorrec;
  400.  
  401.  
  402.  
  403. /* DATA FOR CONVERSION OF MAIN MENU KEYS TO SUB-BOARD NUMBERS */
  404. typedef struct {
  405.     char        keys[3];
  406.     int        subnum;
  407. } usersubrec;
  408.  
  409.  
  410.  
  411. typedef struct {
  412.         char            sending;
  413.         char            filename[13];
  414.         short           dir;
  415.         float           time;
  416.         long            len;
  417. } batchrec;
  418.  
  419. /* userrec.inact */
  420. #define inact_deleted 0x01
  421. #define inact_inactive 0x02
  422.  
  423. /* userrec.exempt */
  424. #define exempt_ratio 0x01
  425. #define exempt_time 0x02
  426. #define exempt_all 0x04
  427. #define exempt_post 0x08
  428.  
  429. /* userrec.restrict */
  430. #define restrict_logon 0x0001
  431. #define restrict_chat 0x0002
  432. #define restrict_validate 0x0004
  433. #define restrict_automessage 0x0008
  434. #define restrict_anony 0x0010
  435. #define restrict_post 0x0020
  436. #define restrict_email 0x0040
  437. #define restrict_vote 0x0080
  438. #define restrict_auto_msg_delete 0x0100
  439. #define restrict_net 0x0200
  440. #define restrict_upload 0x0400
  441.  
  442. #define restrict_string "LCMA*PEVKNU     "
  443.  
  444. /* userrec.sysstatus */
  445. #define sysstatus_ansi 0x0001
  446. #define sysstatus_color 0x0002
  447. #define sysstatus_music 0x0004
  448. #define sysstatus_pause_on_page 0x0008
  449. #define sysstatus_expert 0x0010
  450. #define sysstatus_smw 0x0020
  451. #define sysstatus_full_screen 0x0040
  452. #define sysstatus_nscan_file_system 0x0080
  453. #define sysstatus_funky_colors 0x0100
  454. #define sysstatus_clr_scrn 0x0200
  455.  
  456. /* slrec.ability */
  457. #define ability_post_anony 0x0001
  458. #define ability_email_anony 0x0002
  459. #define ability_read_post_anony 0x0004
  460. #define ability_read_email_anony 0x0008
  461. #define ability_limited_cosysop 0x0010
  462. #define ability_cosysop 0x0020
  463. #define ability_val_net 0x0040
  464.  
  465. /* subboardrec.anony */
  466. #define anony_enable_anony 0x01
  467. #define anony_enable_dear_abby 0x02
  468. #define anony_force_anony 0x04
  469. #define anony_real_name 0x08
  470. #define anony_val_net 0x10
  471. #define anony_ansi_only 0x20
  472. #define anony_no_tag 0x40
  473.  
  474. /* postrec.anony, mailrec.anony */
  475. #define anony_sender 0x01
  476. #define anony_sender_da 0x02
  477. #define anony_sender_pp 0x03
  478. #define anony_receiver 0x10
  479. #define anony_receiver_da 0x20
  480. #define anony_receiver_pp 0x30
  481.  
  482. /* directoryrec.mask */
  483. #define mask_PD 0x0001
  484. #define mask_no_uploads 0x0004
  485. #define mask_archive 0x0008
  486. #define mask_extended 0x8000
  487.  
  488. /* postrec.status */
  489. #define status_unvalidated 0x01
  490. #define status_delete 0x02
  491. #define status_no_delete 0x04
  492. #define status_pending_net 0x08
  493.  
  494. /* mailrec.status */
  495. #define status_multimail 0x01
  496.  
  497. /* configrec.sysconfig */
  498. #define sysconfig_no_local 0x0001
  499. #define sysconfig_no_beep 0x0002
  500. #define sysconfig_high_speed 0x0004
  501. #define sysconfig_off_hook 0x0008
  502. #define sysconfig_two_color 0x0010
  503. #define sysconfig_flow_control 0x0020
  504. #define sysconfig_printer 0x0040
  505. #define sysconfig_list 0x0080
  506. #define sysconfig_no_xfer 0x0100
  507. #define sysconfig_2_way 0x0200
  508. #define sysconfig_no_alias 0x0400
  509. #define sysconfig_all_sysop 0x0800
  510. #define sysconfig_shrink_term 0x1000
  511. #define sysconfig_free_phone 0x2000
  512.  
  513. /* editorrec.config */
  514. #define config_80_25 0x0001
  515.  
  516. #define ansir_ansi 0x01
  517. #define ansir_no_DOS 0x02
  518. #define ansir_no_300 0x04
  519. #define ansir_shrink 0x08
  520. #define ansir_no_pause 0x10
  521.  
  522. #define PREV 1
  523. #define NEXT 2
  524. #define DONE 4
  525. #define NUM_ONLY 1
  526. #define UPPER_ONLY 2
  527. #define ALL 4
  528. #define SET 8
  529.  
  530.  
  531. struct line {
  532.     char        text[160];
  533.     struct line     *prev,*next;
  534. };
  535.  
  536.  
  537. typedef struct {
  538.   int x1,y1,topline1,curatr1;
  539.   char *scrn1;
  540. } screentype;
  541.  
  542. typedef struct{
  543.   char name[13];
  544.   int len;
  545. } ext_desc_type;
  546.  
  547. typedef struct {
  548.     char        name[41],        /* g-file section name */
  549.             filename[9];        /* g-file database filename */
  550.     unsigned char    sl,            /* sl required to read */
  551.             age;            /* minimum age for section */
  552.     unsigned short    maxfiles,        /* max # of files */
  553.             ar;            /* AR for g-file section */
  554. } gfiledirrec;
  555.  
  556. typedef struct {
  557.     char        description[81],    /* description of file */
  558.             filename[13];        /* filename of file */
  559.         long        daten;            /* date added */
  560. } gfilerec;
  561.  
  562. typedef struct {
  563.         char            curspeed[23];           /* description of speed */
  564.         char            return_code[23];        /* modem result code */
  565.         unsigned short  modem_speed,            /* speed modems talk at */
  566.                         com_speed;              /* speed com port runs at */
  567. } resultrec;
  568.  
  569.  
  570. #define NUM_CTYPES 10
  571. #define VERSION_NUMBER "WWIV v4.12"
  572. #define max_buf 1024
  573. #define VER_VECT 0x6a
  574. #define MSG_COLOR 0
  575. #define MAX_BATCH 50
  576.  
  577. #endif
  578.