Example #1
0
/**
 * Decides what to do upon command lines options passed to the program
 * @param argc : number of arguments given on the command line.
 * @param argv : an array of strings that contains command line arguments.
 * @returns options_t structure malloc'ed and filled upon choosen command
 *          line's option (in manage_command_line_options function).
 */
options_t *do_what_is_needed_from_command_line_options(int argc, char **argv)
{
    options_t *opt = NULL;  /** Structure to manage options from the command line can be freed when no longer needed */

    opt = manage_command_line_options(argc, argv);

    if (opt != NULL)
        {
            if (opt->version == TRUE)
                {
                    print_program_version(PROGRAM_NAME, CLIENT_DATE, CLIENT_VERSION, CLIENT_AUTHORS, CLIENT_LICENSE);
                    print_libraries_versions(PROGRAM_NAME);
                    print_selected_options(opt);
                    exit(EXIT_SUCCESS);
                }
        }

    return opt;
}
Example #2
0
/*
 * Name	   : parse_cmd_line
 * Parameters : argc and argv (user supplied arguments).
 * Returns	: 0 on success and -1 on error
 * Desc	   : Command Line Parser
 */
int parse_cmd_line(cmd_line_args *cmd_args, int argc, char *argv[]) {
	int i, bad_option = FALSE;

	for (i = 1; i < argc; i++) {
		/* check for help options */
		if ((strcmp(argv[i], "--help") == 0) || (strcmp(argv[i], "-h")
		        == 0) || (strcmp(argv[i], "-?") == 0)) {
			usage(cmd_args);
			exit(0);
		} else if (strncmp(argv[i], "--verbose:simple", 16) == 0
		        || strncmp(argv[i], "-v:simple", 9) == 0) {
			cmd_args->_verbose = TRUE;
			cmd_args->_verbose_lvl = 1;
		} else if (strncmp(argv[i], "--verbose:detailed", 18) == 0
		        || strncmp(argv[i], "-v:detailed", 11) == 0) {
			cmd_args->_verbose = TRUE;
			cmd_args->_verbose_lvl = 2;
		} else if (strcmp(argv[i], "--silent") == 0 || strcmp(argv[i],
		        "-s") == 0) {
			cmd_args->_verbose = FALSE;
		} else if ((strcmp(argv[i], "--file") == 0) || strcmp(argv[i],
		        "-f") == 0) {
			/* copy over the input filename */

			if (argv[i + 1] != NULL) {
				if (strcpy(cmd_args->_file_name, argv[i + 1])
				        == NULL) {
					RTMB_printf(stderr,
					        "ERROR: Problem setting input"
						        " file\n");
					return ERROR;
				}
			} else {
				RTMB_printf(stderr,
				        "Provide a valid input filename with ");
				RTMB_printf(stderr, "--file or -f option\n");
				usage(cmd_args);
				return ERROR;
			}
			i++;
		} else if (strcmp(argv[i], "--report") == 0 || strcmp(argv[i],
		        "-r") == 0) {

			/* copy over the report directory name */

			if (argv[i + 1] != NULL) {
				if (strcpy(cmd_args->_dir_name, argv[i + 1])
				        == NULL) {
					RTMB_printf(stderr,
					        "ERROR: Problem setting report "
						        "directory\n");
					return ERROR;
				}
			} else {
				RTMB_printf(stderr,
				        "Provide a valid directory name with "
					        "--report ");
				RTMB_printf(stderr, "or -r option\n");
				usage();
				return ERROR;
			}
			i++;
		} else if (strcmp(argv[i], "--quick") == 0 || strcmp(argv[i],
		        "-q") == 0) {
			cmd_args->_quick = TRUE;
		} else if (strcmp(argv[i], "--compliant") == 0 || strcmp(
		        argv[i], "-c") == 0) {
			cmd_args->_quick = FALSE;
		} else if (strcmp(argv[i], "--test") == 0 || strcmp(argv[i],
		        "-t") == 0) {

			/* Check if some explicit tests need to be run */
			if (argv[i + 1] != NULL) {
				if (setup_testcase_names(cmd_args, argv[i + 1])
				        == ERROR) {
					return ERROR;
				}
			} else {
				RTMB_printf(stderr,
				        "Provide valid tests to be run with ");
				RTMB_printf(stderr, "--test or -t option\n");
				usage(cmd_args);
				return ERROR;
			}
			i++;
		} else if (strcmp(argv[i], "--test?") == 0 || strcmp(argv[i],
		        "-t?") == 0) {
			print_tests_list();
			exit(0);
		} else if (strcmp(argv[i], "--hard-rt") == 0) {
			cmd_args->_rt_mode = HARD_RT;
		} else if (strcmp(argv[i], "--soft-rt") == 0) {
			cmd_args->_rt_mode = SOFT_RT;
		} else if (strcmp(argv[i], "--guaranteed-rt") == 0) {
			cmd_args->_rt_mode = GUARANTEED_RT;
		} else {
			RTMB_printf(stderr, "ERROR: Unknown option '%s'\n",
			        argv[i]);
			bad_option = TRUE;
		}
	}

	if (bad_option) {
		usage(cmd_args);
		return ERROR;
	}
	print_selected_options(cmd_args);
	return 0;
}