CSC-4730 / P1 / getopt_tutorial_1.cpp
getopt_tutorial_1.cpp
Raw
#include <iostream>
#include <getopt.h>
#include <string>
#include <unistd.h>
#include <limits.h>

using namespace std;

int main(int argc, char * argv[]) {
	
	void PrintUsage();
	bool HandleOptions(int argc, char ** argv, string &, string &, string &, string &, string &, string &);

	string d_arg;
	string i_arg;
	string o_arg;
	string a_arg;
	string arg_one;
	string arg_two;

	if (!HandleOptions(argc, argv, d_arg, i_arg, o_arg, a_arg, arg_one, arg_two)) {
		cout << "Missing required command line option -1" << endl; 
		return 1;
	}
	
	return 0;
}

bool HandleOptions(int argc, char ** argv, string & d_arg, string & i_arg, string & o_arg, string & a_arg, string & arg_one, string & arg_two) {
	int c;

	while ((c = getopt(argc, argv, "d:i:o:a:1:2:pv")) != -1) {
		switch (c) {
			default:
			case 'd':
				d_arg = string(optarg);
				break;

			case 'i':
				i_arg = string(optarg);
				break;

			case 'o':
				o_arg = string(optarg);
				break;

			case 'a':
				a_arg = string(optarg);
				break;

			case '1':
				arg_one = string(optarg);
				break;

			case '2':
				arg_two = string(optarg);
				break;

			case 'p':
				char cwd [PATH_MAX];
				cout << getcwd(cwd, sizeof(cwd)) << endl;
				break;

			case 'v':
				break;
		}
	}
	return arg_one.size() > 0;
}