Hi List, Below a patch wich fixes two bugs in the gdisk package. They have been submitted uptream but not yet been accepted. The first bug fixed is that partition attributes are read/stored backwards. The second bug fixed is that when changing an undefined attribute no longer junk is displayed. I'm not sure if this is the right place, but i sent to this list mainly because there is no official gpt fdisk list afai could find. Now this patch has a place on the net. Cheers! Greetings/Groetjes Mark Pustjens -- diff --git a/extra/gdisk/PKGBUILD b/extra/gdisk/PKGBUILD index 0664a57..af9b44e 100644 --- a/extra/gdisk/PKGBUILD +++ b/extra/gdisk/PKGBUILD @@ -9,10 +9,12 @@ arch=('i686' 'x86_64') url="http://www.rodsbooks.com/gdisk" depends=('gcc-libs' 'util-linux-ng' 'popt') license=('GPL2') -source=(http://www.rodsbooks.com/gdisk/gdisk-$pkgver.tgz) +source=(http://www.rodsbooks.com/gdisk/gdisk-$pkgver.tgz + gdisk_attributes.patch) build() { cd $srcdir/$pkgname-$pkgver + patch -p1 -i "$srcdir/gdisk_attributes.patch" make install -D -m755 gdisk $pkgdir/sbin/gdisk install -D -m755 sgdisk $pkgdir/sbin/sgdisk @@ -23,4 +25,6 @@ build() { install -D -m644 README $pkgdir/usr/share/gdisk/README install -D -m644 NEWS pkgdir/usr/share/gdisk/NEWS } -md5sums=('48740d8de518f79ae9dae7ec58068d05') + +md5sums=('48740d8de518f79ae9dae7ec58068d05' + '106a4186587ab572f6397ba1702e8d47') diff --git a/extra/gdisk/gdisk_attributes.patch b/extra/gdisk/gdisk_attributes.patch new file mode 100644 index 0000000..e03c957 --- /dev/null +++ b/extra/gdisk/gdisk_attributes.patch @@ -0,0 +1,29 @@ +diff --git a/attributes.cc b/attributes.cc +index 527dc87..a7b2afd 100644 +--- a/attributes.cc ++++ b/attributes.cc +@@ -26,6 +26,7 @@ Attributes::Attributes(void) { + // Most bits are undefined, so start by giving them an + // appropriate name + for (i = 1; i < NUM_ATR; i++) { ++ temp.str(""); // empty stream + temp << "Undefined bit #" << i; + atNames[i] = temp.str(); + } // for +@@ -75,12 +76,12 @@ void Attributes::ChangeAttributes(void) { + do { + response = GetNumber(0, 64, -1, (string) "Toggle which attribute field (0-63, 64 to exit): "); + if (response != 64) { +- bitValue = PowerOf2(uint32_t (NUM_ATR - response - 1)); // Find the integer value of the bit +- if ((bitValue & attributes) == bitValue) { // bit is set +- attributes -= bitValue; // so unset it ++ bitValue = 1 << response; ++ if (bitValue & attributes) { // bit is set ++ attributes &= ~bitValue; // so unset it + cout << "Have disabled the '" << atNames[response] << "' attribute.\n"; + } else { // bit is not set +- attributes += bitValue; // so set it ++ attributes |= bitValue; // so set it + cout << "Have enabled the '" << atNames[response] << "' attribute.\n"; + } // if/else + } // if