home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 January / PCO0197.ISO / filesbbs / os2 / wptool19.arj / CHECKINI.TXT < prev    next >
Encoding:
Text File  |  1996-09-22  |  21.5 KB  |  545 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                                                       CHECKINI.TXT - Page 1
  8.           _________________
  9.           TABLE OF CONTENTS
  10.  
  11.  
  12.  
  13.           1. DISCLAIMER...................................................1
  14.  
  15.  
  16.           2. IMPORTANT - READ THIS FIRST !................................2
  17.  
  18.  
  19.           3. DESCRIPTION..................................................3
  20.  
  21.           3.1 GENERAL.....................................................3
  22.           3.2 PM_WORKPLACE:HANDLES........................................3
  23.           3.3 ORPHAN OBJECTS..............................................4
  24.  
  25.           4. USING CHECKINI...............................................5
  26.  
  27.  
  28.           5. HOW THE PROGRAM WORKS........................................5
  29.  
  30.  
  31.           6. EXAMPLES OF OUTPUT:..........................................6
  32.  
  33.  
  34.           7. REVISION HISTORY.............................................8
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.                                                       CHECKINI.TXT - Page 2
  42.  
  43.           1. DISCLAIMER
  44.  
  45.  
  46.           I allow you to use and distribute CHECKINI freely under the
  47.           condition that I am in no way responsible for any damage or loss
  48.           you may suffer.
  49.  
  50.           Henk Kelder
  51.           Dennenlaan 12
  52.           3843 BX Harderwijk
  53.  
  54.  
  55.  
  56.           2. IMPORTANT - READ THIS FIRST !
  57.  
  58.           You should take care when using this program on new version of
  59.           OS/2 since this program interprets data from the ini-files.
  60.           The internal structure of this data can change, and the program
  61.           might fail or even corrupt information
  62.           This was the case with the OS/2 2.00.1 (or 2.01) version.
  63.  
  64.  
  65.           CHECKINI checks for, and optionally corrects, some problems in
  66.           OS2.INI and OS2SYS.INI. CHECKINI only looks at information
  67.           regarding the workplace shell.
  68.           The make full use of CHECKINI read this document to require
  69.           information about what CHECKINI does.
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.                                                       CHECKINI.TXT - Page 3
  77.  
  78.           3. DESCRIPTION
  79.  
  80.           3.1 GENERAL
  81.  
  82.           The main reason for CHECKINI is the growth that the both .INI
  83.           files tend to have if one uses the Workplace shell heavelly.
  84.           Using CHECKINI in conjunction with COPYINI helps to reduce the
  85.           INI files sizes, which in turn should increase the workplace
  86.           shells performance.
  87.  
  88.           Also CHECKINI helps to determine some possible cause's for
  89.           workplace shell failures like loosing workplace shell objects, or
  90.           situations in which a program object looses the proper executable
  91.           name or current directory. Obviously, the real cause for these
  92.           problems must be in the workplace shell
  93.           itself, CHECKINI however could help you to determine the degree
  94.           of damage that has been done.
  95.  
  96.  
  97.           3.2 PM_Workplace:Handles
  98.  
  99.           A special note is in place about a specific piece of information
  100.           in the INI-files called 'PM_Workplace:Handles'. The workplace
  101.           shell uses some obscure entity called object-handles to refer to
  102.           objects. Object handles are infact numbers. A object-handle can
  103.           refer to a abstract object (a object NOT on your harddisk e.g.
  104.           the color palette) and  file-system objects (files &
  105.           directories).
  106.  
  107.           Abstract objects reside in the ini-files.
  108.           File-system objects reside on your harddisk.
  109.  
  110.           Whenever you add a program object to your desktop and specify a
  111.           programfile the workplace shell determines if a handle was
  112.           already assigned to the programfile and if so, it uses this
  113.           handle. If no handle was assigned, the shell creates a handle and
  114.           assignes it to the programfile. In the definition of the program
  115.           object (self an abstract object) the handle for the programfile
  116.           is stored.
  117.  
  118.           When you start the program by clicking on the object the wps must
  119.           have a way to refer the stored handle back to the programfile.
  120.           This is done by using the 'PM_Workplace:Handles' information.
  121.           Unfortunately only handles are added to this information and they
  122.           are not removed when a (program)file is removed from your
  123.           harddisk.
  124.  
  125.           In theory the total amount of handle-to-file information could
  126.           grow to big and than without any warning you will loose
  127.           information. The workplace shell than shows nonsence or nothing
  128.           at all in some of your program objects.
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.                                                       CHECKINI.TXT - Page 4
  136.           CHECKINI allows you to remove handles for files or directories
  137.           that are no longer present or inaccessable.
  138.  
  139.  
  140.           If you have installed the october service pack (CSD Level
  141.           XR06055) there has been a minor change in mechanisme described
  142.           above. The workplace shell now keeps multiple versions of
  143.           'PM_Workplace:Handles' in the ini-files. Appearantly this is
  144.           intended as a error-recovery mechanism. However, I've been unable
  145.           to determine of the backup mechanism itself is implemented.
  146.  
  147.  
  148.           3.3 ORPHAN OBJECTS
  149.  
  150.           An wide spread way to remove undeleteable objects is to move them
  151.           to a directory, and then, in a OS/2 or DOS session remove the
  152.           directory. The Workplace shell than no longer shows the objects.
  153.           They are infact NOT removed but they simply have no parent
  154.           directory to they will show in.
  155.           Also, sometimes it is possible that suddenly several objects are
  156.           lost. A reason for this could be a unintentional removal of a
  157.           desktop directory.
  158.  
  159.           CHECKINI detect these 'orphan objects' and queries to user (when
  160.           /C specified) to move these objects to another (new) location.
  161.           The moved objects will appear after the workplace shell has been
  162.           restarted.
  163.           If this question is answered with NO, another question is asked
  164.           whether the objects should be removed from the ini-files.
  165.  
  166.  
  167.           WARNING 1
  168.  
  169.           if you are normally connected to a network and run CHECKINI when
  170.           you are NOT connected to this network, or when you are not logged
  171.           in, CHECKINI will report errors for references to network
  172.           objects.
  173.           In the situation mentioned above and with the /C swith given,
  174.           take care when confirming deleting or correcting problems.
  175.  
  176.           WARNING 2
  177.  
  178.           Whenever you run CHECKINI with the /C switch you must be prepared
  179.           to shutdown immidiatly after you have run the program. This
  180.           because the workplace shell has a lot of info in memory and it
  181.           you keep on working some of the changes checkini has made will be
  182.           overwritten by the desktop.
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.                                                       CHECKINI.TXT - Page 5
  190.  
  191.           4. USING CHECKINI
  192.  
  193.           From an OS/2 command prompt enter the command CHECKINI. Without
  194.           any command line options CHECKINI doesn't change anything to your
  195.           ini-files.
  196.  
  197.           COMMAND LINE OPTIONS
  198.  
  199.           /C   -      Write corrections to ini-files. The default is to
  200.                       diagnose only. If this option is specified the
  201.                       program will ask confirmations for all changes it
  202.                       may want to do in your   ini-files.
  203.  
  204.           /Apath    - Specify different location for ini-files to be
  205.                       checked. This option is usefull if you have a copy
  206.                       of you ini files and you would like these copies to
  207.                       be checked.
  208.                       NOTE: Do NOT use this option to check ini-files not
  209.                       belonging to the PC you run CHECKINI on.
  210.  
  211.           /Llogfilename- Specify name of logfile. The default is
  212.                       CHECKINI.LOG in the directory you start the program
  213.                       in.
  214.  
  215.           /W   -      Write all output to logfile. Normally only problems
  216.                       are written to the logfile. This option could help
  217.                       you to inspect a lot about your workplace shell
  218.                       objects (actually workplace shell objects
  219.                       instances).
  220.  
  221.           /S   -      'Silent run', only write logfile. Normally found
  222.                       errors are reported directly.
  223.  
  224.           /R  -       Do not report errors on files on network drives or
  225.                       removable local drives like diskette's or CD-roms.
  226.  
  227.           /?   -      Show info.
  228.  
  229.  
  230.  
  231.  
  232.           5. HOW THE PROGRAM WORKS
  233.  
  234.           While running CHECKINI displays all found information on the
  235.           screen. Whenever a problem is found, and the /S switch is not
  236.           used the program reports the problem. The problem itself is
  237.           visible in the bottom lines of the screen. Problems are always
  238.           reported in CAPITALS.
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.                                                       CHECKINI.TXT - Page 6
  246.  
  247.           6. EXAMPLES of OUTPUT:
  248.  
  249.           =================================================
  250.            PM_Workplace:Handles:BLOCK1                  
  251.           =================================================
  252.           3E2DA:CHECKINI.EXE   =>E:\ICON\CHECKINI.EXE<-UNABLE TO ACCESS
  253.           395F8:COPYINI.EXE    =>E:\ICON\COPYINI.EXE<-UNABLE TO ACCESS
  254.           39400:GETPROG.EXE    =>E:\ICON\GETPROG.EXE<-UNABLE TO ACCESS
  255.           =================================================
  256.            PM_Abstract:Objects & PM_Abstract:FldrContents
  257.           =================================================
  258.             Object 13087, Class WPNetLink : A network folder
  259.              Linked to: \\SERVER09\SYS3\DIRECTORY1<-UNABLE TO ACCESS!
  260.             Object 140AD, Class WPNetLink : SYS3
  261.              Linked to: \\SERVER09\SYS3<-UNABLE TO ACCESS!
  262.             Object 15185, Class WPNetLink : SYS1
  263.              Linked to: \\SERVER09\SYS1<-UNABLE TO ACCESS!
  264.             Object 15956, Class WPNetLink : A network folder
  265.              Linked to: \\SERVER09\SYS3\DIRECTORY1<-UNABLE TO ACCESS!
  266.           =================================================
  267.            Checking AssocCheckSum                         
  268.           =================================================
  269.           PMWP_ASSOC_CHECKSUM:252153
  270.             points to 3D8F9 - E:\ICON\GETBLOCK.EXE<-UNABLE TO ACCESS
  271.           =================================================
  272.            Checking FolderPos                             
  273.           =================================================
  274.           PM_Workplace:FolderPos:252223@10
  275.             points to 3D93F - OBJECT DOES NOT EXIST
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.                                                       CHECKINI.TXT - Page 7
  283.           WHAT THE PROGRAM CHECKS
  284.  
  285.           The following ini-records (Application - Key) are checked:
  286.  
  287.           PM_Workplace:Handles    - BLOCK1
  288.           (Checks consistency and existence of filesystem object-handles)
  289.  
  290.           PM_Workplace:Location   - (all keys)
  291.           (Checks existence of object where id-strings like <WP_DESKTOP>
  292.           point to)
  293.  
  294.           PM_Workplace:Folderpos  - (all keys)
  295.           (Checks for obsolete saved object positions)
  296.  
  297.           PM_PrintObject:JobCnrPos - (all keys)
  298.           (Checks for obsolete saved print job container positions)
  299.  
  300.           PM_Workplace:PalettePos - (all keys)
  301.           (Checks for obsolete saved palette positions)
  302.  
  303.           PM_Workplace:Templates  - (all keys)
  304.           (Checks for template-records that refer to non-existing objects)
  305.  
  306.           PM_Abstract:Objects     - (all keys)
  307.           (Mainly checks WPProgram objects for consistency, but also checks
  308.           for 'lost-objects' - objects moved to non-existing locations.
  309.           Also checks WPNetLink and WPShadow links.)
  310.  
  311.           PM_Abstract:FldrContent - (all keys)
  312.           (Used for the check mentioned above for 'lost-objects')   
  313.  
  314.           PM_Abstract:Icons       - (all keys)
  315.           (Checks for obsolete icons, icons for abstract objects that do
  316.           not exist)
  317.  
  318.           PMWP_ASSOC_FILTER       - (all keys)
  319.           (Checks for associations with non-existing objects)
  320.  
  321.           PMWP_ASSOC_TYPE         - (all keys)
  322.           (Checks for associations with non-existing objects)
  323.  
  324.           PMWP_ASSOC_CHECKSUM     - (all keys)
  325.           (Checks for obsolete checksum record that point to non-existing
  326.           objects)
  327.  
  328.           PM_Workplace:Location   - (all keys)
  329.           (Checks consistency of logical location names e.g. <WP_DESKTOP>)
  330.  
  331.           PM_Workplace:Startup    - (all keys)
  332.           (Checks if the referenced folders are infact startup folders)
  333.  
  334.           FolderWorkareaRunningObjects - (all keys)
  335.           (Checks for a list of open objects for a workarea)
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.                                                       CHECKINI.TXT - Page 8
  343.  
  344.           7. REVISION HISTORY
  345.  
  346.           Notes on version 1.1:
  347.  
  348.           Some checks were added:
  349.           - PM_Workplace:PalettePos
  350.           - PM_Workplace:Startup
  351.           - Some other checkings were extended.
  352.  
  353.           Notes on version 1.2:
  354.  
  355.           - The check for PM_Workplace:Handles was moved so that it would
  356.             be the last test done.
  357.           - The frase 'DOES NOT EXIST' for file objects (files &
  358.             directories) has been changed to 'UNABLE TO ACCESS' since this
  359.             is a beter description of what CHECKINI finds.
  360.  
  361.           Notes on version 1.3:
  362.  
  363.           - The only extra in this version is that it support OS/2 2.00.1
  364.             (beta version) since in this version the internal structure of
  365.             various workplace shells object data has changed.
  366.  
  367.           Notes on version 1.4:
  368.  
  369.           - Not all of the data checkini appearantly needs to exist. If
  370.             some data checkini checks does not exist, the test is skipped.
  371.  
  372.           Notes on version 1.5:
  373.  
  374.           Checkini now works properly after installing the servicepack
  375.           dated october 1992.
  376.  
  377.           Notes on version 1.6:
  378.  
  379.           - Two additional tests were added. These test are for:
  380.                - 'FolderWorkareaRunningObjects' and
  381.                - 'PM_PrintObject:JobCnrPos'
  382.  
  383.           - When a conflict in OBJECTID's is detected (two or more objects
  384.             having the same OBJECTID, CHECKINI /c can assign a new OBJECTID
  385.             to the objects that claim to have an OBJECTID that is already
  386.             in use by another object.
  387.  
  388.           - Updated the documentation files (this file)
  389.  
  390.           A simple test has been build in to see if OBJECTID's can be found
  391.           in the ini-files, to determine if the internal data structure of
  392.           the ini-files might have been changed and CHECKINI will fail
  393.           completely. This is however no guarantee that CHECKINI will
  394.           function properly on new versions of OS/2.
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.                                                       CHECKINI.TXT - Page 9
  402.  
  403.           Notes on version 1.7:
  404.  
  405.           - The 'simple test' mentioned above might block someone using
  406.             CheckIni if the ini-file itself is corrupt. Now the test is
  407.             only performed when /C (correct) switch is specified.
  408.  
  409.           Notes on version 1.8:
  410.  
  411.           - When checking 'PM_Workplace:Handles' a test has been put in   
  412.             that checks the accessibility on a volume in one strike. If the
  413.             user okays the removal of all references to a non-locateable
  414.             volume, all handles on that volume are removed without further
  415.             checking.
  416.  
  417.           Notes on version 1.81:
  418.  
  419.           - Apparently CheckIni went bananas whenever an alternate ini
  420.             directory was specified and no ini's were found. This has been
  421.             corrected.
  422.           - Some minor enhancements were made to the text that is being
  423.             shown on the screen. These changes mainly have to do with
  424.             signalling problems with OBJECTID's.
  425.           - CheckIni refused to Change/Correct anything if the Desktop's
  426.             Extended attributes have been damaged. CheckIni now offers a
  427.             try-to-repair option. This option comes down to CheckIni re-
  428.             assigning objectid <WP_DESKTOP> to the desktop when CheckIni is
  429.             unable to locate this ObjectId inside the Desktop Extended
  430.             Attributes. If this corrective action has been taken CheckIni
  431.             terminates and one should wait a view moments so the WPS has
  432.             time to update the physical extended attribute on disk.
  433.  
  434.           Notes on version 1.90:
  435.  
  436.           - This version now supports all known versions of OS/2 2.0 and
  437.             OS/2 2.1 Beta versions up till release level 6.498 (March '93)
  438.  
  439.           Notes on version 1.91:
  440.  
  441.           - The try-to-repair option will be called also now when the
  442.             desktop folder doesn't contain the .CLASSINFO extended 
  443.             attribute at all.
  444.  
  445.           - When /C was specified, and lost objects were found and the user
  446.             choose for 'discard object', the OBJECTID was still checked and
  447.             when an error was found the program asked if a new OBJECTID
  448.             should be assigned. This has been corrected.
  449.  
  450.           Notes on version 1.92:
  451.  
  452.           - Several small (non-functional) errors were corrected.
  453.           - Verified that CHECKINI works with OS/2 2.1 GA (rev. 6.514)
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.                                                      CHECKINI.TXT - Page 10
  461.           Notes on version 1.93:
  462.  
  463.           - Corrected a problem were CheckIni reported a problem with 'Not
  464.             enough memory' in GetAllProfileNames.
  465.  
  466.           - When a directory containing objects is missing, CHECKINI now
  467.             first tries to recreate this directory before trying to move
  468.             the objects. (Only on local drives)
  469.  
  470.           Notes on version 1.94:
  471.  
  472.           - Due to a bug in the Workplace shell, whenever Checkini
  473.             (re)assigned an OBJECTID to a Scheme Palette, all scheme's went
  474.             to 'New Scheme'.
  475.  
  476.           - The same problem  could occur on OS/2 2.1 installations that
  477.             were installed on top of OS/2 2.0. The problem would even then
  478.             occur when the /C option was not specified. These problems have
  479.             been corrected.
  480.  
  481.           Notes on version 1.95:
  482.  
  483.           - When the workplace shell had more then 64 Kb of object-handle-
  484.             to-file data (PM_Workplace:HandlesX) CHECKINI would mess up.
  485.             Now CHECKINI can handle multiple BLOCK records and will only
  486.             write as much of these records as needed back to OS2SYS.INI
  487.             (and discard any others)
  488.  
  489.           - Objects of class WPTransient were not recognized and therefore
  490.             whenever and OBJECTID of such an object existed CHECKINI would
  491.             give an error message. This has been corrected.
  492.  
  493.           Notes on version 1.96:
  494.  
  495.           1. 
  496.             Checkini with abort when very long file names had to be
  497.             presented on the screen. This has been corrected.
  498.  
  499.           Notes on version 1.97:
  500.  
  501.           - This version works with OS/2 3.0 (Warp version)
  502.           - Some minor bugs where corrected.
  503.  
  504.           Notes on version 1.98:
  505.  
  506.           - In version 1.95 I added logic to handle more then 64 Kb of
  507.             object-handle-to-file data. I implicitally assumed then that I
  508.             would always read the multiple BLOCK records in the proper
  509.             order. As it turns out this assumption is not always correct.
  510.             I've changed it so I will always read the proper order.
  511.  
  512.           Notes on version 1.99:
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.                                                      CHECKINI.TXT - Page 11
  520.           I've found that some OBJECTID's can be *extreme* long. I've
  521.           increased the internal buffer from 50 to 150 chars.
  522.  
  523.           Notes on version 1.991
  524.  
  525.           - Corrected some problems with corrupted objectdata where
  526.             checkini would trap on.
  527.           - Implemented the /R switch that makes Checkini to ignore errors
  528.             on non-locateable drives.
  529.           - Added tests for object classes, PM_Workplace:StatusPos, and
  530.             PM_PrintObjects. Also checkini now tests all abstract objects
  531.             for existing classes and checks if startup folders are present
  532.             in PM_Workplace:Startup.
  533.           - CHECKINI now offers to remove objects that contain errors (/C
  534.             option only).
  535.  
  536.           Notes on version 2.000
  537.  
  538.           For a long time I did not release new versions. This had to do
  539.           with a burglary at my house where, amongst other things, I lost
  540.           my PC and thus my fidonet connection.
  541.  
  542.           - Changed the way object classes are checked. Before trying to
  543.             load a Dynamic link library containing a specific class I first
  544.             check if the dll has already been loaded. Also some specific
  545.             classes are not checked since they always gave troubles.
  546.           - Increased several internal buffers to accomodate the changes in
  547.             Warp 3.0, FP 17 and above and the current gamma version of
  548.             merlin. I did not make any specific functional changes for
  549.             merlin.
  550.           - Changed the way the /R parameter works. Now /R means: Only
  551.             check for files on local, non-removable disks. This implies
  552.             that local diskette or CD-rom drives are not checked when this
  553.             option is specified.
  554.  
  555.