blob: ad0987ee5bf7220cde7c9f32622c4029cdac41b4 [file] [log] [blame]
srs56940e197dc2010-05-23 13:06:10 -040010.6.8 (5/23/2010):
2------------------
3
4- Added tests to see if the file to be opened is a directory,
5 character device, FIFO, or socket; program now terminates if any of
6 these conditions is met. (Linux/FreeBSD/OS X only.) Thanks to an
7 anonymous contributor for this patch.
8
9- Added 'f' option on gdisk's experts' menu (-G/--randomize-guids in
10 sgdisk). This option randomizes the disk's GUID and all partitions'
11 GUIDs. Intended for use after cloning a disk with a utility that copies
12 the GUIDs intact (such as a raw dd copy) if you want each disk copy to
13 have its own set of GUIDs.
14
15- Added -u/--partition-guid and -U/--disk-guid options to sgdisk. These are
16 the equivalents of the 'g' and 'c' options, respectively, on the gdisk
17 experts' menu: They enable adjusting an individual partition's GUID or a
18 disk's GUID. The GUID may be either a fully specified GUID value or 'R'
19 or 'r' to set a random GUID value.
20
21- Fixed compile problem for FreeBSD (its math library lacks a log2()
22 function). Also created separate Makefile.freebsd with a couple of
23 FreeBSD-specific options.
24
25- Added -N (--largest-new) command to sgdisk. This command creates a single
26 partition that fills the largest single unpartitioned block of space on
27 the disk.
28
29- Fixed sgdisk man page error: the --change-name option was incorrectly
30 listed as --change.
31
32- Added 'h' option to gdisk experts' menu (-C or --recompute-chs in sgdisk)
33 to recompute all protective/hybrid MBR CHS values. This option is
34 intended to work around a bug in at least one BIOS that prevents the
35 computer from booting when the GPT-mandated (but technically illegal)
36 0xFFFFFF CHS value is used as the end point for a protective MBR. The
37 recomputed values will be legal (e.g., 0xFEFFFF instead of 0xFFFFFF),
38 but incorrect in GPT terms, and will therefore enable at least one
39 BIOS to boot with a GPT disk. See http://www.rodsbooks.com/gdisk/bios.html
40 for all I know about BIOS/GPT incompatibilities.
41
420.6.7 (5/1/2010):
43-----------------
44
45- Undid earlier change, with version 0.6.4, that wiped the MBR boot loader
46 when doing MBR-to-GPT conversions. I've now become skeptical that MBR
47 boot loaders were causing any real problems on GPT disks, so I'm going
48 back to the philosophy of leaving as much alone as possible.
49
50- Fixed bug that caused incorrect reporting of free space on 0-size disks
51 (e.g., files of 0 length passed as disk images).
52
53- Fixed bug that caused segfault on some invalid disks
54
55- Fixed bug that caused incorrect partition numbers to be displayed for
56 some verify problems.
57
58
590.6.6 (3/21/2010):
60-----------------
61
62- Added support for the "no block IO protocol" (referred to as "hide from
63 EFI" in GPT fdisk) and "legacy BIOS bootable" attribute bits. See Table
64 19 of the UEFI 2.3 specification (p. 153) for details.
65
66- Changed the sequence in which GPT data structures are written to disk;
67 backups are now written first, followed by the main structures. This is
68 as recommended in the UEFI 2.3 specification, since it's safer in the
69 extremely unlikely event that a RAID array's size is increased and
70 there's a power outage mid-write. (If the main structures are written
71 first in this case, they'll point to data that's not yet been written;
72 but by writing the backups first, the old main structures will still
73 point to the valid old backup structures.)
74
75- Protective MBRs now have disk signatures of 0x00000000, to better
76 conform with GPT as described in the UEFI 2.3 specification.
77
78- Added alignment information to the summary data produced by the
79 'p' main-menu option in gdisk or the -p option to sgdisk.
80
81- More alignment changes: GPT fdisk now attempts to determine the alignment
82 value based on alignment of current partitions, if any are defined. If no
83 partitions are defined, a default value of 2048 is set. If the computed
84 value is less than 8 on drives over about 596GiB, it's reset to 8, since
85 the drive might be a WD Advanced Format unit that requires an 8-sector
86 (or larger power-of-2) alignment value for best performance. The
87 2048-sector default provides better alignment in some RAID
88 configurations.
89
90- Changed behavior when a backup restore fails. Previously, GPT fdisk
91 would create a fresh blank set of partitions. Now it does so only
92 if the failure occurs when interpreting the backup's contents; if the
93 user typed the wrong filename, the in-memory data structures aren't
94 touched.
95
96
970.6.5 (3/7/2010):
98-----------------
99
100- Added tests to verify ('v') function and to pre-save checks to look for
101 partitions that end before they begin or that are too big for their
102 disks.
103
104- Fixed a bug that could cause spurious data to appear in a grown partition
105 table.
106
107- Added ability to convert some or all partitions to logical partitions in
108 GPT-to-MBR conversion. This feature is limited by the fact that at least
109 one free sector must exist immediately prior to each logical partition,
110 so it won't do much good if partitions are crammed together. It should be
111 possible to convert back to MBR any disk that started that way, provided
112 no partitions were added or resized when the disk was in GPT form; and
113 disks that were partitioned with Apple's Disk Utility or other tools that
114 insert unpartitioned space should also be convertible. CAUTION: THE
115 LOGICAL PARTITION CREATION FEATURE DOESN'T TRY TO ALIGN PARTITIONS OR
116 PARTITION HEADER DATA TO CYLINDER BOUNDARIES! It's conceivable that some
117 older OSes or utilities will object to these disks, although Linux, OS X,
118 Windows Vista, and Windows 7 all seem happy with them.
119
120- Fixed bug that caused creation of 0-length file if an incorrect device
121 filename was typed.
122
123- The gdisk program now prompts for a device filename if it's called with
124 no options. This enables gdisk to do something useful if it's launched by
125 double-clicking its icon in a GUI environment.
126
127- Added workaround for bug in some versions of MinGW that caused the
128 program to garble input sector numbers.
129
130- The Windows version now works on disks with over-512-byte sectors.
131 Tested on a magneto-optical (MO) drive with 2048-byte sectors.
132
133- Added -D (--display-alignment) option to sgdisk, to display sector
134 alignment value (by default, 1 for sub-800GiB disks and 8 for disks
135 over that size).
136
137- Fixed bug in computation of CHS geometries for protective MBR. This is
138 non-critical, since most modern utilities ignore the CHS geometries.
139 Concerned users can use the 'n' option on the experts' menu to build new
140 protective MBRs with the new algorithm, if desired. (Note that GNU
141 Parted, at least, gets this wrong, too.)
142
143- Fixed memory-allocation bug when reading GPT disks with partition tables
144 with over 128 entries; could cause program to crash on startup.
145
1460.6.4-2 (2/20/2010):
147--------------------
148
149Note: Neither of the following changes affects actual program code, so I've
150left the version number in the program at 0.6.4.
151
152- Altered Makefile to pass user's compiler and linker environment
153 variables through.
154
155- Added #include to gpttext.cc to enable it to compile on the latest
156 GCC versions (it was failing on at least some 4.4.x compilers).
157
1580.6.4 (2/19/2010):
159-------------------
160
161- Added -m (--gpttombr) option to sgdisk, enabling conversion of GPT
162 disks to MBR format, with a limit of four partitions total, and of course
163 without overcoming the 2TiB limit.
164
165- Added -h (--hybrid) option to sgdisk, enabling creation of hybrid
166 MBRs. Fewer options are available in sgdisk than in gdisk, though,
167 in order to keep the user interface manageable.
168
169- Fixed off-by-one bug in specification of partition when using the
170 -T (--transform-bsd) option in sgdisk.
171
172- Changed the code to create a new MBR unique disk signature whenever a new
173 protective MBR is generated (when doing an MBR-to-GPT conversion, when
174 using the 'n' option on the experts' menu, or when using the 'o' option
175 on the main menu, for example). Previous versions attempted to preserve
176 the existing MBR disk signature in most cases, but this resulted in
177 values of 0x00000000 whenever an empty disk was partitioned, and often in
178 other cases, too. Better to risk changing this value too often than to
179 leave multiple disks with 0x00000000 values, I think.
180
181- Added transpose ('t' on experts' menu in gdisk; or -r or --transpose in
182 sgdisk) command to enable fine-tuning partition order without doing a
183 full sort.
184
185- Added code to clear the MBR boot loader when doing an MBR-to-GPT
186 conversion. (This was already done in full-disk BSD-to-GPT conversions.)
187 This is done because I've seen a few problem reports that make me think
188 some MBR boot loaders freak out and hang the system when they encounter
189 GPT disks, and/or they attempt to load a second-stage boot loader stored
190 in what is now GPT territory, causing a system hang. Since MBR boot
191 loaders don't work on GPT disks anyhow (even GRUB needs to be
192 reinstalled), this new wiping behavior shouldn't cause any problems, and
193 may prevent a few.
194
195- Fixed bug in Windows version that prevented saving backup files.
196
197- Fixed bug that caused second and subsequent partition numbers in
198 prompts in hybrid MBR conversion procedure to be displayed in
199 hexadecimal.
200
201- Fixed very obscure potential bug in hybrid MBR/GPT synchronization when
202 deleting partitions; code wasn't matching partition lengths correctly,
203 which would only affect partitions that start at the same point but have
204 different lengths in MBR vs. GPT.
205
206- Fixed bug in the -E option to sgdisk; it was actually returning the
207 last free sector, not the last free sector in the largest free block.
208
209- Fixed bug in -t option to sgdisk; it was corrupting partition type
210 codes.
211
212- Fixed minor alignment bug in partition summary list ('p' from any menu)
213 when partition sizes are between 1000 and 1024 units.
214
215- Backup restore function ('l' on recovery & transformation menu) now
216 accepts both backups generated by GPT fdisk and backups created by a
217 direct copy (via dd, etc.) of the MBR, main GPT header, and main GPT
218 partition table, in that order. ("dd if=/dev/sda of=backup.gpt bs=512
219 count=34" will do this on Linux for a disk with a typical-sized GPT table
220 of 128 entries.)
221
2220.6.3 (2/3/2010):
223------------------
224
225- Fixed serious data corruption bug on big-endian (PowerPC and similar)
226 systems.
227
228- Changed several GPT fdisk Solaris type codes to correct a duplicate
229
230- Corrected error in GPT fdisk type codes for NetBSD LFS and NetBSD RAID;
231 they were identical, but I've now changed NetBSD RAID to A906, which
232 is unique.
233
234- Added GUID for IBM General Parallel File System (GPFS) partition type
235 code. Somewhat arbitrarily set it to use the 7501 number (MBR code 0x75
236 is used by IBM PC/IX, so it's at least the right company, by my loose
237 numbering rules....).
238
239- Improved GUID generation. Prior versions generated completely random
240 numbers for GUIDs. This works, but is technically a violation of the
241 spec. Unix versions now employ libuuid to generate GUIDs in a more
242 correct way. The Windows version still generates random numbers, though.
243
244- Turned PartTypes class into a derived class of GUIDData, and renamed
245 it to PartType.
246
247- Created new GUIDData class, to replace the original GUIDData struct.
248
2490.6.2 (1/29/2010):
250------------------
251
252- The change-type ('t' on main menu) option now changes the partition's
253 name *IF* the current name is the generic one for the partition type.
254 If the current name is not the generic name, it is NOT changed.
255
256- Fixed bug that caused new protective MBR to not be created when the
257 MBR was invalid and the GPT was damaged and the user opts to try to
258 use the GPT data.
259
260- Enabled default partition type code of 0700 when creating partitions
261 or changing their type codes. (Type 0700, Linux/Windows data, is set if
262 the user hits the Enter key alone.)
263
264- Fixed bug in sort ('s' on main menu) option that caused partition
265 numbers to begin at more than 1 if the original partition list had
266 too many empty partitions before the last one defined.
267
268- Improved code to determine which partition table to load in case of
269 CRC mismatches between the partition tables and the stored CRC values
270 in the headers.
271
272- Compiles using MinGW (http://www.mingw.org) to create a Windows binary.
273
274- Moved all disk I/O functions to the new DiskIO class. This helps with the
275 Windows port; it uses diskio-windows.cc for Windows-specific code,
276 diskio-unix.cc for the Linux, FreeBSD, and OS X code, and diskio.cc for
277 cross-platform disk I/O code.
278
279- Changed BSD disklabel detection code to be more correct (I think).
280 This change has no effect on my test disks, but I hope it'll work
281 better on disks with sector sizes other than 512 or 2048.
282
2830.6.1 (1/20/2010):
284------------------
285
286- Fixed bug that returned incorrect disk size on 32-bit versions of
287 FreeBSD.
288
289- Fixed bug that prevented FreeBSD version from working on disk image
290 files.
291
292- Fixed bug that caused BSD disklabel conversion to fail.
293
2940.6.0 (1/15/2010):
295------------------
296
297- Fixed bug that caused the convert to MBR function to fail.
298
299- Added support for disks with other than 512-byte sectors.
300
301- Created embryonic sgdisk program.
302
303- Fixed bug that caused relative sector numbers entered by users (e.g,
304 "+128M") to be misinterpreted as from the start of the range rather than
305 from the default value.
306
3070.5.3 (1/4/2010):
308-----------------
309
310- Fixed bug in display of GUIDs when compiled with some versions of GCC.
311
312- Eliminated warnings caused by additional checks in latest versions of
313 GCC. These warnings were harmless, but to eliminate them I've added
314 more error checking on disk I/O.
315
316- Eliminated unnecessary warnings about potential data loss if the program
317 was launched with the -l option or if writes aren't possible.
318
319- Added code to set the partition boundary value based on the physical
320 sector size. (FindAlignment() function.) This function, however, works
321 only on Linux, and then only if the BLKPBSZGET ioctl is defined. This
322 ioctl is new in kernel 2.6.32 or thereabouts.
323
3240.5.2 (12/31/2009):
325-------------------
326
327- Modified partition creation function to begin partitions on 8-sector
328 boundaries by default. This improves performance on the new Western
329 Digital Advanced Format drives. The new 'd' and 'l' options on the
330 experts' menu display and change, respectively, the boundary size.
331
332- Tweaked code to produce fewer warnings on the latest versions of
333 GCC.
334
3350.5.1:
336------
337
338- Made some minor edits to the man page.
339
340- Incorporated RPM .spec file changes contributed by Scott Collier
341 (boodle11@gmail.com).
342
343- Changed method of locating and loading backup GPT data, to use the
344 main header's pointer, if it's valid, rather than seeking to the
345 end of the disk.
346
347- Added 'e' option (relocate backup GPT data structures) to the experts'
348 menu.
349
350- Fixed bug that prevented recovery of partitions in case of partially
351 damaged GPT data (bad main and good backup or bad backup and good
352 main header, for instance).
353
3540.5.0:
355------
356
357- Added GPT-to-MBR conversion function. It's very limited, but potentially
358 useful in some cases.
359
360- Fixed bug that caused incorrect file sizes to be reported on 32-bit
361 Linux, thus causing problems when editing partition tables in disk images
362 or when loading GPT backup files.
363
364- Fixed bug that caused bogus CRC error reports when loading backup GPT
365 data.
366
367- Reorganized menus. There are now three: the main menu, the experts' menu,
368 and the recovery & transformation menu. The last of these has most of the
369 items that had been on the earlier versions' experts' menu.
370
371- Added ability to re-load the MBR and generate a fresh GPT from it. This
372 is normally identical to quitting and re-running the program, but it
373 could be handy if, say, the GPT partitions on a hybrid configuration are
374 badly messed up; this will enable using the hybridized partitions as the
375 starting point for a new GPT setup.
376
377- The program now generates CHS values for hybrid and GPT-to-MBR conversion
378 MBRs. For the moment, the assumption is the maximum number of heads and
379 sectors per track (255 and 63, respectively), although the bulk of the
380 code supports other values -- it'd just be awkward to enter the data in
381 the user interface.
382
383- Fixed minor display bug that caused number of sectors on the disk to be
384 shown as 0 on large disks when running 32-bit binaries.
385
386- Reverted 0.4.2's zap (destroy GPT) changes, since I don't want to wipe
387 out a valid MBR if the user created that MBR over an older GPT without
388 first properly wiping out the GPT, and the user now wants to wipe out
389 the GPT.
390
391- Reformatted and edited the man page. Aside from edits related to the
392 preceding program changes, I've altered the markup slightly and trimmed
393 much of the more tutorial information from the man page to better
394 conform to typical terse man page style.
395
3960.4.2:
397------
398
399- Code cleanup.
400
401- Fixed very small formatting bug in display of hex code when a match isn't
402 found when converting from an MBR/gdisk hex code to a GUID type code.
403
404- Added the ability to work on disk image files (raw files for virtual
405 machines, backup images, etc.). The program assumes that all such disk
406 image files have 512-byte sectors.
407
408- Added verification prompt to 'o' main-menu option to avoid accidental
409 erasures of all partitions.
410
411- The "destroy GPT data structures" option ('z' on the experts' menu) now
412 also destroys all EFI GPT (0xEE) partitions in the MBR.
413
414- Added an extra warning to the "destroy GPT data structures" option if an APM
415 or BSD disklabel was detected on the disk.
416
417- Added a buffer flush after destroying GPT data structures, to get the OS
418 to read the new (empty or MBR-only) partition table.
419
420- Fixed bug that allowed entry of nonexistent partition numbers when creating
421 a hybrid MBR.
422
4230.4.1:
424------
425
426- Code cleanup/re-organization
427
428- Partition creation function ('n' on main menu) now uses the start of the
429 largest available chunk of free space rather than the first available
430 sector as the default starting sector number. This should enable easier
431 partition creation if there are small bits of free space on the disk.
432
433- You can now specify the end point of a partition by using a minus sign,
434 in which case the end point is the default value minus the specified
435 size. For instance, "-200M" creates a partition that ends 200MiB before
436 the default end point.
437
438- You can now specify the start point of a partition by using a plus or
439 minus sign, in which case the start point is the specified distance from
440 the start (+) or end (-) of free space. This is exactly the same as the
441 new rules for entry of the end point, except that the default value is
442 set differently.
443
444- Deleting a partition now checks for a matching hybrid MBR partition, and
445 if one is found, it's deleted. Any empty space that then surrounds the
446 0xEE (EFI GPT) MBR partitions is then added to the nearby 0xEE partition.
447 If no non-0xEE partitions are left, a fresh protective MBR is generated.
448
449- Added hybrid MBR consistency check to the verify ('v') option and to
450 pre-write checks. If non-0xEE/non-0x00 MBR partitions without
451 corresponding GPT partitions are found, the user is warned. This finding
452 does NOT prevent writing the partition table, though.
453
454- Added non-destructive write test when opening the device file, in order
455 to detect the problem with FreeBSD being unable to write to disks with
456 mounted partitions (or other potential problems).
457
4580.4.0:
459------
460
461- Added support for BSD disklabels. The program can now convert disks that
462 use "raw" disklabels, with the caveat that the first partition will
463 almost certainly need to be deleted because it'll overlap the main GPT
464 header; and convert disklabels contained within a GPT (or a former MBR,
465 converted to GPT) partition. In the latter case, the 'b' main menu option
466 is used.
467
468- Added support for compiling on FreeBSD.
469
470- Fixed bug that could cause crashes or incomplete sorts when sorting
471 the partition table.
472
473- New partitions, including converted ones, now take on the name of the
474 partition type as a default name.
475
476- Reorganized some code; created a separate C++ class for GPT partitions
477 (GPTPart), which replaced a struct and enabled moving code from the
478 bloated GPTData class into GPTPart.
479
480- Fixed a bug that produced spurious warnings about unknown sector sizes
481 when loading a backup file.
482
4830.3.5:
484------
485
486Note: This version was not officially publicly released; I wanted to test
487the big-endian support while developing 0.4.0.
488
489- Tweaked the disk type identification code to warn users to re-sync their
490 hybrid MBRs when one is detected.
491
492- Tweaked MBR-reading code to ignore 0xEE (EFI GPT) partitions. This will
493 only have an effect on a poorly partitioned MBR disk that contains an
494 inappropriate EFI GPT partition, or when attempting to recover a
495 corrupted disk by using the hybrid MBR for data recovery.
496
497- Added big-endian (PowerPC, etc.) support!
498
499- Added code to identify and warn of the presence of an Apple Partition
500 Map (APM) on the disk.
501
502- Enabled MBR conversion code to handle multiple logical partitions.
503
5040.3.4:
505------
506
507- Fixed bug that enabled (possibly accidental) entry of MBR type codes of
508 0x00 in GPTData::MakeHybrid(). The fix also enables entry of default
509 type code by pressing the Enter key when prompted. Applied a similar
510 fix to the entry of the type code for the second protective partition,
511 if one is used.
512
513- Fixed a typo: "sectors" was spelled "sectprs" in one spot!
514
515- Fixed bug that caused default entry for end sector to be refused if an
516 initial value using a plus sign (e.g., "+20G") was also refused.
517
5180.3.3:
519------
520
521- Gave users control over the way MBR partitions are assigned to slots in a
522 hybrid MBR setup; the original method (putting the 0xEE partition after
523 the real partitions) works well for non-boot disks, but both GRUB and
524 GRUB2 become confused by this type of setup, so it needs changing.
525
526- Changed "blocks" to "sectors" in GPT and MBR table displays.
527
528- Added "Boot" column to MBR table display; shows an asterisk (*) when the
529 partition's status is bootable.
530
5310.3.2:
532------
533
534- Changed __DARWIN_UNIX03 to __APPLE__ as code to enable MacOS X support.
535
536- Added the ability to create a hybrid MBR ('h' on experts' menu). This was
537 motivated by my discovery that Windows 7 remains brain-dead when it comes
538 to the ability to boot from a GPT disk, at least on BIOS-based machines.
539
540- Added 'z' option to experts' menu, to destroy GPT data structures and
541 exit. The intent is to use this feature to enable subsequent partitioning
542 of the disk using fdisk or other GPT-unaware tools. (GNU Parted will wipe
543 the GPT data structures itself when you create a new MBR ["msdos
544 disklabel," in Parted parlance], so using Parted is another option.)
545
546- Slightly altered the effect of the 'o' command on the main menu. It now
547 blanks out the protective MBR, as well as the GPT data.
548
5490.3.1:
550------
551
552- Added Mac OS X support, provided as a patch by David Hubbard
553 (david.c.hubbard@gmail.com).
554
555- Fixed bug in disksize() function on Mac OS. (Possibly dependent on the
556 kernel and/or GCC version.) The disk size, of type uint64_t, was not
557 being passed correctly, so I reorganized the function to return it as
558 the function's return value rather than as a parameter. This seems to
559 work OK on my Mac OS test system and on both 32- and 64-bit Linux
560 systems.
561
562- Fixed off-by-one bug in GPTData::FindLastAvailable().
563
564- Fixed bug that caused display of options after a disk-write error.
565
566- Fixed several incorrect MacOS X partition type GUIDs, thanks to Yves
567 Blusseau (1otnwmz02@sneakemail.com).
568
5690.3.0:
570------
571
572- Changed version number to 0.3.0, reflecting the fact that I've received
573 no significant bug reports and so am elevating the program to "beta"
574 status. This change also entailed altering the warning the program
575 displays when saving partition table changes.
576
577- Fixed minor bug in CHS geometry of the protective MBR's type EE partition
578 (was producing 0x000200 as the start value, but should be 0x000100).
579 Should be a non-critical bug since the protective MBR partition
580 definition is only there to keep MBR-only disk utilities from messing
581 with the disk.
582
583- Added ability to enter GUIDs as single massive strings rather than in
584 chunks.
585
5860.2.2:
587------
588
589- Added #include directives required to compile the program using GCC
590 4.4.0.
591
5920.2.1:
593------
594
595- Fixed partition numbering problem in reports of partition overlaps in
596 verification function.
597
598- Fixed 1-sector partition size problem when creating new partitions
599 (partitions were 1 sector too big when using the +size option).
600
601- Changed BytesToSI() to display values in bytes without decimal points
602 (e.g., "512 bytes" rather than "512.0 bytes").
603
604- Added GPTData class member functions to retrieve GPT data structure
605 locations on disk; used in my internal-use-only GPT-wiping program.
606
607- Eliminated the "a reboot is recommended" notice after writing the
608 partition table.
609
610- Added notice after sorting the partition table to the effect that
611 editing /etc/fstab and/or the boot loader files may be required.
612
613- Fixed bug in MBR-reading function that caused 0x0f (Win95 LBA) and 0x85
614 (Linux extended) extended partitions to not be read.
615
616- Fixed bug in GetLastSector() (in support.cc) that would have prevented
617 correct user entry of over-32-bit sector numbers on 32-bit systems.
618
619- Made some changes/corrections to the partition type list in
620 parttypes.cc. Most of these were based on newly-discovered MBR type
621 codes for Apple (Mac OS X) filesystems.
622
623- General code cleanup (setting explicit casts, etc.)
624
6250.2.0:
626------
627
628- Initial semi-public release