home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / PCBCK221.ZIP / PCBCHECK.DOC < prev    next >
Text File  |  1994-10-13  |  35KB  |  679 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                        PCBCheck Advanced Upload Checker
  7.                           v.2.21  October 13, 1994
  8.                                     Jim Dahl
  9.  
  10.  
  11.  
  12. ┌────────────────────────────┐
  13. │ 1.  Mission and conception │
  14. └────────────────────────────┘
  15.  
  16. I created PCBCheck (mainly for in-house use) when I was first exposed to
  17. the difficulty in setting up other PCBoard upload checkers.  Creating a
  18. SETUP.CNF file and putting 50 seperate pieces of information on different
  19. lines in certain formats is not a nice way to set up a program!  In fact,
  20. any program other than a BBS utility, would fail miserably if it required
  21. such an intricate setup.  BBS utilities do not need to be so complicated to
  22. setup!
  23.  
  24. Comments are very welcomed and bug reports are PROMPTLY addressed!
  25.  
  26. ┌────────────────────────────┐
  27. │ 2.  Features               │
  28. └────────────────────────────┘
  29.  
  30. As mentioned above, I believe the main feature of the program is its
  31. easy-to-use SETUP program!  I also think PCBCheck has kind of a cool,
  32. modern PCBoard 15.1 look that others lack.  Specific functions are:
  33.  
  34.     *  Archive support is through PCC (archive information) files,
  35.          NOT internal code, so new archivers can be added with a simple
  36.          100 byte file! 
  37.     *  Easy-to-use SETUP program which dynamically adjusts its menus
  38.          based on your system setup, selected options, installed
  39.          archivers, etc...  No wasted menu space, asks only those questions
  40.          which affect you!  It even sets up your PCBTEST.BAT file for you!
  41.     *  PCBCheck features advanced output which dynamically alters itself 
  42.          based on the type of upload, tests to be performed, etc...  
  43.          A few examples:  When testing a GIF, a slot for resolution appears 
  44.          in the space normally used by the 'testing embedded archives' slot; 
  45.          when PCBCheck replaces the description with the FILE_ID.DIZ the 
  46.          change is reflected on the line of the description displayed on the 
  47.          screen, etc....  There will never be prompts which are irrelevant 
  48.          to the current upload displayed.
  49.     *  Flexible recognition criteria- using the 'allow unrecognized files',
  50.          'allow archives with non-standard extensions', and acceptable
  51.          non-archive extensions list (wildcards allowed) you can tailor
  52.          which uploads will be accepted to your specific needs.
  53.  
  54. General features and abilities include:
  55.  
  56.     - Automatic recognition and use of F-Prot and McAfee's virus scanners
  57.     - FOSSIL and non-standard comm. port support
  58.     - age checking based on percentage of files newer than specified date
  59.     - scans embedded archives to any depth (as deep as path names allow)
  60.     - FILE_ID.DIZ importing (autocorrects invalid FILE_ID.DIZ descriptions)
  61.     - virus scanning using your virus scanner
  62.     - GIF integrity scanning
  63.     - convert all recognized archives to single type
  64.     - can handle self-extracting archives
  65.     - recognize archives with non-standard extensions
  66.     - add file to archives
  67.     - remove specified files from archives
  68.     - check for bad 'keywords' in description to reject upload
  69.     - compare upload name to 'trashcan' list for rejection
  70.     - program or external errors noted in PCBCHECK.LOG
  71.     - can send mail to sysop to inform him of program or external errors
  72.     - add newest/oldest file dates and number of files to description
  73.     - add GIF resolution to description
  74.     - notify sysop by mail of uploads which may be virus infected
  75.     - special RAM disk support to speed up operation
  76.     - ability to use different background screens
  77.     - registered version allows sysop to have his BBS name in title bar
  78.  
  79. ┌────────────────────────────┐
  80. │ 3.  Installation           │
  81. └────────────────────────────┘
  82.  
  83. PCBCheck should be installed in it's own directory, preferably close to
  84. the root directory.  DOS places limits on command and parameter lengths, and
  85. PCBCheck can often come dangerously close to those limits while executing
  86. complex archive/dearchive commands!  Putting PCBCheck in a directory
  87. directly off the root directory gives it more room to play with by
  88. shortening the paths to PCBCheck data files.
  89.  
  90. When PCBoard wants an upload checked, it calls PCBTEST.BAT in its home
  91. directory.  SETUP will modify PCBTEST.BAT for you if it detects that
  92. PCBTEST.BAT does not already run PCBCHECK and you tell it that it is
  93. allowed to modify PCBTEST.BAT.  Note that you may need to add a special
  94. parameter yourself.  The command line for PCBCheck reads:
  95.  
  96.   X:\<your-path>\PCBCHECK.EXE %1 %2 %3 port
  97.  
  98. The optional parameter port (which SETUP leaves out by default) allows
  99. you to specify an address for PCBCheck to use for serial output.  The default
  100. (nothing specified) is for PCBCheck to read PCBoard's PCBOARD.DAT to
  101. determine the COM port number, and then the COM port number is converted to
  102. its standard address.  Particularly if you use COM3 or COM4 the address may
  103. not be the default.  Also, you must use the [port] option if you wish to
  104. use a FOSSIL driver in lieu of the normal 8250 communications routines.
  105. Pass '#F' where # is the FOSSIL port, for example, to access COM1 via a
  106. FOSSIL driver you would pass '0F' as the port parameter (without the
  107. quotation marks, of course).  Note that PCBCheck should be able to read 
  108. the FOSSIL port number out of the PCBOARD.DAT, so you only need to pass 
  109. the port parameter in special exceptions.
  110.  
  111. Notice that the suggested PCBTEST.BAT does NOT change directories, rather
  112. calls PCBCheck from the current directory.  That is very important!  The
  113. reason is that PCBCheck looks for system files in that directory (PCBOARD.DAT
  114. and PCBOARD.SYS).  
  115.  
  116. Change directories to the PCBCheck directory you created earlier and run
  117. SETUP.  This document explains the various features of SETUP later.
  118.  
  119. I strongly recommend all PCBCheck users have SHARE installed (most BBS
  120. computers already should).  Also, adding PCBCheck to the path seems to help
  121. some users.
  122.  
  123. ┌────────────────────────────┐
  124. │ 4.  Running PCBCheck       │
  125. └────────────────────────────┘
  126.  
  127. As noted in Installing PCBCheck, SETUP pretty much sets everything up for
  128. PCBCheck to run as the default upload processor for PCBoard.  I will
  129. detail the acceptable parameters and methods of running PCBCheck below for
  130. reference.
  131.  
  132.      PCBCHECK filename [method] [description file] [port]
  133.  
  134. The only required parameter is 'filename'.  If you supply only 'filename',
  135. PCBCheck will behave as if LOCAL were used for method.  'filename' should
  136. be the filename to test (make sure it exists!)
  137.  
  138. 'method' can be one of the following:
  139.  
  140.   LOCAL   - PCBCheck will scan the file, but will not attempt to do anything
  141.             with a description or COMM ports.  This mode is used for local
  142.             testing of files (non-PCBoard related mode).
  143.             (user mode)
  144.   OFFLINE - PCBCheck will scan the file and generate a description file,
  145.             then move the file to the upload directory and register it with
  146.             PCBoard (offline uploads)  This mode has basically the same
  147.             effect as uploading a file does, but offline (it checks the file,
  148.             then performs the PCBoard task of moving the file to the upload
  149.             directory and adding the description).  This mode should only be 
  150.             used from the PCBoard directory in which the PCBOARD.DAT and 
  151.             PCBOARD.SYS are generated!
  152.             (user mode)
  153.   UPLOAD  - PCBoard uses this mode to tell PCBCheck to scan the file,
  154.             including description processing and communications (normal
  155.             mode of operation for user or local uploads)
  156.             (PCBoard mode)
  157.   ATTACH  - PCBoard uses this mode to tell PCBCheck that the description
  158.             is unimportant and that the file is not a public upload, rather
  159.             its in a message.  PCBCheck will accept the upload even if it
  160.             is unrecognized.
  161.             (PCBoard mode)
  162.   TEST    - PCBoard uses this mode to tell PCBCheck to test the file, not
  163.             do anything with the description
  164.             (PCboard mode)
  165.  
  166. 'description file' is the location of the description file to be used,
  167. this parameter is automatically passed by PCBoard, and should not be used
  168. for user mode tests.
  169.  
  170. 'port' specifies an optional non-standard address or FOSSIL port for 
  171. communications as described in Installation
  172.  
  173. PCBCheck will return 0 if the file passed, 1 if the file failed.  Note that
  174. PCBCheck also generates the file PCBPASS.TXT if the file passes and the
  175. file PCBFAIL.TXT if the file fails (as required by PCBoard).  
  176.  
  177. ┌────────────────────────────┐
  178. │ 5.  Setup                  │
  179. └────────────────────────────┘
  180.  
  181.   5.1 Archive support
  182.  
  183. The archive support page includes three fields and an information box.
  184. The first field is a simple yes/no question whether or not you want to
  185. accept uploads in that format.  SETUP creates an archive support page for
  186. each PCC file it finds, so you may choose any combination of archivers for
  187. which you have PCC files.
  188.  
  189. The second and third fields are user-specific parameters you want passed
  190. the archiver.  These fields should be blank for all people and all archivers,
  191. but are included just in case (i.e. PKZip 2.04c had DPMI problems, so some
  192. users may have needed to specify -) to disable DPMI).  DO NOT put the
  193. parameters for archiving/dearchiving, etc... in these fields, that
  194. information is in the PCC file.  These fields are for hardware-specific
  195. parameters which are required to make the archiver/dearchiver do ANYTHING on
  196. your machine.
  197.  
  198. The information box scans the path for the archiver/dearchiver and reports
  199. the presence of each.  If the archiver and dearchiver use the same executable
  200. it notes that as well.  If SETUP reports that your archiver or dearchiver are
  201. NOT in the path, and you have specified that you wish to support that format,
  202. you put them in the path!
  203.  
  204.   5.2  Non-archive support
  205.  
  206. The non-archive support screen allows you to enter the extensions of
  207. acceptable non-archives.  You do not need to fill all or any of the fields,
  208. though you cannot specify more than ten acceptable non-archive extensions.
  209.  
  210. Special files which have internal PCBCheck support, such as GIF files, must
  211. still be specified here to clear the detection phase of PCBCheck!  Self-
  212. extracting archives in the form of EXE files are the only exceptions.  They
  213. are considered archives, so if the archiver support is enabled on the
  214. appropriate page and self-extracting support is enabled on the miscellaneous
  215. page, PCBCheck will accept self-extracting archives as EXEs.  If you specify
  216. EXE here, you will be telling PCBCheck to accept all executables.
  217.  
  218. Note that the wildcard '?' can be used in the extensions.  For example,
  219. '0??' would allow any files whose extension begins with 0.  If you want
  220. to allow ALL unrecognized uploads, however, use the accept unrecognized
  221. uploads switch instead of '???', though they should be functionally
  222. equivalent.  Note that the '*' wildcard is not supported because it
  223. would serve no purpose (a single or double question mark could, in all
  224. situations, be substituted).
  225.  
  226.   5.3  Recognition Criteria
  227.  
  228. NON-STANDARD EXTENSIONS:  Setting this switch to 'yes' instructs PCBCheck
  229. to accept archives whose extensions are non-standard (for example, a ZIP
  230. file with an extension JIM.  A ZIP file can never have an extension ARJ,
  231. or other recognized archive extensions).  This allows PCBCheck to perform
  232. more thorough checking on certain files, but at a price.  For uploads which
  233. are truly unrecognized, PCBCheck will still have to check them, thereby
  234. significantly increasing processing time.  Note that the processing time
  235. is a function of the activated archivers, so deactivate archives you won't
  236. use to improve performance.  Note also that if TXT is specified as an
  237. acceptable non-archive extension, a ZIP file with a TXT extension will be
  238. treated as a non-archive upload.
  239.  
  240. ALLOW UNRECOGNIZED UPLOADS:  Setting this switch to 'yes' instructs PCBCheck
  241. to accept uploads which make it through the detection process completely
  242. unrecognized.  Note this switch affects recognition criteria only.  The
  243. upload will still have to pass age inspection, virus checking and any
  244. other specified tests.
  245.  
  246. ALLOW SELF-EXTRACTING ARCHIVES:  This switch determines whether PCBCheck
  247. will attempt to determine if EXE files are really archives.  Note that if
  248. non-standard extension recognition is active, this switch is redundant.
  249. This feature has the same disadvantages as non-standard extension recognition.
  250.  
  251. USE TRASHCAN LIST:  You can maintain a file, TRASHCAN.PCB, which contains a
  252. list of filenames you don't want on your board.  Note that if you're using
  253. PC-DOS, MS-DOS or OS/2, SETUP will attempt to locate your system editor and
  254. allow you to edit TRASHCAN.PCB from within SETUP!  If it successfully locates
  255. your editor, a prompt will appear below this choice instructing you to
  256. 'F2 to edit TRASHCAN.PCB'.  Format instructions for TRASHCAN.PCB are located  
  257. in the sample file.
  258.  
  259.   5.4  Description and Comment Editing
  260.  
  261. Most of these switches are self-explanatory.  The first four switches allow
  262. you to instruct PCBCheck to add the number of files in the archive, the
  263. newest date of a file in the archive, the resolution of a GIF, and/or the
  264. oldest date of a file in the archive to the description.  You may choose
  265. any combination of the above, and only those appropriate to the upload type
  266. will be used.
  267.  
  268. PCBCheck can also remove the comments from archives (of archive types which
  269. support commenting).  If you select 'yes' for replace comments, SETUP will
  270. create a new prompt which requests the file with which to replace the
  271. comment.  You may either enter a filename of a file in the PCBCheck directory
  272. or enter NUL (leaving the field blank will prompt SETUP to insert NUL) to
  273. instruct PCBCheck to clear the comment
  274.  
  275.   5.5  Supplemental Tests
  276.  
  277. MAX AGE and PERCENT NEWER:  Maximum age checking in PCBCheck is unusual,
  278. and quite unique.  The technique is different than that used by any other
  279. upload processor (yet, anyway) including previous versions of PCBCheck!
  280. Rather than use some complex algorithm to determine an average age, or just
  281. use the newest file date, PCBCheck allows you to specify an age and a
  282. percentage of files which must be newer than that age.  For example, if
  283. your percentage is set at 50% and two out of three files in the archive
  284. are newer than the specified date, the upload will pass (66% are newer).
  285. Note that you cannot specify 100%, rather use 99% to tell PCBCheck that
  286. ALL files in the upload must be newer than the specified date.  On the other
  287. hand, use 1% to tell PCBCheck that if ANY file in the archive is newer than
  288. the date the upload is acceptable (that has the same effect as most date
  289. checking systems, checking only the newest date).
  290.  
  291. MINIMUM GIF RESOLUTION:  Enter the minimum resolution (WIDTH, HEIGHT, COLORS)
  292. for GIF images.  Note that each GIF image must pass all three criteria.
  293.  
  294. CHECK FOR KEYWORDS:  PCBCheck can scan the user-entered description for
  295. keywords which you do not want to appear in your filebase.  The keywords
  296. are stored in KEYWORDS.PCB (the format is described in the sample file).
  297. The same editing feature exists as with the TRASHCAN.PCB file described
  298. above.
  299.   
  300.   5.6  Virus Checking
  301.  
  302. There are three virus checking options, enable F-Prot, enable McAfee's
  303. Scan, and enable non-standard checker.  Note that between 0-3 may be
  304. enabled, and ALL selected scanners will be used on every file, so I recommend
  305. only activating one (for time purposes).
  306.  
  307. USE F-PROT:  This option will only be available if F-Prot is detected in
  308. the path.  If marked 'Y'es, PCBCheck will use the found copy of F-Prot to
  309. scan all uploads.
  310.  
  311. USE SCAN:  This option will only be available if McAfee's Scan is detected
  312. in the path.  If marked 'Y'es, PCBCheck will use the found copy of Scan to
  313. scan all uploads.  Note that I recommend using Scan version 2.00 and later,
  314. instead of the other series, which is also still being updated.
  315.  
  316. VIRUS SCANNING:  The virus scanning is quite self-explanatory.  The error
  317. level should be the EXACT errorlevel (an equality test is used, not a
  318. greater than or less than test) which indicates a virus for your specific
  319. scanner.  Note that when entering the scanner name the scanner must be in 
  320. the path and the name must include the extension.  SETUP will indicate below 
  321. the name whether or not it can find the scanner in the path.  Leave this
  322. field blank to disable non-standard virus checking.
  323.  
  324.   5.7  Internal Operations
  325.  
  326. RAMDISK:  Specify the drive letter of your RAM disk here.  Do not specify
  327. a hard drive!  The advantage of using this rather than simply putting
  328. the RAM disk in the data path is that uploads which are too large for the
  329. RAM disk then default back to the data path.  PCBCheck should have the
  330. RAM disk to itself or conflicts may result (though multiple copies of
  331. PCBCheck shouldn't conflict with each other).
  332.  
  333. DATA PATH:  Specify the data path PCBCheck should use for its 'work'
  334. directory.  It should be empty.  If you specify a used or existing directory
  335. you may lose data.  I also recommend a directory very close to the root
  336. directory, as it gives PCBCheck more room to work with.  Note that the
  337. data path should NEVER be on a RAM disk (see the section on RAMDISKs to
  338. learn the proper method of using a RAM disk).
  339.  
  340. NOTIFY SYSOP OF (condition):  Specifying yes tells PCBCheck that it should
  341. notify the sysop via PCBoard mail of the named condition.  Note that
  342. specifying 'yes' does not affect any of the other operations of PCBCheck,
  343. for example, if you tell it to notify the sysop of program errors, PCBCheck
  344. will still also note the error in PCBCHECK.LOG and on the screen.
  345.  
  346. SCREEN FILE:  Specifies the background for PCBCheck to use.  Note that
  347. the SCR files are NOT simple ANSI files, though they seem viewable as such!
  348. They are not user editable (with regular ANSI editors, anyway).  They contain,
  349. in addition to other checksums, palette information for PCBCheck.
  350.  
  351.   5.8  Unrecommended Features
  352.  
  353. REMOVE FILES FROM ARCHIVE:  You can maintain a list of files which you
  354. want PCBCheck to attempt to remove from archives.  The list file must be
  355. DELETE.PCB, which has the same editing features as TRASHCAN.PCB and
  356. KEYWORDS.PCB described above (note the format for DELETE.PCB is described
  357. in the sample file).
  358. Why not recommended?  You're modifying the original archive which I never
  359. recommend because you may be violating security packets.  Also you may
  360. be removing a necessary file which just happened to have the same name as
  361. a file on your 'hit list'.
  362.  
  363. ADD FILE TO ARCHIVE:  You can specify a single file (in the PCBCheck
  364. directory) to add to all incoming archives.
  365.  
  366. Why not recommended?  In addition to being ANNOYING to have ads in files,
  367. you are again modifying the archive which may destroy security information.
  368. If people didn't use this feature, the remove files feature could also be
  369. eliminated.
  370.  
  371. CONVERT ALL ARCHIVES TO MASTER TYPE:  You can enter any valid archive
  372. extension here.  If the extension is not active or is unsuitable as a master
  373. type, SETUP will reject it.  Entering an extension instructs PCBCheck to
  374. convert all incoming archives to the named type.  Note, PCBCheck considers
  375. some types unsuitable because they involve non-standard command line
  376. operations to create an archive with imbedded directories.
  377. Why not recommended?  This is very STRONGLY not recommended, though it
  378. may sound appealing to many sysops.  It has the same flaws as ADD and DELETE
  379. files named above, but has many more.  First, the conversion is an inexact
  380. science and may result in data loss (there's absolutely NO way to verify
  381. that the conversion was correct other than visual inspection).  Also, even
  382. in a conversion which seemed to work, there may be data loss.  For example,
  383. converting an archive which is a ZIP made under OS/2 to an ARJ loses the
  384. extended attributes (possibly rendering the files useless) though it is
  385. completely undetectable (since it was decompressed under DOS rather than
  386. OS/2).  Similiar situations exist with security envelopes and other platforms.
  387.  
  388. ┌────────────────────────────────────────┐
  389. │ 6.  Conference specific configurations │
  390. └────────────────────────────────────────┘
  391.  
  392. PCBCheck now has the ability to have different configurations for
  393. different conferences.  (I realise you may not want to try the same
  394. checking on archives in your Apple conference is in a regular conference,
  395. or may want to insert a different comment, etc...)  Unfortunately, this
  396. was a very difficult feature to integrate with setup (I couldn't figure
  397. out any way, actually), so the only way to do it is by hand (suggestions
  398. are always welcome for improvements).  SETUP creates PCBCHECK.CFG, the
  399. configuration file for the main board.  Renaming it PCBCHECK.001 makes
  400. it a configuration file for conference 1 (.002 for 2, etc....)  So,
  401. if I run a ten conference system, and want a special configuration for
  402. conference 3, I would first run setup, enter the values for conference 3,
  403. then rename PCBCHECK.CFG PCBCHECK.003.  I would then run SETUP again,
  404. entering the values I wanted used everywhere else, and SETUP would save
  405. it as PCBCHECK.CFG (which is fine).  If there is not a specific configuration
  406. file for a conference, PCBCheck uses PCBCHECK.CFG.  PCBCHECK.CFG is always
  407. used for the main board.
  408.  
  409. ┌────────────────────────────────────┐
  410. │ 7.  Multinode/Multitasking, etc... │
  411. └────────────────────────────────────┘
  412.  
  413. Well, this is just about the same as running any other program on a
  414. multinode system.  It does open all files in share mode, and does construct
  415. the 'temp directory' name based on the current node, so there should be no
  416. conflict.  I share a PCBTEST.BAT between nodes on my system and it works
  417. fine.  
  418.  
  419. PCBCheck should work just fine under multitasking OS's or shells.  I
  420. developed it and tested it exclusively on OS/2 2.11, so I *know* it works
  421. there.  I've also run it under Windows for the BBS.  I can't think of any
  422. reason it wouldn't work with DesqView then, except of course that it
  423. doesn't give up timeslices (but really, when I'm writing a DOS program I
  424. don't feel that it's my responsibility to give up timeslices, I think the
  425. multitasking OS which multitasks DOS programs should do that!)
  426.  
  427. ┌────────────┐
  428. │ 8.  Errors │
  429. └────────────┘
  430.  
  431. Should PCBCheck itself fail in some way, it will automatically pass the
  432. file and report to the user the error code number.  It will also create a
  433. file named PCBCHECK.LOG in the PCBCHECK directory which will note the error.
  434. If so specified in SETUP, PCBCheck will also send mail to the sysop which
  435. details the error.  This list contains all known PCBCheck error codes which
  436. should occur:
  437.  
  438.    -1    Incorrect parameters
  439.    -2    Cannot access PCBOARD.SYS
  440.    -3    Cannot access PCBOARD.DAT
  441.    -4    Cannot access PCBCHECK.CFG file
  442.    -5    Old/Invalid configuration (.CFG) file in use
  443.    -6    Cannot access specified .SCR file
  444.    -7    Cannot open description file
  445.    -8    Cannot creat PCBPASS.TXT/PCBFAIL.TXT
  446.    -9    Cannot make work directory
  447.   -10    Cannot remove work directory
  448.   -11    Can't open the file to test
  449.   -12    Can't read from the (already open) file to test
  450.   -13    File to be tested does not exist
  451.   -14    Cannot open the FILE_ID.DIZ from the archive
  452.   -16    Cannot write to description file
  453.   -20    Cannot open/read a PCC file
  454.   -21    Cannot access trashcan file
  455.   -23    Invalid PCC or PCC cannot be read
  456.   -25    Invalid execute external process attempt
  457.   -26    Command is too long
  458.   -28    Cannot access keys file
  459.   -35    Non-zero error code returned by external process
  460.   -36    Old PCC in use
  461.   -37    Cannot access deletion list file
  462.  
  463. Obviously, most of them deal with file access problems, which could be
  464. related to access priveleges, file sharing or something similiar on your 
  465. system.  The most likely user-addressable problems are: 
  466.  
  467. -2 (cannot open PCBOARD.SYS) 
  468.   Not being able to access PCBOARD.SYS probably means PCBTEST.BAT doesn't run 
  469.   from the PCBoard directory (or changes directories), or else a PCBOARD.SYS 
  470.   doesn't exist in the PCBoard directory.  It could also be a sharing problem
  471.   It could also mean that your PCBTEST.BAT changes directories away from the 
  472.   directory in which the PCBOARD.SYS and PCBOARD.DAT are generated.
  473.  
  474. -3 (cannot open PCBOARD.DAT)
  475.   Not being able to find PCBOARD.DAT could be a sharing problem.  
  476.   It could also mean that your PCBTEST.BAT changes directories away from the
  477.   directory in which the PCBOARD.SYS and PCBOARD.DAT are generated.
  478.  
  479. -25 (can't find external process in path)
  480.   Make sure that all designated acceptable archivers are in the path 
  481.   to fix a -25.
  482.  
  483. -26 (command too long) 
  484.   The proper way to deal with a -26 is, as described earlier, relocate 
  485.   the PCBCheck directory as close to the root as possible to make the 
  486.   commands shorter.
  487.   
  488. -35 (external program error)  
  489.   Note the external process which generated the error and its errorlevel.
  490.   Then, refer to the external program's documentation to determine what
  491.   the error means.  The external process's errorlevel will be noted in
  492.   PCBCHECK.LOG.  More than likely you either ran out of memory (read
  493.   special memory considerations) or out of disk space (you can set PCBoard
  494.   not to accept uploads that reduce disk space below a certain level,
  495.   i.e. 5 meg).
  496.  
  497. N/A appears on virus scanner line
  498.   Your chosen virus scanner is NOT in the path.  To verify this, run SETUP,
  499.   and SETUP will tell you (directly below the line on which you enter the
  500.   name of the virus scanner) if the scanner is not in the path.
  501.  
  502. D:\PCBOARD\PRIVUPLD\FILE.ZIP not found -reported by PCBoard
  503.   Get PCBoard 15.1 or later if you want to use the 'convert archive types'
  504.   feature.  Versions prior to 15.1 did not allow the renaming of files
  505.   during testing.
  506.  
  507. PCBCHECK.LOG, should PCBCheck need to create it, is a wealth of information
  508. for error-solving.  In addition to noting internal program errors (in
  509. addition to the time/date/file on which the error occurred) it also notes
  510. non-zero error levels as returned by archivers or virus scanning programs.
  511. This allows you to catch errors such as SCAN running out of memory, which
  512. otherwise be undetectable!
  513.  
  514. ┌─────────────────┐
  515. │ 9.  Legal Stuff │
  516. └─────────────────┘
  517.  
  518. This program, its look, feel, and its related documentation are copyrighted.
  519. You may not reverse engineer, decompile, or disassemble the program.  You
  520. may not modify or translate the program or documentation without the written
  521. consent of Jim Dahl.
  522.  
  523. This program is provided "as is" without any warranties (or conditions),
  524. express or implied with respect to the program, including the implied
  525. warranties (or conditions) of merchantability and fitness for a
  526. particular purpose.  The entire risk arising out of use or performance of
  527. the program and documentation remains with you.
  528.  
  529. Some jurisdictions do not allow the exclusion of implied warranties, so the
  530. above may not apply to you.
  531.  
  532. In no event will Jim Dahl be liable for any lost profits, lost savings,
  533. incidental or indirect damages or other economic consequential damages,
  534. even if Jim Dahl has been advised of the possibility of such damages.  In
  535. addition, Jim Dahl will be not be liable for any damages claimed by you
  536. based on any third party claim.
  537.  
  538. Some jurisdictions do not allow the exclusion or limitation of
  539. consequential or incidental damages, so the above may not apply to you.
  540.  
  541. ┌─────────────────────────────┐
  542. │ 10.  Memory Considerations  │
  543. └─────────────────────────────┘
  544.  
  545. When you consider what PCBCheck does, you realize that at times there
  546. are up to three programs running at any one time, and each of them demands
  547. it be running in conventional memory.  (PCBoard, PCBCheck, and a virus
  548. scanner or archiver/dearchiver may be running).  PCBoard 15.x (in its latest
  549. incarnation as of this writing) consumes a whopping 248.3k when it shells
  550. to a program, such as PCBCheck, which leaves (assuming a base of 600k) only
  551. 351.7k for the other two programs!  Of course, your base free memory before
  552. running PCBoard may be much lower than 600k.  PCBCheck does it's part by
  553. swapping itself to XMS/EMS/disk, reducing it's kernel in active memory to
  554. a mere 1.7K (it's not getting any smaller).  Unfortunately, some programs,
  555. such as McAfee's virus scanner, require more conventional memory than this
  556. leaves (McAfee's SCAN requires 380k -- note that there is a new version
  557. of McAfee's SCAN out called SCAN 2.0 which decreases the memory
  558. requirement).
  559.  
  560. Since obviously PCBCheck cannot reduce it's memory requirements any
  561. further, it is up to you to setup PCBoard so it swaps more of itself out
  562. before shelling to PCBTEST.BAT to free up more memory.  Another option is
  563. to use low-memory programs.  I personally recommend F-PROT as a virus
  564. scanner (it is free, and has lower memory requirements).
  565.  
  566. Note- if a program such as SCAN runs out of memory, it will not crash
  567. PCBCheck, rather it will cause PCBCheck to always report files as 'clean',
  568. thereby possibly allowing viruses to slip through!  If an archiver runs
  569. out of memory, it will fail the upload.  All errorlevels, for virus scanning
  570. and archiving/dearchiving, are noted in the PCBCheck log file, so you should
  571. be able to catch "out of memory" errors by referring to the log regularly
  572. (or if there are problems).
  573.  
  574. If you get "Out of Memory" return codes from shelled applications,
  575. In System Setup, under Configuration Options, then Configuration Switches,
  576. set "swap during SHELL" to yes to free up more memory (at the cost of
  577. slightly slower swapping).
  578.  
  579. ┌────────────────────────────┐
  580. │ 11. Registration/Shareware │
  581. └────────────────────────────┘
  582.  
  583. As I'm sure most Sysops know, shareware is not a type of program but a
  584. distribution method.  If you continue to use my product you are obligated,
  585. morally and legally, to pay me for it.  Therefore, I don't disable any cool 
  586. features, or even make promises of neat new features or extra utility or 
  587. maintenance programs if you register.  I want to give you the full program 
  588. so you know what you're really dealing with, and if you don't think it's 
  589. worth paying for (which is fine with me) I expect you to quit using it.  Note
  590. that the amount of work I put into PCBCheck is directly proportional to
  591. registrations received.  When I receive registrations, I can justify putting
  592. large amounts of time into new, advanced features.  Think of your
  593. registration as funding future releases.
  594.   
  595. One registration does, of course, entitle you to use all future releases.
  596.   
  597. The main advantage of registering PCBCheck (in addition to encouraging
  598. me to keep improving it) is that you will receive instructions on how to
  599. make PCBCheck display 'REGISTERED' in place of 'UNREGISTERED', or display
  600. your BBS name in place of 'UNREGISTERED'.
  601.  
  602. Registration is currently set at $20. 
  603.   
  604. You can register either by filling out the REGISTER.DOC and mailing it to
  605. the given address.
  606.  
  607. ┌─────────────────────────────────────────────────────┐
  608. │ 12.  Future plans / rumors / possibilities / vapour │
  609. └─────────────────────────────────────────────────────┘ 
  610.  
  611. VENDINFO.DIZ support was a feature which was slated for PCBCheck 2.0.  The
  612. specs are available, the programs exist, but to tell the truth I was a little
  613. disappointed.  I'd like to attack this in detail and let you all know
  614. exactly where I'm coming from.  First, since VENDINFO.DIZ is not a PCBoard
  615. specific format (like FILE_ID.DIZ was) the description lines aren't
  616. formatted to 45 characters.  In fact, there are 5 different possible 
  617. description sizes which can be embedded in a VENDINFO.DIZ file.  The way
  618. it works is the third party developers (and second party support) are
  619. supposed to line wrap the text to make it fit wherever its being put.  That
  620. means, of course, no frames, borders, etc...  Also the description cannot
  621. contain high ASCII anyway.  Aside from that, creating a secure VENDINFO.DIZ
  622. file requires registering with the creators of the VENDINFO.DIZ standard.
  623. That means shareware authors must pay a fee to get the program to create
  624. VENDINFO.DIZ files (I'm not complaining about the fee, in fact its quite
  625. understandable).  My point is that I don't think shareware authors are
  626. really going to jump on it (at least not in droves).  The larger ones may
  627. appreciate the built-in distribution encoding, etc...  CD makers and large
  628. shareware distributors love it, but I don't see it as the future of all
  629. BBS description files.  This is NOT, however, a dismissal of VENDINFO.DIZ.
  630. Rather, I'm delaying adding any features to support VENDINFO for the time
  631. being.  I have the specs (they are public domain, to the credit of the
  632. creators of the specification).  The possible implementations I see for
  633. PCBCheck is checking to make sure the file is authorized for BBS
  634. distribution (then again, if it wasn't, who would've bothered putting a
  635. VENDINFO.DIZ in there?) and getting the description.  As you can see I don't
  636. really see a lot of benefit for PCBCheck beyond getting the description,
  637. which FILE_ID.DIZ works better for anyway!  So until it gets to the point
  638. where authors quit inserting FILE_ID.DIZ in their files and only use
  639. VENDINFO.DIZ, or other uses for VENDINFO.DIZ in the PCBCheck BBS setting
  640. come to light, PCBCheck will not support VENDINFO.DIZ.  Should ANYTHING
  641. at all compelling come along, I will quickly retract this statement and
  642. support VENDINFO.DIZ to the best of my abilities in PCBCheck.  Time will
  643. tell, I just wanted to explain why PCBCheck isn't on the 'cutting edge'
  644. because it otherwise would be :)
  645.  
  646. ┌────────────────────────────────────────────────────────┐
  647. │ 13.  Where to complain / how to compliment the author  │
  648. └────────────────────────────────────────────────────────┘ 
  649.   
  650. I can be reached at:
  651.  
  652.     Legal Eagle BBS (218) 773-6011 (home of PCBCheck)
  653.                     
  654.                     Legal Eagle is where I will continue to alpha test
  655.                     PCBCheck, and will continue to provide support.  Also,
  656.                     I can field mail addressed to 'SYSOP' on this board.
  657.                     (note join conference 5)
  658.  
  659.     Internet        dahl@cs.UND.NoDak.edu
  660.     
  661.   And of course, write to me at:
  662.  
  663.     Jim Dahl
  664.     RE: PCBCheck              
  665.     2236 Springbrook Ct.
  666.     Grand Forks, ND 58201
  667.  
  668. -----------------------------------------------------------------------------
  669.  
  670. New versions can always be obtained from Salt Air, from the above BBS.
  671.  
  672. Registrations (currently $20) taken at:
  673.  
  674.         Jim Dahl                  
  675.         RE: PCBCheck              
  676.         2236 Springbrook Ct.      
  677.         Grand Forks, ND 58201     
  678.  
  679.