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 
28 using namespace std;
29 
30 class GPTDataCL : public GPTData {
31    protected:
32       // Following are variables associated with popt parameters....
33       char *attributeOperation, *backupFile, *partName, *hybrids;
34       char *newPartInfo, *mbrParts, *twoParts, *outDevice, *typeCode;
35       char *partGUID, *diskGUID;
36       int alignment, deletePartNum, infoPartNum, largestPartNum, bsdPartNum;
37       uint32_t tableSize;
38       poptContext poptCon;
39 
40       int BuildMBR(char* argument, int isHybrid);
41    public:
42       GPTDataCL(void);
43       GPTDataCL(string filename);
44       ~GPTDataCL(void);
45       void LoadBackupFile(string backupFile, int &saveData, int &neverSaveData);
46       int DoOptions(int argc, char* argv[]);
47 }; // class GPTDataCL
48 
49 int CountColons(char* argument);
50 uint64_t GetInt(const string & argument, int itemNum);
51 string GetString(string argument, int itemNum);
52 
53 #endif
54