summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS9
-rw-r--r--basicmbr.cc2
-rw-r--r--cgdisk.84
-rw-r--r--current.spec8
-rw-r--r--diskio.h2
-rw-r--r--fixparts.84
-rw-r--r--gdisk.84
-rw-r--r--gpttext.cc8
-rw-r--r--sgdisk.89
-rw-r--r--support.cc8
-rw-r--r--support.h2
11 files changed, 40 insertions, 20 deletions
diff --git a/NEWS b/NEWS
index 290e9b6..6512864 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+0.8.4 (3/25/2012):
+------------------
+
+- REALLY fixed Ctrl+D problems! Now gdisk terminates upon receiving a
+ Ctrl+D. In all previous versions, it could lock itself into a CPU-hogging
+ loop if launched via "sudo" from a terminal window that was then closed
+ or if Ctrl+D was pressed at certain input prompts (for a partition name
+ or sector number, for instance).
+
0.8.3 (3/23/2012):
------------------
diff --git a/basicmbr.cc b/basicmbr.cc
index fd5f30a..7483734 100644
--- a/basicmbr.cc
+++ b/basicmbr.cc
@@ -1532,7 +1532,7 @@ int BasicMBRData::DoMenu(const string& prompt) {
cout << prompt;
switch (ReadString()[0]) {
case '\0':
- goOn = !cin.eof();
+ goOn = cin.good();
break;
case 'a': case 'A':
num = GetNumber(1, MAX_MBR_PARTS, 1, "Toggle active flag for partition: ") - 1;
diff --git a/cgdisk.8 b/cgdisk.8
index 1ec7480..45c51ff 100644
--- a/cgdisk.8
+++ b/cgdisk.8
@@ -1,6 +1,6 @@
.\" Copyright 2011, 2012 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU General Public License
-.TH "CGDISK" "8" "0.8.3" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "CGDISK" "8" "0.8.4" "Roderick W. Smith" "GPT fdisk Manual"
.SH "NAME"
cgdisk \- Curses-based GUID partition table (GPT) manipulator
.SH "SYNOPSIS"
@@ -268,7 +268,7 @@ Write data. Use this command to save your changes.
.SH "BUGS"
-As of March 2012 (version 0.8.3), \fBcgdisk\fR should be considered
+As of March 2012 (version 0.8.4), \fBcgdisk\fR should be considered
beta software. Although the underlying partition manipulation code is much
older, the \fBcgdisk\fR ncurses user interface is brand new with GPT fdisk
version 0.8.0. Known bugs and limitations include:
diff --git a/current.spec b/current.spec
index 42af3fb..643692e 100644
--- a/current.spec
+++ b/current.spec
@@ -1,11 +1,11 @@
Summary: GPT partitioning and MBR repair software
Name: gptfdisk
-Version: 0.8.3
+Version: 0.8.4
Release: 1%{?dist}
License: GPLv2
URL: http://www.rodsbooks.com/gdisk
Group: Applications/System
-Source: http://www.rodsbooks.com/gdisk/gptfdisk-0.8.3.tar.gz
+Source: http://www.rodsbooks.com/gdisk/gptfdisk-0.8.4.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description
@@ -80,5 +80,5 @@ provides a few additional partition manipulation features.
%changelog
-* Fri Mar 23 2012 R Smith <rodsmith@rodsbooks.com> - 0.8.3
-- Created spec file for 0.8.3 release
+* Sun Mar 25 2012 R Smith <rodsmith@rodsbooks.com> - 0.8.4
+- Created spec file for 0.8.4 release
diff --git a/diskio.h b/diskio.h
index 3102077..5947e7d 100644
--- a/diskio.h
+++ b/diskio.h
@@ -74,6 +74,6 @@ class DiskIO {
string GetName(void) const {return realFilename;}
uint64_t DiskSize(int* err);
-}; // struct GPTPart
+}; // class DiskIO
#endif
diff --git a/fixparts.8 b/fixparts.8
index 5aa5328..fc25df4 100644
--- a/fixparts.8
+++ b/fixparts.8
@@ -1,6 +1,6 @@
.\" Copyright 2011, 2012 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU General Public License
-.TH "FIXPARTS" "8" "0.8.3" "Roderick W. Smith" "FixParts Manual"
+.TH "FIXPARTS" "8" "0.8.4" "Roderick W. Smith" "FixParts Manual"
.SH "NAME"
fixparts \- MBR partition table repair utility
.SH "SYNOPSIS"
@@ -202,7 +202,7 @@ see a summary of available options.
.PP
.SH "BUGS"
-As of March 2012 (version 0.8.3), \fBfixparts\fR
+As of March 2012 (version 0.8.4), \fBfixparts\fR
should be considered beta software. Known bugs and limitations include:
.TP
diff --git a/gdisk.8 b/gdisk.8
index 1447af1..140a6b3 100644
--- a/gdisk.8
+++ b/gdisk.8
@@ -1,6 +1,6 @@
.\" Copyright 2011, 2012 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU General Public License
-.TH "GDISK" "8" "0.8.3" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "GDISK" "8" "0.8.4" "Roderick W. Smith" "GPT fdisk Manual"
.SH "NAME"
gdisk \- Interactive GUID partition table (GPT) manipulator
.SH "SYNOPSIS"
@@ -561,7 +561,7 @@ entering data. When only one option is possible, \fBgdisk\fR
usually bypasses the prompt entirely.
.SH "BUGS"
-As of March 2012 (version 0.8.3), \fBgdisk\fR
+As of March 2012 (version 0.8.4), \fBgdisk\fR
should be considered beta software. Known bugs and limitations include:
.TP
diff --git a/gpttext.cc b/gpttext.cc
index 2f30356..506c0f1 100644
--- a/gpttext.cc
+++ b/gpttext.cc
@@ -25,6 +25,7 @@
#include <stdint.h>
#include <limits.h>
#include <iostream>
+#include <fstream>
#include <sstream>
#include <cstdio>
#include "attributes.h"
@@ -509,12 +510,12 @@ void GPTDataTextUI::MainMenu(string filename) {
int goOn = 1;
PartType typeHelper;
uint32_t temp1, temp2;
-
+
do {
cout << "\nCommand (? for help): ";
switch (ReadString()[0]) {
case '\0':
- goOn = !cin.eof();
+ goOn = cin.good();
break;
case 'b': case 'B':
cout << "Enter backup filename to save: ";
@@ -610,7 +611,7 @@ void GPTDataTextUI::RecoveryMenu(string filename) {
cout << "\nRecovery/transformation command (? for help): ";
switch (ReadString()[0]) {
case '\0':
- goOn = !cin.eof();
+ goOn = cin.good();
break;
case 'b': case 'B':
RebuildMainHeader();
@@ -736,6 +737,7 @@ void GPTDataTextUI::ExpertsMenu(string filename) {
cout << "\nExpert command (? for help): ";
switch (ReadString()[0]) {
case '\0':
+ goOn = cin.good();
break;
case 'a': case 'A':
if (GetPartRange(&temp1, &temp2) > 0)
diff --git a/sgdisk.8 b/sgdisk.8
index ac2879f..d9ae7e8 100644
--- a/sgdisk.8
+++ b/sgdisk.8
@@ -1,6 +1,6 @@
.\" Copyright 2011, 2012 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU General Public License
-.TH "SGDISK" "8" "0.8.3" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "SGDISK" "8" "0.8.4" "Roderick W. Smith" "GPT fdisk Manual"
.SH "NAME"
sgdisk \- Command\-line GUID partition table (GPT) manipulator for Linux and Unix
.SH "SYNOPSIS"
@@ -481,11 +481,16 @@ Non\-GPT disk detected and no \fI\-g\fR option
An error prevented saving changes
.TP
+.B 5
+An error occurred while reading standard input (should never occur with
+sgdisk, but may with gdisk)
+
+.TP
.B 8
Disk replication operation (-R) failed
.SH "BUGS"
-As of March 2012 (version 0.8.3), \fBsgdisk\fR
+As of March 2012 (version 0.8.4), \fBsgdisk\fR
should be considered beta software. Known bugs and limitations include:
.TP
diff --git a/support.cc b/support.cc
index 0a311a6..9e1c799 100644
--- a/support.cc
+++ b/support.cc
@@ -38,8 +38,8 @@ string ReadString(void) {
string inString;
getline(cin, inString);
- if (!cin)
- cin.clear();
+ if (!cin.good())
+ exit(5);
return inString;
} // ReadString()
@@ -56,6 +56,8 @@ int GetNumber(int low, int high, int def, const string & prompt) {
do {
cout << prompt;
cin.getline(line, 255);
+ if (!cin.good())
+ exit(5);
num = sscanf(line, "%d", &response);
if (num == 1) { // user provided a response
if ((response < low) || (response > high))
@@ -100,6 +102,8 @@ uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, uint64_t sSize,
do {
cout << prompt;
cin.getline(line, 255);
+ if (!cin.good())
+ exit(5);
response = IeeeToInt(line, sSize, low, high, def);
} while ((response < low) || (response > high));
return response;
diff --git a/support.h b/support.h
index 934908c..cbf8c32 100644
--- a/support.h
+++ b/support.h
@@ -8,7 +8,7 @@
#ifndef __GPTSUPPORT
#define __GPTSUPPORT
-#define GPTFDISK_VERSION "0.8.3"
+#define GPTFDISK_VERSION "0.8.4"
#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
// Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64