|
Packit |
062bc7 |
// gdisk.cc
|
|
Packit |
062bc7 |
// Program modelled after Linux fdisk, but it manipulates GPT partitions
|
|
Packit |
062bc7 |
// rather than MBR partitions.
|
|
Packit |
062bc7 |
//
|
|
Packit |
062bc7 |
// by Rod Smith, project began February 2009
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
/* This program is copyright (c) 2009-2013 by Roderick W. Smith. It is distributed
|
|
Packit |
062bc7 |
under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
#include <string.h>
|
|
Packit |
062bc7 |
#include <iostream>
|
|
Packit |
062bc7 |
#include "gpttext.h"
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
int main(int argc, char* argv[]) {
|
|
Packit |
062bc7 |
GPTDataTextUI theGPT;
|
|
Packit |
062bc7 |
string device = "";
|
|
Packit |
062bc7 |
UnicodeString uString;
|
|
Packit |
062bc7 |
int isError = 0;
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
#ifndef EFI
|
|
Packit |
062bc7 |
cout << "GPT fdisk (gdisk) version " << GPTFDISK_VERSION << "\n\n";
|
|
Packit |
062bc7 |
#endif /*EFI*/
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
if (!SizesOK())
|
|
Packit |
062bc7 |
exit(1);
|
|
Packit |
062bc7 |
|
|
Packit |
062bc7 |
switch (argc) {
|
|
Packit |
062bc7 |
case 1:
|
|
Packit |
062bc7 |
cout << "Type device filename, or press <Enter> to exit: ";
|
|
Packit |
062bc7 |
device = ReadString();
|
|
Packit |
062bc7 |
if (device.length() == 0)
|
|
Packit |
062bc7 |
exit(0);
|
|
Packit |
062bc7 |
else if (theGPT.LoadPartitions(device)) {
|
|
Packit |
062bc7 |
if (theGPT.GetState() != use_gpt)
|
|
Packit |
062bc7 |
WinWarning();
|
|
Packit |
062bc7 |
theGPT.MainMenu(device);
|
|
Packit |
062bc7 |
} // if/elseif
|
|
Packit |
062bc7 |
break;
|
|
Packit |
062bc7 |
case 2: // basic usage
|
|
Packit |
062bc7 |
if (theGPT.LoadPartitions(argv[1])) {
|
|
Packit |
062bc7 |
if (theGPT.GetState() != use_gpt)
|
|
Packit |
062bc7 |
WinWarning();
|
|
Packit |
062bc7 |
theGPT.MainMenu(argv[1]);
|
|
Packit |
062bc7 |
} // if
|
|
Packit |
062bc7 |
break;
|
|
Packit |
062bc7 |
case 3: // usage with "-l" option
|
|
Packit |
062bc7 |
if (strcmp(argv[1], "-l") == 0) {
|
|
Packit |
062bc7 |
device = (string) argv[2];
|
|
Packit |
062bc7 |
} else if (strcmp(argv[2], "-l") == 0) {
|
|
Packit |
062bc7 |
device = (string) argv[1];
|
|
Packit |
062bc7 |
} else { // 3 arguments, but none is "-l"
|
|
Packit |
062bc7 |
cerr << "Usage: " << argv[0] << " [-l] device_file\n";
|
|
Packit |
062bc7 |
isError = 1;
|
|
Packit |
062bc7 |
} // if/elseif/else
|
|
Packit |
062bc7 |
if (device != "") {
|
|
Packit |
062bc7 |
theGPT.JustLooking();
|
|
Packit |
062bc7 |
if (theGPT.LoadPartitions(device))
|
|
Packit |
062bc7 |
theGPT.DisplayGPTData();
|
|
Packit |
062bc7 |
else
|
|
Packit |
062bc7 |
isError = 1;
|
|
Packit |
062bc7 |
} // if
|
|
Packit |
062bc7 |
break;
|
|
Packit |
062bc7 |
default:
|
|
Packit |
062bc7 |
cerr << "Usage: " << argv[0] << " [-l] device_file\n";
|
|
Packit |
062bc7 |
isError = 1;
|
|
Packit |
062bc7 |
break;
|
|
Packit |
062bc7 |
} // switch
|
|
Packit |
062bc7 |
return (isError);
|
|
Packit |
062bc7 |
} // main
|