torrent-verifier/src/opts.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;
}