57 lines
1.6 KiB
C
57 lines
1.6 KiB
C
#include "opts.h"
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
|
|
int opt_silent = 0;
|
|
int opt_showinfo = 0;
|
|
int opt_help = 0;
|
|
int opt_no_use_dir = 0;
|
|
int opt_pretty_progress = 0;
|
|
int opt_scriptformat_info = OPT_SCRIPTFORMAT_NONE;
|
|
char* opt_data_path = NULL;
|
|
|
|
int opts_parse(int argc, char** argv) {
|
|
int opt;
|
|
|
|
while ((opt = getopt(argc, argv, "pnihsv:f:")) != -1) {
|
|
switch (opt) {
|
|
case 'i':
|
|
opt_showinfo = 1;
|
|
break;
|
|
case 'h':
|
|
opt_help = 1;
|
|
break;
|
|
case 's':
|
|
opt_silent = 1;
|
|
break;
|
|
case 'n':
|
|
opt_no_use_dir = 1;
|
|
break;
|
|
case 'p':
|
|
opt_pretty_progress = 1;
|
|
break;
|
|
case 'v':
|
|
opt_data_path = optarg;
|
|
break;
|
|
case 'f':
|
|
if (strlen(optarg) != 1)
|
|
return -1;
|
|
char info_char = optarg[0];
|
|
opt_scriptformat_info = OPT_SCRIPTFORMAT_INVALID;
|
|
for (int i = 0; i < OPT_SCRIPTFORMAT_MAPPING_LEN; i++) {
|
|
const opt_scriptformat_mapping_t* curr = &OPT_SCRIPTFORMAT_MAPPING[i];
|
|
if (info_char == curr->info_char) {
|
|
opt_scriptformat_info = curr->info;
|
|
break;
|
|
}
|
|
}
|
|
if (opt_scriptformat_info == OPT_SCRIPTFORMAT_INVALID)
|
|
return -1;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|