Perform case insensitive search of partition types

This commit is contained in:
Gilles Moris
2019-05-15 07:33:38 +02:00
parent 522273e3db
commit f9d08a6b6b
5 changed files with 17 additions and 6 deletions

View File

@@ -263,9 +263,9 @@ two\-byte hexadecimal number. You may also enter a GUID directly, if you
have one and \fBcgdisk\fR doesn't know it. If you don't know the type code
for your partition, you can type \fBL\fR to see a list of known type codes.
The type code list may optionally be filtered by a search string; for
instance, entering \fI\fBLinux\fR\fR shows only partition type codes with
instance, entering \fI\fBlinux\fR\fR shows only partition type codes with
descriptions that include the string \fILinux\fR. This search is performed
case\-sensitively.
case\-insensitively.
.TP
.B Verify

View File

@@ -191,9 +191,9 @@ more codes in GPT. For these, \fBgdisk\fR adds code numbers sequentially,
such as 0xa500 for a FreeBSD disklabel, 0xa501 for FreeBSD boot, 0xa502 for
FreeBSD swap, and so on. Note that these two\-byte codes are unique to
\fBgdisk\fR. The type code list may optionally be filtered by a search
string; for instance, entering \fI\fBLinux\fR\fR shows only partition type
string; for instance, entering \fI\fBlinux\fR\fR shows only partition type
codes with descriptions that include the string \fILinux\fR. This search is
performed case\-sensitively.
performed case\-insensitively.
.TP
.B n

View File

@@ -510,10 +510,10 @@ void PartType::ShowAllTypes(int maxLines) const {
cout.unsetf(ios::uppercase);
if (maxLines > 0) {
cout << "Type search string, or <Enter> to show all codes: ";
matchString = ReadString();
matchString = ToLower(ReadString());
} // if
while (thisType != NULL) {
found = thisType->name.find(matchString);
found = ToLower(thisType->name).find(matchString);
if ((thisType->display == 1) && (found != string::npos)) { // show it
cout.fill('0');
cout.width(4);

View File

@@ -16,6 +16,8 @@
#include <string.h>
#include <sys/stat.h>
#include <string>
#include <cctype>
#include <algorithm>
#include <iostream>
#include <sstream>
#include "support.h"
@@ -357,3 +359,11 @@ void WinWarning(void) {
exit(0);
#endif
} // WinWarning()
// Returns the input string in lower case
string ToLower(const string& input) {
string lower = input; // allocate correct size through copy
transform(input.begin(), input.end(), lower.begin(), ::tolower);
return lower;
} // ToLower()

View File

@@ -82,5 +82,6 @@ int IsHex(string input); // Returns 1 if input can be hexadecimal number....
int IsLittleEndian(void); // Returns 1 if CPU is little-endian, 0 if it's big-endian
void ReverseBytes(void* theValue, int numBytes); // Reverses byte-order of theValue
void WinWarning(void);
string ToLower(const string& input);
#endif