home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / wptool32.zip / WPTOOL.ZIP / checkini.txt < prev    next >
Text File  |  2000-03-15  |  26KB  |  668 lines

  1.  
  2.  
  3.  
  4.                                                      CHECKINI.TXT - Page 1
  5.  
  6.  
  7.      Table of Contents
  8.      -----------------
  9.  
  10.  
  11. 1. DISCLAIMER............................................................2
  12.  
  13.  
  14. 2. IMPORTANT - READ THIS FIRST !.........................................2
  15.  
  16.  
  17. 3. DESCRIPTION...........................................................3
  18.  
  19. 3.1 GENERAL..............................................................3
  20. 3.2 PM_WORKPLACE:HANDLES.................................................3
  21. 3.3 SOME SPECIFIC PROBLEMS...............................................4
  22. 3.4 ORPHAN OBJECTS.......................................................4
  23.  
  24. 4. USING CHECKINI........................................................4
  25.  
  26.  
  27. 5. HOW THE PROGRAM WORKS.................................................5
  28.  
  29.  
  30. 6. EXAMPLES OF OUTPUT:...................................................6
  31.  
  32.  
  33. 7. WHAT THE PROGRAM CHECKS...............................................7
  34.  
  35.  
  36. 8. REVISION HISTORY......................................................8
  37.  
  38.  
  39.  
  40.                                                      CHECKINI.TXT - Page 2
  41.  
  42.  
  43.  
  44. 1. DISCLAIMER
  45.  
  46. I allow you to use and distribute CHECKINI freely under the condition that
  47. I am in no way responsible for any damage or loss you may suffer.
  48.  
  49. Henk Kelder
  50. Dennenlaan 12
  51. 3843 BX Harderwijk
  52. email: henk.kelder@capgemini.nl
  53. http://www.os2ss.com/information/kelder/index.html
  54.  
  55.  
  56. 2. IMPORTANT - READ THIS FIRST !
  57.  
  58. You should take care when using this program on new version of OS/2 since
  59. this program interprets data from the ini-files. The internal structure of
  60. this data can change, and the program might fail or even corrupt
  61. information. This has happened before with previous releases of OS/2.
  62.  
  63. CHECKINI checks for, and optionally corrects, problems in OS2.INI and
  64. OS2SYS.INI. CHECKINI only looks at information regarding the workplace
  65. shell.
  66.  
  67. To make full use of CHECKINI, read this document for information about
  68. what CHECKINI does.
  69.  
  70.  
  71.                                                      CHECKINI.TXT - Page 3
  72.  
  73.  
  74.  
  75. 3. DESCRIPTION
  76.  
  77. 3.1 GENERAL
  78. The main reason for CHECKINI is the growth that the both INI files tend to
  79. have if one uses the Workplace shell heavily. Using CHECKINI in
  80. conjunction with COPYINI helps to reduce the INI files' sizes, which in
  81. turn should increase the workplace shell's performance.
  82.  
  83. Also, CHECKINI helps to determine some possible causes for workplace shell
  84. failures, like losing workplace shell objects, or situations in which a
  85. program object loses the proper executable name or current directory.
  86. Obviously, the real cause for these problems must be in the workplace
  87. shell itself; CHECKINI however could help you to determine the degree of
  88. damage that has been done.
  89.  
  90.  
  91. 3.2 PM_WORKPLACE:HANDLES
  92. A special note is in order about a specific piece of information in the
  93. INI-files called 'PM_Workplace:HandlesX'. The workplace shell uses some
  94. obscure entity called object-handles to refer to objects. Object handles
  95. are in fact numbers. A object-handle can refer to an abstract object (a
  96. object NOT on your harddisk e.g. the colour palette) and file-system
  97. objects (files & directories).
  98.  
  99. Just to let you know:
  100. Abstract objects reside in the ini-files. (Although then can appear
  101. anywhere on your computer, they are stored inside OS2.INI)
  102.  
  103. File-system objects reside on your harddisk. (since these are files and
  104. directories)
  105.  
  106. Whenever you add a program object to your desktop and specify a program
  107. file, the workplace shell determines if a handle was already assigned to
  108. the program file and if so, it uses this handle. If no handle was
  109. assigned, the shell creates a handle and assigns it to the program file.
  110. In the definition of the program object (itself an abstract object) the
  111. handle for the program file is stored.
  112.  
  113. When you start the program by clicking on the object, the wps must have a
  114. way to refer the stored handle back to the program file. This is done by
  115. using the  PM_Workplace:HandlesX' information. Unfortunately, handles are
  116. added to this information, but they are not removed when a (program) file
  117. is removed from your harddisk.
  118.  
  119. In theory, the total amount of handle-to-file information could grow too
  120. big and then without any warning you would lose information. The workplace
  121. shell would then show nonsense or nothing at all in some of your program
  122. objects.
  123.  
  124. CHECKINI allows you to remove handles for files or directories that are no
  125. longer present or inaccessible.
  126.  
  127. Already some time now the workplace shell keeps multiple versions of
  128. 'PM_Workplace:Handles' in the ini-files. Apparently this is intended as an
  129. error-recovery mechanism. However, I've been unable to determine whether
  130. the backup mechanism itself is implemented.
  131.  
  132.  
  133.                                                      CHECKINI.TXT - Page 4
  134.  
  135.  
  136. 3.3 SOME SPECIFIC PROBLEMS
  137. The data a PM_Workplace:Handles can be damaged. Most often the damage is
  138. done by the WPS itself. Two types of damage is detected by CHECKINI:
  139.  
  140. * A damaged drive name. If CHECKINI detects this problem it will fix this
  141.   as one of the first things.
  142. * Duplicate entries for the same drive. If this is detected it is fixed as
  143.   one of the last things CHECKINI does.
  144.  
  145. 3.4 ORPHAN OBJECTS
  146. An widespread way to remove not deletable objects is to move them to a
  147. directory, and then, in an OS/2 or DOS session, remove the directory. The
  148. Workplace shell then no longer shows the objects.
  149. They are in fact NOT removed but they simply have no parent directory in
  150. which they will show.
  151.  
  152. Also, sometimes it is possible that suddenly several objects are lost. A
  153. reason for this could be the unintentional removal of a desktop directory.
  154.  
  155. CHECKINI detects these 'orphan objects' and queries the user (when /C is
  156. specified) on moving these objects to new location. The moved objects will
  157. appear after the workplace shell has been restarted.
  158.  
  159. If this question is answered with NO, another question is asked whether
  160. the objects should be removed from the ini-files.
  161.  
  162. WARNING
  163.  
  164. If you are normally connected to a network and run CHECKINI when you are
  165. NOT connected to this network, or when you are not logged in, CHECKINI
  166. will report errors for references to network objects. In this situation
  167. and with the /C switch given, take care when confirming deletions since
  168. this could remove valid handles.
  169.  
  170. You can overcome this problem by specifying /R when running CHECKINI.
  171.  
  172. However, when all tests are executed, CHECKINI will keep track of which
  173. handles are actually used by other objects and those handles will not be
  174. deleted even if they point to non-existing pathnames.
  175.  
  176.  
  177.  
  178. 4. USING CHECKINI
  179. From an OS/2 command prompt enter the command CHECKINI. Without any
  180. command line options CHECKINI doesn't change anything in your ini-files.
  181.  
  182. COMMAND LINE OPTIONS
  183.  
  184. /C   -      Write corrections to ini-files. The default is to diagnose
  185.            only. If this option is specified the program will ask
  186.            confirmations for all changes it may want to do in your ini-
  187.            files.
  188.  
  189. /Apath    - Specify different a location for ini-files to be checked. This
  190.            option is useful if you have copies of your ini files and you
  191.            would like these copies to be checked. Clearly only internal
  192.            integrity will be checked and no path references or other
  193.            system specific things.
  194.  
  195.  
  196.                                                      CHECKINI.TXT - Page 5
  197.  
  198.  
  199.  
  200. /Llogfilename- Specify name of the logfile. The default is CHECKINI.LOG in
  201.            the directory you start the program in.
  202.  
  203. /W[:n] -    Write all output to logfile. Normally only problems are
  204.            written to the logfile. This option could help you to inspect a
  205.            lot about your workplace shell objects (actually workplace
  206.            shell objects instances). /W:2 write everything to the Log, but
  207.            only errors to the screen. /W:3 (almost) doesn't write anything
  208.            to the screen. The latter is only useful with /S.
  209.  
  210. /S   -      'Silent run', only write logfile. Normally, found errors are
  211.            reported directly.
  212.  
  213. /R   -      Do not report errors on files on network drives or removable
  214.            local drives like diskettes or CD-roms.
  215.  
  216. /D   -      Manually specify the location of the DESKTOP. Use this option
  217.            only if CHECKINI asks for it!
  218.  
  219. /Y[:2]-     Automatically answer all questions whether or not to correct
  220.            anything with YES. This option is only valid when /C is
  221.            specified. If /Y:2 is specified then no confirmation is asked
  222.            for the individual tests. When this switch is used the /R
  223.            switch is automatically set.
  224.  
  225. /T          Use this switch to enable the disk scan function of CHECKINI.
  226.            This will amongst other things repair non-functioning Startup
  227.            folders.
  228.            NOTE: THIS SWITCH SHOULD NOT BE USED IF YOU HAVE MORE THEN ONE
  229.            VERSION OF OS/2 INSTALLED ON YOUR SYSTEM.
  230.  
  231. /H   -      Only do the check on PM_Workplace:Handles0/1. Please note that
  232.            this could cause UNKNOWN OBJECT errors in other tests when
  233.            CHECKINI is run again. This is because handles that CHECKINI
  234.            deletes might be in use in other keys.
  235.  
  236. /?   -      Show info.
  237.  
  238.  
  239.  
  240. 5. HOW THE PROGRAM WORKS
  241.  
  242. While running, CHECKINI displays all found information on the screen.
  243. Whenever a problem is found and the /S switch is not used, the program
  244. reports the problem. The problem itself is visible in the bottom lines of
  245. the screen. Problems are always reported in CAPITALS.
  246.  
  247.  
  248. 6. EXAMPLES of OUTPUT:
  249.  
  250. =================================================
  251. PM_Workplace:Handles0:BLOCK1
  252. =================================================
  253. 3E2DA:CHECKINI.EXE   =>E:\ICON\CHECKINI.EXE<-UNABLE TO ACCESS
  254. 395F8:COPYINI.EXE    =>E:\ICON\COPYINI.EXE<-UNABLE TO ACCESS
  255. 39400:GETPROG.EXE    =>E:\ICON\GETPROG.EXE<-UNABLE TO ACCESS
  256. =================================================
  257.  
  258.  
  259.                                                      CHECKINI.TXT - Page 6
  260.  
  261.  
  262. PM_Abstract:Objects & PM_Abstract:FldrContents
  263. =================================================
  264. Object 13087, Class WPNetLink : A network folder
  265. Linked to: \\SERVER09\SYS3\DIRECTORY1<-UNABLE TO ACCESS!
  266. Object 140AD, Class WPNetLink : SYS3
  267. Linked to: \\SERVER09\SYS3<-UNABLE TO ACCESS!
  268. Object 15185, Class WPNetLink : SYS1
  269. Linked to: \\SERVER09\SYS1<-UNABLE TO ACCESS!
  270. Object 15956, Class WPNetLink : A network folder
  271. Linked to: \\SERVER09\SYS3\DIRECTORY1<-UNABLE TO ACCESS!
  272. =================================================
  273. Checking AssocCheckSum
  274. =================================================
  275. PMWP_ASSOC_CHECKSUM:252153
  276. points to 3D8F9 - E:\ICON\GETBLOCK.EXE<-UNABLE TO ACCESS
  277. =================================================
  278. Checking FolderPos
  279. =================================================
  280. PM_Workplace:FolderPos:252223@10
  281. points to 3D93F - OBJECT DOES NOT EXIST
  282.  
  283.  
  284.                                                      CHECKINI.TXT - Page 7
  285.  
  286.  
  287.  
  288. 7. WHAT THE PROGRAM CHECKS
  289.  
  290. The following ini-records (Application - Key) are checked:
  291.  
  292. PM_Workplace:Handles    - (all keys)
  293. (Checks consistency and existence of filesystem object-handles)
  294.  
  295. PM_Workplace:Location   - (all keys)
  296. (Checks existence of object pointed to by id-strings like
  297. <WP_DESKTOP>)
  298.  
  299. PM_Workplace:Folderpos  - (all keys)
  300. (Checks for obsolete saved object positions)
  301.  
  302. PM_PrintObject:JobCnrPos - (all keys)
  303. (Checks for obsolete saved print job container positions)
  304.  
  305. PM_Workplace:PalettePos - (all keys)
  306. (Checks for obsolete saved palette positions)
  307.  
  308. PM_Workplace:Templates  - (all keys)
  309. (Checks for template-records that refer to non-existing objects)
  310.  
  311. PM_Abstract:Objects     - (all keys)
  312. (Mainly checks WPProgram objects for consistency, but also checks for
  313. 'lost-objects' - objects moved to non-existing locations. Also checks
  314. WPNetLink and WPShadow links. Beside that lost WarpCenter objects are also
  315. found)
  316.  
  317. PM_Abstract:FldrContent - (all keys)
  318. (Used for the check mentioned above for 'lost-objects')
  319.  
  320. PM_Abstract:Icons       - (all keys)
  321. (Checks for obsolete icons, icons for abstract objects that do not exist)
  322.  
  323. PMWP_ASSOC_FILTER       - (all keys)
  324. (Checks for associations with non-existing objects)
  325.  
  326. PMWP_ASSOC_TYPE         - (all keys)
  327. (Checks for associations with non-existing objects)
  328.  
  329. PMWP_ASSOC_CHECKSUM     - (all keys)
  330. (Checks for obsolete checksum record that point to non-existing objects)
  331.  
  332. PM_Workplace:Location   - (all keys)
  333. (Checks consistency of logical location names e.g. <WP_DESKTOP>)
  334.  
  335. PM_Workplace:Startup    - (all keys)
  336. (Checks if the referenced folders are in fact startup folders)
  337.  
  338. FolderWorkareaRunningObjects - (all keys)
  339. (Checks for a list of open objects for a work area)
  340.  
  341.  
  342.                                                      CHECKINI.TXT - Page 8
  343.  
  344.  
  345.  
  346. 8. REVISION HISTORY
  347.  
  348. Notes on version 1.1:
  349.  
  350. Some checks were added:
  351. * PM_Workplace:PalettePos
  352. * PM_Workplace:Startup
  353. * Some other checks were extended.
  354.  
  355. Notes on version 1.2:
  356.  
  357. * The check for PM_Workplace:Handles was moved so that it would be the
  358.   last test done.
  359. * The phrase 'DOES NOT EXIST' for file objects (files & directories) has
  360.   been changed to 'UNABLE TO ACCESS' since this is a better description of
  361.   what CHECKINI finds.
  362.  
  363. Notes on version 1.3:
  364.  
  365. * The only extra in this version is that it support OS/2 2.00.1 (beta
  366.   version), since in this version the internal structure of various
  367.   workplace shell object data has changed.
  368.  
  369. Notes on version 1.4:
  370.  
  371. * Not all of the data checkini apparently needs to exist. If some data
  372.   checkini checks does not exist, the test is skipped.
  373.  
  374. Notes on version 1.5:
  375.  
  376. * Checkini now works properly after installing the servicepack dated
  377.   october 1992.
  378.  
  379. Notes on version 1.6:
  380.  
  381. * Two additional tests were added. These test are for:
  382.      'FolderWorkareaRunningObjects' and
  383.      'PM_PrintObject:JobCnrPos'
  384. * When a conflict in OBJECTID's is detected (two or more objects having
  385.   the same OBJECTID, CHECKINI /c can assign a new OBJECTID to the objects
  386.   that claim to have an OBJECTID that is already in use by another object.
  387. * Updated the documentation files (this file)
  388. * A simple test has been built in to see if OBJECTID's can be found in the
  389.   ini-files, to determine if the internal data structure of the ini-files
  390.   might have been changed, causing CHECKINI to fail completely. This is
  391.   however no guarantee that CHECKINI will function properly on new
  392.   versions of OS/2.
  393.  
  394. Notes on version 1.7:
  395.  
  396. * The 'simple test' mentioned above might block someone using CheckIni if
  397.   the ini-file itself is corrupt. Now the test is only performed when /C
  398.   (correct) switch is specified.
  399.  
  400. Notes on version 1.8:
  401.  
  402.  
  403.  
  404.                                                      CHECKINI.TXT - Page 9
  405.  
  406.  
  407. * When checking 'PM_Workplace:Handles' a test has been put in that checks
  408.   the accessibility on a volume in one stroke. If the user okay's the
  409.   removal of all references to a non-locatable volume, all handles on that
  410.   volume are removed without further checking.
  411.  
  412. Notes on version 1.81:
  413.  
  414. * Apparently CheckIni went bananas whenever an alternate ini directory was
  415.   specified and no ini's were found. This has been corrected.
  416. * Some minor enhancements were made to the text that is being shown on the
  417.   screen. These changes mainly have to do with signalling problems with
  418.   OBJECTID's.
  419. * CheckIni refused to Change/Correct anything if the Desktop's Extended
  420.   attributes have been damaged. CheckIni now offers a try-to-repair
  421.   option. This option comes down to CheckIni reassigning objectid
  422.   <WP_DESKTOP> to the desktop when CheckIni is unable to locate this
  423.   ObjectId inside the Desktop Extended Attributes. If this corrective
  424.   action has been taken CheckIni terminates and one should wait a few
  425.   moments so the WPS has time to update the physical extended attribute on
  426.   disk.
  427.  
  428. Notes on version 1.90:
  429.  
  430. * This version now supports all known versions of OS/2 2.0 and OS/2 2.1
  431.   Beta versions up until release level 6.498 (March '93)
  432.  
  433. Notes on version 1.91:
  434.  
  435. * The try-to-repair option will now also be called when the desktop folder
  436.   doesn't contain the .CLASSINFO extended attribute at all.
  437. * When /C was specified, and lost objects were found and the user choose
  438.   'discard object', the OBJECTID was still checked and when an error was
  439.   found the program asked if a new OBJECTID should be assigned. This has
  440.   been corrected.
  441.  
  442. Notes on version 1.92:
  443.  
  444. * Several small (non-functional) errors were corrected.
  445. * Verified that CHECKINI works with OS/2 2.1 GA (rev. 6.514)
  446.  
  447. Notes on version 1.93:
  448.  
  449. * Corrected a problem were CheckIni reported a problem with 'Not enough
  450.   memory' in GetAllProfileNames.
  451. * When a directory containing objects is missing, CHECKINI now first tries
  452.   to recreate this directory before trying to move the objects. (Only on
  453.   local drives)
  454.  
  455. Notes on version 1.94:
  456.  
  457. * Due to a bug in the Workplace shell, whenever Checkini (re)assigned an
  458.   OBJECTID to a Scheme Palette, all schemes went to 'New Scheme'.
  459. * The same problem could occur on OS/2 2.1 installations that were
  460.   installed on top of OS/2 2.0. The problem would even occur even when the
  461.   /C option was not specified. These problems have been corrected.
  462.  
  463. Notes on version 1.95:
  464.  
  465.  
  466.  
  467.                                                      CHECKINI.TXT - Page10
  468.  
  469.  
  470. * When the workplace shell had more then 64 Kb of object-handle-to-file
  471.   data (PM_Workplace:HandlesX) CHECKINI would mess up. Now CHECKINI can
  472.   handle multiple BLOCK records and will only write as much of these
  473.   records as needed back to OS2SYS.INI (and discard any others).
  474. * Objects of class WPTransient were not recognised and therefore whenever
  475.   an OBJECTID of such an object existed CHECKINI would give an error
  476.   message. This has been corrected.
  477.  
  478. Notes on version 1.96:
  479.  
  480. * Checkini would abort when very long file names had to be presented on
  481.   the screen. This has been corrected.
  482.  
  483. Notes on version 1.97:
  484.  
  485. * This version works with OS/2 3.0 (Warp version)
  486. * Some minor bugs where corrected.
  487.  
  488. Notes on version 1.98:
  489.  
  490. * In version 1.95 I added logic to handle more then 64 Kb of object-
  491.   handle-to-file data. I implicitly assumed then that I would always read
  492.   the multiple BLOCK records in the proper order. As it turns out, this
  493.   assumption is not always correct. I've changed it so I will always read
  494.   the proper order.
  495.  
  496. Notes on version 1.99:
  497. * I've found that some OBJECTID's can be *extremely* long. I've increased
  498.   the internal buffer from 50 to 150 chars.
  499.  
  500. Notes on version 1.991
  501.  
  502. * Corrected some problems with corrupted object data which caused checkini
  503.   to trap.
  504. * Implemented the /R switch that makes Checkini to ignore errors on non-
  505.   locatable drives.
  506. * Added tests for object classes, PM_Workplace:StatusPos, and
  507.   PM_PrintObjects. Also, checkini now tests all abstract objects for
  508.   existing classes and checks whether startup folders are present in
  509.   PM_Workplace:Startup.
  510. * CHECKINI now offers to remove objects that contain errors (/C option
  511.   only).
  512.  
  513. Notes on version 2.000
  514.  
  515. * For a long time I did not release new versions. This had to do with a
  516.   burglary at my house where, amongst other things, I lost my PC and thus
  517.   my fidonet connection.
  518.  
  519. * Changed the way object classes are checked. Before trying to load a
  520.   Dynamic link library containing a specific class I first check if the
  521.   dll has already been loaded. Also, some specific classes are not checked
  522.   since they always gave trouble.
  523. * Increased several internal buffers to accommodate the changes in Warp
  524.   3.0, FP 17 and above and the current gamma version of Merlin. I did not
  525.   make any specific functional changes for Merlin.
  526.  
  527.  
  528.                                                      CHECKINI.TXT - Page11
  529.  
  530.  
  531. * Changed the way the /R parameter works. Now /R means: Only check for
  532.   files on local, non-removable disks. This implies that local diskette or
  533.   CD-ROM drives are not checked when this option is specified.
  534.  
  535. Notes on version 2.10
  536.  
  537. * Added an option /D to manually specify the location of the DESKTOP
  538.   directory should CHECKINI be unable to determine the location of the
  539.   DESKTOP.
  540.  
  541. Notes on version 2.20:
  542.  
  543. * Added the long-asked-for option /Y to answer 'YES' to all questions
  544.   about corrections.
  545.  
  546. Notes on version 2.21:
  547. * Added some logic for a specific error situation at PM_Workplace:Location
  548.   where an textual OBJECID pointed to a completely wrong numeric object
  549.   handle.
  550.  
  551. * I noticed while correcting this bug that the WARP version I am working
  552.   with (WARP 4 + FP6) has some auto correction features. Simply querying
  553.   for this OBJECTID removed the misbehaving entry !!!
  554.  
  555. Notes on version 2.22:
  556.  
  557. * Probably as a result of the remark above, CHECKINI tried to delete
  558.   OBJECTIDs at PM_Workplace:Location that are already deleted by the WPS.
  559.   This resulted in an empty key being added. Now CHECKINI first checks
  560.   (again) if the misbehaving value is still present and if not no delete
  561.   is issued.
  562. * After correcting PM_Workplace:HandlesX, both Handles0 and Handles1 are
  563.   written into OS2SYS.INI now, where before only the active version of the
  564.   two was written.
  565.  
  566. Notes on version 2.23:
  567.  
  568. * Just a minor change. If a reboot is needed, CHECKINI now calls resetWPS
  569.   to simply reset the WPS.
  570.  
  571. Notes on version 2.24:
  572.  
  573. * Added a complete scan of all local disks for lost startup folders. Also
  574.   added the logic to handle other startup classes then WPStartup. This is
  575.   handy if you have add-on's that add their own startup class. See
  576.   STARTUP.CLS.
  577.  
  578. Notes on version 2.25:
  579.  
  580. * Added logic to remove ARCHIVED Startup folders from the WPS internal
  581.   list of startup folders. The diskscan added in version 2.24 doesn't add
  582.   ARCHIVED folders anymore to the list of startup folders.
  583. * Enhanced the /Y option. /Y:2 now doesn't ask confirmations for the
  584.   individual tests anymore.
  585.  
  586. Notes on version 2.26:
  587.  
  588.  
  589.  
  590.                                                      CHECKINI.TXT - Page12
  591.  
  592.  
  593. * Added logic to detect lost smartcenter shadows in the Nowhere folder.
  594.   Apparently, when deleting a tray from the SC the associated shadows are
  595.   not deleted. CHECKINI now does.
  596.  
  597. Notes on version 2.27:
  598.  
  599. * Added some logic while checking PM_Workplace:Location. Besides removing
  600.   incorrect location records, the proper one is re-applied so a new
  601.   location record is created.
  602. * Changed the scan of all disks so unrecognised folder classes are not
  603.   'fixed' by default. This is necessary if you have more then one version
  604.   of OS/2 Warp on your system and you use the /Y option. Also, the
  605.   DISKSCAN test only takes place when /T is specified.
  606.  
  607. Notes on version 2.28:
  608.  
  609. * Added a check for double objecthandles.
  610.  
  611. Notes on version 2.29:
  612.  
  613. * CHECKINI always assumed the type of an object could safely be determined
  614.   by looking at the HIWORD of an (WPS internal) handle. A 2 was an
  615.   abstract object and a 3 a file system object. Based on a report from a
  616.   single user, I found this was incorrect. Now CHECKINI dynamically
  617.   determines the proper values.
  618. * CHECKINI now uses WPTOOLS.DLL for several functions instead of a
  619.   statically linked library. This is done to make life easier for myself.
  620. * Added a question during the PM_Workplace:Handles0/1 check to ask if a
  621.   found volume should be checked. This question is only asked if /S and /Y
  622.   options are NOT given.
  623. * Modified the behaviour of the Startup folders check when /Y was given.
  624.   Startup folder are no longer automatically removed from the WPS's list
  625.   of startup folders. If the /Y switch is NOT specified the error is still
  626.   reported and (with /C) can be fixed.
  627.   
  628. Notes on version 2.30:
  629.  
  630. * Corrected a problem where a folder without any objects could cause
  631.   CHECKINI to terminate.
  632.  
  633. Notes on version 2.40:
  634.  
  635. * Modified the question during PM_Workplace:Handles0/1 to look at the /R
  636.   switch. If /R is specified, the question will not be asked for removable
  637.   or non-local drives.
  638. * Introduced the /H switch to check PM_Workplace:Handles0/1 only.
  639.   
  640. Notes on version 2.42:
  641.  
  642. * CHECKINI is now made with VisualAge C++ version 3.0;
  643. * CHECKINI now makes a backup of the INI files when /C is specified.
  644. * CHECKINI now contains a test for duplicate DRIV blocks or invalid first
  645.   NODE blocks in PM_Workplace:Handles;
  646. * Modified the /W argument. /W now accepts /W:2 or /W:3. See explanation
  647.   on command line arguments.
  648. * Changed to output of PM_Workplace:Handles to show an asterisk if the
  649.   handle was found to be used somewhere in CHECKINI's checks. Note: this
  650.   only works when ALL checks are done.
  651.  
  652.  
  653.                                                      CHECKINI.TXT - Page13
  654.  
  655.  
  656. * Will no longer offer to remove a entry at PM_Workplace:Handles if I have
  657.   found the handle to be in use somewhere else. Keep in mind I can only
  658.   determine this if you DO NOT SKIP any other tests.
  659. * CHECKINI now checks the version of WPTOOLS.DLL.
  660. * The lay-out of the output has been modified to enhance readability.
  661.  
  662. Notes on versions 2.43 to 2.46:
  663.  
  664. * Corrected a problem probably introduced by VAC 3.0 that CHECKINI did not
  665.   detect its current directory as it should.
  666. * Corrected a problem where a DRIV block without any nodes in it lead to
  667.   corruption of PM_Workplace:Handles.
  668.