diff --git a/CHANGELOG b/CHANGELOG index fccc838..31ffc26 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,14 @@ -0.6.7 (?/?/2010): +0.6.7 (5/1/2010): ----------------- +- Undid earlier change, with version 0.6.4, that wiped the MBR boot loader + when doing MBR-to-GPT conversions. I've now become skeptical that MBR + boot loaders were causing any real problems on GPT disks, so I'm going + back to the philosophy of leaving as much alone as possible. + +- Fixed bug that caused incorrect reporting of free space on 0-size disks + (e.g., files of 0 length passed as disk images). + - Fixed bug that caused segfault on some invalid disks - Fixed bug that caused incorrect partition numbers to be displayed for diff --git a/current.spec b/current.spec index 373769b..8e8592a 100644 --- a/current.spec +++ b/current.spec @@ -1,11 +1,11 @@ Summary: An fdisk-like partitioning tool for GPT disks Name: gdisk -Version: 0.6.6 +Version: 0.6.7 Release: 1%{?dist} License: GPLv2 URL: http://www.rodsbooks.com/gdisk Group: Applications/System -Source: http://www.rodsbooks.com/gdisk/gdisk-0.6.6.tgz +Source: http://www.rodsbooks.com/gdisk/gdisk-0.6.7.tgz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %description @@ -19,7 +19,7 @@ and the ability to convert MBR disks to GPT format. %setup -q %build -CFLAGS="$RPM_OPT_FLAGS" "$RPM_OPT_CXX_FLAGS" make +CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_CXX_FLAGS" make %install rm -rf $RPM_BUILD_ROOT @@ -40,5 +40,5 @@ rm -rf $RPM_BUILD_ROOT %doc %{_mandir}/man8* %changelog -* Sun Mar 21 2010 R Smith - 0.6.6 -- Created spec file for 0.6.6 release +* Sat May 1 2010 R Smith - 0.6.7 +- Created spec file for 0.6.7 release diff --git a/gdisk.8 b/gdisk.8 index ddcec5a..151f923 100644 --- a/gdisk.8 +++ b/gdisk.8 @@ -1,6 +1,6 @@ .\" Copyright 2010 Roderick W. Smith (rodsmith@rodsbooks.com) .\" May be distributed under the GNU General Public License -.TH "GDISK" "8" "0.6.6" "Roderick W. Smith" "GPT fdisk Manual" +.TH "GDISK" "8" "0.6.7" "Roderick W. Smith" "GPT fdisk Manual" .SH "NAME" gdisk \- Interactive GUID partition table (GPT) manipulator .SH "SYNOPSIS" @@ -155,7 +155,9 @@ Change the GPT name of a partition. This name is encoded as a UTF\-16 string, but \fBgdisk\fR supports only ASCII characters as names. For the most part, Linux ignores the partition name, but it may be important in some OSes. GPT fdisk sets -a default name based on the partition type code. +a default name based on the partition type code. Note that the GPT partition +name is different from the filesystem name, which is encoded in the filesystem's +data structures. .TP .B d diff --git a/gpt.cc b/gpt.cc index 12aece1..532208f 100644 --- a/gpt.cc +++ b/gpt.cc @@ -1363,7 +1363,6 @@ void GPTData::XFormPartitions(void) { // Clear out old data & prepare basics.... ClearGPTData(); - protectiveMBR.EmptyBootloader(); // Convert the smaller of the # of GPT or MBR partitions if (numParts > MAX_MBR_PARTS) @@ -2074,19 +2073,21 @@ uint64_t GPTData::FindFreeBlocks(uint32_t *numSegments, uint64_t *largestSegment uint32_t num = 0; *largestSegment = UINT64_C(0); - do { - firstBlock = FindFirstAvailable(start); - if (firstBlock != UINT64_C(0)) { // something's free... - lastBlock = FindLastInFree(firstBlock); - segmentSize = lastBlock - firstBlock + UINT64_C(1); - if (segmentSize > *largestSegment) { - *largestSegment = segmentSize; + if (diskSize > 0) { + do { + firstBlock = FindFirstAvailable(start); + if (firstBlock != UINT64_C(0)) { // something's free... + lastBlock = FindLastInFree(firstBlock); + segmentSize = lastBlock - firstBlock + UINT64_C(1); + if (segmentSize > *largestSegment) { + *largestSegment = segmentSize; + } // if + totalFound += segmentSize; + num++; + start = lastBlock + 1; } // if - totalFound += segmentSize; - num++; - start = lastBlock + 1; - } // if - } while (firstBlock != 0); + } while (firstBlock != 0); + } // if *numSegments = num; return totalFound; } // GPTData::FindFreeBlocks() diff --git a/gpt.h b/gpt.h index 751229c..09b51c5 100644 --- a/gpt.h +++ b/gpt.h @@ -16,7 +16,7 @@ #ifndef __GPTSTRUCTS #define __GPTSTRUCTS -#define GPTFDISK_VERSION "0.6.7-pre1" +#define GPTFDISK_VERSION "0.6.7" // Constants used by GPTData::PartsToMBR(). MBR_EMPTY must be the lowest- // numbered value to refer to partition numbers. (Most will be 0 or positive, diff --git a/sgdisk.8 b/sgdisk.8 index ea026d2..1685bf8 100644 --- a/sgdisk.8 +++ b/sgdisk.8 @@ -1,6 +1,6 @@ .\" Copyright 2010 Roderick W. Smith (rodsmith@rodsbooks.com) .\" May be distributed under the GNU General Public License -.TH "SGDISK" "8" "0.6.6" "Roderick W. Smith" "GPT fdisk Manual" +.TH "SGDISK" "8" "0.6.7" "Roderick W. Smith" "GPT fdisk Manual" .SH "NAME" sgdisk \- Command\-line GUID partition table (GPT) manipulator for Linux and Unix .SH "SYNOPSIS" @@ -173,7 +173,9 @@ supports only ASCII characters as names. For the most part, Linux ignores the partition name, but it may be important in some OSes. GPT fdisk sets a default name based on the partition type code. If you want to set a name that includes a space, enclose it in quotation marks, as in -\fIsgdisk \-c 1:"Sample Name" /dev/sdb\fR. +\fIsgdisk \-c 1:"Sample Name" /dev/sdb\fR. Note that the GPT name of a +partition is distinct from the filesystem name, which is encoded in the +filesystem's data structures. .TP .B \-d, \-\-delete=partnum