panelreel-tester: accept offset arguments #180

pull/225/head
nick black 5 years ago
parent 770cdf4773
commit 4e841865b3
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -31,26 +31,64 @@ int tabletfxn(struct tablet* t, int begx, int begy, int maxx, int maxy,
} }
void usage(const char* argv0, std::ostream& c, int status){ void usage(const char* argv0, std::ostream& c, int status){
c << "usage: " << argv0 << " [ -h ] | [ -b bordermask ] [ -t tabletmask ]\n"; c << "usage: " << argv0 << " [ -h ] | options\n";
c << " --ot: offset from top\n";
c << " --ob: offset from bottom\n";
c << " --ol: offset from left\n";
c << " --or: offset from right\n";
c << " -b bordermask: hex panelreel border mask (0x0..0xf)\n"; c << " -b bordermask: hex panelreel border mask (0x0..0xf)\n";
c << " -t tabletmask: hex tablet border mask (0x0..0xf)" << std::endl; c << " -t tabletmask: hex tablet border mask (0x0..0xf)" << std::endl;
exit(status); exit(status);
} }
constexpr int OPT_TOPOFF = 100;
constexpr int OPT_BOTTOMOFF = 101;
constexpr int OPT_LEFTOFF = 102;
constexpr int OPT_RIGHTOFF = 103;
void parse_args(int argc, char** argv, struct notcurses_options* opts, void parse_args(int argc, char** argv, struct notcurses_options* opts,
struct panelreel_options* popts){ struct panelreel_options* popts){
const struct option longopts[] = {
{ .name = "ot", .has_arg = 1, .flag = nullptr, OPT_TOPOFF, },
{ .name = "ob", .has_arg = 1, .flag = nullptr, OPT_BOTTOMOFF, },
{ .name = "ol", .has_arg = 1, .flag = nullptr, OPT_LEFTOFF, },
{ .name = "or", .has_arg = 1, .flag = nullptr, OPT_RIGHTOFF, },
{ .name = nullptr, .has_arg = 0, .flag = nullptr, 0, },
};
int c; int c;
while((c = getopt(argc, argv, "b:t:h")) != -1){ while((c = getopt_long(argc, argv, "b:t:h", longopts, nullptr)) != -1){
switch(c){ switch(c){
case 'b':{ case OPT_BOTTOMOFF:{
std::stringstream ss;
ss << optarg;
ss >> popts->boff;
break;
}case OPT_TOPOFF:{
std::stringstream ss;
ss << optarg;
ss >> popts->toff;
break;
}case OPT_LEFTOFF:{
std::stringstream ss;
ss << optarg;
ss >> popts->loff;
break;
}case OPT_RIGHTOFF:{
std::stringstream ss;
ss << optarg;
ss >> popts->roff;
break;
}case 'b':{
std::stringstream ss; std::stringstream ss;
ss << std::hex << optarg; ss << std::hex << optarg;
ss >> popts->bordermask; ss >> popts->bordermask;
break; break;
}case 't': }case 't':{
// FIXME std::stringstream ss;
ss << std::hex << optarg;
ss >> popts->tabletmask;
break; break;
case 'h': }case 'h':
usage(argv[0], std::cout, EXIT_SUCCESS); usage(argv[0], std::cout, EXIT_SUCCESS);
break; break;
default: default:

Loading…
Cancel
Save