1 /*
2     Implementation of GPTData class derivative with popt-based command
3     line processing
4     Copyright (C) 2010-2013 Roderick W. Smith
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License along
17     with this program; if not, write to the Free Software Foundation, Inc.,
18     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 
20 */
21 
22 #ifndef __GPTCL_H
23 #define __GPTCL_H
24 
25 #include "gpt.h"
26 #include <popt.h>
27 #include <map>
28 
29 using namespace std;
30 
31 class GPTDataCL : public GPTData {
32    protected:
33       // Following are variables associated with popt parameters....
34       char *attributeOperation, *backupFile, *partName, *hybrids;
35       char *newPartInfo, *mbrParts, *twoParts, *outDevice, *typeCode;
36       char *partGUID, *diskGUID;
37       int alignment, deletePartNum, infoPartNum, largestPartNum, bsdPartNum;
38       uint32_t tableSize;
39       poptContext poptCon;
40       std::map<int, char> typeRaw;
41 
42       int BuildMBR(char* argument, int isHybrid);
43    public:
44       GPTDataCL(void);
45       GPTDataCL(string filename);
46       ~GPTDataCL(void);
47       void LoadBackupFile(string backupFile, int &saveData, int &neverSaveData);
48       int DoOptions(int argc, char* argv[]);
49 }; // class GPTDataCL
50 
51 int CountColons(char* argument);
52 uint64_t GetInt(const string & argument, int itemNum);
53 string GetString(string argument, int itemNum);
54 
55 #endif
56