home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 035 / inimt33a.zip / inichnge.txt < prev    next >
Text File  |  1994-11-08  |  173KB  |  3,452 lines

  1.                       INIMAINT CHANGE HISTORY
  2.  
  3. ******************************* V1.0a *******************************
  4.  
  5. The items fixed in Version 1.0a are:
  6.  
  7. 1. There was a potential problem in 1.0 if a new file was selected
  8. before the data for a key was written to the file. This turned out to
  9. not be a problem.
  10.  
  11. 2. If INIMAINT was closed in a minimized condition, the correct
  12. window size and location were not stored. This has been fixed.
  13.  
  14. 3. The SIZE calculation for All Groups was incorrect if a single
  15. Application was included in more than one Group. This has been fixed.
  16.  
  17. 4. If the Help Instance could not be created because the INIHELP.HLP
  18. file was not found, the user only got a 5101 logic error. The Dump
  19. Dialog has been changed to add a line that gives the reason for any
  20. outstanding logic error.
  21.  
  22. 5. The PM Error Text was not displayed when there was a PM Error.
  23. OS/2 1.3 with CSD WR5050 has a bug in this area and will not display
  24. the correct text. The text will now be displayed.
  25.  
  26. 6. When an error was encountered during Help Instance Initialization,
  27. the help error code was not stored in the Help Error area. This has
  28. now been fixed.
  29.  
  30. 7. INIMAINT would not run at all if there was a problem initializing
  31. the Help. It will now run, but no Help will be available.
  32.  
  33. ******************************* V1.0b *******************************
  34.  
  35. The items fixed in Version 1.0b are:
  36.  
  37. 1. More of the Help has been done, the missing Help is now that for
  38. the Dialog Boxes.
  39.  
  40. 2. When run under OS/2 2.0 a Message Queue Full error was being
  41. encountered. This was fixed by increasing the Message Queue from the
  42. default 10 to 30.
  43.  
  44. ******************************* V1.0c *******************************
  45.  
  46. The items fixed in Version 1.0c are:
  47.  
  48. 1. A Dump message logging facility was added so that problems with
  49. message sequences could be logged and identified.
  50.  
  51. 2. Because of a problem in OS/2 2.0 the return from setting the top
  52. index in a listbox is incorrect. The check for a valid return from
  53. this API call has been removed so that INIMAINT will run under OS/2
  54. 2.0.
  55.  
  56. ******************************* V1.0d *******************************
  57.  
  58. The items fixed in Version 1.0d are:
  59.  
  60. 1. When INIMAINT first comes up, the LOGO box does not have the Focus
  61. and the Enter Key will not close it, it can only be closed using the
  62. Mouse. The Focus is not forced to the LOGO Dialog during initial
  63. window processing.
  64.  
  65. 2. The Dump Dialog will not fit on a 640x480 VGA Screen. To fix this
  66. the Dump dialog was made 20 pels shorter.
  67.  
  68. 3. The filling of the Listboxes, the MLE and the Size calculation all
  69. have the capability to run for some time, especially under OS/2 2.0,
  70. and they block any processing of messages during this period. These
  71. functions have been moved to a separate thread.
  72.  
  73. 4. Choosing Menu Items such as Size, Copy and Move cause a Dialog box
  74. to appear with the selections. The Selections are now a menu, not a
  75. dialog.
  76.  
  77. 5. If there is a lot of data to be inserted into the MLE, the MLE
  78. blinks a lot. The window is now be disabled during the data insertion.
  79.  
  80. 6. If Size is selected and then Cancelled, a Size of 20 bytes was
  81. displayed. This has been fixed.
  82.  
  83. 7. The buttons in the New File Dialog were in uppercase, but now are
  84. lower case.
  85.  
  86. 8. If a New File is selected on a diskette drive that has no
  87. diskette, a terminal error resulted. Now a Message Box will be
  88. presented and the old drive will remain the current drive.
  89.  
  90. 9. Selecting an empty VDISK drive got a terminal error. This has been
  91. fixed.
  92.  
  93. 10. You could not Cancel a Copy without selecting a target file. This
  94. has been fixed.
  95.  
  96. 11. When the contents of the Dump Dialog were written to a file, the
  97. values of the various error indicators, which are displayed at the
  98. top of the Dialog, were not written. This has been fixed.
  99.  
  100. 12. If a non-INI file is selected and it causes INIMAINT to
  101. terminate, then the program would not restart, because it attempted to
  102. use the same file and continued to get the same error. The user is
  103. now informed the file is invalid and given a chance to select a new
  104. file to edit.
  105.  
  106. 13. When opening a new INI file to edit, the check for a valid INI
  107. file was not sufficient to identify the bad file during the file
  108. selection process. This has not been fixed and any file that gets
  109. through the file selection will be a valid INI file.
  110.  
  111. 14. If a Drive was selected and the root directory was empty,
  112. INIMAINT would terminate attempting to fill the file Listbox. This
  113. has now been fixed.
  114.  
  115. 15. When editing the any line of a multiline entry in the Key
  116. Value MLE while in overtype mode, as opposed to insert mode,
  117. the following line had the initial characters deleted. This has been
  118. fixed.
  119.  
  120. 16. When the Focus was removed from the INIMAINT window, the
  121. Titlebars of both Listboxes stayed in a highlighted condition. This
  122. has been fixed and the colors of the Titlebars will now behave
  123. correctly.
  124.  
  125. 17. Since no user input is accepted while the Listboxes are being
  126. filled, the MLE is being reset, a Size is being calculated or a Move
  127. or Copy are in progress, the Pointer should be changed to an
  128. hourglass pointer, this was not working, but has been fixed.
  129.  
  130. 18. The Help has been finished.
  131.  
  132. 19. There was a problem with seeing the pointer in the MLE under OS/2
  133. 2.0, so a call to WinSetOwner setting the Main Client window as the
  134. Owner of the MLE was added to fix the problem.
  135.  
  136. ******************************* V1.0e *******************************
  137.  
  138. The items fixed in Version 1.0e are:
  139.  
  140. 1. Copy an Entire File got a return of 10 from the Copy program. This
  141. has been fixed.
  142.  
  143. 2. The MOVE/COPY in Progress Dialog did not display the word
  144. Move/Copy. This has been fixed.
  145.  
  146. 3. The MOVE/COPY did not verify that the target file was a valid INI
  147. file. This will now be done and an Error Message box will be
  148. displayed if the COPY/MOVE cannot be done.
  149.  
  150. 4. The smallest item that could be MOVEed or COPYed was an
  151. Application. It is now possible to COPY/MOVE an individual key.
  152.  
  153. 5. Considerably more Help has been added.
  154.  
  155. 6. Accelerator Keys have been implemented and added to the Help.
  156.  
  157. 7. If a New File was selected and either the OS2.INI or OS2SYS.INI
  158. files were specified without the initial path information, INIMAINT
  159. did not recognize them as the User and System INI files and attempted
  160. to open them in an incorrect manner. This has been fixed.
  161.  
  162. 8. If a COPY/MOVE was attempted and either the OS2.INI or OS2SYS.INI
  163. files were specified as the target without the initial path
  164. information, INIMAINT did not recognize them as the User and System
  165. INI files and attempted to open them in an incorrect manner. This has
  166. been fixed.
  167.  
  168. 9. If an INI file was selected that had no Applications in it, the
  169. INIMAINT window would not appear. This has been fixed.
  170.  
  171. 10. It was not possible to cancel the Add Application or Add Key
  172. without getting the Message Box saying that something had to be
  173. entered. The Cancel will now work correctly.
  174.  
  175. 11. The Listboxes and MLE would flash excessively. This will no
  176. longer occur.
  177.  
  178. 12. When in the Dump Dialog, it was not possible to change the name
  179. of the Dump File by simply typing in the Filename Entry Field. This
  180. will now work and the new filename will become the Dump File for
  181. future Dumps.
  182.  
  183. 13. When the Help was open, the Title Bars of the smaller INIMAINT
  184. windows appeared to still have the focus because they were
  185. highlighted. This will no longer occur.
  186.  
  187. 14. When in the Replace Key Dialog and the key value was longer than
  188. what could be displayed in the Listbox, any change to the value would
  189. cause the contents of the ASCII and Hex Entry Fields would shift to
  190. the very end of the value data. This has been fixed.
  191.  
  192. 15. INIMAINT was not using the Logo Display Time that is set by the
  193. user in the Control Panel, but was using an internal 10 second
  194. display time. This has been changed so that the Control Panel value
  195. will now be used. Even with a value specified in the Control Panel,
  196. it is still possible to turn off the Initial Logo Display with the
  197. Options Dialog.
  198.  
  199. ******************************* V1.0f *******************************
  200.  
  201. The items fixed in Version 1.0f are:
  202.  
  203. 1. The Menus did not show the Accelerator Keys, this information has
  204. been added to the appropriate menu items.
  205.  
  206. 2. Because of a bug in handling Timers, INIMAINT would get an error
  207. when run under OS/2 2.0 and the About Dialog was dismissed. This has
  208. been fixed by changing the Parent of the About box when it is invoked
  209. from the Menu.
  210.  
  211. 3. The Help indicated that there was an Accelerator key that would
  212. directly pull down the COPY or MOVE menus. This was an error and has
  213. been removed from the Help file.
  214.  
  215. 4. When a COPY/MOVE was attempted for the Selected Application or
  216. Selected Key and either of the Selected Names had an embedded blank,
  217. then the COPY?MOVE would terminate with an Error=5 from the INICOPY
  218. program. This has been fixed.
  219.  
  220. 5. The Error Message Box displayed when an invalid INI file was
  221. selected did not include the error message, this has been fixed.
  222.  
  223. 6. When an invalid INI file was selected, INIMAINT would not close
  224. the file, therefore, no other process could use the file. This has
  225. been fixed.
  226.  
  227. ******************************* V1.0g *******************************
  228.  
  229. The items fixed in Version 1.0g are:
  230.  
  231. 1. The Dump to a file could get a Trap D and could dump some garbage
  232. messages because it was going past the end of the Message table. This
  233. has been fixed.
  234.  
  235. 2. A message sequence number has been added to the dump of messages.
  236.  
  237. 3. When doing a MOVE/COPY the Wait Pointer was not set correctly when
  238. the pointer was over the Listboxes or MLE. This has been fixed.
  239.  
  240. 4. If a Group was deleted, a hole was left in the menu items that
  241. include the Groups. This has been fixed.
  242.  
  243. 5. When things were MOVEd from an INI file to another file, the
  244. Listboxes were not updated to reflect the fact that the MOVEd items
  245. were no longer in the Source INI file. This has been fixed and the
  246. Listboxes will be automatically updated after the MOVE.
  247.  
  248. 6. The supplemental error text was not always complete if an error
  249. occurred during a MOVE/COPY operation. This has been fixed.
  250.  
  251. 7. V1.0f displayed a Version number of 1.0e. V1.0g will show the
  252. correct version.
  253.  
  254. 8. When the last Key for an Application was moved to another INI
  255. file, the Application entry was not deleted and an Application with
  256. no Keys was left in the file. INIMAINT will now check to see if a
  257. MOVE Key is being done for the last Key and promote it to a MOVE
  258. Application, so that the Application entry will be removed from the
  259. Source INI file.
  260.  
  261. 9. The Groups Dialog did not redisplay the Group that was being
  262. displayed when the last Group Update was done. This has been fixed.
  263.  
  264. ******************************* V1.1  *******************************
  265.  
  266. The items fixed in Version 1.1 are:
  267.  
  268. 1. The System Default Accelerator keys did not work because the
  269. System Commands were not getting to the Main Window Frame. This has
  270. been fixed.
  271.  
  272. 2. The Registration code was added.
  273.  
  274. 3. When an input string was requested, the user was asked to 'Select'
  275. something. This has been changed to ask the user to 'Enter' the
  276. information.
  277.  
  278. ******************************* V1.1a  *******************************
  279.  
  280. The items fixed in Version 1.1a are:
  281.  
  282. 1. The supplemental error text was not correctly filled in when there
  283. was an error during a COPY/MOVE. This has been fixed.
  284.  
  285. 2. It was possible to get a Trap D when selecting a New INI File
  286. because dynamic memory was released prematurely. This has been fixed.
  287.  
  288. ******************************* V1.1b  *******************************
  289.  
  290. The items fixed in Version 1.1b are:
  291.  
  292. 1. It was possible to get a Trap D while the MLE was formatting a
  293. long entry if an attempt was made to make a selection in one of the
  294. Listboxes or an attempt was made to change the MLE. Now any such
  295. attempt will cause an error tone and the action will be rejected
  296. until all updating has been done.
  297.  
  298. 2. There were some relatively rare situations where dynamic memory
  299. blocks were not being freed, the that amount of memory used would
  300. slowly grow. This has been fixed.
  301.  
  302. 3. In order to better track potential memory problems, a dump of the
  303. contents of the heap has been added to the Dump window and more
  304. complete listing will be written to the Dump File.
  305.  
  306. 4. Under certain circumstances, INIMAINT would put Keys in the
  307. OS2.INI file for the INI File Maintenance Application that had NULL
  308. Values. This will no longer occur, although it did not cause any
  309. problem other than put unneeded items in the INI file.
  310.  
  311. 5. There are certain Applications and/or Keys that cannot be deleted
  312. from the OS2SYS.INI file. When an attempt was made to Delete or MOVE
  313. one of these entries, INIMAINT would terminate. Additional code has
  314. been inserted that will identify these conditions, inform the user
  315. and then continue.
  316.  
  317. 6. Under OS/2 2.0 INIMAINT would terminate with an error 109 after
  318. the About INIMAINT Dialog box was displayed. This was caused by
  319. static variables that were not correctly initialized after the first
  320. use of the dialog. This has been fixed.
  321.  
  322. 7. The Spooler, and perhaps other sections of OS/2 protect certain
  323. areas of the INI files, especially the System INI file, thus making
  324. it impossible to remove certain Keys from the files, even though the
  325. Keys are associated with things that are no longer on the Desktop. In
  326. order to facilitate these efforts, a new capability has been added to
  327. INIMAINT that allows the user to change the User and/or System INI
  328. files to a different file. The user can then edit the original file
  329. as he wishes and then switch back. This must be done with much care
  330. in order to avoid causing a system problem, but the capability can be
  331. extremely important when attempting to recover from conditions where
  332. the operating system has created conflicting or other conditions that
  333. can be corrected no other way.
  334.  
  335. ******************************* V1.1c  *******************************
  336.  
  337. The items fixed in Version 1.1c are:
  338.  
  339. 1. The Main Window Menu Items for changing the User and System INI
  340. files have been moved from the Actions Menu to a new Menu, Recover.
  341. It is intended that additional capabilities will be added to give the
  342. user the ability to recover from corrupted INI files and those
  343. capabilities will be added to this menu. In addition, the Actions
  344. Menu was getting crowded.
  345.  
  346. 2. Two new items have been added to the Action Menu. Rename Key will
  347. change the name of an existing Key and Duplicate Key will make a
  348. duplicate copy of a Key Value using a different Key Name.
  349.  
  350. ******************************* V1.1d  *******************************
  351.  
  352. The items fixed in Version 1.1d are:
  353.  
  354. 1. The New File and Exit Menus have been combined into a single Menu
  355. called File. This was done for two reasons, first, the number of menu
  356. items was becoming too large and, second, a new file type function
  357. was added, see below.
  358.  
  359. 2. Since there are a number of different conditions that could modify
  360. an INI file that is currently being viewed using INIMAINT, the
  361. ability to reload an INI file from disk has been added. It is the
  362. Refresh selection on the File Menu.
  363.  
  364. 3. There was an error in Error Message 13 in the INICOPY program.
  365.  
  366. 4. It was not possible to select a Application/Key pair when the Key
  367. Value was zero length i.e.., there was no Value, only the Application
  368. and Key Names. This has been fixed.
  369.  
  370. 5. It was not possible to COPY/MOVE and INI file that had an
  371. Application/Key pair with a zero length Key Value. This has been
  372. fixed.
  373.  
  374. 6. When Adding or Replacing a Key Value, the ability to specify that
  375. a zero termination character is to be added to the Key Value can now
  376. be indicated with a Checkbox.
  377.  
  378. 7. The most common files that INIMAINT is asked to display are the
  379. User and System INI files. In order to make it easy to select these
  380. files, two new entries have been added to the File Menu that allow
  381. for direct selection of these two files without having to use the
  382. file selection dialog.
  383.  
  384. 8. Some of the dialog procedures did not initialize static data
  385. causing a new use of the same dialog to behave in unexpected ways.
  386. This has been fixed.
  387.  
  388. 9. A new item has been added to the Options that gives users the
  389. ability to have the Application and Key Listboxes loaded in the same
  390. sequence as the actual INI file as opposed to alpha sequence.
  391.  
  392. ******************************* V1.1e  *******************************
  393.  
  394. The items fixed in Version 1.1e are:
  395.  
  396. 1. When the menu item was used to switch to the User or System INI
  397. files, the new file information was not saved. The effect of this was
  398. that the next time INIMAINT was run, it would go back to the previous
  399. INI file. This has been fixed.
  400.  
  401. 2. INIMAINT can now be started with a Command Line parameter
  402. specifying the initial INI file for this execution of INIMAINT. This
  403. not only allows INIMAINT to be run with a parameter, but also allows
  404. for it to be run by double clicking on an INI file, if the
  405. association has been set up, and allows for running INIMAINT by
  406. dropping an INI file on the ICON on the Desktop.
  407.  
  408. 3. For versions of OS/2 prior to 2.0, there is no provision for
  409. setting up file associations. Therefore a new item has been added to
  410. the FILE Menu that will set up an association between INIMAINT and
  411. all files whose file extensions are INI. This option will not appear
  412. on the menu if the version is 2.0 or higher.
  413.  
  414. 4. There are some key values which are very long, therefore, they
  415. take a long time to load into the MLE. It is often the case that the
  416. user does not even want to see the key value and would prefer to
  417. switch to another key name. However, it was necessary to wait until
  418. the MLE was filled and then wait again until all of the lines were
  419. removed from the MLE. It is now possible to terminate the loading of
  420. the key value lines into the MLE by hitting the ESC key while the MLE
  421. is loading. The current Application and Key names will still be
  422. highlighted, but the MLE will be empty.
  423.  
  424. 5. In order to keep the menu line from becoming too crowded, the Dump
  425. menu item has been moved to the File submenu. This was an item that
  426. is not frequently used anyway. This makes room for the item below.
  427.  
  428. 6. A new menu item has been added to the main menu, Find. This
  429. submenu will allow searching of either of the listboxes, the key
  430. value MLE, all the key names in the current file, all of the key
  431. values for the current application or all of the key values in the
  432. current file for either an Ascii or Hex value.
  433.  
  434. 7. It was possible to select a new item in the Application or Key
  435. Listboxes while the boxes were being filled. This would cause a
  436. Protection Violation and has now been fixed.
  437.  
  438. 8. When certain errors were encountered during the loading of the
  439. Listboxes or the MLE, they were not reported, this has been fixed.
  440.  
  441. 9. If the Value of a Key is larger than 65,500 characters, selecting
  442. that Key in the Key Listbox would cause a memory allocation error and
  443. the INI file with the Key Value could not be MOVEd, COPYed or used as
  444. the target of a FIND search. All of these have been fixed. However,
  445. only the first 60,000 characters of the Key Value will be displayed
  446. in the Key Value MLE.
  447.  
  448. 10. If INIMAINT was started with an INI file where the first Key
  449. Value of the first Application was very large, it was not possible to
  450. terminate the loading of the Key Value MLE because the main window
  451. was not visible. This has been fixed by making the main window
  452. visible before the initial loading of the Key Value MLE.
  453.  
  454. 11. A new feature, Compare, has been added to the File menu. This
  455. item will allow the user to compare two INI files on any one of three
  456. different levels, write or print a listing of the differences and
  457. write an INI file that contains only those Applications and/or Keys
  458. where there are differences.
  459.  
  460. ******************************* V1.1f  *******************************
  461.  
  462. The items fixed in Version 1.1f are:
  463.  
  464. 1. When an attempt to set an association with the INI files was
  465. attempted under OS/2 1.3, the association was set up, but INIMAINT
  466. would then abend with a protection exception. This has been fixed.
  467.  
  468. 2. When INIMAINT asked the user to enter any character string
  469. variable, there was no warning when the entered string was too long.
  470. This has been fixed and the user will hear a beep if they attempt to
  471. enter a string that exceeds the maximum length for the requested
  472. item.
  473.  
  474. 3. It was possible to enter a Group Name that was longer than 30
  475. characters, which is the maximum. This would appear to work
  476. correctly, but subsequent attempts to use INIMAINT on the INI file
  477. involved would cause a protection exception.
  478.  
  479. 4. The filling of the window that holds the Key values, an OS/2 MLE,
  480. was very slow if the key value length exceeded 1,000 or so
  481. characters. If the value approached 64k, then time needed was several
  482. minutes, even on a fast machine. The loading has been changed and 64K
  483. can be loaded into the window in less than 10 seconds on the test
  484. machine, which is a 25mhz 486. However, there does not seem to be any
  485. way to clear a long key value from the window in less than
  486. approximately 45 seconds on the test machine. Several different
  487. approaches have been tried, but none of them resulted in a lower
  488. time. Therefore, it takes longer to clear the key value window than
  489. it takes to fill it. If the 45 seconds becomes a problem, hitting F3
  490. will immediately terminate INIMAINT, which can then be restarted.
  491. However, it is hard to see how this could be done in less than 45
  492. seconds on a regular basis.
  493.  
  494. 5. A Repair feature is being worked on and is in the On-line Help.
  495. However, there are still some problems with the code that compares
  496. the INI file entries to the actual contents of the desktop. This
  497. feature will be implemented in the next release. If the item is
  498. selected from the menu, the dialog box will appear and will be fully
  499. functional, except that the Execute Button will not work. Choosing
  500. Execute will result in a Message Box saying that the Execute has not
  501. been implemented in this release.
  502.  
  503. 6. At least one user has a need to move a Key from one Application to
  504. another. The Duplicate Key item on the Action Menu has been modified
  505. so that the user will now be prompted for a New Application Name as
  506. well as a New Key Name. One of these names must be modified and the
  507. Key Value will be copied using the modified names. If just the
  508. Application Name is changed, then this has the effect of copying the
  509. Key Name and Value to the new Application. The information will
  510. remain using the old Application and Key Names unless specifically
  511. deleted by the user.
  512. Where there are differences.
  513.  
  514. ******************************* V1.1g  *******************************
  515.  
  516. The items fixed in Version 1.1g are:
  517.  
  518. 1. The clearing of the Key Value window could take a considerable
  519. amount of time when the key value was larger than a few thousand
  520. characters. This has been fixed by changing the code from sending a
  521. message to delete the contents of the window to simply destroying the
  522. window and recreating it.
  523.  
  524. 2. Hitting F10 did not cause a refresh of the file, because the
  525. System uses F10 to highlight the first menu item. The Refresh was
  526. changed to F4.
  527.  
  528. 3. The address and phone number for Carry Associates was changed in
  529. the documentation files, but was not changed in the About Dialog or
  530. in the on-line Help. This has been fixed.
  531.  
  532. 4. A new item has been added to the Action Menu, Duplicate
  533. Application, which will make a duplicate copy of any Application in
  534. the same INI file using a different Application Name.
  535.  
  536. 5. When a Key was Duplicated in an INI file and the copy was put in
  537. an Application that did not previously exist, the Application Listbox
  538. was not refreshed. This has been fixed.
  539.  
  540. ******************************* V1.1h  *******************************
  541.  
  542. The items fixed in Version 1.1h are:
  543.  
  544. 1. A Rename Application item has been added to the Action Menu.
  545. This is the same as the Duplicate Application except that the old
  546. Application is deleted.
  547.  
  548. ******************************* V1.1i  *******************************
  549.  
  550. The items fixed in Version 1.1i are:
  551.  
  552. 1. The Control Program Error indicator could be reset in an error
  553. situation before the Dump Dialog was displayed, thus losing this
  554. information. This has been fixed by saving the contents of this
  555. variable at the point that the initial error occurred.
  556.  
  557. 2. The found flag was not always reset when multiple Find's were
  558. requested. The result of this was an indication that a target was
  559. found when it really was not. This has been fixed by resetting the
  560. found flag at the start of each find cycle.
  561.  
  562. 3. A new item has been added to the Recover Menu, Repair INI file.
  563. Refer to the INIREP.TXT file for a detailed description of the
  564. currently available repair actions and the on-line help for how to use
  565. the facility. Initially, the only repair action that is available is
  566. to remove entries from any INI file that reference files which are
  567. not present on the desktop.
  568.  
  569. 4. The Print function in the Compare and Repair Dialog boxes did not
  570. correctly print lines that were longer that the current page, the
  571. line would be truncated rather than carried over to the next line.
  572. This has been fixed.
  573.  
  574. 5. When certain errors occurred, for example during a repair action
  575. or a file compare, the error was not reported via the Dump Dialog and
  576. INIMAINT would simply stop processing messages. This has been fixed
  577. by insuring that the various work threads correctly return any error
  578. indication to the controlling dialog and that the dialog procedure
  579. terminates the dialog when the error is seen.
  580.  
  581. ******************************* V1.1j  *******************************
  582.  
  583. The items fixed in Version 1.1j are:
  584.  
  585. 1. A new item, Condense, has been added to the Repair Menu. This item
  586. will condense the empty space out of the Current, System, User or
  587. both System and User INI files with a single selection. INIMAINT has
  588. had this capability for some time, but it required a number of
  589. different selections to accomplish.
  590.  
  591. 2. The menu item to change both the System and User INI files only
  592. changed the User INI file. This has been fixed.
  593.  
  594. 3. An item has been added to the on-line help to describe what is
  595. meant be the System and User INI files.
  596.  
  597. 4. The Size submenu has been expanded to add the ability to calculate
  598. a Size for the System INI File or User INI File without having to
  599. make one of these files the current INI file.
  600.  
  601. 5. The Copy submenu has been expanded to add the ability to make a
  602. Copy of the System INI File, the User INI File or both the System and
  603. User INI files without having to make these files the current INI
  604. file.
  605.  
  606. ******************************* V1.1k  *******************************
  607.  
  608. The items fixed in Version 1.1k are:
  609.  
  610. 1. A new submenu has been added to the Actions menu, Backup. This
  611. allows the user to make a backup copy of the System INI File, the
  612. User INI File or both the System and User INI Files. This item
  613. differs from the Copy item in two respects. First, in order for a
  614. Copy to be a true backup, the target file must not exist. With Copy,
  615. it was necessary for the user to insure that this was the case. The
  616. Backup menu item will automatically erase the file if it already
  617. exists. Second, each time a copy was done, it was necessary to
  618. specify the target INI file for the copy and, since INIMAINT only
  619. maintains a single target copy filename and does not save this
  620. filename from one execution of INIMAINT to the next, the names had to
  621. be reentered each time. INIMAINT will save the names of the System
  622. and User INI File backup target files and present them as the default
  623. target files each time a backup is requested. Finally, a new item has
  624. been added to the Options Dialog that allows the user to bypass being
  625. asked if they want to use the current backup target files. If this
  626. option is selected then INIMAINT will use the backup target files
  627. without asking the user for confirmation.
  628.  
  629. 2. The Copying File Box would always be displayed during a copy, even
  630. if the Option was set to not display it. This has been fixed.
  631.  
  632. 3. There were two potential heap corruption situations in the INICOPY
  633. program. In one case the wrong form of the free API was used. In the
  634. other case, it was possible to free the same memory block more than
  635. one time. Both of these have been fixed.
  636.  
  637. 4. The Condense item on the Recover menu has been improved in two
  638. ways. First, INIMAINT will now automatically build a name for the
  639. temporary INI file and insure that it does not duplicate an existing
  640. file, this eliminates the need to ask the user for the temporary
  641. filename. Second, once the initial copy is done, INIMAINT will use
  642. the standard copy to make a second copy of the new file, erase the
  643. original file and then rename the second copy to the original name.
  644. This eliminates the need to do a second INI type of copy, which can
  645. take a relatively long time. The effect of this is to significantly
  646. reduce the amount of time that is required to do the Condense.
  647.  
  648. 5. There was a serious bug in the Condense Both INI files code. The
  649. temporary file was not erase between the two copies, so the second
  650. file contained everything from both files. This has been fixed by
  651. erasing the temporary file immediately after the copy.
  652.  
  653. ******************************* V1.1l  *******************************
  654.  
  655. The items fixed in Version 1.1l are:
  656.  
  657. 1. When attempting to do a Copy or Move with the System or User file
  658. as either the source or target file and lower case characters were
  659. user in either file name, the Copy could fail because INICOPY did not
  660. recognize the names as the names of these files, which must be opened
  661. differently. This has been fixed by forcing the names to upper case
  662. before checking them against the names of the standard files.
  663.  
  664. 2. If an error was encountered setting the normal or wait pointers,
  665. it was not reported because the subroutines did not return an error
  666. return. This has been fixed.
  667.  
  668. 3. If Cancel was chosen when the initial Condense Dialog was
  669. displayed a SYS3175 error would occur because a NULL pointer was
  670. passed to free(). This has been fixed by moving the free() to a point
  671. after the pointer has been validated.
  672.  
  673. 4. It was possible for certain entries in some INI files to cause the
  674. INIMAINT Repair Dialog to terminate with a 1109 logic error and a DOS
  675. error of 123. This was caused by passing a name to DosLoadModule that
  676. it considered invalid, INIMAINT did not check for this return and
  677. would, therefore, post it as an error. This has been fixed by
  678. including this check in the list of returns that are considered valid
  679. returns by INIMAINT.
  680.  
  681. 5. A logic error 1111 with a DosError of 15 was possible during a
  682. Repair because INIMAINT did not check for an Invalid Drive return
  683. from the DosOpen of a drive. This has been fixed by including this
  684. error in the normal set of checks.
  685.  
  686. 6. When INIMAINT starts, it saves the current pointer from the
  687. Desktop so that it will know which pointer to restore after putting
  688. up the Wait pointer. It was possible, if some unusual pointer was
  689. displayed at the time that INIMAINT saved the current pointer, that
  690. the wrong pointer type would be saved and an attempt to restore to
  691. this incorrect pointer would cause a logic error 616. This has been
  692. fixed by saving the standard pointer rather than attempting to save
  693. the current pointer.
  694.  
  695. 7. When the Condense of both the System and User INI files was
  696. selected. The desktop was reset two times for each file. This caused
  697. two problems, first, it takes a long time to reset the desktop and,
  698. second, on certain occasions it left the desktop in a condition where
  699. it was necessary to reboot before any work could be done. This has
  700. been fixed by, in this situation, copying both the System and User
  701. INI files before the first Reset. This way the desktop is only reset
  702. two times, which is the minimum possible.
  703.  
  704. 8. Because of a conflict between the LOCKUP facility and Dialog boxes
  705. that have had their Parent switched to the Desktop Object Window, in
  706. order to make the dialog not visible, the Option that sets the
  707. display of the Copy Dialog will not work. The Copy Dialog will always
  708. be displayed, no matter what the setting of the Option. Once this
  709. problem is researched and something is done to remove the conflict,
  710. the Option will be reenabled.
  711.  
  712. ******************************* V1.1m  *******************************
  713.  
  714. The items fixed in Version 1.1m are:
  715.  
  716. 1. When a Size was cancelled using the Esc key, the pointer did not
  717. return to the normal pointer and the thread was not terminated, thus
  718. INIMAINT would not do any work and had to be cancelled externally.
  719. This has been fixed.
  720.  
  721. 2. The Options Dialog was becoming too high, so it has been broken
  722. into tow side by side lists.
  723.  
  724. 3. A new Option, Fast Copy, has been added. If this Option is
  725. activated then INIMAINT will use special high speed methods to access
  726. the INI files when an entire file is being Copied, Moved, Backedup or
  727. Condensed. This greatly reduces the time necessary to process large
  728. INI files, such as the System and User INI files.
  729.  
  730. ******************************* V2.0  *******************************
  731.  
  732. The items fixed in Version 2.0 are:
  733.  
  734. 1. This version is a full 32 bit version.
  735.  
  736. 2. A number of improvements have been made to the INSTALL procedure,
  737. including the ability to install all the files into a single
  738. subdirectory.
  739.  
  740. 3. The Repair and Compare Dialogs had the Options box and the results
  741. Listbox too close together the Dialog was also too high to
  742. comfortably fit on a default 640x480 screen. Both of these have been
  743. fixed. 
  744.  
  745. 4. When an error was encountered in the Repair Process, the line from
  746. the INI file that caused the problem was not placed into the
  747. supplemental error text field. This has been fixed.
  748.  
  749. 5. Because the 16 bit Prf API's were limited to 64K of data for any
  750. key Value, INIMAINT was limited to reading and displaying this amount
  751. of data. The restriction has been removed with this version because
  752. of the conversion to full 32 bit.
  753.  
  754. 6. The Repair Function had attempted to see if *.PSF files that were
  755. in the INI files with no path information actually existed on the
  756. Desktop. DosLoadModule was used for this check, since the files
  757. should be in the LIBPATH. It turns out that DosLoadModule will not
  758. find anything other than DLL files, so this check was removed.
  759.  
  760. 7. The Repair Function ignored files that had a pathname that
  761. indicated they were on a floppy drive, a disk drive with removable
  762. media, a tape drive, an unknown type of drive, an invalid drive and a
  763. drive that could not be accessed via DosOpen. Since it is very
  764. unlikely that any INI file entry that has a pathname that starts with
  765. any of these type of drive is one that should remain in the INI file,
  766. all of these conditions have been added to the list of situations
  767. that INIMAINT will recommend for removal.
  768.  
  769. 8. If Help was requested while doing a Repair after a new Save INI
  770. File or Write File was selected, the Help would not work because the
  771. Repair Dialog was not reset as the active help window. This has been
  772. fixed.
  773.  
  774. 9. If the Repair function encountered a path and filename combination
  775. that looked like it was valid, but it was not, the Repair would
  776. terminate with a 1109 Logic Error Code. This has been fixed by adding
  777. checks for an invalid filename at the appropriate points.
  778.  
  779. ******************************* V2.0a  *******************************
  780.  
  781. The items fixed in Version 2.0a are:
  782.  
  783. 1. V2.0 forced and path and filenames to upper case in a number of
  784. places. The caused a number of problems with lower case characters in
  785. filenames and this code has been removed.
  786.  
  787. 2. It was possible for the New File Dialog to go into a loop during
  788. the initialization phase. This has been fixed by checking if the code
  789. involved has already been executed, and causing an abend if it has.
  790.  
  791. 3. Two of the SIZE Accelerator keys used Alt-F8 and Alt-F9, which are
  792. used by OS/2, so they are not available. The SIZE User INI File has
  793. been changed to Alt-R and the SIZE System INI File has been changed
  794. to Alt-M.
  795.  
  796. 4. The New File Dialog was not wide enough, so it has been expanded.
  797.  
  798. ******************************* V2.0b  *******************************
  799.  
  800. The items fixed in Version 2.0b are:
  801.  
  802. 1. Because of problems with the custom New File Dialog, this version
  803. has been modified to use the standard OS/2 New File Dialog.
  804.  
  805. ******************************* V2.0c  *******************************
  806.  
  807. The items fixed in Version 2.0c are:
  808.  
  809. 1. When INICOPY was invoked by INIMAINT, the path and filename of the
  810. Input and Output files were not enclosed in quotes. This created a
  811. problem with parsing the parameter string. This has been fixed by
  812. enclosing these two parameters in quotes.
  813.  
  814. 2. When the Condense was used the part of the initial message that
  815. said that the Desktop would be reset twice was confusing. The part of
  816. the message about resetting the Desktop twice has been removed so
  817. that the message now simply states that the Desktop will be reset.
  818.  
  819. 3. During the Condense, some of the messages displayed in the right
  820. hand window were too long for the window. The window has been
  821. expanded so that it will now display the full message.
  822.  
  823. 4. Because of the warning about resetting the Desktop, users have
  824. sometimes waited for some time after a Condense has completed, since
  825. they do not want to cause a problem with their environment. This is
  826. because there is no clear indication that the Condense is complete.
  827. This has been fixed by displaying an additional dialog that will tell
  828. the user that the Condense is finished and it is okay to resume
  829. normal operations.
  830.  
  831. 5. When the Fast Copy Option was used, INICOPY did not validate the
  832. input file to insure that it was an INI file and one that the Fast
  833. Copy code understood. This has been fixed by adding two new checks to
  834. INICOPY and to the Copy Dialog in INIMAINT. One check will report an
  835. error if the input file is not a valid INI file. The other will
  836. change the Fast Copy to a normal copy if the INI file is not one that
  837. the Fast Copy Code understands, thus making the file not valid for
  838. Fast Copy.
  839.  
  840. 6. The Condense routine has been updated to test the file to be
  841. Condensed to see if the Condense is really necessary. If the Condense
  842. will not reduce the size of the file, then the user will be informed
  843. of this via a Message Box.
  844.  
  845. ******************************* V2.0d  *******************************
  846.  
  847. The items fixed in Version 2.0d are:
  848.  
  849. 1. There were a number of places where the return from a PM API call
  850. was converted to a 32 bit integer by using the SHORT1FROMMR macro and
  851. then casting the result to a 32 bit integer. Because the macro goes
  852. through an unsigned short variable, this did not work for negative
  853. numbers, such as LIT_END. The result of this was that some things did
  854. not work correctly, including selection of a new member of a group.
  855. All of these situations have been fixed by having the macro fill a 16
  856. bit integer and then using the 16 bit integer to fill the 32 bit
  857. integer.
  858.  
  859. 2. If INIMAINT could not open a file as a valid INI file and the
  860. current INI file could also not be opened, INIMAINT would just start
  861. and end with no error message. Users with this problem were very
  862. confused by this and did not know what was happening. This has been
  863. fixed by adding code that will insure that at least the error dialog
  864. will be displayed in any error situation.
  865.  
  866. 3. If an error was encountered attempting to open the default INI
  867. file at the very start of the execution of INIMAINT, it was possible
  868. for the Error Dialog routine to get an access violation because some
  869. pointers were NULL and the NULL value was not tested. This has been
  870. fixed by adding code to test the pointer values for NULL and print
  871. None if they are not yet set.
  872.  
  873. 4. When the initial file that INIMAINT attempted to open was a file
  874. with no applications or keys, an error was encountered because the
  875. determination of whether the file was in the new or old format would
  876. result in an invalid file setting. This has been fixed by
  877. specifically checking for an empty file.
  878.  
  879. ******************************* V2.0e  *******************************
  880.  
  881. The items fixed in Version 2.0e are:
  882.  
  883. 1. Because of the large number of possible items in the Repair
  884. window, it was possible to exceed the maximum capacity of a Listbox.
  885. Therefore, the Repair window has been changed to a Text type
  886. Container.
  887.  
  888. 2. An additional option has been added to the Repair selections. If
  889. the users chooses to simply have the items that would be Repaired
  890. displayed in the Window, it is now possible to select the items that
  891. they want repaired and then check the 'Repair Selected' Checkbox and
  892. then Execute and those items that are selected will be Repaired.
  893.  
  894. 3. Because there will now be a number of different Repair actions,
  895. the selection of the type of Repair desired is now a Combobox rather
  896. than a Checkbox.
  897.  
  898. 4. A new Repair items has been added, Removal of any Key with a Zero
  899. Length Key Value. These Keys cause a problem for the WPSBKUP program
  900. and have no value.
  901.  
  902. 5. A new Repair capability has been added, the removal of any
  903. File/Directory Handles in the OS2SYS.INI file that point to Files or
  904. Directories that are no longer on the desktop. If a Drive or
  905. Directory is deleted using this facility, all subdirectories and
  906. files in the Directory and Subdirectories are also deleted. In
  907. addition, making any changes in this area requires that the Desktop
  908. be reset before the WPS will recognize the changes, so this will be
  909. done upon dismissal of the Repair dialog.
  910.  
  911. 6. A new Repair capability has been added, the removal of any WPS
  912. entries in the OS2.INI file that point to objects that are no longer
  913. on the desktop.
  914.  
  915. 7. A new Repair capability has been added, the removal of any Objects
  916. in the OS2.INI file that the user wants removed from the INI files.
  917. There is currently no known way to verify whether the Objects
  918. actually exist, therefore, INIMAINT cannot automatically delete
  919. invalid Objects.
  920.  
  921. 8. The capability to display the contents of the File/Directory
  922. Handles, Objects and WPS entries has been added to the Repair.
  923. Although this is not strictly a Repair function, it allow the user to
  924. see, save in a file or print the expanded information. This allows
  925. the user to determine the actual meaning of all the random looking
  926. numbers seen in the OS2.INI and OS2SYS.INI files for both Key Names
  927. and Key Values.
  928.  
  929. 9. It was not possible to always print the contents of the Repair
  930. Window because the print routine would not handle an empty line.
  931. This has been fixed.
  932.  
  933. 10. It was possible to initially start INIMAINT in such a way that it
  934. would set the default window size at zero, even though the window was
  935. not minimized. When this occurred, the INIMAINT window would not be
  936. visible and it would not be in the minimized folder. This has been
  937. fixed by adding checks to force the window to a minimum size if it is
  938. not minimized.
  939.  
  940. 11. I the user of a registered copy of INIMAINT set the Logo Display
  941. Time to indefinite, INIMAINT would abend during its initialization
  942. because a negative number was passed to the WinStartTimer API. This
  943. has been fixed by adding code to check for a negative number and to
  944. not even start the timer in this case.
  945.  
  946. 12. The word 'reason' was not spelled correctly in the message that
  947. informed the user that the Help was not available if the Help file
  948. could not be found. This has been fixed.
  949.  
  950. 13. There was no user notification when INIMAINT was about to create
  951. a new INI file because the file the user selected did not already
  952. exist. This has been changed so that the user will now be informed
  953. that INIMAINT is about to create a new INI file and the user will
  954. have the option of creating the new file, choosing a different file
  955. or canceling INIMAINT.
  956.  
  957. 14. The type of ICON displayed in some of the message boxes was not
  958. the appropriate ICON. These have been fixed.
  959.  
  960. 15. It was not possible to add any Groups to an INI file because the
  961. response from the Prf API that deleted the old Groups was changed
  962. from TRUE to FALSE if the old Group information did not exist. This
  963. would cause a 704 logic error when the OK button was chosen on the
  964. Group Dialog. This has been fixed by checking for the Not in Index PM
  965. Error Code when a FALSE is returned by this API and accepting this as
  966. a valid response.
  967.  
  968. ******************************* V2.0f  *******************************
  969.  
  970. The items fixed in Version 2.0f are:
  971.  
  972. 1. When Repairing Dir/File Handles and the drive letter is selected
  973. for deletion, all of the invalid directories and files on the drive
  974. should be deleted. It did not happen if the drive was a valid
  975. drive. This has been fixed by adding extra logic to check for this
  976. specific condition.
  977.  
  978. 2. If the number of Dir/File handles becomes very large, it is
  979. possible that they will be stored in the OS2SYS.INI file in multiple
  980. pieces. 2.0e would ignore all but the first piece. This has been
  981. fixed by continuing to get the data until all of the pieces have been
  982. accessed.
  983.  
  984. 3. There were a number of problems with the dumping of the Repair
  985. Variables. These have all been fixed.
  986.  
  987. 4. If the Device Driver for a drive did not correctly handle the API
  988. used by INIMAINT to identify the drive type, it would cause INIMAINT
  989. to terminate with a Logic Error 1112. This was caused by a
  990. undocumented return code from the API. Typically, the device driver
  991. is an old driver and often is supporting a CD-ROM device. This
  992. problem has been fixed by adding code to handle the new return from
  993. the API and, when the error return is seen, INIMAINT will do a
  994. further check on the drive and, if it is write only, will identify it
  995. as a CD-ROM device. Otherwise, the drive will be identified and an
  996. invalid drive.
  997.  
  998. 5. There were circumstances where a Repair to the WPS entries would
  999. get a logic error 1104 because of an attempt to allocate a zero
  1000. length memory block. This has been fixed by initializing the Key
  1001. Value Length field to a small value rather than zero, so that the
  1002. allocation will work.
  1003.  
  1004. 6. Invalid PM_Abstract:FldrContent entries that had an invalid Object
  1005. ID were not deleted, even though the entry in the Repair Window would
  1006. indicate it was deleted. The reason was the some of the value level
  1007. items were valid, but the key name was not a valid Object. This
  1008. caused the item to be deleted from the INI file and then reinserted.
  1009. This has been fixed by insuring that all value level entries for an
  1010. invalid key name are also marked as invalid because of the key name.
  1011.  
  1012. 7. The Repair Save and Repair Write file were not saved from one run
  1013. of INIMAINT to the next. Additional code has been inserted to save
  1014. the current information and it will be presented as the default for
  1015. future Repair activities.
  1016.  
  1017. ******************************* V2.1  *******************************
  1018.  
  1019. The items fixed in Version 2.1 are:
  1020.  
  1021. 1. When there was nothing to Repair for the Repair Dir/File Handles
  1022. and Repair WPS Entries, the message box that told the user this was
  1023. not displayed because the variable that the message box code tested
  1024. was not set correctly. This has been fixed.
  1025.  
  1026. 2. When displaying the Dir/File Handles the drive entries were
  1027. displayed even if there were no Directory or File entries to display
  1028. for the drive. This has been fixed by adding additional code to only
  1029. add the drive information to the window when the first Directory or
  1030. File is added.
  1031.  
  1032. 3. The Help for the new Repair functions was not complete, but has
  1033. now been completed.
  1034.  
  1035. 4. Some object values in the 0x20000 range could be identified as
  1036. invalid, when they were actually valid. This has been fixed by
  1037. insuring that values in the 0x20000 range are correctly checked
  1038. against the Objects entry in the OS2.INI file.
  1039.  
  1040. 5. Some of the Repair functions take a considerable amount of time
  1041. and often the INI files do not have any errors in them, so the only
  1042. result is a message box telling the user that there is nothing to
  1043. Repair. I was easy to miss the appearance of this box, so code has
  1044. been added to cause a beep whenever the message box is displayed.
  1045.  
  1046. ******************************* V2.1a  *******************************
  1047.  
  1048. The items fixed in Version 2.1a are:
  1049.  
  1050. 1. If a drive connected to the system via a switch was not switched
  1051. onto the system when a Repair was requested, it was possible for a
  1052. couple of the API's to return the General Failure Error code, which
  1053. was not correctly handled by the Repair code. The code has been
  1054. changed to look for this specific error condition and to treat the
  1055. drive as an Inaccessible Drive.
  1056.  
  1057. 2. When a Repair was requested, the Do Not Save Option was not turned
  1058. on and the Save INI file had not been selected, INIMAINT would
  1059. terminate with a logic error code of 1. This was caused by an
  1060. incomplete check of the filename, specifically, it was checked for a
  1061. NULL pointer, but not checked to see if it was an empty string. The
  1062. additional check has now been added.
  1063.  
  1064. 3. When Repairing the File/Directory Handles, the Ask Before Repair
  1065. did not work because there was a drive level check placed in front of
  1066. the code that asked the user and it should have been placed after the
  1067. code that asked the user. The code has now been moved to the correct
  1068. position.
  1069.  
  1070. 4. Alt-R was specified as an accelerator key for Size User INI File.
  1071. However, this key was needed for the Recover Menu. Therefore the Size
  1072. User INI File has been changed to Alt-E.
  1073.  
  1074. 5. In order to facilitate the processing of both the WPS Entries and
  1075. the File/Dir Handles, a new set of Repair types have been added that
  1076. will List or Repair both sets of Entries at one time.
  1077.  
  1078. 6. When Invalid Handles were being listed or the Handles were being
  1079. Repaired. The actual drive entry for CD-ROM and Floppy drives was not
  1080. displayed in the Window. Additional code has been added to insure that
  1081. these entries will always get put in the window when appropriate.
  1082.  
  1083. 7. If the Ask First Repair Type was chosen, it was possible that the
  1084. user could be forced to respond Yes or No to a very large number of
  1085. items and there was no way to stop the questions until all of the
  1086. appropriate items had been presented to the user. The message box has
  1087. now been modified so that there is also a Cancel entry that will
  1088. terminate the questions and do the Repair actions that had been
  1089. requested to that point.
  1090.  
  1091. ******************************* V2.1b  *******************************
  1092.  
  1093. The items fixed in Version 2.1b are:
  1094.  
  1095. 1. When attempting to open a network drive, under some circumstances,
  1096. INIMAINT would get a logic error 1111 with a dos error of 3. The dos
  1097. error indicates that the path is not found and is not handled
  1098. correctly. Code has been added to check for this return and to treat
  1099. the drive as unavailable.
  1100.  
  1101. 2. If INIMAINT is added to the WPS main menu, it is started with the
  1102. Desktop subdirectory passed as a command line parameter. This would
  1103. cause a dialog box to appear indicating that the directory was not a
  1104. valid INI file and asking if the user wanted to create it. In order
  1105. to prevent this from happening, code has been added to examine the
  1106. start-up filename and, if it is only a directory, to ignore it.
  1107.  
  1108. 3. If INIMAINT was started with a current INI file that had been
  1109. deleted, one of two things would occur. If the INI file could be
  1110. created, it was created and used as the default. If the file could
  1111. not be created, for example, if the subdirectory had also been
  1112. removed, then INIMAINT would terminate. INIMAINT will now check to
  1113. see if the default file exists and if it does not, ask the user if he
  1114. wants to create it and, if he does not, then it will ask the user to
  1115. enter a new filename.
  1116.  
  1117. 4. When the Repair dialog was displayed and the current entry in the
  1118. combobox that lists the type of repair was selected by hitting the
  1119. tab key. A request for help would cause INIMAINT to terminate. Code
  1120. has been added to the combobox help routine to check for this
  1121. condition and to insure that the correct help panel is displayed.
  1122.  
  1123. ******************************* V2.1c  *******************************
  1124.  
  1125. The items fixed in Version 2.1c are:
  1126.  
  1127. 1. Some users found the use of the word 'List' in the for the type of
  1128. Repairs to be misleading, so the word 'List' has been changed to
  1129. 'Display'.
  1130.  
  1131. 2. The message 'Doing Repair' would appear in the Repair Dialog even
  1132. when no actual Repair was being performed, but the Display window was
  1133. simply being loaded. Additional code has been added to change the
  1134. message to 'Loading Display' when that is all that is being done.
  1135.  
  1136. 3. The Handles structure for certain kinds of Network situations have
  1137. a Drive entry that is not a normal drive letter followed by a colon.
  1138. The Repair Function did not handle this situation correctly and would
  1139. get a 1114 Logic Error. This has now been fixed and will be
  1140. recognized as a Network situation.
  1141.  
  1142. 4. The Repair Options dialog did not have an entry to allow the user
  1143. to ignore or bypass Network drives and other Network entries. A set
  1144. of Network options has now been added.
  1145.  
  1146. 5. There were situations where IniMaint would indicate an INI file
  1147. did not exist, when it was simply opened in such a way that all other
  1148. users were denied. This has been fixed by handling the check for
  1149. whether the file exists in a different manner.
  1150.  
  1151. 6. A number of additional error returns from the call to the DosOpen
  1152. API that indicate a drive entry is a Network Drive have been
  1153. identified and added into the code that determines what kind of drive
  1154. the Repair function is dealing with.
  1155.  
  1156. 7. The return from WinPostMsg was treated the same as the return from
  1157. WinSendMsg and normally not checked. This could result in a message
  1158. posting error that would not be detected by the error checking code.
  1159. All calls to the WinPostMsg API have been changed so that the return
  1160. code from the API is validated.
  1161.  
  1162. 8. There are situations where it was not clear exactly where an error
  1163. occurred when the Dump Dialog was invoked. The reason for this is
  1164. that there are a number of error codes that are used by more than one
  1165. subroutine. In order to address this problem, the error routine is
  1166. not passed an additional parameter which identifies the subroutine
  1167. that is reporting the error and the id of the routine that first
  1168. reports an error that will cause the Dump Dialog to appear is saved
  1169. by the error reporting routine. This information has also been added
  1170. to the Dump Dialog Window.
  1171.  
  1172. 9. The only way that the Repair function would ask the user about
  1173. each Repair action was if the user wanted to be asked about every
  1174. single item that needed to be repaired. It was not possible to select
  1175. certain items and then have the Repair function only ask about those
  1176. items. The Repair code has been modified so that it is now possible
  1177. to check the Ask box with some of the items selected and the user
  1178. will then only be asked it they want to Repair the selected items.
  1179.  
  1180. 10. A number of the Accelerator Keys used the Alt Key in conjunction
  1181. with a letter. This cause problems with menu selections and a number
  1182. of other functions. All of these Accelerator Keys have now been
  1183. replaced with Ctrl-Alt and a letter combinations. Refer to the
  1184. Accelerator Key section of the Help for a detailed list.
  1185.  
  1186. 11. When doing the Repair of the WPS entries or the File Directory
  1187. Handles, selecting certain items to be Repaired also would cause
  1188. other lower level items to be Repaired. For example, selecting a
  1189. Drive entry would cause a Repair to all the items on that drive. This
  1190. was not clear from the behavior of the highlighting in the window,
  1191. since only the selected item was highlighted and not the other items
  1192. that would also get Repaired. The highlighting code has been changed
  1193. so that all of the items that are going to get Repaired will now be
  1194. highlighted.
  1195.  
  1196. 12. The initial version of the code to handle Extended Attributes has
  1197. been added in this version. When the Extended Attribute feature is
  1198. activated, IniMaint becomes SysMaint and a new set of menu items
  1199. appear that provide editing, displaying, moving, copying and a
  1200. number of other functions in the Extended Attribute area. The
  1201. Extended Attribute functions are not Shareware, but are only
  1202. activated when a fully registered copy is being used. Refer to the
  1203. Help file under Registration for details.
  1204.  
  1205. ******************************* V2.1d  *******************************
  1206.  
  1207. The items fixed in Version 2.1d are:
  1208.  
  1209. 1. The TEST function for the Extended Attributes has been
  1210. implemented.
  1211.  
  1212. ******************************* V2.1e  *******************************
  1213.  
  1214. The items fixed in Version 2.1e are:
  1215.  
  1216. 1. An additional option has been added to the Repair Options Dialog
  1217. box. This item, Bypass Known Errors, will cause the Repair function
  1218. to make some additional checks for errors it knows about and should
  1219. not be of concern to the user. A full list of the things bypassed are
  1220. in the on-line help file.
  1221.  
  1222. 2. During the updating of an INI file, OS/2 creates a file in the
  1223. same directory with the same name except with an extension of ###.
  1224. The ### entry gets added to the Handles structure in the OS2SYS.INI
  1225. file. Since the ### file only exists for a short time, it will always
  1226. be identified by the Repair function as an entry in the Handles that
  1227. cannot be found. Additional code has been added so that when the ###
  1228. file is not found and the user has asked to bypass known errors, a
  1229. check is made for a file with the same name with an INI extension. If
  1230. the INI file is found, then the Repair function will not identify the
  1231. ### file as a file not found.
  1232.  
  1233. 3. The EA Test Dialog has been added to the Help file.
  1234.  
  1235. 4. The Help file has been updated to also describe SysMaint.
  1236.  
  1237. 5. An additional item has been added to the Extended Attribute
  1238. Defaults that allows the user to specify that they always want to
  1239. continue when a sharing error is encountered while processing
  1240. Extended Attributes.
  1241.  
  1242. 6. Deskman/2 adds a zero value entry to the Abstracts:Icons entry in the
  1243. OS2.INI file. This entry is not found in the list of Objects,
  1244. therefore, this entry is reported as invalid. Since we know the entry
  1245. is valid, additional code has been inserted to check for this
  1246. condition and to identify the Icon as the Deskman Icon if the user
  1247. wants IniMaint to bypass known errors.
  1248.  
  1249. 7. The WPSBKUP program creates a temporary object with the name of
  1250. NFD73 during the backup process. This causes an entry to be made in
  1251. the Handles structure for this filename. Since the file is temporary,
  1252. it will always be identified as a file not found. Code has been
  1253. included in this version to not report this specific filename if the user
  1254. wants IniMaint to bypass known errors.
  1255.  
  1256. 8. When the EA Test function found entries to add to the Test Dialog,
  1257. the processing EA's Dialog was left on the screen. The exact reason
  1258. for this is not known, but I believe it is associated with loading
  1259. two different modal dialogs with the same Parent and Owner and then
  1260. destroying the second dialog before destroying the first one. It was
  1261. not possible to debug this problem because it would not occur when
  1262. the program was run under IPMD. The problem has been fixed by
  1263. including code to destroy the Processing EA's dialog before the
  1264. Testing dialog is created.
  1265.  
  1266. 9. If some sort of terminal error was encountered before the main
  1267. window was created, no error Dialog would appear because the error
  1268. routine was posting a message to the main window in order to get the
  1269. error Dialog to appear. The error routine has been changed to check
  1270. to see if the main window handle is valid and, if it is not, the
  1271. error routine will display the error Dialog directly.
  1272.  
  1273. 10. If the OS2.INI file was corrupted to the point that the data
  1274. needed by IniMaint or SysMaint could not be read from the file, it
  1275. was not possible to run the application, since it would terminate
  1276. during the initialization phase. In order to get around this problem,
  1277. the application will now look for an Environment Variable INIMAINT=
  1278. and, if this variable is found, it will assume this is the full
  1279. pathname of a file than should be used to obtain the IniMaint or
  1280. SysMaint default information. For example, if the user wanted to use
  1281. an INI file with the name of: 
  1282.      C:\OS2\APPS\INIMAINT.INI
  1283. then you would add the following line to your CONFIG.SYS file or to a
  1284. CMD file that runs IniMaint or SysMaint:
  1285. SET INIMAINT=C:\OS2\APPS\INIMAINT.INI
  1286.  
  1287. 11. If a terminal error occurred before the name of the current INI
  1288. file was filled in, the error Dialog code would get a protection
  1289. exception attempting to display this name. The code has been changed
  1290. to test for a null value before attempting to print the name.
  1291.  
  1292. ******************************* V2.1f  *******************************
  1293.  
  1294. The items fixed in Version 2.1f are:
  1295.  
  1296. 1. IniCopy has been upgraded to handle Extended Attribute files as
  1297. well as INI files.
  1298.  
  1299. 2. The Add New Key Name item on the Action Menu did not work because
  1300. a return from one of the Prf API's was not tested correctly. The test
  1301. has been fixed.
  1302.  
  1303. 3. A new item has been added to the Files Menu, Recall. Selecting
  1304. this menu item will cause a submenu to be displayed showing the a
  1305. list of the INI or EA files that were the current file. If one of
  1306. these files is selected, it will become the current INI or EA file.
  1307. The number of files displayed is controlled by a new Option in the
  1308. Options Dialog and has a default value of 10.
  1309.  
  1310. ******************************* V2.1g  *******************************
  1311.  
  1312. The items fixed in Version 2.1g are:
  1313.  
  1314. 1. When Updating the Extended Attributes from an EA file and one of
  1315. the Source Files or Directories has been deleted, SysMaint will get a
  1316. 1317 Logic Error because the Set Path Info API will give a return
  1317. code of 3, indicating that the file is not found. Additional code has
  1318. been inserted to notify the user of this condition.
  1319.  
  1320. 2. The Duplicate Key menu item has been updated to handle EA files.
  1321.  
  1322. 3. The Rename Key menu item has been updated to handle EA files.
  1323.  
  1324. 4. The Delete Key menu item has been updated to handle EA files.
  1325.  
  1326. 5. Code has been added to deactivate the Add Application and Add Key
  1327. menu items when an EA files is the current file. Adding Extended
  1328. Attributes involves adding a number of different control items and
  1329. will be implemented via an entry on the Extended Attribute Menu.
  1330.  
  1331. 6. Code has been added to delete the Condense items from the Recover
  1332. Menu if the version of OS/2 is 2.1 or later. This function makes no
  1333. sense for these versions, since no empty space is ever left in the
  1334. INI files.
  1335.  
  1336. 7. After Editing an Extended Attribute file and switching back to an
  1337. INI file, the EA flag would sometimes not get reset, causing SysMaint
  1338. to think it was working with the wrong type of file.
  1339.  
  1340. 8. Some of the Ctl-Alt Accelerator Keys did not work correctly
  1341. because of the order in which they were defined in the resource file.
  1342. The sequence of the definitions has been changed so that the
  1343. Accelerator Keys will work correctly.
  1344.  
  1345. 9. The Dialog that is responsible for getting new character string
  1346. information from the user was not capable of handling a character
  1347. string longer than 32 characters. This limit has been increased to
  1348. 255 characters.
  1349.  
  1350. ******************************* V2.1h  *******************************
  1351.  
  1352. The items fixed in Version 2.1h are:
  1353.  
  1354. 1. Popup menus have been added for the various windows. Clicking on
  1355. the RMB while the pointer is in the Application, Key Name or Key
  1356. Value windows will popup a menu with the items that are appropriate
  1357. for that window.
  1358.  
  1359. 2. A Desktop menu item has been added to the SysMaint menu bar. This
  1360. menu will eventually have a number of different entries to allow
  1361. users to do various maintenance functions for the Desktop.
  1362.  
  1363. 3. A Reset Desktop item has been added to the Desktop menu. This item
  1364. will simply reset WPS so that changes that have been made to the INI
  1365. and EA files that require the Desktop to be restarted will become
  1366. effective.
  1367.  
  1368. 4. It was not possible to split the EAs from a Directory or to update
  1369. the EAs  for a Directory because a logic error 1346 would result. The
  1370. reason was that the name of the Directory that was used for one of
  1371. the API's still had the trailing slash on it causing a Path Not Found
  1372. error to be returned. The code has been modified so that the
  1373. Directory name is specified correctly.
  1374.  
  1375. 5. After Repairing the WPS Entries and/or the Handles Entries, it can
  1376. take a considerable amount of time to free the memory for the
  1377. Container Records. In order to make sure the user knows what is
  1378. happening, a message dialog will now be displayed telling the user
  1379. what is going on.
  1380.  
  1381. 6. It was possible for some of the WPS entries, such as
  1382. PMWP_ASSOC_TYPE, to be incorrectly marked as invalid. The reason was
  1383. that a case in a switch statement was missing a break, thus causing
  1384. it to fall through to the next case. The break has been added to the
  1385. code so that the entries will be reported correctly.
  1386.  
  1387. 7. If the last item in the PMWP_ASSOC_TYPE Application was associated
  1388. with nothing, the association was simply left blank because the check
  1389. for any association entries in the structure did not work correctly
  1390. for the last entry. The test has been changed so that it will work
  1391. for all entries.
  1392.  
  1393. 8. The titles for the Extended Attribute Submenu entries were
  1394. confusing for most people. This Submenu has been completely reworked
  1395. and will, hopefully, be more clear.
  1396.  
  1397. ******************************* V2.1i  *******************************
  1398.  
  1399. The items fixed in Version 2.1i are:
  1400.  
  1401. 1. The Edit item on the Extended Attribute Menu bothered some users
  1402. because Edit implies that things are going to be modified. When
  1403. SysMaint 'edited' the Extended Attributes, it did not change anything
  1404. unless the user asked for a specific update of the Extended
  1405. Attributes. Therefore, this menu item has been changed to View.
  1406.  
  1407. 2. Running IniMaint or SysMaint would leave a zero length file in the
  1408. default directory, INIERR.TXT. This was caused by redirecting the
  1409. stderr output. The code has been changed so that stderr will only get
  1410. redirected when compiling the debugging version of the program.
  1411.  
  1412. 3. The Extended Attribute Default option to delete temporary files
  1413. would only delete the files used in the Compare. The temporary files
  1414. created when the Extended Attributes are Viewed should also be
  1415. deleted when the user is finished Viewing the information. The code
  1416. has been changed to do the additional deletes.
  1417.  
  1418. 4. Whenever the Control or Alt Keys were pressed and held, the Key
  1419. Value window would flash. This was caused by the code that disabled
  1420. and reenabled the window while a key was being processed. Additional
  1421. code has been inserted to prevent these keystrokes from being passed
  1422. to this window.
  1423.  
  1424. 5. If the current INI file was deleted between runs of IniMaint, the
  1425. user was informed of this the next time that IniMaint was run and was
  1426. asked if they wanted a new file created. If the user replied NO, then
  1427. the standard User INI file, OS2.INI, was opened as the current file.
  1428. However, the IniMaint entry in the INI file for the current default
  1429. INI file was not updated. Therefore, the user would be asked about
  1430. the same file the next time IniMaint was run and this would continue
  1431. until the user did something to cause the information in the INI file
  1432. to get updated. Additional code has been added so that the
  1433. information in the INI file will get updated when the User INI file
  1434. is made the default.
  1435.  
  1436. 6. A Defaults Dialog has been added to the Desktop menu to allow the
  1437. user to set the various default values and flags for the Desktop Menu
  1438. items.
  1439.  
  1440. 7. It was not possible to use the Copy or Move entries on the Action
  1441. menu to copy the Extended Attributes for a single file to another
  1442. file if the target file did not already exist. The copy would
  1443. terminate with a message that the files were not compatible. This was
  1444. caused by code that opened the target file before the copy was
  1445. started in order to verify that the target could be used as a valid
  1446. INI or Extended Attribute file. This caused an empty file to be
  1447. created, which had not control information. When this file was opened
  1448. by the IniCopy program, IniCopy got an indication back from the open
  1449. routine that the target was not a valid Extended Attribute hold file
  1450. because of the lack of control information. The problem has been
  1451. fixed by modifying the open code so that it will use the default file
  1452. type that it was passed when it opens a file and the file does not
  1453. even have the signature bytes written to it, in short, it is
  1454. completely empty.
  1455.  
  1456. 8. The Join would not work for certain combinations of source and
  1457. target sets of Extended Attributes if the sets were not the same
  1458. type, such as both the Extended Attributes for all the Directories in
  1459. a specific Directory. The reason for this was because a flag in the
  1460. structure used to control the Join was set from the wrong source. The
  1461. code has been modified so that the flag is now set from the correct
  1462. source.
  1463.  
  1464. 9. I was not possible to Compare the Extended Attributes that were
  1465. current for a file(s) and/or directory(s) to a set of Extended
  1466. Attributes that had been saved in a file. A new menu item has been
  1467. added to the Extended Attribute menu that will now allow for this
  1468. type of Compare, Compare to Saved EAs.
  1469.  
  1470. 10. Code has been added to automatically detect the condition where
  1471. the OS2.INI and OS2SYS.INI files cannot be updated. When this occurs,
  1472. the user will be informed of the situation and asked it they would
  1473. like for the condition to be fixed. If the user replies YES, then
  1474. IniMaint will go through a reset procedure that will fix this problem
  1475. and pick up where it left off.
  1476.  
  1477. 11. In line with the item above, a new item has been added to the
  1478. IniMaint Repair menu that will allow the user to have IniMaint
  1479. automatically fix the problem of INI files that cannot be written to.
  1480.  
  1481. 12. A new item has been added to the Repair menu that will allow the
  1482. user to run a test for INI files that cannot be written to. If the
  1483. condition is found, it will be automatically fixed if the user wants
  1484. it to be. This is for users who store the IniMaint or SysMaint
  1485. information in an INI file other than the OS2.INI file, thus would
  1486. not normally be automatically notified when the INI files cannot be
  1487. updated.
  1488.  
  1489. 13. A number of items have been added to the Desktop menu for
  1490. SysMaint that allow for a Simple backup of the Desktop, including the
  1491. ability to keep as many generations of backup as desired, a selection
  1492. that will generate a backup CMD file that can be run at anytime and
  1493. will maintain all the generations, the ability to generate a CMD file
  1494. that will do a command line restore of the Desktop, and items that
  1495. will restore the two major parts of the Desktop, the directory
  1496. structure and the INI files, while WPS is operational.
  1497.  
  1498. 14. This version introduces the 'safe' versions of the program,
  1499. IniSafe and SysSafe. These two versions do the same kinds of things
  1500. as IniMaint and SysMaint do, however, they will not update any files
  1501. or do anything that can cause a problem with the Desktop. If there
  1502. are users in an organization that you want to have access to the
  1503. things that can be accessed via IniMaint and SysMaint, but these
  1504. users should not be allowed to modify anything, then these users can
  1505. be furnished IniSafe and SysSafe in place of the xxxMaint version and
  1506. they will have this capability.
  1507.  
  1508. 15. A number of new things have been added to the help files under
  1509. the category General Help Information. Most, if not all, of these
  1510. topics have also been inserted into the see also lists for the
  1511. appropriate subject areas. This section contains a discussion of the
  1512. environment that is required for IniMaint or SysMaint, a discussion
  1513. of different kinds of Desktop Backups, a description of and how to
  1514. address INI files that cannot be updated, notes on how the Extended
  1515. Attributes from different files are matched for things like Compare,
  1516. and a description of what IniSafe and SysSafe are. In addition, all
  1517. of the *.TXT files that are normally distributed with IniMaint and
  1518. SysMaint have been incorporated into the on-line help.
  1519.  
  1520. 16. If the user was running an unregistered version of IniMaint, the
  1521. message that the registration information was invalid would appear
  1522. everytime the app was run. This was caused by the reuse of a variable
  1523. before it was tested to see if there was no registration information.
  1524. The problem has been fixed by using different variables.
  1525.  
  1526. 17. The stack size for the secondary threads was not large enough, so
  1527. it has been considerably increased.
  1528.  
  1529. 18. There were a couple of places where the memory allocation was
  1530. done using the wrong routine, which would cause a problem with
  1531. switching back and forth between the normal memory allocation
  1532. routines and the debug routines. All of the source modules have been
  1533. modified to use the correct memory allocation API call.
  1534.  
  1535. 19. There was a problem with how the menu selection worked when the
  1536. main window menu was on more than one line. This seems to have been
  1537. caused by the fact that the frame window was not notified when some
  1538. of the menu changes were made. Code has been added to make sure that
  1539. the proper notifications are sent.
  1540.  
  1541. ******************************* V2.1j  *******************************
  1542.  
  1543. The items fixed in Version 2.1j are:
  1544.  
  1545. 1. If there was a Network Drive in the Handles0 or 1 structure in the
  1546. OS2SYS.INI file that was not in the normal format and any of the
  1547. handles were deleted. The resulting Handles structure would be
  1548. invalid because the code that rebuilt the Handles structure assumed
  1549. that the Drive entry had a two character name consisting of the Drive
  1550. letter followed by a colon. This is not always true for network
  1551. drives and the code has been modified to use the length of the drive
  1552. information in place of a default value.
  1553.  
  1554. 2. The code in the routine that restores the Desktop Directory does
  1555. not remove the temporary CMD file after doing the restore because the
  1556. lines that were commented out for testing were not restored before
  1557. the 2.1i version was released. The comments have been removed and the
  1558. file will not get deleted. The filename will be of the form
  1559. TMMDDXXX.CMD where MM is the month, DD is the day of the month and
  1560. XXX is a sequential number starting from 001, and will probably be
  1561. 001.
  1562.  
  1563. 3. Because of the way the default was built and since that is what
  1564. was used during testing, none of the Desktop routines to build Backup
  1565. or Restore CMD files would work correctly once a new directory was
  1566. chosen. This is because the new directory would have a trailing
  1567. backslash and the default one did not. The problem has been fixed by
  1568. insuring that all directory names have a trailing backslash.
  1569.  
  1570. 4. The Desktop Default Dialog would put the incorrect information
  1571. into the window that displays the name of the Backup and Restore CMD
  1572. files, if the user tried to change these entries. Actually, the
  1573. Default Backup Directory would be placed in the field.
  1574.  
  1575. ******************************* V2.1k  *******************************
  1576.  
  1577. The items fixed in Version 2.1k are:
  1578.  
  1579. 1. The Repair Objects entry in the Repair Dialog has been upgraded so
  1580. that the display will include the folder that contains the Object
  1581. and, when the Object is deleted, all references to the Object will be
  1582. removed from the INI files and the Desktop will be reset. This will
  1583. assure that the Object has been completely deleted, even if it cannot
  1584. normally be shredded.
  1585.  
  1586. 2. The SysMaint Desktop Backup still did not work because of an error
  1587. in specifying one of the filenames. The first character of the
  1588. filename was left off. The code has been changed to create a CMD file
  1589. with the correct filename.
  1590.  
  1591. 3. If the user chose the User INI File or System INI File options
  1592. from the Files Menu as the file to view immediately after Viewing a
  1593. set of file and/or directory Extended Attributes, the temporary file
  1594. that contained the Extended Attributes was not deleted and a message
  1595. would be seen indicating that the Current INI file could not be
  1596. deleted. This was caused by a failure to save the temporary filename
  1597. in the old INI file field when the two menu items above were
  1598. selected. The code has been updated so that the old filename will be
  1599. properly saved in both situations.
  1600.  
  1601. 4. Some changes have been added to the Dump code so that the Version,
  1602. Date and Time of the dump information will be included.
  1603.  
  1604. 5. The Dump of certain control structures was limited to only 100
  1605. members of each structure. There were times when this limit was too
  1606. small and critical dump information was in included. Therefore, the
  1607. limit has been increased to 1000.
  1608.  
  1609. 6. A new item has been added to the available types of INI File
  1610. Repair. IniMaint will now check the OS2.INI file for leftover
  1611. PM_ProgramListxxx entries and remove them at the user's option. These
  1612. entries are no longer needed under OS/2 2.1 and can cause problems
  1613. with deleting of Program type Objects that are contained in the
  1614. entries.
  1615.  
  1616. 7. A new item has been added to the available type of INI file Repair
  1617. that will remove old Printer information from the OS2SYS.INI file.
  1618. When Printers are removed from the Desktop, some of the old
  1619. information is left in the INI file. While this information does not
  1620. cause a problem with the Desktop, it can cause a problem with various
  1621. programs, such as Word Processing programs, that look in the
  1622. OS2SYS.INI file for printer information. Some of these programs will
  1623. assume that the old printers can still be used. However, any attempt
  1624. to print to the old printers will be unsuccessful. This item will
  1625. examine the 10 or so entries in the OS2SYS.INI file that might have
  1626. old printer data left and remove it at the user's option.
  1627.  
  1628. ******************************* V2.1l  *******************************
  1629.  
  1630. The items fixed in Version 2.1l are:
  1631.  
  1632. 1. The SysMaint Restore process was not sufficiently robust, so a
  1633. number of things have been done to address the problem. First, the
  1634. Restore CMD file will no longer use OS/2 Commands to clean up the
  1635. Desktop Directory, this will now be done via a new program, IniClean,
  1636. that simply has the root as the input and will use the root
  1637. information to remove whatever Desktop Directories and Files
  1638. currently exist. In addition, the name of the programs that are
  1639. executed are now fully qualified, so the CMD file will work with
  1640. any directory as the default directory.
  1641.  
  1642. 2. In order to assure that the executable files and the source and
  1643. target files for the various Backup and Restore actions will all be
  1644. found correctly, all file, directory and program names are now fully
  1645. qualified and enclosed in quotes.
  1646.  
  1647. 3. The Desktop Restore Command file did not have lines that would
  1648. erase the existing OS2.INI and OS2SYS.INI files before the UNZIP was
  1649. done. Additional lines have been added to insure that this is done.
  1650.  
  1651. 4. The Repair of the PM_ProgramListxxx entries did not remove all the
  1652. references to the Application. It is possible for entries also be
  1653. stored in the PM_Workplace:Location Application. Additional code has
  1654. been added to insure that these entries are also deleted.
  1655.  
  1656. 5. The Repair Printers Item did not recognize IBMNULL Printer
  1657. entries, which should never be deleted, if they had lower case
  1658. characters in the name. The type of compare has been changed so that
  1659. upper and lower case characters will compare the same.
  1660.  
  1661. 6. When an attempt to remove a Printer entry was not successful, the
  1662. program would terminate with a Dump Dialog. Since the inability to
  1663. remove a Printer entry is not really a terminal type of error, the
  1664. code has been changed to simply notify the user when this situation
  1665. has occurred.
  1666.  
  1667. 7. There were some areas in the Repair Printer and Repair
  1668. PM_ProgramListxxx routines where memory could be left allocated. This
  1669. memory would be freed once the program terminated, but should not be
  1670. left allocated. The problem areas have been fixed.
  1671.  
  1672. 8. A new Button has been added to the Dump Dialog, Continue.
  1673. Previously, when a Dump occurred because of some sort of error
  1674. condition, the user had no option but to terminate the program. The
  1675. Continue Button gives the user the ability to continue processing
  1676. even though an error has occurred. If the user chooses to Continue,
  1677. they will be warned that an error condition could continue to exist.
  1678.  
  1679. 9. If there was a problem removing a printer entry, the Dialog that
  1680. indicated that the INI files  could not be written to would appear.
  1681. This was in error, since the problem was that a specific OS2SYS.INI
  1682. file entry could not be removed, therefore, additional code has been
  1683. inserted to handle this condition.
  1684.  
  1685. 10. If one of the threads other than the main thread got an error
  1686. attempting to make a change to the OS2SYS.INI or OS2.INI files, the
  1687. code that indicated that the INI files could not be updated would be
  1688. entered. This code would abend with a logic error of 1201 because an
  1689. attempt would be made to pop up a message box for a thread that did
  1690. not have a message queue. Additional code has been inserted to insure
  1691. that the check will only be made for the main thread.
  1692.  
  1693. 11. In order that the user knows the limitations of the Sysmaint
  1694. Restore process, a message box will be displayed anytime the users
  1695. asks that the Restore CMD file be created that explains the
  1696. limitations.
  1697.  
  1698. ******************************* V2.1m  *******************************
  1699.  
  1700. The items fixed in Version 2.1m are:
  1701.  
  1702. 1. If the user selected Continue after a dump and the supplemental
  1703. error text field had been allocated, the memory was not freed. Code
  1704. has been added to free this memory.
  1705.  
  1706. 2. There were possible combinations of user names and SysMaint
  1707. registration codes that would not register correctly because a
  1708. variable would evaluate to zero. Additional code has been added to
  1709. check for this condition.
  1710.  
  1711. 3. It was possible to get a protection exception when attempting to
  1712. remove invalid registration information. The code has been changed so
  1713. the INI file will get updated correctly.
  1714.  
  1715. 4. If the IniClean program used to do the restore of the Desktop did
  1716. not find the old Desktop, it would terminate with an error rather
  1717. than simply allowing the restore process to continue. Additional code
  1718. has been added so that the condition will no longer be treated as an
  1719. error.
  1720.  
  1721. ******************************* V3.0  *******************************
  1722.  
  1723. The items fixed in Version 3.0 are:
  1724.  
  1725. 1. It was possible to get a logic error 1109 when attempting to do a
  1726. Repair because of filenames in the Handles structure that contained
  1727. *. This generated an Invalid Path DOS error that IniMaint was not
  1728. handling correctly. Additional code has been inserted to handle this
  1729. DOS error code.
  1730.  
  1731. 2. During certain copy operations it was possible to get a 1201 logic
  1732. error code because an attempt was made to pop up a dialog box for a
  1733. thread that did not have a Message Queue. This problem has been fixed
  1734. by insuring that every thread that creates an Anchor Block also
  1735. creates a Message Queue.
  1736.  
  1737. ******************************* V3.0a  *******************************
  1738.  
  1739. The items fixed in Version 3.0a are:
  1740.  
  1741. 1. Under certain circumstances the Application level compare of two
  1742. INI files would go into a loop. The problem was caused by a pointer
  1743. not getting incremented correctly and has been fixed.
  1744.  
  1745. 2. An additional check has been added to the Repair File Handles
  1746. routine that will look for Orphan Handles, Handles with no Parent in
  1747. the structure. This condition would previously cause a 1115 Logic
  1748. Error, but will now be added to the list of invalid handles with a
  1749. error message that identifies it as an orphan handle.
  1750.  
  1751. 3. If the INIMAINT= Environment Variable was invalid, the Dump Dialog
  1752. would appear after the message box that informed the user. There was
  1753. no reason to display the Dump Dialog and it will no longer appear.
  1754.  
  1755. 4. Some users were confused by the All Groups display, which includes
  1756. the Applications which are in any of the defined Groups. Therefore,
  1757. additional text has been added to the Help entry that discusses the
  1758. contents of the Groups Listbox.
  1759.  
  1760. 5. A number of new users have mentioned that they were not sure how
  1761. to get started with IniMaint and SysMaint, so a Getting Started
  1762. section has been added to the Help file.
  1763.  
  1764. ******************************* V3.0b  *******************************
  1765.  
  1766. The items fixed in Version 3.0b are:
  1767.  
  1768. 1. While getting the Extended Attributes for the Desktop of the
  1769. MultiMaint Portable Backup, the memory for the EAs for each directory
  1770. or file should have been freed after the information was recorded in
  1771. the *.EA file. However, this was not done, causing the program to use
  1772. very large amounts of memory. The appropriate areas are now freed
  1773. correctly and the total memory requirement is much smaller.
  1774.  
  1775. 2. If a Filename in the Handles structure contained invalid
  1776. characters, it was not identified as having a invalid format and was,
  1777. therefore, no placed in the window listing files that should be
  1778. Repaired. This could result in a number of different problems ranging
  1779. from a Desktop that would not boot to Orphan Handles in the File
  1780. Handles structure. The code has been fixed by adding a new type of
  1781. error that will identify these entries as being an invalid name.
  1782.  
  1783. 3. Additional information will be captured by the MultiMaint Beta
  1784. Code. This is the second of three steps in producing a workable
  1785. version of the program.
  1786.  
  1787. 4. The MultiMaint Beta did not release the memory as it obtained the
  1788. Extended Attributes for each Directory or File. This has been fixed,
  1789. so the Portable Backup  code will no longer cause the Swap file to
  1790. grow by several megabytes.
  1791.  
  1792. 5. Additional error recovery has been added to the MultiMaint code so
  1793. that recovery from an error condition will be reported correctly, all
  1794. of the WPS pointers changed for the data collection will be restored
  1795. to their original value and there will be no problems with WPS after
  1796. the test.
  1797.  
  1798. 6. The IniClean program would leave part of the Desktop when there
  1799. were several levels of nesting of Folders because the Folders were
  1800. done in the incorrect sequence and some of the chain information was
  1801. lost. The sequencing has been corrected and all Desktop information
  1802. will now be deleted.
  1803.  
  1804. 7. If a generation other than generation 01 was used for the restore
  1805. of the Desktop, an error was encountered because there was a space
  1806. between GO and TO in the CMD file. The space has been eliminated, so
  1807. the CMD file will not encounter the error.
  1808.  
  1809. 8. There were a number of situations where a Dump Dialog would appear
  1810. if the name of a file used by one of the dialogs was old and pointed
  1811. to a directory that no longer existed. What should happen is that the
  1812. user is informed that the file cannot be opened. All of the locations
  1813. that would have generated a Dump Dialog have been changed to simply
  1814. pop up a message box.
  1815.  
  1816. 9. The accsswps.dll file is a dll that is only needed for the upgrade
  1817. to SysMaint, which is in beta. However, V3.0a would not run without
  1818. this file because there were some calls to the AccessWPS API's in the
  1819. Dump Dialog code. These lines have been made conditional based on
  1820. some compile options, so this dll is not longer required for IniMaint
  1821. or SysMaint and can be erased.
  1822.  
  1823. 10. Two items have been added to the popup menu for each of the
  1824. windows. One of the items will write the contents of the window to a
  1825. file and the other will print the contents of the window.
  1826.  
  1827. 11. It was possible for IniMaint to run out of stack space in certain
  1828. very unusual situations, so the  primary stack size and the thread
  1829. stack size have both been increased.
  1830.  
  1831. 12. Although it is, in theory, impossible to have an Application with
  1832. no Keys, some examples of this condition have been seen in some INI
  1833. files. It was not possible to delete these Applications with IniMaint
  1834. because IniMaint attempted to use a pointer that was NULL in this
  1835. particular situation. Additional code has been added to handle this
  1836. condition and these Applications can now be deleted.
  1837.  
  1838. ******************************* V3.0c  *******************************
  1839.  
  1840. The items fixed in Version 3.0c are:
  1841.  
  1842. 1. The Write and Print Window contents items added to the popup menus
  1843. in the previous version, did not identify the Application when the
  1844. Key Name window was the source and did not identify both the
  1845. Application and Key Name when the Key Value window was the source.
  1846. This made it necessary to manually document this information on each
  1847. printout or in each file. Additional line have been added to the
  1848. heading information to output this information.
  1849.  
  1850. 2. The name and location of the logging files for the Repair,
  1851. Extended Attributes and Portable Backup functions were fixed and
  1852. would always be in the default directory. Now, both the name of the
  1853. logging file and its location can be selected by the user from a new
  1854. entry in the Options or Defaults Dialog for the particular function.
  1855. The selected file will be remembered from one run of IniMaint or
  1856. SysMaint to the next.
  1857.  
  1858. ******************************* V3.0d  *******************************
  1859.  
  1860. The items fixed in Version 3.0d are:
  1861.  
  1862. 1. The initial Portable Restore capability has been added to the
  1863. MultiMaint version.
  1864.  
  1865. 2. The application names of the Objects saved during the Portable
  1866. Backup have been changed to eliminate the Desktop Directory. This was
  1867. redundant information, since every Application started with the
  1868. Desktop, since every Object is on the Desktop.
  1869.  
  1870. 3. The INI File write routine will no longer cause the Dump Dialog to
  1871. appear when it finds an error, it will simply pass the error back to
  1872. the calling routine. It will be the responsibility of the calling
  1873. routine to pop up the error dialog. The problem with having the write
  1874. routine pop up the error dialog is that the id of the routine
  1875. actually having the problem and the INI file that was causing the
  1876. problem would often be lost.
  1877.  
  1878. 4. There were conditions where the Save or Write INI file for various
  1879. functions could get the RO attribute left on even though the file was
  1880. not actually opened. This would cause a 704 Logic Error the next time
  1881. the file was used because the file would be considered to be Read
  1882. Only by OS/2. Additional code has been inserted to insure that the RO
  1883. attribute is not set for these files, so that they will always be
  1884. usable.
  1885.  
  1886. 5. When a error occurred during a Repair operation, there were
  1887. situations where the error logging was not sufficient to easily and
  1888. accurately determine the problem. Additional information will now be
  1889. logged to improve this area.
  1890.  
  1891. 6. If it was not possible to open the file currently set as the Save
  1892. INI file for the Repair because the file had been chosen in a past
  1893. run and the directory structure had been changed to make the path and
  1894. file name combination invalid, an abend would occur with a generic
  1895. Logic Error code of 1. Additional code has been added to insure that
  1896. the Save INI file can be opened before any Repair is executed which
  1897. will need to Save any of the INI file data.
  1898.  
  1899. 7. The timeout for the execution of the WPS and SOM methods was set
  1900. at 30 seconds, which turns out to be too short for some methods, such
  1901. as wpPopulate. Therefore, the timeout has been increased to 3
  1902. minutes.
  1903.  
  1904. 8. The Repair Uninstalled Printers code would sometimes incorrectly
  1905. identify a Printer as not being installed because the key Value entry
  1906. for a critical Application had an ending semicolon. The semicolon
  1907. caused a compare to be unequal, thus causing the incorrect
  1908. conclusion. The code has been modified to ignore the semicolon when
  1909. doing the compare in question.
  1910.  
  1911. 9. The physical sequence of many of the items in the Help file have
  1912. been changed to make them more logical. This has no effect on the
  1913. actual Help, however, there are programs that will transform the Help
  1914. file into a text file that can be used in a word processor or
  1915. printed. When this is done to the Help file, the physical sequence of
  1916. the items determines the sequence of the items in the output file.
  1917. The changes were made in order to make this process easier
  1918.  
  1919. ******************************* V3.0e  *******************************
  1920.  
  1921. The items fixed in Version 3.0e are:
  1922.  
  1923. 1. The DEF file for the DLL that holds the API's supplied with the
  1924. compiler had an incorrect DLL name because of the conversion from
  1925. V1.0 of the compiler to V2.01 of the compiler. This meant that
  1926. IniMaint and SysMaint would not run without the DDE4MBS.DLL file. The
  1927. DEF file has been fixed and the C SET/2 DLL is no longer required.
  1928.  
  1929. ******************************* V3.0f  *******************************
  1930.  
  1931. The items fixed in Version 3.0f are:
  1932.  
  1933. 1. There were situations where memory would not get freed when
  1934. Continue was selected after the Dump Dialog was displayed. Code has
  1935. been inserted to insure that everything is freed once the dialog has
  1936. been dismissed.
  1937.  
  1938. 2. If the Save INI file does not exist when an attempt is made to do
  1939. a Repair, a logic error 634 will result because an attempt is made to
  1940. remove the Read Only Attribute from a file that does not exist and
  1941. the code does not test for this condition. The code now makes the
  1942. appropriate tests and this error will no longer occur.
  1943.  
  1944. 3. The initial Explain capability has been added to the popup menus
  1945. for each of the three windows. This is a feature that will continue
  1946. to evolve over time as more and more is learned about the various
  1947. entries in the INI files and Extended Attributes.
  1948.  
  1949. 4. The Repair File Handles did not correctly process Directory or
  1950. File Names that had characters in them that are not considered
  1951. printable Ascii characters. The names were immediately identified as
  1952. invalid, even though no actual check was made. This turns out to be
  1953. an incorrect approach because there are names in non-US versions of
  1954. OS/2 that are valid and contain these characters. The code has been
  1955. modified so it will check a name from the Handles structure, even if
  1956. the name contains characters that are not printable Ascii characters.
  1957.  
  1958. 5. The EA Test Dialog Write File name was not remembered from one run
  1959. of the Dialog to the next. This forces the user to select this file
  1960. from scratch every time they want to have the contents of the Listbox
  1961. written to a file. The Filename will now be remembered and it will be
  1962. displayed as the Default File whenever the Write button is selected.
  1963.  
  1964. 6. There was still a problem with certain printers being identified
  1965. as not being installed, when there were perfectly valid. Additional
  1966. changes have been made to the code that validates the printers so
  1967. that printers that are valid will not be treated as invalid.
  1968.  
  1969. 7. The default selection on all three popup menus has been changed
  1970. from the Refresh item to the Explain item.
  1971.  
  1972. 8. The Help for the Popup Menu items: Write, Print and Explain have
  1973. been added.
  1974.  
  1975. 9. It was possible that the Desktop Restore CMD file would not create
  1976. the new Desktop Directory structure correctly if the default drive
  1977. was not the same as the drive that contains the Desktop. Therefore,
  1978. two additional lines have been added to the Restore Command file to
  1979. insure that the correct drive is the default drive.
  1980.  
  1981. 10. The Popup Menus did not have the Accelerator Keys noted as part
  1982. of the Menu lines. This information has been added to each line.
  1983.  
  1984. 11. There were no Accelerator Keys for Write Window to File or Print
  1985. Window, these have also been added and are the same for all three
  1986. possible windows. An Accelerator Key for Explain has also been added.
  1987.  
  1988. 12. It was possible to Exit from IniMaint or request a second window
  1989. Print or Write while there was already a Print or Write in progress.
  1990. In the case of the Exit or Write, several things could happen, but the
  1991. most likely was a protection exception. In the case of the Print, a
  1992. logic error 1504 would occur because an attempt was made to set a
  1993. semaphore that was already set. All of these situations have now been
  1994. fixed by the addition of code that will cause the routines involved
  1995. to wait for the current activity to be completed.
  1996.  
  1997. ******************************* V3.0g  *******************************
  1998.  
  1999. The items fixed in Version 3.0g are:
  2000.  
  2001. 1. A number of people have had problems with the Repair Objects item
  2002. in the Repair Dialog. Most of the time, user have simply selected the
  2003. Do Repair item and then Execute. The effect of this is to remove
  2004. every object from the Desktop. In order to address this problem, two
  2005. things have been done. First, the name of the item has been changed
  2006. from Repair Objects to Destroy Objects and, second, the Do Repair
  2007. button warning has been changed to make sure that the user
  2008. understands that every Object Destroyed will be removed fro the
  2009. Desktop.
  2010.  
  2011. 2. Many, but not all, Objects have Location information in the
  2012. PM_Abstract:Objects entry for the Object in the OS2.INI file.
  2013. However, for some reason, not all of the Locations defined in the
  2014. Objects are present in the PM_Workplace:Location entry in the OS2.INI
  2015. file. This apparent inconsistency does not seem to cause a problem in
  2016. the vast majority of situations. However, it is an inconsistent
  2017. situation, so an additional Repair Item has been added to the list,
  2018. Restore Missing Location Entries, which will display any Objects with
  2019. Location information that is not in the Location entry and give the
  2020. user the ability to add the appropriate information.
  2021.  
  2022. 3. The Variable dump did not identify the version of OS/2 being used,
  2023. which has caused confusion in certain situations, therefore, this
  2024. information is not included in the variable dump.
  2025.  
  2026. 4. The Repair File Handles and Repair WPS Entries would not work with
  2027. versions of OS/2 prior to V2.0 because of a change in the names of
  2028. some of the Applications in the OS2SYS.INI file. Additional code has
  2029. been added to handle either name format.
  2030.  
  2031. 5. If a music CD was in the CD-ROM drive when a Repair of the File
  2032. Handles was attempted, the Repair would abend with a 1109 Logic Error
  2033. because Sector Not Found was returned from the Query Path Info API.
  2034. Additional code has been added to handle this return and a couple of
  2035. other similar return values.
  2036.  
  2037. 6. Once a drive was identified as a Network Drive by the Repair
  2038. Handles routine, all files and Directories on the drive were
  2039. considered to be invalid, even without checking them and even if the
  2040. Automatic Repair was set in the Defaults. The code has now been
  2041. modified so that Network drives will be handled the same as CD-ROM and
  2042. VDISK drives and in accordance with the Default settings.
  2043.  
  2044. 7. There have been a couple of situations where the Repair
  2045. Uninstalled Printers Repair function has caused a problem with the
  2046. Desktop. In order to insure that this does not happen in the future,
  2047. this item will not work unless the IBMNULL printer is installed, thus
  2048. insuring that none of the critical Applications in the OS2SYS.INI
  2049. file will have their last Key Name deleted, thus deleting the
  2050. Application and causing a problem on the Desktop. If the IBMNULL
  2051. printer is not found, then user will be informed of it via a Message
  2052. Box and the structures that hold any Uninstalled Printer information
  2053. will be cleared and the memory freed.
  2054.  
  2055. 8. The Restore of the Desktop Directory from the Desktop Menu item
  2056. could have worked incorrectly because the Desktop Directory could not
  2057. be found, but the user was not informed that an error had occurred.
  2058. This was caused by two problems, the first was a place in the code
  2059. where a check for an empty Desktop directory was not made and this
  2060. problem has been fixed. The second problem was that the IniClean
  2061. program would revert to the default directory when it was run without
  2062. any input parameters and this has also been fixed.
  2063.  
  2064. 9. When the Restore Desktop Directory entry was selected from the
  2065. Desktop Menu, the CMD file that was built attempted to also unzip a
  2066. new copy of the INI files. The unzip was not successful, since the
  2067. INI files already existed, but there should not have been an attempt
  2068. to unzip them and the code to do this has been removed from the CMD
  2069. file.
  2070.  
  2071. 10. An attempt to reset the Desktop Directory using the Desktop Menu
  2072. item would result in a SYS3175 error because of a difference in the
  2073. size of a structure that was caused by changing a system wide size
  2074. variable and not recompiling all modules. All of the modules have
  2075. been recompiled, and this fixed the problem.
  2076.  
  2077. 11. The reset of the Desktop Directory from the Desktop Menu left two
  2078. zip file in the default directory. Additional code has been added to
  2079. insure that these files are erased once the restore and reset are
  2080. complete.
  2081.  
  2082. 12. One additional situation was found where an attempt would be made
  2083. to delete a printer that was actually installed on the Desktop. The
  2084. problem occurs when a specific combination of Driver and Printer
  2085. names were used by the installed Printer. Additional code has been
  2086. added to identify the problem and prevent the printer from being
  2087. reported as not installed.
  2088.  
  2089. 13. There are three places where WM_TIMER messages are processed, but
  2090. non of the code that handled these messages made a check to verify
  2091. that the Timer that issued the message was the expected one. The
  2092. effect of this was that the code would take some specific action
  2093. based on the assumption that a specific Timer event had occurred,
  2094. when it was possible that it had not occurred. The specific condition
  2095. that identified this problem was a user who had the initial dialog
  2096. turned on and had accidently erased the INIMAINT.HLP file. The user
  2097. would get the message that the Help was not available and then,
  2098. sometimes, would get a Logic Error 610 and sometimes would have no
  2099. further problems. Which event occurred depended on whether there was
  2100. a Timer message received from an unexpected Timer while the problem
  2101. with the Help was being handled. Additional code has been added to
  2102. insure that Timer messages are ignored except when they have been
  2103. caused by the appropriate Timer.
  2104.  
  2105. 14. There were a number of readability problems with the IniHelp.TXT
  2106. file, so some changes have been made to improve the readability. Most
  2107. of the changes involve adding extra blank lines between paragraphs,
  2108. indenting lists, making sure there are two spaces after the end of
  2109. each sentence and a few other minor changes.
  2110.  
  2111. ******************************* V3.0h  *******************************
  2112.  
  2113. The items fixed in Version 3.0h are:
  2114.  
  2115. 1. There were rare situations where the Repair Location entry in the
  2116. Repair Dialog would incorrectly identify a missing location, normally
  2117. it would report it as <>. This was caused by starting the search for
  2118. the location information too early in the Object data. The code has
  2119. been changed to start the search at the correct place and also to
  2120. ignore a location of <>.
  2121.  
  2122. 2. There were situations where the Repair Uninstalled Printers Repair
  2123. entry in the Repair Dialog would get a logic error 1128 if some of
  2124. the required printer information entries had been manually removed
  2125. from the OS2SYS.INI file. The code has been changed so that the user
  2126. will now be informed via a message box that critical information is
  2127. missing, so this type of Repair cannot be done.
  2128.  
  2129. 3. It was possible to get a Logic Error 1112 when attempting to do
  2130. several of the Repair functions because the Open of a Network drive
  2131. was successful, but the driver for the Network drives did not
  2132. support the DosDevIOCtl API causing an Error Not Supported return
  2133. from the API. Additional code has been inserted to handle this error
  2134. return along with a number of related errors.
  2135.  
  2136. 4. There was a problem using the IniClean program when OS/2 was
  2137. booted from a floppy because this program needed the INIMTAPI.DLL and
  2138. it was normally not available because there was no active LIBPATH.
  2139. The compile parameters for IniClean have been changed so that the RTL
  2140. is linked statically instead of dynamically, this removes the need
  2141. for the API DLL.
  2142.  
  2143. 5. It was not clear from the documentation that the Restore CMD file
  2144. generated by the menu item on the Desktop Menu was only intended to
  2145. be run when PM and WPS were not running. Additional documentation has
  2146. been added to make this more clear.
  2147.  
  2148. 6. It was possible to get a 1501 Logic Error when asking for an
  2149. Explain of the contents of a folder that contained an Object ID for
  2150. an Object that did not exist. An extra check has been added to fix
  2151. the problem.
  2152.  
  2153. 7. If an attempt was made to select a new Target File in the Compare
  2154. Files Dialog, the new File Dialog appeared underneath the Compare
  2155. Dialog. This was caused by a problem with the Owner and Parent
  2156. windows of the two windows. The Owner and Parent relationship has
  2157. been changed, so that the boxes will appear correctly.
  2158.  
  2159. 8. I was possible to dismiss the Compare Files Dialog while the
  2160. Select New Target Dialog was active. A 1305 Logic error would then
  2161. occur when the Select New Target File dialog was dismissed.
  2162. Additional code has been added to prevent the Compare Files Dialog
  2163. from being dismissed while the Select New Target File Dialog is
  2164. active.
  2165.  
  2166. 9. When comparing two INI Files on a Key Value Level and an entry was
  2167. found in both INI files with the same Application Name and Key Name
  2168. but with Values that had different lengths, the Compare would not
  2169. mark the Key Values as being unequal. Additional code has been added
  2170. to insure that this condition will now be handled correctly.
  2171.  
  2172. 10. If the Target File selected for a Compare was a file that did not
  2173. exist, the file would be created and the Compare would identify the
  2174. entire contents of the Source File as not being in the Target File.
  2175. Since this is nonsense, additional code has been added to identify
  2176. this condition and tell the user that a new file cannot be the Target
  2177. for a Compare.
  2178.  
  2179. 11. If a Logic Error 617 occurred, there was not sufficient
  2180. diagnostic information in the Dump Dialog to diagnose the problem.
  2181. Additional code has been added to put the appropriate printer
  2182. information into the supplemental error text field so that problems
  2183. in this area are easier to find.
  2184.  
  2185. 12. Both the Groups and the Compare Listboxes allowed multiple
  2186. selection, but not extended selection, where the mouse button could
  2187. be held down and the pointer dragged down the entries. Both Listboxes
  2188. have been modified to allow extended selection.
  2189.  
  2190. 13. If the Default Printer could not be found when an attempt was
  2191. made to Print the contents of a window, a Logic Error 617 would
  2192. occur. Additional code has been added so that the user will be
  2193. informed via a Message Box that the Printer cannot be found and the
  2194. Print will simply not be done.
  2195.  
  2196. 14. One of the most common errors is that an attempt to write to an
  2197. INI file will fail. This causes a Logic Error of 704. Frequently, the
  2198. user will understand exactly what is going on when this error occurs
  2199. and would simply continue, were they to know the exact problem.
  2200. Therefore, the Error Handling code has been modified to look for this
  2201. error, report it to the user via a Message Box and give the user the
  2202. opportunity to continue processing.
  2203.  
  2204. 15. A number of users have had problems making relatively minor
  2205. modifications to the Extended Attributes for a Directory or File.
  2206. They have pointed out that the procedure for doing this is not at all
  2207. clear. Therefore, an additional item has been added to the On-line
  2208. Help and to the IniHelp.TXT file that explains how to make such a
  2209. change.
  2210.  
  2211. 16. For a number of Extended Attribute functions it was possible to
  2212. select the same directory or file as both the Source and the Target.
  2213. This is illegal and can result in unexpected, but invariably bad,
  2214. results. Code has been inserted to check for this condition and, if
  2215. it occurs, inform the user and terminate the selected function.
  2216.  
  2217. ******************************* V3.0i  *******************************
  2218.  
  2219. The items fixed in Version 3.0i are:
  2220.  
  2221. 1. When the Update INI File entry was selected from the Action Menu
  2222. and the Confirm Before Update Option was selected, no confirmation
  2223. was asked for. The user will now be asked to confirm the update, if
  2224. they have selected this Option.
  2225.  
  2226. 2. When Replacing a Key Value, the user was not asked to verify the
  2227. change, even if the Ask Before Change Option was selected. The user
  2228. will now be asked if they have selected this Option.
  2229.  
  2230. 3. When an Application or Key Name was changed and the Ask Before
  2231. Change Option was selected, the user was not asked to verify the
  2232. change. The user will now be asked if this Option is selected.
  2233.  
  2234. 4. When the Confirm Before Change Option was selected, a change was
  2235. made to the INI file and Cancel selected in the Confirm Dialog, it
  2236. was possible for the Confirm Dialog to appear more than one time. The
  2237. reason was that the File Updated flag was not reset when the user
  2238. cancelled the Confirm Dialog. The File Updated flag is now reset
  2239. before the Confirm Dialog appears, so it will not appear multiple
  2240. times for the same change.
  2241.  
  2242. 5. The documentation states that the Rename or Duplicate Items on the
  2243. Action Menu will allow duplicate Application Names. However, it is
  2244. possible that a user will duplicate an Application Name without
  2245. realizing it and this could have serious and invariably bad results.
  2246. Therefore, additional code has been added to look for this condition
  2247. and, when found, the user will be informed via a message box and
  2248. given the option to terminate the operation at that point.
  2249.  
  2250. 6. The Fast Copy Option is not needed for any version of OS/2 higher
  2251. than V2.0. However, the Options Dialog would still allow a user to
  2252. set this Option. Additional code has been placed in the Options
  2253. Dialog that will prevent this Option from being set for and Version
  2254. of OS/2 higher than 2.0 and will tell the user that the Option is not
  2255. needed for these versions.
  2256.  
  2257. 7. The Add/Replace Key Dialog did not place the cursor in the Ascii
  2258. Text field when the Dialog was initialized, even though this was the
  2259. most likely place where information would be entered. The code has
  2260. been changed to place the cursor in the Ascii field when the Dialog
  2261. is initialized.
  2262.  
  2263. 8. The Help for the Add or Replace Key Value Dialog only mentioned
  2264. that it was for the Replace function, not for the Add function,
  2265. therefore, all references have been changed to include a reference to
  2266. the Add function as well as Replace.
  2267.  
  2268. 9. There was no Help entry for the Add Zero Terminator Checkbox in
  2269. the Add or Replace Key Dialog. The Help has been added.
  2270.  
  2271. 10. The Help for the Select Group Dialog and Listing did not mention
  2272. that these items cannot be invoked directly, but are called
  2273. automatically when a Group needs to be selected. The Help has been
  2274. modified to include the additional information.
  2275.  
  2276. 11. When displaying All Groups in the Groups Dialog, it was possible
  2277. to remove an Application from All Groups by deselecting it.
  2278. Sometimes, this is the desired action, however, it is sometimes an
  2279. error and could create a situation where the user did not remember
  2280. the groups to which the Application belonged. Therefore, the user
  2281. will now be asked to confirm that he wants to remove an Application
  2282. from All Groups if there is more than one Group. If there is only one
  2283. Group, the user will not be asked to confirm the removal, since
  2284. displaying All Groups is the same as displaying the single Group.
  2285.  
  2286. 12. When copying the contents of one INI file to another, any
  2287. Application which already exists in the Target file will actually get
  2288. merged with the same Application in the Source file. This creates a
  2289. problem for the IniMaint Groups, so a special check has been added to
  2290. the copy code that will check for the IniMaint Group Application and
  2291. delete it from the Target file before the Source information is
  2292. copied.
  2293.  
  2294. 13. If certain parts of the Group information got out of synch with
  2295. each other, it was possible to create an INI file that IniMaint and
  2296. SysMaint could not process. Additional checking has been added to the
  2297. code that handles the Group information to insure that any excessive
  2298. information is ignored.
  2299.  
  2300. 14. The Repair Options Dialog did not get the focus when it initially
  2301. appeared because of how the initial dialog message was handled. The
  2302. Dialog will now get the focus correctly.
  2303.  
  2304. 15. When the Select Repair Logging File Dialog was selected, the
  2305. Options Dialog was not large enough to contain the standard New File
  2306. Dialog, so the Options Dialog has been made wider, so it will
  2307. correctly contain the New File Dialog.
  2308.  
  2309. 16. A Repeat Last Find entry has been added to the Find Menu. This
  2310. entry has also been added to the Popup Menus. In previous versions it
  2311. was necessary to go through a couple of steps to do a Repeat Find,
  2312. which is the most common selection.
  2313.  
  2314. 17. The 'Global Find' entry in the Find Text Dialog has been changed
  2315. to 'Global Find Text' to make it more clear.
  2316.  
  2317. 18. The 'Select New Desk Directory' has been changed to 'Select New
  2318. Desktop Dir.' in the Desktop Defaults Dialog.
  2319.  
  2320. 19. A new version of the UNZIP program is now available. Since the
  2321. new version comes as a 16 bit version and a 32 bit version, the name
  2322. of the EXE file has been changed from UNZIP.EXE to UNZIP32.EXE for
  2323. the 32 bit version. Since UNZIP is used in a number of the SysMaint
  2324. Desktop functions, the code that searches for this program will now
  2325. first search for UNZIP32.EXE and, if that is not found, search for
  2326. UNZIP.EXE. The code will only fail if neither EXE is found.
  2327.  
  2328. 20. A new Version of the ZIP program, V2.0.1, has just become
  2329. available. This version will not ZIP a file that has the System
  2330. Attribute set unless an additional parameter is supplied, -S. This is
  2331. a required parameter for OS/2 2.11, which is OS/2 2.1 with the
  2332. Service Pack, because both the OS2.INI and OS2SYS.INI files have this
  2333. Attribute turned on because they are always open. The previous
  2334. version of ZIP would ZIP files with the System Attribute on without
  2335. the -S parameter. In fact, the -S parameter is not valid for versions
  2336. of ZIP prior to V2.0.1. Therefore, it is necessary for SysMaint to
  2337. know the version of ZIP being used in order for it to know whether to
  2338. add the -S parameter to the line that runs the ZIP program. Since
  2339. there is no way to know this by looking at the program, whenever the
  2340. Backup Command file is being created, the user will be asked which
  2341. version of ZIP they are using.
  2342.  
  2343. ******************************* V3.0j  *******************************
  2344.  
  2345. The items fixed in Version 3.0j are:
  2346.  
  2347. 1. When making a Backup of the Desktop or creating the Backup CMD
  2348. file, the user is asked if they have a new or old version of the ZIP
  2349. program and one of the options is to cancel the action. If the action
  2350. is to make a Backup of the Desktop and Cancel is selected, the Backup
  2351. attempts to proceed anyway. This will no longer happen and Cancel
  2352. will actually Cancel the Action.
  2353.  
  2354. 2. The Compare Files Dialog can be used to compare either INI files
  2355. or EA files. However, the text for the Source and Target files
  2356. specifically refer to INI files. The text has been modified to remove
  2357. the INI designation.
  2358.  
  2359. 3. If the MultiMaint Portable Restore tried to restore certain WPS
  2360. WPProgram values with the original value set for the Object, the
  2361. Restore did not work because the original information had already
  2362. been freed. Additional code has been inserted to fix this problem.
  2363.  
  2364. 4. When Restoring a WPProgram Object, the EXE Name and the Default
  2365. Directory would sometimes not be set. This was mostly true when the
  2366. Object was restored to a different machine, but could happen on the
  2367. same machine. Additional checks have been added to fix this problem.
  2368.  
  2369. 5. The Message Box displayed to confirm that a Change should be made
  2370. always asked if the Key Value should be changed, even if that was not
  2371. the modified item. The text in the Message Box has been modified to
  2372. make it more general.
  2373.  
  2374. 6. If the Copy or Move item is selected on the Extended Attribute
  2375. Menu and the Target File does not exist, the Dump Dialog will appear
  2376. with a Logic Error of 1 and a DOS Error of 206. This has been fixed.
  2377.  
  2378. 7. When Comparing Extended Attributes, the parent of the Compare
  2379. Dialog was made to be the SysMaint Window. Therefore, if the window
  2380. was not large enough, now all of the Compare Dialog could be seen.
  2381. The Parent has been changed to the Desktop, so the entire dialog can
  2382. be seen, no matter how large the SysMaint window is.
  2383.  
  2384. 8. In the Variable Data Entry Dialog, it was necessary to tab to the OK
  2385. Button and then hit Enter in order to dismiss the Dialog. Additional
  2386. code has been put in this dialog to check for the Enter Key and, if
  2387. the window with the focus is still the Entry Field, the Dialog will
  2388. act as if the Enter Button was selected.
  2389.  
  2390. 9. There were a couple of situations where a Logic Error would set
  2391. the Error Code correctly, but the Dump Dialog would not appear. The
  2392. reason for this was that there were a few situations where some
  2393. windows were not cleaned up before an attempt was made to display the
  2394. Dump Dialog. Code has been inserted to insure that these windows are
  2395. cleaned up correctly.
  2396.  
  2397. 10. The EA validation code would mark a text string EA as invalid if
  2398. it contained a CR or LF character. This is an error, since many names
  2399. of Objects on the Desktop are multiline entries and will contain on
  2400. or both of these characters. The problem has been fixed by adding
  2401. code to check for these two characters when examining a text string
  2402. and treating them as valid characters.
  2403.  
  2404. 11. Many of the Dialogs did not have a Default Button that would be
  2405. executed when the Enter Key was pressed. This has been added to all
  2406. of the Dialogs for which it is appropriate.
  2407.  
  2408. 12. If the MultiMaint Portable Backup found a Shadow Object and got a
  2409. valid pointer to the Object being Shadowed, but was not able to find
  2410. the original Object, a Logic Error 1737 would occur. Since this is a
  2411. possible condition and simply indicates that the Shadowed Object
  2412. does not exist, the code has been changed to treat this as an Orphan
  2413. Shadow.
  2414.  
  2415. 13. There was a problem with the MultiMaint Portable backup where the
  2416. Real Name for the Desktop would be recorded in the *.WPS file twice,
  2417. once with the incorrect Application Name. This would cause a problem
  2418. when the Restore was attempted because the incorrect entry would not
  2419. have a Level Key Name and would cause an error while attempting to
  2420. load the Restore Window. The problem has been fixed.
  2421.  
  2422. ******************************* V3.0k  *******************************
  2423.  
  2424. The items fixed in Version 3.0k are:
  2425.  
  2426. 1. The Accelerator Keys were added for the MultiMaint items on the
  2427. Desktop Menu.
  2428.  
  2429. 2. The Help for the Portable Backup and Restore was added to the Help
  2430. file.
  2431.  
  2432. 3. There were conditions where selecting Cancel in the New File
  2433. Dialog while selecting a new Target File for the Compare would cause
  2434. a Protection Exception because the default filename was placed in a
  2435. structure even if the default filename was a NULL pointer. The
  2436. default will not be placed in the structure unless it is verified
  2437. that the user has actually selected a new file.
  2438.  
  2439. 4. The Deskman/2 Setup code could leave a reference in
  2440. PM_Workplace:Location that did not exist in PM_Abstract:Objects. The
  2441. Inimaint Repair would flag this an invalid entry and remove it.
  2442. However, the entry would return because it is needed by Deskman/2.
  2443. Additional code has been added to the Repair WPS Entries routines to
  2444. look for this special entry and to treat it as a valid entry if the
  2445. user has turned on the Option to Bypass Known Errors in the Repair
  2446. Options Dialog.
  2447.  
  2448. 5. There were situations where the variable dump would not contain
  2449. all of the required information for very large Desktops because the
  2450. number of lines of any one kind of data was terminated at 1,000
  2451. lines. This limit has been raised to 5,000 lines.
  2452.  
  2453. 6. There was at least one condition where an Object that was restored
  2454. by MultiMaint would be positioned correctly on the Desktop, but the
  2455. position would not be correct after the Desktop was reset. Additional
  2456. code has been added to check for the condition and insure that the
  2457. Object Instance information is saved before the Desktop is reset.
  2458.  
  2459. 7. Certain Objects were not Restored to the correct position by the
  2460. MultiMaint Restore. This was caused by the position information being
  2461. overwritten by the default position information. An additional check
  2462. has been added so that the valid position information will not get
  2463. overlaid.
  2464.  
  2465. 8. If the Directory specified for the Portable Backup did not exist,
  2466. then the Portable Backup would report that the INI files could not be
  2467. copied and would then popup the Dump Dialog with a generic Logic
  2468. Error code of 1. The routine has been modified so that the user will
  2469. be informed, after the first copy does not succeed, that the Backup
  2470. cannot be done because the INI files could not be copied.
  2471.  
  2472. 9. There was a condition where the EA information from a number of
  2473. the EA functions could end up in the incorrect file. Specifically,
  2474. the current INI file would end up with the EA information rather than
  2475. have it placed in a separate file. There were a number of things that
  2476. had to occur in order to make this happen. An additional check has
  2477. been added to the code that selects the Target file for these EA
  2478. functions so that the problem will not reoccur.
  2479.  
  2480. 10. There were some situations where the Repair File Handles would
  2481. create a File Handle Structure that was not valid and this would
  2482. result in Desktop corruption upon rebooting OS/2. The problem only
  2483. occurred with HPFS Filenames and required that the Filename contain a
  2484. comma, be a file that did not exist and in a directory that did not
  2485. exist. The Repair code has been changed so that an invalid Driectory
  2486. will force all Files and Subdirectories to be invalid. A side benefit
  2487. of this change is that the File Handle Structure is now loaded more
  2488. quickly, especially if there are a number of invalid Directories.
  2489.  
  2490. 11. If an attempt was made to Restore an Object whose Class was not
  2491. one of the standard Classes, such as the Desktop when ExtendedDesktop
  2492. was being used, and the Object was not in the first group of Objects
  2493. being Restored, the Restore would not work because of a data error
  2494. 10. The reason this occurred is because the structure that identified
  2495. the non-standard Classes was freed after the first set of Objects
  2496. were Restored. The code has been changed so the structure will only
  2497. get freed after all of the Restores are done.
  2498.  
  2499. 12. There are a number of Classes of Objects that use unusual
  2500. identifiers to save instance information that is not normally saved
  2501. by the standard WPS methods. While some of these Classes were handled
  2502. correctly, unknown Classes were not handled. Addtional code has been
  2503. added to handle these situations correctly.
  2504.  
  2505. 13. When there were substitutions needed for the proper handling of
  2506. Restoring Instance information for non standard Classes, the
  2507. substitutions were not recorded in the WPS Logging file, thus
  2508. making it difficult to verify how these classes were handled.
  2509. Additional code has been added to log this information.
  2510.  
  2511. ******************************* V3.0l  *******************************
  2512.  
  2513. The items fixed in Version 3.0l are:
  2514.  
  2515. 1. There were situations where MultiMaint would reset the Desktop
  2516. when it was not necessary. The setting of the Reset flag has been
  2517. moved so that the reset will not occur unless it is necessary.
  2518.  
  2519. 2. There was a condition where the Repair Dialog could get a SYS3175
  2520. error if the fully qualified name of a Directory and/or a File was
  2521. very close to the maximum number of characters. The size of the
  2522. variable that holds this data and all variables that hold simliar
  2523. data were expanded, where necessary, in order that this problem will
  2524. not occur again.
  2525.  
  2526. 3. The new version of ZIP will not ZIP files that have the System
  2527. Attribute on without a special parameter. The same parameter is
  2528. considered an error by a previous version of ZIP. This had been
  2529. handled by asking the user which version of ZIP they had each time
  2530. the Snapshot Backup CMD file was created. Many users found this
  2531. annoying. The creation of the Backup CMD file has now been changed so
  2532. that the System Attribute will simply be turned off before an attempt
  2533. is made to ZIP the OS2.INI or OS2SYS.INI files. The attribute will be
  2534. left off, since it does not cause any problems and will get reset at
  2535. the next Boot anyway.
  2536.  
  2537. 4. Folders whose WPS Class was not the standard WPFolder Class would
  2538. not get their contents saved except for the very first time they were
  2539. encountered. The routine which identifies which objects are Folders
  2540. or have a WPS Class that is derived from WPFolder has been changed to
  2541. fix this problem.
  2542.  
  2543. 5. Still another problem was found in the Repair Uninstalled Printers
  2544. routine and fixed.
  2545.  
  2546. 6. There were a couple of places in the code where an Application/Key
  2547. Name combination with a one byte Key Value would be interpreted as a
  2548. missing Key Name. This was code that was left over from an old
  2549. problem with one of the Prf API's. All of the affected areas have
  2550. been updated so that only a true return of Zero from the appropriate
  2551. API will be interpreted as a missing Key Name/Value combination.
  2552.  
  2553. 7. An additional Option has been added to the Desktop Default Dialog
  2554. that will allow the user to specify whether they want the System
  2555. Attribute reset whenever the Backup CMD File is rebuilt. This Option
  2556. only applies to OS/2 V2.1 with the SP and beyond. In order to insure
  2557. that the User makes a decision on this issue, the first time that a
  2558. Backup CMD file is created under the appropriate version of OS/2, the
  2559. user will be asked how they want to handle this area. Once this
  2560. question is answered a single time and the Option is set, based on
  2561. the answer, the user will not be asked the question a second time,
  2562. but can always modify the Option by using the Desktop Defaults
  2563. Dialog.
  2564.  
  2565. 8. There was a problem with the position of Objects Restored to the
  2566. Desktop would not be preserved once the Desktop was reset. This
  2567. problem occurs on Desktops that have installed the OS/2 V2.1 SP and
  2568. beyond. In the process of working on this problem, it was discovered
  2569. that the Reset of the Desktop after Restoring Objects with the Safe
  2570. Restore Box unchecked was not necessary for this version of OS/2.
  2571. Therefore, the code has been modified so that the Reset of the
  2572. Desktop will not be done for OS/2 2.1 SP and beyond.
  2573.  
  2574. 9. Solving the problem described in 8. above created a new problem for
  2575. the situations where an Object is Restored to the Desktop, the Class
  2576. of the Restored Object replaces an existing Class and the new Class
  2577. is not already registered.  In this case, the replacement will not be
  2578. effective until the Desktop is Shutdown and OS/2 is Rebooted.
  2579. Therefore, code has been added to identify when the Shutdown should
  2580. occur and will either do the Shutdown or ask the user if they want
  2581. the Shutdown to be done, based on a new Option in the Portable
  2582. Defaults Dialog.
  2583.  
  2584. 10. The best thing to do after a number of Objects have been Restored
  2585. via the Portable Restore is to immediately Shutdown the Desktop and
  2586. Reboot OS/2. Additional code has been added to ask the user if they
  2587. want this done, assuming that the condition described in 9. above
  2588. does not exist. This feature can be truned off via a new Option in
  2589. the Portable Defaults Dialog.
  2590.  
  2591. 11. For versions of OS/2 prior to 2.1 with the SP, the Desktop would
  2592. get Reset if certain kinds of Restores were done. The user had no
  2593. control over whether this was doen or not. In order to give the user
  2594. additional control, a new Option has been added to the Portable
  2595. Backup Defaults Dialog that will allow the user to decide whether the
  2596. Reset should be done or not.
  2597.  
  2598. 12. At least one situation has occurred where the Hidden Attribute
  2599. was left on the OS2SYS.INI file. In order to prevent this from
  2600. creating a problem with the Snapshot Desktop Backup, all of the lines
  2601. in the CMD files that remove the System Attribute have been changed
  2602. to also remove the Hidden Attribute. Since the Hidden Attribute is
  2603. virtually never set, this will have no effect except in those
  2604. situations where it is critically important.
  2605.  
  2606. 13. Since it is easy to set file associations in OS/2 2.0 and beyond,
  2607. the entry on the File Menu to do this, which was included because of
  2608. problems with OS/2 V1.3, has been removed.
  2609.  
  2610. 14. There were a number of places where warnings were issued to users
  2611. before various functions were performed. While these warnings are
  2612. important for most users, there are a number os experienced users who
  2613. are aware of the issues involved with some or all of the various
  2614. functions that were the subject of the warnings. In these cases, the
  2615. users felt that the warnings were in the way and an irritation. In
  2616. order to address this, additiional options have been added to the
  2617. Options Dialog, the Repair Options Dialog and the Desktop Defaults
  2618. Dialog that will give the user the ability to r=turn off the
  2619. following warnings:
  2620.    1. Change the User and/or System INI file
  2621.    2. Repair the File Handles
  2622.    3. Destroy Desktop Objects
  2623.    4. Reset Desktop Directory
  2624.    5. Restore the Desktop INI Files
  2625.    6. Build the Desktop Restore CMD File
  2626.    7. Reset the Desktop WPS ID
  2627.  
  2628. ******************************* V3.0m  *******************************
  2629.  
  2630. The items fixed in Version 3.0m are:
  2631.  
  2632. 1. There was an additional place in the Repair File Handles and
  2633. Repair WPS Entries where a Not Ready Condition on a drive would
  2634. result in a logic error 1109 rather than the drive being marked as
  2635. not accessable. Code has been added to fix the condition.
  2636.  
  2637. 2. In order to make it easier to handle the Defaults for the Portable
  2638. Restore, an additional button has been added to the bottom of the
  2639. dialog that will allow the user to bring up the Defaults Dialog while
  2640. the Portable Restore Dialog is active and change the defaults without
  2641. having to dismiss the Portable Restore Dialog, change the defaults
  2642. and then restart the Restore.
  2643.  
  2644. 3. To aid in diagnosing problems a Dump button has been added to the
  2645. Portable Restore Defaults Dialog. This alone with the change above,
  2646. will make it possible to obtain a dump while the Portable Restore is
  2647. active.
  2648.  
  2649. 4. One of the new Options in the Portable Defaults Dialog would get
  2650. set incorrectly because of an incoorect variable name. The code has
  2651. been corrected.
  2652.  
  2653. 5. A new Option has been added to the Portable Defaults Dialog,
  2654. Select Lower Level. If this Option is checked, then selecting or
  2655. deselecting any entry in the Portable Restore Dialog will
  2656. automatically make all lower level entries have the same selection
  2657. state. For example, if this Option is checked and a Folder is
  2658. Selected for Restore, then all items in the Folder will also be
  2659. selected. This makes it much easier to Restore an Entire Folder and
  2660. its contents, since everything can be selected with one click of the
  2661. mouse.
  2662.  
  2663. 6. The sequence of the entries in the Repair Dialog drop down list
  2664. has been changed to put the Repair Options in a sequence which more
  2665. closely reflects their probability of being selected by the user.
  2666.  
  2667. 7. Two new Types of Repair have been added, Do All WPS, PM and File
  2668. Handle Repairs and Do All Individual INI File Repairs. Each of these
  2669. is a short hand way to do a group of Repairs with a single selection
  2670. and are designed to make it easier for the experienced user to use
  2671. the various Repair functions.
  2672.  
  2673. 8. Additional text has been added to the Help entry for What does
  2674. Repair Do. The purpose of the addtional explanation is to make a
  2675. better distinction between those kinds of Repairs that are System
  2676. level Repairs and will always do the same thing, no matter what is
  2677. the current INI file, and the Individual File Repairs that apply only
  2678. to the current INI file. Many users have been confused by this
  2679. difference and thought that it was necessary to have the OS2.INI file
  2680. as the current file when the WPS, PM or File Handle Repairs were
  2681. done. In addition, some users would do the System Level Repairs more
  2682. than one time, with different INI files as the current file. While
  2683. this did not do any damage, it was a waste of the user's time, so an
  2684. attempt has been made to make this area more clear.
  2685.  
  2686. 9. In certain Network Printer situations, the Delete Unused Printers
  2687. Repair would attempt a compare using a NULL pointer, thus causing a
  2688. SYS3175 Abend. An additional check has been inserted to fix this
  2689. problem.
  2690.  
  2691. 10. The various documentation files and the Online Help were not
  2692. clear about the fact that IniMaint is a Shareware program, but the
  2693. other applications, SysMaint and MultiMaint, are not and can only be
  2694. tried by registering them. A number of changes have been made to all
  2695. the file affected to insure that this difference is as clear as
  2696. possible to all users.
  2697.  
  2698. 11. The temporary files left by WPSBackup have been removed from the
  2699. code that bypasses standard errors. These references should be
  2700. removed from the File Handle Structure, since they do not exist at
  2701. the time the Repair is done.
  2702.  
  2703. 12. There were some problems with the code that tested the User and
  2704. System INI files to see if they could be written to. One problem
  2705. would cause an immediate logic error if the user had already been
  2706. informed of the problem and had chosen not to do anything about it.
  2707. However, there were a couple of other combinations that could also
  2708. cause an error. The code has been substantially reworked so that it
  2709. will not operate as expected.
  2710.  
  2711. 13. It was possible, although fairly hard, to get the window size
  2712. small enough that it would appear that the main window was not
  2713. visible. It was also possible to change the position of the window so
  2714. that it was not visible on the screen. Changes have been made so that
  2715. neither of these conditions can now be set.
  2716.  
  2717. 14. A new entry has been added to the SysMaint Extended Attribute
  2718. Menu: Delete. Selecting this entry is exactly the same as Split in
  2719. that the Extended Attributes are deleted from the source
  2720. Directory/Files selected. However, the EA's are not saved in another
  2721. file so that thye can be reattached at a later time. This item was
  2722. added for two reasons. First, it was not clear to many users that the
  2723. Extended Attributes could be deleted. Second, there are occasions
  2724. where all the user wants to do is delete the EAs and has no desire or
  2725. need to save them.
  2726.  
  2727. 15. If there were a large number of Printers in the OS2SYS.INI file,
  2728. the Delete Unused Printers could have a problem with the reallocation
  2729. of a memory area causing a SYS3175 filling the Repair Window. The
  2730. code has been changed to increase the size of the memory area so the
  2731. error will no long occur.
  2732.  
  2733. 16. Improvements have been made in the Repair Directory and File
  2734. Handle code so that it will handle Directories and Files on Network
  2735. Drives better. The changes will now still look for Directories and/or
  2736. Files on Network Drives that cannot be opened by the DosOpen API.
  2737.  
  2738. 17. There were some VDISK devices which were not correctly recognized
  2739. since they appeared with a floppy drive type. An additional check has
  2740. been inserted in the code that handles the floppy drives so that
  2741. these drives will be correctly identified as VDISK drives.
  2742.  
  2743. 18. A new Option has been added to the Desktop Defaults Dialog,
  2744. Do Restore CMD when Backup. If this Option is checked then the
  2745. Desktop Restore CMD file will always be generated whenever a Desktop
  2746. Backup is made.
  2747.  
  2748. 19. The ability to Backup files that are not an intergral part of the
  2749. Desktop, Supplemental Backup, has been added to the Desktop
  2750. capabilities of SysMaint. Adding this capability involves a number of
  2751. new entries on the Menu, including an item to manage the list of
  2752. files to be included in the Supplemental Backup, the ability to
  2753. Create the Backup and Restore CMD Files and the entries to do the
  2754. actual Suppplemental Backup and Restore. In addition, an Option has
  2755. been added to the Desktop Defaults Dialog that will cause the
  2756. Supplemental Backup and Restore to be included with the standard
  2757. Desktop Backup and Restore.
  2758.  
  2759. 20. The Desktop Restore CMD file has been changed to improve the
  2760. reliability of the Restore by adding a parameter to the UNZIP line
  2761. that will force the file to be Restored to the correct drive no
  2762. matter which drive is the default drive.
  2763.  
  2764. 21. The Deleted Unused Printers code would not identify some printers
  2765. as not being installed if the information in the OS2SYS.INI file was
  2766. consistant. Code has been added to check the list of valid printers
  2767. against the Printer Object information that is in the INI files. Even
  2768. if the printer information is consistant, a printer will be marked as
  2769. uninstalled if there is no Printer Object information for the
  2770. Printer.
  2771.  
  2772. 22. A additional check has been added to the Repair File Handles code
  2773. that will identify the situations where a drive letter for a specific
  2774. drive gets replaced with a filename. When this happens, all of the
  2775. files on the drive are identified by WPS as being in the Directory
  2776. and the File Handles cannot be used. This condition will be identifed
  2777. as an Invalid Root NODE and can be fixed by the File Handle Repair
  2778. routine.
  2779.  
  2780. 23. If a File Handle was correctly identified as being on a Network,
  2781. CDROM or VDISK drive and there was a WPS OBject associated with the
  2782. File Handle, the WPS Repair code would mark the Object as being
  2783. invalid. The WPS Repair code has been changed so that it will no
  2784. longer treat File Handles as invalid locations for WPS Objects in
  2785. these situations.
  2786.  
  2787. ******************************* V3.0n  *******************************
  2788.  
  2789. The items fixed in Version 3.0n are:
  2790.  
  2791. 1. Since it can take sometime to process the Extended Attributes if a
  2792. large number of Directories and/or Files are selected, the name of
  2793. the Directory or File currently being worked on will not be displayed
  2794. in the Working Dialog.
  2795.  
  2796. 2. The Portable Restore in V3.0m would not initialize unless there
  2797. was a file in the Backup Directory with the Portable Backup Root
  2798. filename, but with no extension. For example, PORTBK01. This was
  2799. caused by a problem in the routine that gets the generation the user
  2800. wants to use and has been fixed.
  2801.  
  2802. ******************************* V3.0o  *******************************
  2803.  
  2804. The items fixed in Version 3.0o are:
  2805.  
  2806. 1. The loading of the Portable Restore window was done as part of the
  2807. normal PM thread, but it takes too long to be in this thread, so it
  2808. has been moved to a secondary thread.
  2809.  
  2810. 2. The in progress type Dialog Box that is displayed in a number of
  2811. situations has been modified to make it longer and to have it dispaly
  2812. a second line of information showing what item is being worked on.
  2813. For example, the Processing EAs progress dialog will now list the
  2814. Path or Filename that it is currently working on. Even though the
  2815. list changes very quickly, it makes it clear to the user that
  2816. something is going on and allows the user to get an idea of how close
  2817. they are to being finished. This has also been extended to all of the
  2818. Portable Backup and Restore Dialogs, since some of these operations
  2819. can take a relatively long time.
  2820.  
  2821. 3. When Display or Destory Objects was selected in the Repair Dialog,
  2822. the list of Objects was inserted in the Window in the sequence that
  2823. they were found in the INI files. This made it difficult to find a
  2824. specific Object. In order to make this easier, the list of Objects
  2825. will not be sorted before the window is displayed.
  2826.  
  2827. 4. If an attempt was made to create the Supplemental Backup or
  2828. Restore CMD files, but no Supplemental Files had been chosen, then
  2829. the generated CMD file did nothing other than update the existing
  2830. generations. The routines have been changed to test for any
  2831. Supplemental Files before the CMD file is generated and inform the
  2832. user that they must select at least one Supplemental File before the
  2833. CMD files can be generated.
  2834.  
  2835. 5. If the user selected to have the Supplemental Backup and Restore
  2836. done at the same time as the normal Backup and Restore, but had not
  2837. yet build the Supplemental Backup and/or Restore CMD files. The
  2838. normal Backup and Restore CMD files would be built without the line
  2839. to call the Supplemental Backup and/or Restore CMD file. However, the
  2840. user was not informed of this. The code has been modified so the user
  2841. will be informaed and will be given an opportunity to build the
  2842. Supplemental Backup and/or Restore CMD file at the time it is
  2843. discovered that it is missing.
  2844.  
  2845. ******************************* V3.0p  *******************************
  2846.  
  2847. The items fixed in Version 3.0p are:
  2848.  
  2849. 1. The MultiMaint Portable Restore would get a Logic Error 1701 if
  2850. the Desktop being Restored did not have any Objects on it that were
  2851. not standard Class Objects. This was caused by an attempt to allocate
  2852. a new class structure even though there were no new classes.
  2853.  
  2854. 2. There was nothing in the Help that told the users that the
  2855. Condense was not necessary for OS/2 V2.1 and higher, so it has been
  2856. added.
  2857.  
  2858. 3. Some additional Network error checks were addded to the Repair
  2859. File Handles routines to fix a problem with some network situations.
  2860. Specifically, one user got a Logic Error 1109 with a Dos Error of 53,
  2861. which was not handled by the Repair routines.
  2862.  
  2863. 4. The code in the WPS Repair routines to bypass the invalid entry
  2864. placed in the OS2.INI file for the Deskman/2 Setup was incorrect. The
  2865. code was looking for DMSetup and should have been looking for
  2866. DM2Setup.
  2867.  
  2868. 5. The Restore CMD file generated by the Desktop Menu did not check
  2869. the return code from IniClean. Therefore, the Restore would not pause
  2870. if there was an error removing the current Desktop. Additional lines
  2871. have been added to the CMD file  to make this check, pause the
  2872. execution of the CMD file and give the user the option of continuing
  2873. or terminating the run at that point.
  2874.  
  2875. 6. At least one user has installed a new version of VDISK that is not
  2876. being correctly identified by the File Handle Repair routines as a
  2877. VDISK, but is being identified as an Unknown Drive. In addition,
  2878. users who have Network File Handles and do a File Handle Repair will
  2879. have the Network entries identified as Invalid or as Unknown Drives.
  2880. In both of these cases, the user does not want the information
  2881. removed from the File Handle structure, but there was no way to do
  2882. this other than removed the Invlaid File Handles on a selected basis.
  2883. In order to address both of these problems, two additional sets of
  2884. entries have been added to the Repair Options Dialog that will allow
  2885. the user to Ignore or only report these types of entries. This will
  2886. make it considerably easier to bypass these entries when the user
  2887. has either of these conditions.
  2888.  
  2889. 7. The code to bypass the Deskman/2 Install entry that is incorrectly
  2890. placed in the PM_Workplace:Location application in the OS2.INI file
  2891. was incorrect. The code was looking for a Key Name with DMSetup and
  2892. the correct Key Name is DM2Setup. The code has been changed so that
  2893. it will look for the correct entry.
  2894.  
  2895. 8. If the Restore CMD file included the Supplemental Restore, the
  2896. generation number the user wanted to use for the Restore was not
  2897. passed on to the Supplemental Restore CMD file. The creation of the
  2898. Restore CMD file has been modified to now pass along the generation.
  2899.  
  2900. 9. There were some places where file names, which could contain
  2901. blanks, were not enclosed in quotes in the Restore CMD file. This has
  2902. been fixed.
  2903.  
  2904. 10. If the Repair Item Window had the Focus and Help was requested
  2905. while the Repair Dialog was on the screen, a Logic Error 5106 would
  2906. occur with a Help Error of 2010. This was caused by the fact that
  2907. there was no Help written for the Item Window although a Help Panel
  2908. ID was defined. The Help for the Repair Item Window has been written
  2909. and placed in the file.
  2910.  
  2911. 11. There were a number of situations where a SYS3175 could occur at
  2912. the end of the processing of a Backup or Restore function because
  2913. of a change in the INI files without closing the current INI file or
  2914. closing the current INI file without testing if there was an update
  2915. outstanding. All of these situations have been corrected and the
  2916. update routine has been modified so that it will check for an open
  2917. file before it attempts to write a change to the current file.
  2918.  
  2919. 12. There were situations where the controls for one Dialog would
  2920. bleed through to a dialog that was overlaying it. This was most
  2921. common with the New Files Dialog when it overlaid things like the
  2922. Supplemental Files or Repair Options Dialogs. The problem was caused
  2923. by in incorrect Parent Window for the overlaying Dialog and all of
  2924. these condtions have been fixed.
  2925.  
  2926. 13. The Add DOS entry in the Supplemental Backup Files Dialog would
  2927. add the AUTOEXEC.BAT type files for all of the Objects on the
  2928. Desktop, but would not add the default AUTOEXEC.BAT file, if it was
  2929. not there. Addtional code has been added to the Add DOS routine to
  2930. insure that the default AUTOEXEC.BAT file is included, if it can be
  2931. found.
  2932.  
  2933. 14. If Bypass Known Errors is selected in the Repair Options Dialog,
  2934. then any entry in PM_Workplace:Locations that has an Object Handle
  2935. that is in the WPTransient range, but does not have an Entry in the
  2936. PM_Abstract:Objects application will be treated as a generic
  2937. Transient Object. This condition occurs when an ObjectID is assigned
  2938. to a WPTransient Object or an Object derived from WPTransient.
  2939.  
  2940. 15. Some code that was being used to test Drag and Drop situations,
  2941. but had not yet been fully tested was left active. This could cause a
  2942. number of different problems if something was dropped on one of the
  2943. windows. The code has been changed so it is no longer active.
  2944.  
  2945. ******************************* V3.1  *******************************
  2946.  
  2947. The items fixed in Version 3.1 are:
  2948.  
  2949. 1. If there were no Printers installed and the Repair Unused Printers was 
  2950. attempted, the message box that said that the Repair could not continue. 
  2951. The Printer Repair routine has been updated so that it will recognize the
  2952. situation where there is no printer installed and simply no Repair anything.
  2953. The message box text has also been changed so that it is clear that only the
  2954. Printer Repair cannot continue when the Printer Repair routine encounters 
  2955. an error.
  2956.  
  2957. 2. When an attempt was made to switch the contents of the Portable Restore
  2958. Window, the Changing Contents Dialog was never removed from the screen
  2959. and would overlay the window contents. Code has been added to insure that
  2960. the Changing Contents Dialog is removed.
  2961.  
  2962. 3. There were situations where the WPS method used to set the name of a
  2963. Printer Object would return a FALSE return code for unknown reasons. Since
  2964. the Name is not critical to the Object, but would terminate the Restore
  2965. for that Object at that point, the code has been changed to continue with
  2966. the Restore of the Object even if thie Method does not give a good return.
  2967. If logging is active, the fact that the return was bad will be logged,
  2968. but the Restore of the Printer Object will continue in any case.
  2969.  
  2970. 4. The Restore Objects code has been changed to add the Style information
  2971. to the string used to set the initial Object information. This was done to
  2972. address problems with Restoring certain Template Objects that would return
  2973. an error return code from the WPS method used to set this information.
  2974.  
  2975. 5. The WPS method used to set the Icon information for certain Template
  2976. Objects returns an error return code even though the information is set
  2977. correctly. Therefore, the code has been changed to simply bypass this
  2978. error return and log it to the logging file, if it occurs.
  2979.  
  2980. 6. When a new Backup Directory or a new name for one of the Backup
  2981. CMD files was chosen, it was often the case that the user really
  2982. wanted to change all of the CMD files to a new Directory. The only
  2983. way to do this was to do them one at a time. In order to make this
  2984. easier, a new Option has been added to the Desktop Defaults Dialog
  2985. that allows the user to specify that they want all of the Paths
  2986. changed when any of the Paths change.
  2987.  
  2988. 7. The Icon used by all three applications has been changed in order
  2989. to avoid possible copyright problems.
  2990.  
  2991. 8. There have been a few situations where there were too many
  2992. Applications, Key Names or User Data entries for the capacity of the
  2993. window control used to hold the information. When this occurred, a
  2994. logic error 607 would be reported. The fact that an error was
  2995. reported did not give the user the ability to do anything about the
  2996. problem, even when it was understood. In order to address this, the
  2997. user will now be informed that the problem has occurred and be given
  2998. the option of continuing with as much data as could be loaded into
  2999. the window in question.
  3000.  
  3001. 9. The Supplemental Backup has been changed so that the user can
  3002. specify a User Backup and Restore CMD  file. If specified, the CMD
  3003. files will be run when the Supplemental Backup and Restore are run
  3004. assuming the CMD files can be found.
  3005.  
  3006. 10. Wildcards  can now be used in the Filenames for the Supplemental
  3007. Backup and Restore, thus making it easier to specify a group of
  3008. files.
  3009.  
  3010. ******************************* V3.1a *******************************
  3011.  
  3012. The items fixed in Version 3.1a are:
  3013.  
  3014. 1. The code to check path and file names did not handle an Access
  3015. Denied error return correctly. This error is returned in some cases
  3016. in Network situations and the routine has been modified to handle it.
  3017.  
  3018. 2. The maximum length for a Key Value that could be modified via the
  3019. Replace Key Value entry on the Action Menu was 2000 bytes. This turns
  3020. out to be too small, so the maximum value has been increased to 7000
  3021. bytes.
  3022.  
  3023. 3. There were a number of places where a loop could occur trying to
  3024. post an error message if sending a message to a window failed. All of
  3025. these situations have been fixed.
  3026.  
  3027. 4. The Folder Sort information will now be Saved and Restored by the
  3028. Portable Backup and Restore code even if the Safe Backup and Restore
  3029. Option is chosen.
  3030.  
  3031. 5. A new feature has been added to MultiMaint that allows the user to
  3032. Display and/or Modify virtually all of the Object information for all
  3033. of the Objects on the Desktop. Although most of this can be done via
  3034. the Settings Notebook, it can only be done one Object at a time. The
  3035. MultiMaint feature allows the user to specify ranges of Objects that
  3036. they want to work with in a number of different ways, making it
  3037. extremely easy to Display and/or Modify all of the Objects in a very
  3038. short time and with little effort.
  3039.  
  3040. 6. If a Shadow of a File Based Object, like a Folder, was created, a
  3041. Portable Backup of the Desktop made, the File Object the Deleted and
  3042. recreated and a Portable Restore was done. The Shadow was not
  3043. recreated even though it was destroyed when the original Object was
  3044. removed. The rules for recreating Shadows has been changed so that
  3045. this condition will not be handled correctly.
  3046.  
  3047. 7. The Safe versions of SysMaint and MultiMaint would not correctly
  3048. set up the menu structure because they would not check for the
  3049. registration information. The check will now be made.
  3050.  
  3051. 8. There were situations where the Open Size and Position for Folders
  3052. would use an old value in place of the current one because there were
  3053. two entries in the OS2.INI file and the wrong one was looked for
  3054. first. The sequence has been changed and the correct information will
  3055. now always be used.
  3056.  
  3057. 9. One user got a logic Error 1720 while making a Portable Backup of the 
  3058. Desktop. The diagnostic information in the Dump File was not sufficient to 
  3059. adequately diagnose the problem and identify which Object was in the process 
  3060. of being processed when the error occurred. Addtional code has been added to 
  3061. insure that this problem is adequately reported.
  3062.  
  3063. 10. In reference to 9. above, the way the memory is handled for the 
  3064. wpQueryIconData method has been made even more conservative that it was 
  3065. before and should fix the 1720 Logic Error.
  3066.  
  3067. ******************************* V3.1b *******************************
  3068.  
  3069. The items fixed in Version 3.1b are:
  3070.  
  3071. 1. The MultiMaint Modify Settings for the Object Style has been changed from 
  3072. just a number to a different setting for each Style.
  3073.  
  3074. 2. The necessary modifications for the Safe versions of the programs has been 
  3075. included.
  3076.  
  3077. 3. When modifying the Object Settings in MultiMaint and the Ignore Remaining 
  3078. or Do Remaining checkboxes were checked. The flags were not reset before the 
  3079. next type of change was chosen. Therefore, the dialogs never appeared, but 
  3080. the action inidcated by the checkboxes from the previous operation was 
  3081. automatically executed for every Object. Since everything was, by definition, 
  3082. unchanged, the net effect was that it was not possible to change anything.
  3083.  
  3084. 4. Code has been added to interpret and correctly set the Default View 
  3085. information for the MulitMaint Modify Settings Dialog.
  3086.  
  3087. 5. Code has been added to interpret and correctly set the Program Type 
  3088. information for the MulitMaint Modify Settings Dialog.
  3089.  
  3090. 6. A couple of minor adjustments have been made ot the Select New file 
  3091. routine to correct problems some users were having.
  3092.  
  3093. 7. Some of the default menus in the MultiMaint Object Settings dialog did not 
  3094. have any defualt menu items. This caused the menus to only stay on the screen 
  3095. if the mouse button was held down. Default entries have been added, so that 
  3096. this is no longer necessary.
  3097.  
  3098. 8. Some of the Settings information for the Drives Objects for the individual 
  3099. drives was not saved and restored correctly because the WPDisk Class was not 
  3100. included in the list of classes for which this information was needed. These 
  3101. Objects will now have all of the appropriate information saved and restored.
  3102.  
  3103. 9. Becuase of 8. above the MultiMaint Settings Dialog would not Display or 
  3104. Modify the Always Maintain Sort Order flag for the individual Drive Objects, 
  3105. but will now do it correctly.
  3106.  
  3107. 10. Some of the System Accelerator Keys Alt-Fx were used by various menu 
  3108. functions and this interferred with using the Keys for the standard OS/2 
  3109. system things. The Accelerator Key use has been changed to avoid Alt-F4 thru 
  3110. Alt-F10.
  3111.  
  3112. 11. When any of the WPS Settings were displayed, the Dialog button to go back 
  3113. to the main Display or Modify Dialog had the text "Exit". This is confusing 
  3114. since it implies Exiting from the entire function. Therefore, the text has 
  3115. been changed to "OK".
  3116.  
  3117. 12. The MultiMaint Display or Modify Object Settings Filter Menu did not 
  3118. identify which of the Class Type menu items was set by placing a checkmark 
  3119. next to the current filter setting. Code has been added to supply the 
  3120. checkmark for the current filter.
  3121.  
  3122. 13. An option has been added to the MultiMaint Display or Modify Object 
  3123. Settings Filter Menu that allows the user to limit the contents of the window 
  3124. to only those Objects that pass the Class Include/Exclude Filter. This can be 
  3125. used to limit the number of Objects that are currently displayed.
  3126.  
  3127. 14. An option has been added to the MultiMaint Display or Modify Object 
  3128. Settings Filter Menu that allows the user to cause the Filter Type setting 
  3129. information to be remembered from one use of the dialog to the next. This 
  3130. allows the user to control the initial contents of the window from the time 
  3131. that the dialog is initially invoked from the Main Menu. The only thing that 
  3132. will not be remembered from one time to the next is any Classes that were 
  3133. specifically Included or Excluded.
  3134.  
  3135. 15. The SysMaint Desktop Backup and Restore code would not handle
  3136. Hidden Files correctly if they were in one of the Desktop
  3137. Directories. First, the Back CMD file would not include these files
  3138. in the ZIP of the Desktop Directoru structure, since the -S parameter
  3139. was not included for ZIP. Second, the IniClean program would not find
  3140. Hidden files, therefore, would not delete them and would leave one or
  3141. more Directories in the old structure. Both of these problems have
  3142. been fixed.
  3143.  
  3144. 16. The ability to select Objects by Name has been added to the
  3145. MultiMaint Object Settings Dialog Menu.
  3146.  
  3147. ******************************* V3.1c *******************************
  3148.  
  3149. The items fixed in Version 3.1c are:
  3150.  
  3151. 1. A number of improvements were made in the initialization of the
  3152. MultiMaint Agent Object.
  3153.  
  3154. 2. The Folder Attributes will not be presented in interpreted form
  3155. rather than as a hex value.
  3156.  
  3157. 3. The Title has been removed as one of the things that can be
  3158. changed in the MultiMaint Settings, since it is not something that can
  3159. be changed globally and changing the Title has many side effects that
  3160. are difficult to handle.
  3161.  
  3162. 4. The code to correctly handle changing the type of Windows Program
  3163. between Enhanced and Standard has been added to the MultiMaint
  3164. Settings routines.
  3165.  
  3166. 5. Code has been added to inform the user that the WIN_CLIPBOARD
  3167. setting cannot currently be changed, since we do not currently know
  3168. how to legally set this value.
  3169.  
  3170. 6. When a Program Object is Restored via the Portable Restore and the EXE or 
  3171. Startup Directory cannot be found, an attempt is now made to find the file or 
  3172. directory anywhere on the HD. If they can be found, the name will be 
  3173. automatically adjusted to the new name. This algorithm will always handle 
  3174. situations where the files or directories have simply been moved from one 
  3175. drive to another preserving the directory structure.
  3176.  
  3177. 7. There was sometimes problems doing a Shutdown after the AccessWPS Agent 
  3178. Object was used. This is because there were some objects left in a locked 
  3179. condition. The code has been changed so that this will no longer be the case.
  3180.  
  3181. 8. There were a number of situations, including some on my own system, where 
  3182. the AccessWPS Agent would terminate with a 10209 error. This error indicates 
  3183. that the Agent Class has terminated. It appears that the problem was caused 
  3184. by the Class Uninit Data Method being called even though the Agent Object was 
  3185. still active. Code has been added in the Class Uninit Method to handle this 
  3186. situation.
  3187.  
  3188. ******************************* V3.1d *******************************
  3189.  
  3190. The items fixed in Version 3.1d are:
  3191.  
  3192. 1. The method for collecting the Objects in a Folder was changed back to the 
  3193. prior method with the addition of an Unlock of each Object. This was done 
  3194. because many users had problems with the new method and the only reason for 
  3195. the switch in the first place was a problem shutting down the Desktop and the 
  3196. Unlock fixes that problem.
  3197.  
  3198. 2. Code was added to both AcsTest and MultiMaint to tell the user that the 
  3199. AcsAgent.DLL file was probably in the wrong directory if the user gets a 
  3200. 10200 error code.
  3201.  
  3202. 3. If there was a problem during the initialization or termination of the 
  3203. AccessWPS Object when working with the Object Settings item. The generic 
  3204. logic error code of 1 was reported, rather than the error code returned from 
  3205. AccessWPS. The Object Settings routine has been changed to report the error 
  3206. code correctly.
  3207.  
  3208. ******************************* V3.1e *******************************
  3209.  
  3210. The items fixed in Version 3.1e are:
  3211.  
  3212. 1. The code for the WPS Settings Dialog needs to collect detail Object data 
  3213. on Shadows in order to insure that all of the Shadow crossreference 
  3214. information is displayed, when requested. This was being done at the same 
  3215. time that the basic information was collected. This was causing errors in a 
  3216. number of situations because of the placement of the Shadows relative to the 
  3217. Object being Shadowed. The code has been changed to go all the way through 
  3218. the collection of the basic information before the Shadow information is 
  3219. collected.
  3220.  
  3221. 2. If the INIMAINT= entry was included in the CONFIG.SYS file and the 
  3222. OS2SYS.INI or OS2.INI files could not be written to, the user was not 
  3223. informed of the situation at startup time. Additional code has been added to 
  3224. insure that the user is informed no matter what is coded in the CONFIG.SYS 
  3225. file.
  3226.  
  3227. 3. There were a number of places where very long real names or titles for WPS 
  3228. Objects would cause corruption of the Stack during any of the various WPS 
  3229. operations. This has been fixed by making the size of the variable dynamic 
  3230. and based on the max path length, moving the varible from the Stack to the 
  3231. Heap and increasing the size from 100 more than the maximum path to 10 times 
  3232. the maximum path.
  3233.  
  3234. ******************************* V3.1f *******************************
  3235.  
  3236. The items fixed in Version 3.1f are:
  3237.  
  3238. 1. MutliMaint was collecting WPS Instance information on Shadow Objects that 
  3239. is not valid for Shadows. This was not causing a problem on V2.11, but was 
  3240. cauing a SYS3175 in SOM.DLL on later versions of OS/2. The code has been 
  3241. modified tono longer collect the inappropriate instance information for 
  3242. Shadow Objects.
  3243.  
  3244. ******************************* V3.1g *******************************
  3245.  
  3246. The items fixed in Version 3.1g are:
  3247.  
  3248. 1. MutliMaint was unlocking every Object for which it was collecting 
  3249. information because of a past problem with Shutdown. This was causing a 
  3250. SYS3175 in SOM.DLL. The code has been modified to no longer unlock the 
  3251. Objects. In other words, the fix above fixed the wrong thing.
  3252.  
  3253. ******************************* V3.1h *******************************
  3254.  
  3255. The items fixed in Version 3.1h are:
  3256.  
  3257. 1. The Object Settings Dialog would get a SYS3175 if any of the Settings for 
  3258. the Desktop were requested. This was caused by the fact that the Desktop is 
  3259. not contained in another Folder, so the Folder EAs cannot be found. 
  3260. Additional code has been added to avoid making these checks for the Desktop.
  3261.  
  3262. 2. There were situations where Objects that were not one of the standard WPS 
  3263. Classes could have some of the instance information Restored incorrectly by 
  3264. the Portable Restore. Additional checks have been added to fix the problem.
  3265.  
  3266. 3. The Portable Restore could get a SYS3171 error Restoring Objects for the 
  3267. Devcons Class, which is derived from WPShadow. This has been fixed.
  3268.  
  3269. 4. The Unlock of the Objects that was causing a problem in previous versions 
  3270. has been moved to after all of the Object Instance information has been 
  3271. collected. This will avoid the SYS3175 in SOM.DLL that was caused by the WPS 
  3272. pointer to the Object becoming invalid.
  3273.  
  3274. 5. In a number of Network situations, Network Drives, Directories and Files 
  3275. were treated as Access Denied by the Repair routines. This was especially 
  3276. true if the system was not currently logged onto the Network. This presented 
  3277. a problem because there was no option in the Repair Options Dialog that 
  3278. allows the user to bypass these entries. In order to address this problem, 
  3279. the Access Denied entries will not be included with the Not Ready entries. 
  3280. This will allow the bypassing of these entries by using the Ignore Not Ready 
  3281. entry in the Repair Options Dialog.
  3282.  
  3283. 6. There were additional siuations where the lock count for an Object count 
  3284. get reduced to zero before MultiMaint was finished with it or MultiMaint 
  3285. would not return the lock count to the correct level causing an extremely 
  3286. slow Shutdown process. The entire area of controlling the lock count has been 
  3287. upgraded so that a very positive control is kept over the number of times an 
  3288. Object has been locked by MultiMaint and the cleanup code insures that 
  3289. exactly the appropriate number of locks are removed.
  3290.  
  3291. 7. The ability to add a description to each of the Desktop, Supplemental or 
  3292. Portable Backup Generations has been added. There is a new option in the 
  3293. Default Dialogs that will activate this feature. If the feature is turned on 
  3294. then the user will be asked for a description at the end of each of the 
  3295. Backup executions. The description will be stored as the .COMMENTS Extended 
  3296. Attribute for the appropriate file. When any of the Restore operations is 
  3297. requested, the descriptions of the current generations will be selected and 
  3298. the user can then choose the generation they wish to restore. A new Submenu 
  3299. has also been added to the Desktop Menu that allows the user to display the 
  3300. descriptions for each set of Backup Files.
  3301.  
  3302. ******************************* V3.2 *******************************
  3303.  
  3304. The items fixed in Version 3.2 are:
  3305.  
  3306. 1. A new diagnostic ability has been added that can only be activated while 
  3307. the About Dialog is on the screen and then only with specific key 
  3308. combinations. The specific diagnostic condition will only be used to debug 
  3309. specific situations, so the key combinations will be given out at that time.
  3310.  
  3311. 2. An additional capability has been added to the Desktop Restore function. 
  3312. Since it is possible that a user might have information in their current 
  3313. OS2*.INI files that they would like to preserve and transfer to the Restored 
  3314. OS2*.INI files, it is now possible to specify that the Desktop Restore CMD 
  3315. file make a Backup copy of these files before replacing them. If this option 
  3316. in the Desktop Defaults Dialog is activated, then the OS2*.INI files will be 
  3317. copied to OS2*.PRV files in the same subdirectory before the Restore is done.
  3318.  
  3319. 3. In the WPS Object Settings Dialog, there were some menu entries that would 
  3320. not normally be selected but would cause the dialog to be dismissed if they 
  3321. were. In addition, this would set up a situation where a SYS3175 would occur 
  3322. if the WPS Settings were requested a second time without the application 
  3323. being restarted. Even if the application was restarted, the WPS Agent would 
  3324. not correctly initialize. All of these have now been fixed.
  3325.  
  3326. ******************************* V3.2a *******************************
  3327.  
  3328. The items fixed in Version 3.2a are:
  3329.  
  3330. 1. When the Descriptions for the various Generations of the various Backup 
  3331. Files were displayed, there was no identification as to which generation 
  3332. matched which Description. The display has been changed so that both the 
  3333. Generation Number and the Description will be shown.
  3334.  
  3335. 2. One more situation was found where a valid printer could get deleted as 
  3336. uninstalled and the problem has been fixed.
  3337.  
  3338. 3. There was a memory problem with the wpQueryIconData Method for OS/2 V2.1 
  3339. GA Version without the Service Pack that caused the shared memory to become 
  3340. corrupted. Code has been added to make sure that the wpQueryIconData method 
  3341. uses its own memory, thus avoiding the problem.
  3342.  
  3343. 4. When selecting a new Prtable Backup Save Directory, then name in the 
  3344. Select Path Dialog was incorrect. The correct name will not be displayed.
  3345.  
  3346. 5. If the Option to make a Backup copy of the INI files during the Desktop 
  3347. Restore was activated, the SYSRESTR.CMD file would have an error in it 
  3348. because a lable in the CMD file had the colon at the end rather than at the 
  3349. front. This has been fixed.
  3350.  
  3351. ******************************* V3.2b *******************************
  3352.  
  3353. The items fixed in Version 3.2b are:
  3354.  
  3355. 1. Some users were getting a SYS3175 in PMWIN.DLL when trying to add a 
  3356. description to the Portable Backup. The dialog to get the information from 
  3357. the user was being called from the wrong thread. The dialog will now always 
  3358. be called by the primary thread so this will no long happen.
  3359.  
  3360. 2. The Repair File Handles code did not correct handle the ERROR_BAD_COMMAND 
  3361. return for the DosQueryPathInfo API and has been fixed.
  3362.  
  3363. 3. When a user attempted to delete a Group, they were not asked for 
  3364. confirmation even if the Confirm Delete Option was checked. The code has been 
  3365. changed so the user will now be asked before the current Group is deleted.
  3366.  
  3367. 4. If a Portable Backup was not successful for some reason, but the various 
  3368. Backup files were created for a Generation, it was possible to attempt to do 
  3369. a Portable Restore with the incomplete files. Additional code has been added 
  3370. so that, effective with Backups made with the version and beyond, a special 
  3371. entry is placed in the Portable *.WPS file that indicates that en error was 
  3372. encountered. When a Portable Restore is started, a check is made for this 
  3373. information and the Restore will not continue if it is found.
  3374.  
  3375. 5. If the default Description was added to one of the Backup files, an extra 
  3376. CR was appended to the file. The code has been changed so that this will no 
  3377. longer occur.
  3378.  
  3379. 6. The code has been extensively modified so that it will run in Tools Mode. 
  3380. Tools mode allows the user to use the various functions directly be clicking 
  3381. on an Icon, rather than having to navigate the menus. Tools mode will not 
  3382. work with the Shareware version of the program, the application, including 
  3383. IniMaint must be registered before any of the Tools will operate.
  3384.  
  3385. 7. The first version of the Install Program has been written and it will 
  3386. create and/or update the Tools Folder for any of the applciations.
  3387.  
  3388. ******************************* V3.3 *******************************
  3389.  
  3390. The items fixed in Version 3.3 are:
  3391.  
  3392. 1. Some users reported that the Portable Backup was taking a very long time. 
  3393. It turned out that this was being caused by the wpLockObject WPS Method never 
  3394. returning on some OS/2 V2.1 systems. A method was found for accomplishing the 
  3395. same effect without using the wpLockObject Method.
  3396.  
  3397. 2. The code that examined the PM_Abstract:Objects entry in the OS2.INI file 
  3398. looking for Printer information had a fixed offset built into the code that 
  3399. does not work for some situations. A set of general purpose routines to 
  3400. decode the Class Information have been developed and the Printer Repair 
  3401. routine will now use these subroutines.
  3402.  
  3403. 3. The Install program would not change the size of the Listbox when the size 
  3404. of the Main Window was changed. This has been fixed.
  3405.  
  3406. 4. The Install program would not find the MltMaint.EXE file because it was 
  3407. looking for MultiMaint.EXE. The program will now look for the correct file.
  3408.  
  3409. 5. The Install program was finished by adding code to actually unzip and/or 
  3410. copy the various files.
  3411.  
  3412. 6. If any of the Tools that start with a Menu were selected and the user 
  3413. clicked anywhere on the screen other than the Tools Menu, the Menu would 
  3414. disappear, but the Tool would not end. Addtional code has been added to check 
  3415. for this situation and insure that the Tool ends correctly.
  3416.  
  3417. 7. If the Help Tool was selected and the Help could not get created, the 
  3418. Help Error messagebox would be displayed, but the Tool would not terminate. 
  3419. Additional code has been added to handle this situation.
  3420.  
  3421. 8. When running one of the Tools, it was possible that the Initial Dialog 
  3422. would appear, depending on the user's settings. If this happened, the Tool 
  3423. would not terminate until the OK button was clicked in the Dialog. Since the 
  3424. Initial Dialog does not apply in Tools situations, the code has been changed 
  3425. so that it will never appear when a Tool is run.
  3426.  
  3427. 9. If the Directory to be used for any of the Backups did not exist, the user 
  3428. was not informed properly. The message the user would see is that the Backup 
  3429. CMD file could not be opened. Additional code has been added so that the user 
  3430. will be informed that the Directory does not exist and will be asked if they 
  3431. would like to create the Directory.
  3432.  
  3433. ******************************* V3.3a *******************************
  3434.  
  3435. The items fixed in Version 3.3a are:
  3436.  
  3437. 1. V3.3 of IniMaint and SysMaint required the AccssWPS.DLL file because some 
  3438. new subroutines were placed in the incorrect file. The subroutines were moved 
  3439. to another source file and the AccssWPS.DLL file is no longer required.
  3440.  
  3441. 2. Users who have replaced the CMD.EXE file with another command processor 
  3442. that has a different name could not do some of the Desktop Backup and 
  3443. Restore Functions because the name CMD.EXE was hardcoded into the 
  3444. application. This has been changed so that the CONFIG.SYS file will get 
  3445. searched for the correct name and that name will be used for all of the 
  3446. functions.
  3447.  
  3448. 3. The various Message Boxes were not moveable because a parameter was left 
  3449. off of the API call. This has been fixed so that all Message Boxes can now be 
  3450. moved by the user.
  3451.  
  3452.