home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / S105002.ZIP / URGENT.DOC < prev   
Text File  |  1991-11-04  |  34KB  |  810 lines

  1. This document contains any important information that I deem important
  2.             for you to read.  Please give it a look over.
  3.             --------------------------------------------
  4.  
  5. Read the newest SIMPLEX.DOC for up to date instructions for Simplex.  At the
  6. very end of the DOC file there is a list of all the additions and changes
  7. for each version of Simplex.  PLEASE TAKE THE TIME TO READ THAT INFORMATION.
  8.  
  9.  
  10.  
  11. 0) Updating from version 1.04.xx.
  12.  
  13. *********************** Urgent: FROM104.EXE ***************************
  14.  
  15. Before running Simplex 1.05 or later if you have a version prior to
  16. 1.05, you MUST run the included conversion program FROM104.EXE.  This
  17. will convert the USERLIST.BBS, the CONFIG.BBS and the MSGAREA.BBS
  18. files to the new format.  The old files will be renamed as .BAK files.
  19.  
  20. DELETE/OBLITERATE this program after use!  You don't want to run it
  21. accidentally!
  22.  
  23. ***********************************************************************
  24.  
  25.  
  26.  
  27. 1) Updating from version 1.01.
  28.  
  29. *************** Urgent: FROM101.EXE and FROM1012.EXE ******************
  30.  
  31. Before running any version after 1.01 if you haven't run any version
  32. subsequent to it, you MUST run the program FROM101.EXE (or
  33. for OS/2 users FROM1012.EXE) in your Simplex directory.  This will
  34. convert your CONFIG.BBS, USERLIST.BBS and all your menu files to using
  35. the new format!  The old ones will be names CONFIG.BAK, USERLIST.BAK,
  36. and each menu file will also have a .BAK.
  37.  
  38. Once you have run the new version, and everything is successful, you
  39. can delete the .BAK files.
  40.  
  41. Version 1.02 or later of Simplex now implements 16 user flags (A through P). 
  42. These can be used to restrict access to certain menu items.  There are
  43. two new menu options which allow you to turn on or off user flags.
  44.  
  45. DELETE/OBLITERATE this program after use!  You don't want to run it
  46. accidentally!
  47.  
  48. ***********************************************************************
  49.  
  50.  
  51. 2) Updated stuff in Simplex for this release:
  52.  
  53.  - Corrected bug in passing 0 baud rate (local) being changed to 300 baud.
  54.  - Added new menu option, Sysop definable log entry.
  55.  - Added search for fido node to echo and netmail areas.
  56.  - Fixes on Zmodem get_zheader().
  57.  - Ensured that aborted uploads are deleted!
  58.  - Fixed bug with logging downloadable mail archiver.
  59.  - Found problem (not stopping timer) that would lock Simplex/S while 
  60.    archiving mail.
  61.  - Changed stripping of Ctrl-Z in files.bbs to converting it to a space.
  62.  - Added info.a?? and info2.a?? as files shown between bulletin and main 
  63.    menu.
  64.  - Fixed replies to net/node addresses to show destination.
  65.  - Corrected bug in $### macro in type 240 menu data lines.
  66.  - Added SETPRIV, LEAVEMESSAGE and HANGUP questionnaire commands.
  67.  - Corrected bug in SETFLAG, SHOW and UNSETFLAG questionnaire commands.
  68.  - Corrected _TIMEOUT problems in X, Y and Zmodem protocols.
  69.  - Added support for GUEST user flag in userlist.
  70.  - Added option to change subject when replying to message.
  71.  - Added support for multiple addresses and netmail/echomail areas.
  72.  - Added support for ARJing downloadable mail.
  73.  - Corrected bug in local login that made Simplex open the com port!
  74.  - Added search for a node to Nodelist Searching Utility.
  75.  - Added critical error handlers to ignore critical errors and avoid hangs.
  76.  - Added local file copying support to local fileattach areas.
  77.  - Xmodem and Ymodem protocols now add ^Z padding on last block of file.
  78.  - Added logic to track messages read and sent in user's record.
  79.  - Added a trashcan file for undesireable logins (NONGRATA.BBS).
  80.  - Added message uploading.
  81.  - Corrected Ymodem and Ymodem-G to correctly cut file down to size after
  82.    an upload.
  83.  - Added ability to ask user for complete mailing address.
  84.  - Linted code and cleaned up some "iffy" code.
  85.  - Added the ability to send urgent APB messages to users in local areas.
  86.  - Added unlimited-time yell option.
  87.  
  88.  - CONFIG: Added support for new config structure.
  89.  - CONFIG: Added support for new user structure.
  90.  - CONFIG: Added support for new message area structure.
  91.  - CONFIG: Added support for multiple addresses and netmail/echomail areas.
  92.  - CONFIG: Corrected zone addressing to accept numbers up to 255.
  93.  - CONFIG: Added support for complete addressing in userlist.
  94.  
  95.  - SMAIL: Fixed bug in path lines.
  96.  - SMAIL: Set Local flag in outbound matrix mail for other mail handlers
  97.           (like FD).
  98.  - SMAIL: Invalid inbound messge dates/times replaced with current date/time.
  99.  - SMAIL: Added support for new config structure.
  100.  - SMAIL: Added support for new message area structure.
  101.  - SMAIL: Added support for multiple addresses in multiple netmail areas and 
  102.           for specific echomail area source addresses being different from 
  103.           the main address.
  104.  - SMAIL: Added support for unARJing mail packets.
  105.  - SMAIL: Added -r option to permit echomail to be exported/forwarded as 
  106.           ROUTED mail rather than DIRECT (CM).
  107.  - SMAIL: Corrected areas.bbs parsing to reject duplicate addresses to the 
  108.           same echo.
  109.  - SMAIL: Corrected areas.bbs parsing to correctly handle multiple lines
  110.           with the same echo tag.
  111.  - SMAIL: Tear out ^aINTL lines and replaces them with only one, the new 
  112.           one.
  113.  
  114.  - SMP: Corrected message header when international messages are bound for 
  115.         a zonegate.
  116.  - SMP: Added support for changed config structure.
  117.  - SMP: Added support for ARJing mail.
  118.  
  119.  - SCLEAN: Added new feature to delete messages in an area leaving a 
  120.            specified amount.
  121.  
  122.  
  123.  
  124. 3) SMP and SMP/2 have changed radically!
  125.  
  126. ***********************************************************************
  127. SMP has changed its verbs radically from the oMMM-style that it
  128. previously used.  Please read the respective sections in the new
  129. Simplex documentation.
  130.  
  131. These changes were mostly motivated by changes in the way netmail is
  132. handled.  Netmail can now be entered into Simplex as Direct (previously
  133. CM), Routed (previously Normal), or Held.  Echomail always comes out as
  134. Routed mail.  This 3-layered approach allows users without netmail
  135. credit to send routed mail since everyone is suppoed to be granted
  136. access to Fidomail in some form or another.
  137.  
  138. Here is a basic listing of the new SMP verbs:
  139.  
  140. HOLDTO <destination> <sources...>    
  141. HOSTHOLD <destinations...>        
  142. ROUTETO <destination> <sources...>    
  143. HOSTROUTE <destinations...>             
  144. DIRECTTO <destination> <sources...>    
  145. HOSTDIRECT <destinations...>        
  146. ARCHOLD <destination> <sources...>    
  147. ZIPHOLD <destination> <sources...>    
  148. LZHHOLD <destination> <sources...>    
  149. ARJHOLD <destination> <sources...>    
  150. ZOOHOLD <destination> <sources...>    
  151. ARCROUTE <destination> <sources...>    
  152. ZIPROUTE <destination> <sources...>    
  153. LZHROUTE <destination> <sources...>    
  154. ARJROUTE <destination> <sources...>    
  155. ZOOROUTE <destination> <sources...>    
  156. ARCDIRECT <destination> <sources...>    
  157. ZIPDIRECT <destination> <sources...>    
  158. LZHDIRECT <destination> <sources...>    
  159. ARJDIRECT <destination> <sources...>    
  160. ZOODIRECT <destination> <sources...>    
  161. HOLDROUTE <destinations...>            
  162. HOLDDIRECT <destinations...>           
  163. ROUTEHOLD <destinations...>        
  164. ROUTEDIRECT <destinations...>       
  165. DIRECTHOLD <destinations...>        
  166. DIRECTROUTE <destinations...>        
  167. LEAVEHOLD <destinations...>        
  168. LEAVEROUTE <destinations...>        
  169. LEAVEDIRECT <destinations...>        
  170. SENDHOLD <destinations...>        
  171. SENDROUTE <destinations...>        
  172. SENDDIRECT <destinations...>        
  173. POLL <destinations...>            
  174. ***********************************************************************
  175.  
  176.  
  177. 4) If menus don't work correctly!
  178.  
  179. If you find that some menus do not work correctly with 1.04, it is
  180. probably due to the fact that you used psuedo-variables (like $t and
  181. $d) using uppercase letters (like $T and $D).  With the advent of menu
  182. macros ($A-$Z), the case used in menus is important.  Pseudo-variables
  183. MUST be in lowercase.
  184.  
  185.  
  186.  
  187. 5) *New* DOS Swapping version of Simplex
  188.  
  189. As of version 1.04.02, there is a new version of Simplex available.  This 
  190. version is compiled with Zortech's v 3.0 compiler.  It takes advantage of 
  191. this compiler's Virtual Code Segments and swapping module to leave as much 
  192. free memory upon shelling or running an external program.  In tests, it
  193. has been found to take as little as 8K upon shelling to DOS!!  This
  194. version should be ideal for folks who want to run doors.
  195.  
  196.  
  197. 6) Official Simplex Distribution Sites
  198.  
  199. The following are official distribution sites for Simplex:
  200.  
  201.  Programmer's Oasis BBS, USA .... 919/226-6984 HST,v32bis,v32,14400->300 N,8,1
  202.  Programmer's Oasis 2 BBS, USA .. 919/226-7136 HST,v32bis,v32,14400-> 300 N,8,1
  203.  NightHawk BBS, USA ............. 919/228-7002 HST,9600->300 N,8,1
  204.  Grizzly the Third BBS, UK....... 44-772-82875 HST,14400->300 N,8,1
  205.  Stardate 1990 BBS, USA ......... 919/376-8423 HST,v32bis,v32,14400->300 N,8,1
  206.  
  207. If you wish to become an official distribution center, please contact
  208. Chris Laforet through any of the addresses below.  You must have the
  209. capability of electronically picking up the current versions from my 
  210. system when new versions arrive.
  211.  
  212.          
  213.  
  214. 7) New Distribution Policy.
  215.  
  216. Instead of putting all the Fidonet mail files into the main Simplex 
  217. distribution zips they have been separated out into separate distribution 
  218. zips.  These zips are called M10500D.ZIP (for DOS) and M105002.ZIP
  219. (for OS/2) and contain the files needed to handle Fidonet messages. 
  220. They are available from the above distribution centers.
  221.  
  222.  
  223.  
  224. 8) Crashes and/or Bugs
  225.  
  226.  Please report any strange crashes or bugs back to me at any of the
  227. addresses indicated below.  OS/2 users especially.  If you get an error
  228. screen from OS/2 with a register dump, PLEASE copy down the numbers
  229. next to CS: and IP: in the dump and give them to me.  That will greatly
  230. assist me in locating the problem!!
  231.  
  232.  
  233. 9) Contacting Chris Laforet Software
  234.  
  235.  You may send me mail through any of the following:
  236.  
  237.  Programmer's Oasis BBS, USA .... 919/226-6984
  238.  Programmer's Oasis 2 BBS, USA .. 919/226-7136
  239.  Fidonet Email .................. Chris Laforet @ 1:151/401 or 1:151/402
  240.  Compuserve Email ............... User ID: 76120,110
  241.  US Mail ........................ Chris Laforet Software
  242.                                   511-D Poplar St
  243.                                   Graham, NC  27253
  244.  
  245.  These I check occassionally:
  246.  
  247.  BIX Email....................... User ID: laforet
  248.  GEnie Email .................... User ID: XTX74591
  249.  
  250.  
  251. 10) Fidonet users can access a Simplex echo
  252.  
  253.   Users who wish to hook into the private Simplex echo can send me
  254. Fidonet mail at 1:151/401 or 1:151/402 and request it.  What we will do
  255. is set up a passworded session for the mailers and you will have to
  256. poll for mail once or twice a week.  The tag name off the echo is
  257. SIMPLEX.  In your message, send me your node information, the password
  258. you wish the mailers to use (<= 8 letters, case is significant), the
  259. node that you wish to poll (401 or 402) and I'll set it up for you.
  260.  
  261.  
  262. 11) Help files
  263.  
  264.   The help files in help.zip are the .asc and .ans formats needed by
  265. Simplex.  The .src files are the source files in SANSI-compilable
  266. format in case you wish to change the help files.
  267.  
  268.  
  269. 12) Developing Utilities for Simplex
  270.  
  271.   You are encouraged to develop external utilities for Simplex.  Please
  272. feel free to ship them over to the Simplex areas on any of those BBSes. 
  273. The data structures for Simplex are in this doc and are ***BYTE
  274. aligned*** (-Zp1 in MSC).  If you need extra information, contact Chris 
  275. Laforet at any of the above addresses and we'll see what we can do!
  276.  
  277.  
  278. 13) Data information and structures for Simplex v 1.05
  279.  
  280.  
  281. ***** Remember that structures are BYTE-ALIGNED!!! *****
  282.  
  283.  
  284. /* these macros access the user_flags bit-mapped options */
  285.  
  286. #define USER_CLS               0x1         /* send cls codes */
  287. #define USER_MORE              0x2         /* use more? paging */
  288. #define USER_ANSI              0x4         /* use ansi */
  289. #define USER_EDITOR            0x8         /* use full screen editor */
  290. #define USER_EXPERT            0x10        /* expert (abbreviated) menus */
  291. #define USER_FILEATTACH        0x20        /* allow user to fileattach in netmail areas? */
  292. #define USER_ANSWERED          0x4000      /* user has answered a newuser.qf questionaire */
  293. #define USER_DELETED           0x8000      /* user is deleted pending purge */
  294.  
  295.  
  296. /* these macros access the menu type options */
  297.  
  298. #define MENU_SHOW              0x0       /* show menu line only */
  299. #define MENU_CALL              0x1       /* call next menu */
  300. #define MENU_GOTO              0x2       /* goto next menu - no return */
  301. #define MENU_RET               0x3       /* return to previous menu */
  302. #define MENU_REPLACE           0x4       /* goto next menu - replace current menu on stack */
  303.  
  304. #define MENU_ENTER             0x10      /* enter a message */
  305. #define MENU_READ              0x11      /* read a message */
  306. #define MENU_SCAN              0x12      /* scan messages */
  307. #define MENU_QSCAN             0x13      /* quickscan messages */
  308. #define MENU_USERLIST          0x14      /* search/display users list */
  309. #define MENU_NETSEARCH         0x15      /* search for netmail address */
  310. #define MENU_FREQ              0x16      /* generate File Request to netmail node */
  311.  
  312. #define MENU_LIST              0x20      /* list file.bbs listing */
  313. #define MENU_UPLOAD            0x21      /* upload files to area */
  314. #define MENU_DOWNLOAD          0x22      /* download files from area */
  315. #define MENU_RAW               0x23      /* raw directory list in area */
  316. #define MENU_CONTENTS          0x24      /* view archive contents */
  317. #define MENU_NEW               0x25      /* show new files on system */
  318. #define MENU_SRCHNAME          0x26      /* search for file name on system */
  319. #define MENU_SRCHKEY           0x27      /* search for keyword on system */
  320. #define MENU_KILL              0x28      /* kill/delete file in area */
  321. #define MENU_READFILE          0x29      /* read a textfile in file area */
  322. #define MENU_DOWNLOAD_FILE     0x2a      /* download 1 file from area */
  323. #define MENU_MOVEFILES         0x2b      /* move files to another area */
  324.  
  325. #define MENU_SHOWFILE          0x30      /* show an ansi/ascii file */
  326. #define MENU_SHOWHOT           0x31      /* show an ansi/ascii file with active keys */
  327. #define MENU_SHOWWAIT          0x32      /* show an ansi/ascii file with wait for Enter */
  328. #define MENU_QUESTION          0x33      /* show a questionaire file */
  329. #define MENU_QUOTE             0x34      /* show a "random" quote from file */
  330. #define MENU_SHOWHOT_NOEXPERT  0x35      /* show an ansi/ascii file with active keys IF expert mode is off */
  331.  
  332. #define MENU_CITY              0x40      /* change users city/state */
  333. #define MENU_PASSWORD          0x41      /* change users password */
  334. #define MENU_CLS               0x42      /* toggle users cls state */
  335. #define MENU_MORE              0x43      /* toggle users more state */
  336. #define MENU_SCREENLEN         0x44      /* change users screen len */
  337. #define MENU_ANSI              0x45      /* toggle ansi on/off */
  338. #define MENU_EDITOR            0x46      /* toggle between line and full editor */
  339. #define MENU_EXPERT            0x47      /* toggle between novice and expert mode */
  340. #define MENU_HOMEPHONE         0x48      /* change home phone number */
  341. #define MENU_DATAPHONE         0x49      /* change data phone number */
  342.  
  343. #define MENU_ADENTER           0x50      /* enter an advertisement */
  344. #define MENU_ADREAD            0x51      /* read advertisements */
  345. #define MENU_ADSCAN            0x52      /* scan advertisments */
  346.  
  347. #define MENU_NEWPRIV           0x60      /* set a new privilege */
  348. #define MENU_UPTIME            0x61      /* raise the time of the user x minutes */
  349. #define MENU_DOWNTIME          0x62      /* drop the time of the user x minutes */
  350. #define MENU_ADDFLAGS          0x63      /* add flags to user's flags */
  351. #define MENU_DELFLAGS          0x64      /* delete flags to user's flags */
  352. #define MENU_SETTIME           0x65      /* set the time of the user to x minutes */
  353. #define MENU_LOGENTRY          0x66      /* log data line to sysop log */
  354.  
  355. #define MENU_SETCOMB           0x70      /* set up combined boards */
  356. #define MENU_READCOMB          0x71      /* read a message in comb boards */
  357. #define MENU_SCANCOMB          0x72      /* scan messages in comb boards */
  358. #define MENU_QSCANCOMB         0x73      /* quickscan messages in comb boards */
  359. #define MENU_DLCOMB            0x74      /* download messages in comb boards */
  360.  
  361. #define MENU_XMITXMODEM        0x80      /* send files using Xmodem */
  362. #define MENU_XMITXMODEM1K      0x81      /* send files using Xmodem-1K */
  363. #define MENU_XMITYMODEM        0x82      /* send files using Ymodem */
  364. #define MENU_XMITYMODEMG       0x83      /* send files using Ymodem-G */
  365. #define MENU_XMITZMODEM        0x84      /* send files using Zmodem */
  366.  
  367. #define MENU_RECVXMODEM        0x90      /* recv files using Xmodem */
  368. #define MENU_RECVXMODEM1K      0x91      /* recv files using Xmodem-1K */
  369. #define MENU_RECVYMODEM        0x92      /* recv files using Ymodem */
  370. #define MENU_RECVYMODEMG       0x93      /* recv files using Ymodem-G */
  371. #define MENU_RECVZMODEM        0x94      /* recv files using Zmodem */
  372.  
  373. #define MENU_RUN               0xf0      /* run a program from BBS */
  374. #define MENU_EXIT              0xf1      /* exit BBS with errorlevel */
  375. #define MENU_VERS              0xf2      /* show BBS version info */
  376. #define MENU_USAGE             0xf3      /* show users time usage and dl/ul info */
  377. #define MENU_YELL              0xf4      /* yell for sysop */
  378. #define MENU_CLOCK             0xf5      /* show clock for time synchronizing */
  379. #define MENU_CHECKMAIL         0xf6      /* check for mail addressed to user */
  380. #define MENU_USERUPGRADE       0xf7      /* sysop's user-upgrade option */
  381. #define MENU_TIMELESS_YELL     0xf8      /* yell for sysop - not bound by regular time */
  382. #define MENU_LOGOFF            0xff      /* hangup and log off */
  383.  
  384. #define M_SIGNATURE            0xa442      /* proves file is actual menu file */
  385.  
  386.  
  387. /* these macros are for message board flags */
  388.  
  389. #define MSG_LOCAL_FILEATTACH   0x0
  390. #define MSG_LOCAL              0x1
  391. #define MSG_ECHO               0x2
  392. #define MSG_NET                0x4
  393. #define MSG_PRIVATE            0x8         /* messages are private */
  394. #define MSG_PUBLIC             0x10      /* messages are public */
  395. #define MSG_ALIAS              0x20      /* aliases are allowed */
  396.  
  397.  
  398. /* these macros are for message header flags */
  399.       
  400. #define MSGH_DELETED           0x1
  401. #define MSGH_PRIVATE           0x2
  402. #define MSGH_RECEIVED          0x4
  403. #define MSGH_NET_UNSENT        0x8      /* is unsent Netmail message */
  404. #define MSGH_NET               0x10     /* is Netmail */
  405. #define MSGH_ECHO_UNSENT       0x20     /* is unsent Echomail message */
  406. #define MSGH_ECHO              0x40     /* is echomail */
  407. #define MSGH_LOCAL_FILEATTACH  0x80     /* is local fileattach */
  408.  
  409. #define NET_KILLSENT           0x100    /* kill/sent netmail */
  410. #define NET_SENT               0x200    /* netmail sent */
  411. #define NET_FILEATTACH         0x400    /* file(s) attached */
  412. #define NET_CRASH              0x800    /* crashmail */
  413. #define NET_RECEIPT_REQ        0x1000   /* receipt requested */
  414. #define NET_AUDIT_REQ          0x2000   /* audit request */
  415. #define NET_RECEIPT            0x4000   /* return receipt */
  416.  
  417.  
  418. /* these macros are for advertisement board header flags */
  419.  
  420. #define ADH_DELETED            0x1
  421. #define ADH_REPLIES            0x2
  422.  
  423.  
  424. /* color macros */
  425.  
  426. #define BLACK                  0
  427. #define BLUE                   1
  428. #define GREEN                  2
  429. #define CYAN                   3
  430. #define RED                    4
  431. #define MAGENTA                5
  432. #define BROWN                  6
  433. #define WHITE                  7
  434. #define BRIGHT                 8
  435. #define BLINK                  0x80
  436. #define ON_BLACK               0x0
  437. #define ON_BLUE                0x10
  438. #define ON_GREEN               0x20
  439. #define ON_CYAN                0x30
  440. #define ON_RED                 0x40
  441. #define ON_MAGENTA             0x50
  442. #define ON_BROWN               0x60
  443. #define ON_WHITE               0x70
  444.  
  445. /* Values for flags in Version 6 nodelist */
  446.  
  447. #define NL_HUB                 0x1
  448. #define NL_HOST                0x2
  449. #define NL_REGION              0x4
  450. #define NL_ZONE                0x8
  451. #define NL_CM                  0x10
  452.  
  453.  
  454. /* these macros are for user flags */
  455.  
  456. #define UF_A                  0x1
  457. #define UF_B                  0x2
  458. #define UF_C                  0x4
  459. #define UF_D                  0x8
  460. #define UF_E                  0x10
  461. #define UF_F                  0x20
  462. #define UF_G                  0x40
  463. #define UF_H                  0x80
  464. #define UF_I                  0x100
  465. #define UF_J                  0x200
  466. #define UF_K                  0x400
  467. #define UF_L                  0x800
  468. #define UF_M                  0x1000
  469. #define UF_N                  0x2000
  470. #define UF_O                  0x4000
  471. #define UF_P                  0x8000
  472.  
  473.  
  474.  
  475. /* NOTICE: user structure changed from 1.04.xx to 1.05! */
  476.  
  477. struct user
  478.    {
  479.    char user_name[41];
  480.    char user_address1[31];
  481.    char user_address2[31];
  482.    char user_city[31];
  483.    char user_state[16];
  484.    char user_zip[16];
  485.    char user_password[16];
  486.    char user_home[15];            /* users home number */
  487.    char user_data[15];            /* users data/business number */
  488.  
  489.    unsigned char user_priv;      /* users default privilege level */
  490.    int user_uflags;            /* 16 default definable flags */
  491.    unsigned char user_spriv;      /* users special privilege level */
  492.    int user_sflags;            /* 16 special definable flags */
  493.    int user_sdate;               /* expiration date of special levels */
  494.  
  495.    char user_screenlen;         /* length of users screen in lines */
  496.    int user_credit;            /* credit in cents for fidomail */
  497.    int user_flags;               /* bit mapped flags for options */
  498.  
  499.    int user_firstdate;            /* first date user called */
  500.    int user_lastdate;            /* last date called */
  501.    int user_lasttime;            /* last time called */
  502.    int user_calls;               /* number of calls to the BBS */
  503.    int user_timeused;            /* amount of time used for the day (minutes) */
  504.  
  505.    int user_upload;            /* number of uploads */
  506.    long user_uploadbytes;         /* number of bytes uploaded */
  507.    int user_dnload;            /* number of downloads */
  508.    long user_dnloadbytes;         /* number of bytes downloaded */
  509.    long user_msgsent;            /* number of messages sent */
  510.    long user_msgread;            /* number of messages read */
  511.  
  512.    char user_padding;            /* makes record 256 bytes */
  513.    };
  514.  
  515.  
  516.  
  517. struct prompt
  518.    {
  519.    int prompt_sig;               /* signiture for valid menu file 0xa442 */
  520.    char prompt_color;
  521.    char prompt_hilite;
  522.    char prompt_string[56];       /* string to show */
  523.    };
  524.  
  525.  
  526. struct menu
  527.    {
  528.    int menu_number;            /* line number */
  529.    unsigned char menu_type;    /* type of choice */
  530.    char menu_key;              /* key to initiate choice */
  531.    unsigned char menu_priv;    /* user priv to see/use choice */
  532.    int menu_flags;             /* version 1.02 added 16 flags */
  533.    char menu_auto;             /* automatic execution if true */
  534.    char menu_color;            /* color of choice */
  535.    char menu_hilite;           /* color of hilight */
  536.    char menu_expert;           /* if true show when expert mode is on */
  537.    char menu_line[71];         /* line to show on screen */
  538.    char menu_data[71];         /* data line for menu option */
  539.    char menu_deleted;
  540.    };
  541.  
  542.  
  543. /* NOTICE: cfg structure changed from 1.04.xx to 1.05! */
  544.  
  545. struct cfg
  546.    {
  547.    int cfg_baud;               /* maximum baud rate */
  548.    int cfg_port;               /* port number */
  549.    char cfg_init[61];            /* modem initialization string */
  550.    char cfg_resp[21];            /* normal modem response string */
  551.    char cfg_resp3[21];            /* 300 baud response */
  552.    char cfg_resp12[21];         /* 1200 baud response */
  553.    char cfg_resp24[21];         /* 2400 baud response */
  554.    char cfg_resp48[21];         /* 4800 baud response */
  555.    char cfg_resp96[21];         /* 9600 baud response */
  556.    char cfg_resp192[21];         /* 19200 baud response */
  557.    char cfg_resp384[21];         /* 38400 baud response */
  558.    char cfg_ring[21];            /* ring response */
  559.    char cfg_answer[21];         /* answer string */
  560.    char cfg_hangup[21];         /* hangup string */
  561.    char cfg_busy[21];            /* offhook string */
  562.    int cfg_flags;               /* flags for setup */
  563.  
  564.    int cfg_zone;
  565.    int cfg_net;
  566.    int cfg_node;
  567.    int cfg_point;               /* point for later use */
  568.    int cfg_akazone[5];
  569.    int cfg_akanet[5];
  570.    int cfg_akanode[5];
  571.    int cfg_akapoint[5];         /* points for later use */
  572.  
  573.    char cfg_sysopname[41];         /* sysop's name */
  574.    char cfg_bbsname[61];         /* BBS name */
  575.    char cfg_origin[66];         /* origin line */
  576.    char cfg_menupath[61];         /* path to menu files */
  577.    char cfg_screenpath[61];      /* path to screen files */
  578.    char cfg_nodepath[61];         /* path to nodelist */
  579.    char cfg_fapath[61];         /* path to local fileattaches */
  580.  
  581.    char cfg_netpath[61];         /* path for net messages */
  582.    char cfg_inboundpath[61];      /* path for inbound message pkts */
  583.    char cfg_outboundpath[61];      /* path for outbound message pkts */
  584.    char cfg_packetpath[61];      /* path for unpacking message pkts */
  585.    char cfg_badmsgpath[61];      /* path for placing bad messages */
  586.    char cfg_unarc[61];            /* command for unarcing ARCed files */
  587.    char cfg_unzip[61];            /* command for unarcing ZIPped files */
  588.    char cfg_unzoo[61];            /* command for unarcing ZOOed files */
  589.    char cfg_unlzh[61];            /* command for unarcing LZHed files */
  590.    char cfg_unarj[61];            /* command for unarcing ARJed files */
  591.    char cfg_arc[61];            /* command for arcing ARCed files */
  592.    char cfg_zip[61];            /* command for arcing ZIPped files */
  593.    char cfg_zoo[61];            /* command for arcing ZOOed files */
  594.    char cfg_lzh[61];            /* command for arcing LZHed files */
  595.    char cfg_arj[61];            /* command for arcing ARJed files */
  596.  
  597.    unsigned char cfg_newpriv;      /* priv level of new user */
  598.    int cfg_newflags;            /* v 1.02 new user's flags */
  599.    int cfg_newcredit;            /* credit level of new user */
  600.    int cfg_newtime;            /* logon time in mins for newuser */
  601.    char cfg_askaddress;         /* ask for full address */
  602.    char cfg_askhome;            /* ask for home phone */
  603.    char cfg_askdata;            /* ask for data phone */
  604.  
  605.    int cfg_minbaud;            /* minimum connect rate allowed on BBS */
  606.    int cfg_ansibaud;            /* minimum baud for ansi */
  607.    char cfg_ansi;               /* use ansi on local console */
  608.    char cfg_direct;            /* use direct screen writes? */
  609.    char cfg_snow;               /* use snow checking on screen writes */
  610.    char cfg_pwdtries;            /* number of attempts to get password */
  611.    char cfg_inactive;            /* time before hanging up for inactivity */
  612.    char cfg_yells;               /* number of yells per session */
  613.    char cfg_yelltime;            /* number of seconds for yell bell */
  614.    int cfg_yellstart;            /* start time for yell-bell */
  615.    int cfg_yellstop;            /* stop time for yell-bell */
  616.    int cfg_dlstart;            /* start time for downloads */
  617.    int cfg_dlstop;               /* stop time for downloads */
  618.    };
  619.  
  620.  
  621. /* NOTICE: cfg structure changed from 1.04.xx to 1.05! */
  622.  
  623. struct msg
  624.    {
  625.    int msg_number;               /* message board number */
  626.    char msg_areaname[41];         /* message area name */
  627.    char msg_flags;               /* message area flags */
  628.    unsigned char msg_readpriv;
  629.    unsigned char msg_writepriv;
  630.    unsigned char msg_sysoppriv;
  631.    char msg_origin[66];         /* special origin line for this if echomail area */
  632.    char msg_source;            /* source net/node for this netmail/echomail area */
  633.    char msg_deleted;            /* true if deleted */
  634.    };
  635.  
  636.  
  637. struct file
  638.    {
  639.    int file_number;              /* file board number */
  640.    char file_areaname[41];       /* file area name */
  641.    char file_pathname[61];       /* path to file area */
  642.    char file_descname[61];       /* if set, this is the path to files.bbs */
  643.    unsigned char file_priv;      /* priv level to search this area */
  644.    char file_deleted;            /* true if deleted */
  645.    };
  646.  
  647.  
  648. struct evt
  649.    {
  650.    char evt_enabled;             /* true if enabled */
  651.    char evt_forced;              /* true if forced event */
  652.    char evt_days;                /* 0-S-M-T-W-T-F-S */
  653.    unsigned int evt_time;        /* encoded time to run */
  654.    char evt_errorlevel;
  655.    char evt_title[21];           /* optional name for event */
  656.    char evt_deleted;             /* true if deleted */
  657.    };
  658.  
  659.  
  660. struct msgh      /* systemwide message number is ((offset/sizeof(struct msgh)) + 1) -- 0 is invalid systemwide message */
  661.    {
  662.    int msgh_area;               /* area number of message */
  663.    int msgh_number;             /* message number int that area! */
  664.    char msgh_to[41];            /* addressee of message */
  665.    char msgh_from[41];
  666.    char msgh_subject[71];
  667.    int msgh_date;
  668.    int msgh_time;
  669.    int msgh_flags;               /* net and message flags */
  670.    int msgh_szone;
  671.    int msgh_snet;
  672.    int msgh_snode;
  673.    int msgh_dzone;
  674.    int msgh_dnet;
  675.    int msgh_dnode;
  676.    int msgh_cost;
  677.    int msgh_prev;               /* previous message link - systemwide message number */
  678.    int msgh_next;               /* next message link - systemwide message number */
  679.    long msgh_offset;            /* start offset of message */
  680.    long msgh_length;            /* message length in bytes */
  681.    };
  682.  
  683.  
  684. struct mdata
  685.    {
  686.    int mdata_msgs;              /* total number of messages */
  687.    int mdata_del;               /* total number of deleted messages */
  688.    };
  689.  
  690.  
  691. struct mc      /* message counts by area */
  692.    {
  693.    int mc_area;
  694.    int mc_msgs;
  695.    };
  696.  
  697.  
  698. struct mlink
  699.    {
  700.    int mlink_area;
  701.    int mlink_number;        /* number of the message in that area! */
  702.    int mlink_flags;         /* a copy of the message flags */
  703.    int mlink_cksum;         /* a checksum on the uppercased TO: person's name */
  704.    };
  705.  
  706.  
  707. struct adh      /* header for advertisements */
  708.    {
  709.    char adh_from[41];
  710.    char adh_subject[71];
  711.    int adh_date;
  712.    int adh_time;
  713.    int adh_killdate;
  714.    int adh_flags;               /* ad flags */
  715.    long adh_prev;               /* previous ad header */
  716.    long adh_next;               /* next ad header */
  717.    long adh_length;             /* ad length in bytes */
  718.    };
  719.  
  720.  
  721. struct m
  722.    {
  723.    char m_name[10];            /* menu's name */
  724.    struct prompt m_prompt;
  725.    struct menu **m_lines;
  726.    int m_maxlines;                 /* number of allocated menu lines */
  727.    int m_curlines;                 /* number of menu lines */
  728.    };
  729.  
  730.  
  731. struct ui      /* User-info structure */
  732.    {
  733.    char ui_name[41];            /* user's name */
  734.    int ui_date;                 /* date user logged in */
  735.    int ui_time;                 /* time user logged in */
  736.    int ui_baud;                 /* baud rate user logged in at */
  737.    int ui_online;               /* time user spent online in minutes */
  738.    int ui_msgread;              /* number of messages user read */
  739.    int ui_msgposted;            /* number of messages user posted */
  740.    int ui_upload;               /* number of uploads */
  741.    long ui_uploadbytes;         /* number of bytes uploaded */
  742.    int ui_dnload;               /* number of downloads */
  743.    long ui_dnloadbytes;         /* number of bytes downloaded */
  744.    };
  745.  
  746.  
  747. struct nl         /* version 6 nodelist entry */
  748.    {
  749.    int nl_net;
  750.    int nl_node;
  751.    int nl_cost;
  752.    char nl_bbsname[34];
  753.    char nl_phone[40];
  754.    char nl_city[30];
  755.    char nl_pwd[8];
  756.    int nl_realcost;
  757.    int nl_hub;
  758.    char nl_baud;
  759.    char nl_modemtype;
  760.    int nl_flags;
  761.    int nl_waste;
  762.    };
  763.  
  764.  
  765. struct nlix         /* version 6 nodelist index */
  766.    {
  767.    int nlix_node;
  768.    int nlix_net;
  769.    };
  770.  
  771.  
  772. struct qh          /* quote file header! */
  773.    {
  774.    char qh_sig[14];    /* must be the words "Simplex Quote\0" */
  775.    int qh_lines;       /* total number of lines */
  776.    };
  777.  
  778. The quote file header is followed by qh_lines * sizeof(long) each
  779. containing the offset to the beginning of the respective quote line. 
  780. Each quote line follows and is a NUL ('\0') terminated string of 512
  781. characters or less.
  782.  
  783.  
  784.  
  785. /* total number of bytes for combined area mapping (9999 x 1 bit each) */
  786.  
  787. #define COMB_AREA               1250
  788.  
  789. struct comb            /* combined message board structure */
  790.    {
  791.    int comb_user;            /* user number */
  792.    char comb_areas[COMB_AREA];
  793.    };
  794.  
  795. The combined message board file contains an entry for each user who has
  796. set up combined areas.  The user is identified by his/her user number. 
  797. The areas are flagged as on or off if the respective flag for the
  798. message area is set.  The byte where a specific flag is located for a
  799. specific area can be retrieved by: comb_areas[message_area >> 3].  The
  800. specific bit can be masked by: 1 << (message_area % 8).
  801.  
  802.  
  803.  
  804. MSGREAD.BBS consists of the following:
  805.  
  806. INT   # of areas
  807. INT   area numbers[# of areas]
  808. INT   last systemwide message read[# of areas][# of users]
  809.  
  810.