gdisk.cc revision 84aaff6b9cf3b802c621781cf9acd006aa5a3e66
1e7b4ff9317fc4e551cf974684eaa88697de5a28srs// gdisk.cc 2e7b4ff9317fc4e551cf974684eaa88697de5a28srs// Program modelled after Linux fdisk, but it manipulates GPT partitions 3e7b4ff9317fc4e551cf974684eaa88697de5a28srs// rather than MBR partitions. 4e7b4ff9317fc4e551cf974684eaa88697de5a28srs// 5e4ac11ebee0ad586a538f49b9c0e32ad19cae665srs// by Rod Smith, project began February 2009 6e7b4ff9317fc4e551cf974684eaa88697de5a28srs 7e3ee733ff8690af7568dac665bc20ecf869dea1dRoderick W. Smith/* This program is copyright (c) 2009-2013 by Roderick W. Smith. It is distributed 8221e08768de7fe42ba533ca22baf671420569c07srs under the terms of the GNU GPL version 2, as detailed in the COPYING file. */ 9221e08768de7fe42ba533ca22baf671420569c07srs 10fed16d043a14e8b86c97a6413aec7281fefcbcb5srs#include <string.h> 11fed16d043a14e8b86c97a6413aec7281fefcbcb5srs#include <iostream> 1208bb0da07953af605b4918e268272de15ac151aasrs#include "gpttext.h" 13e7b4ff9317fc4e551cf974684eaa88697de5a28srs 14e7b4ff9317fc4e551cf974684eaa88697de5a28srsint main(int argc, char* argv[]) { 1508bb0da07953af605b4918e268272de15ac151aasrs GPTDataTextUI theGPT; 165a6085310b7f8fe1c35e56bcab7de161808b488dsrs string device = ""; 175a6085310b7f8fe1c35e56bcab7de161808b488dsrs UnicodeString uString; 18e7b4ff9317fc4e551cf974684eaa88697de5a28srs 19fed16d043a14e8b86c97a6413aec7281fefcbcb5srs cout << "GPT fdisk (gdisk) version " << GPTFDISK_VERSION << "\n\n"; 20e7b4ff9317fc4e551cf974684eaa88697de5a28srs 2155d926192adc984462509b2966e23bc0d1129bbdsrs if (!SizesOK()) 2255d926192adc984462509b2966e23bc0d1129bbdsrs exit(1); 2355d926192adc984462509b2966e23bc0d1129bbdsrs 2455d926192adc984462509b2966e23bc0d1129bbdsrs switch (argc) { 2555d926192adc984462509b2966e23bc0d1129bbdsrs case 1: 2655d926192adc984462509b2966e23bc0d1129bbdsrs cout << "Type device filename, or press <Enter> to exit: "; 275a6085310b7f8fe1c35e56bcab7de161808b488dsrs device = ReadString(); 285a6085310b7f8fe1c35e56bcab7de161808b488dsrs if (device.length() == 0) 295a6085310b7f8fe1c35e56bcab7de161808b488dsrs exit(0); 305a6085310b7f8fe1c35e56bcab7de161808b488dsrs else if (theGPT.LoadPartitions(device)) { 3100b6d7a4604e759eb3c92b3ecea608d6fe024b81srs if (theGPT.GetState() != use_gpt) 3200b6d7a4604e759eb3c92b3ecea608d6fe024b81srs WinWarning(); 33a17fe69ec07c93a24894e4c4243f05af2bfc5bd7srs theGPT.MainMenu(device); 345a6085310b7f8fe1c35e56bcab7de161808b488dsrs } // if/elseif 3555d926192adc984462509b2966e23bc0d1129bbdsrs break; 3655d926192adc984462509b2966e23bc0d1129bbdsrs case 2: // basic usage 3700b6d7a4604e759eb3c92b3ecea608d6fe024b81srs if (theGPT.LoadPartitions(argv[1])) { 3800b6d7a4604e759eb3c92b3ecea608d6fe024b81srs if (theGPT.GetState() != use_gpt) 3900b6d7a4604e759eb3c92b3ecea608d6fe024b81srs WinWarning(); 40a17fe69ec07c93a24894e4c4243f05af2bfc5bd7srs theGPT.MainMenu(argv[1]); 4100b6d7a4604e759eb3c92b3ecea608d6fe024b81srs } // if 4255d926192adc984462509b2966e23bc0d1129bbdsrs break; 4355d926192adc984462509b2966e23bc0d1129bbdsrs case 3: // usage with "-l" option 44e7b4ff9317fc4e551cf974684eaa88697de5a28srs if (strcmp(argv[1], "-l") == 0) { 455a6085310b7f8fe1c35e56bcab7de161808b488dsrs device = (string) argv[2]; 46e7b4ff9317fc4e551cf974684eaa88697de5a28srs } else if (strcmp(argv[2], "-l") == 0) { 475a6085310b7f8fe1c35e56bcab7de161808b488dsrs device = (string) argv[1]; 48e7b4ff9317fc4e551cf974684eaa88697de5a28srs } else { // 3 arguments, but none is "-l" 49fed16d043a14e8b86c97a6413aec7281fefcbcb5srs cerr << "Usage: " << argv[0] << " [-l] device_file\n"; 50e7b4ff9317fc4e551cf974684eaa88697de5a28srs } // if/elseif/else 515a6085310b7f8fe1c35e56bcab7de161808b488dsrs if (device != "") { 525d58fe0ea12c9c727c8a970c8e1ac08ea7fbe05fsrs theGPT.JustLooking(); 535a6085310b7f8fe1c35e56bcab7de161808b488dsrs if (theGPT.LoadPartitions(device)) 5464cbd171067eb34054741bfcd73f0b91d727a371srs theGPT.DisplayGPTData(); 55e7b4ff9317fc4e551cf974684eaa88697de5a28srs } // if 5655d926192adc984462509b2966e23bc0d1129bbdsrs break; 5755d926192adc984462509b2966e23bc0d1129bbdsrs default: 5855d926192adc984462509b2966e23bc0d1129bbdsrs cerr << "Usage: " << argv[0] << " [-l] device_file\n"; 5955d926192adc984462509b2966e23bc0d1129bbdsrs break; 6055d926192adc984462509b2966e23bc0d1129bbdsrs } // switch 6184aaff6b9cf3b802c621781cf9acd006aa5a3e66Roderick W. Smith return 1 ; 6284aaff6b9cf3b802c621781cf9acd006aa5a3e66Roderick W. Smith} // main 63