Home | History | Annotate | Download | only in gptfdisk
      1 // gdisk.cc
      2 // Program modelled after Linux fdisk, but it manipulates GPT partitions
      3 // rather than MBR partitions.
      4 //
      5 // by Rod Smith, project began February 2009
      6 
      7 /* This program is copyright (c) 2009-2013 by Roderick W. Smith. It is distributed
      8   under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
      9 
     10 #include <string.h>
     11 #include <iostream>
     12 #include "gpttext.h"
     13 
     14 int main(int argc, char* argv[]) {
     15    GPTDataTextUI theGPT;
     16    string device = "";
     17    UnicodeString uString;
     18    int isError = 0;
     19 
     20 #ifndef EFI
     21    cout << "GPT fdisk (gdisk) version " << GPTFDISK_VERSION << "\n\n";
     22 #endif /*EFI*/
     23 
     24    if (!SizesOK())
     25       exit(1);
     26 
     27    switch (argc) {
     28       case 1:
     29          cout << "Type device filename, or press <Enter> to exit: ";
     30          device = ReadString();
     31          if (device.length() == 0)
     32             exit(0);
     33          else if (theGPT.LoadPartitions(device)) {
     34             if (theGPT.GetState() != use_gpt)
     35                WinWarning();
     36             theGPT.MainMenu(device);
     37          } // if/elseif
     38          break;
     39       case 2: // basic usage
     40          if (theGPT.LoadPartitions(argv[1])) {
     41             if (theGPT.GetState() != use_gpt)
     42                WinWarning();
     43             theGPT.MainMenu(argv[1]);
     44          } // if
     45          break;
     46       case 3: // usage with "-l" option
     47          if (strcmp(argv[1], "-l") == 0) {
     48             device = (string) argv[2];
     49          } else if (strcmp(argv[2], "-l") == 0) {
     50             device = (string) argv[1];
     51          } else { // 3 arguments, but none is "-l"
     52             cerr << "Usage: " << argv[0] << " [-l] device_file\n";
     53             isError = 1;
     54          } // if/elseif/else
     55          if (device != "") {
     56             theGPT.JustLooking();
     57             if (theGPT.LoadPartitions(device))
     58                theGPT.DisplayGPTData();
     59             else
     60                isError = 1;
     61          } // if
     62          break;
     63       default:
     64          cerr << "Usage: " << argv[0] << " [-l] device_file\n";
     65          isError = 1;
     66          break;
     67    } // switch
     68    return (isError);
     69 } // main
     70