#include "putty.h" static NORETURN PRINTF_LIKE(1, 2) void fatal_error(const char *p, ...) { va_list ap; fprintf(stderr, "screenshot: "); va_start(ap, p); vfprintf(stderr, p, ap); va_end(ap); fputc('\n', stderr); exit(1); } void out_of_memory(void) { fatal_error("out of memory"); } int main(int argc, char **argv) { Filename *outfile = NULL; AuxMatchOpt amo = aux_match_opt_init(fatal_error); while (!aux_match_done(&amo)) { CmdlineArg *val; #define match_opt(...) aux_match_opt( \ &amo, NULL, __VA_ARGS__, (const char *)NULL) #define match_optval(...) aux_match_opt( \ &amo, &val, __VA_ARGS__, (const char *)NULL) if (aux_match_arg(&amo, &val)) { fatal_error("unexpected argument '%s'", cmdline_arg_to_str(val)); } else if (match_optval("-o", "--output")) { outfile = cmdline_arg_to_filename(val); } else { fatal_error("unrecognised option '%s'\n", cmdline_arg_to_str(amo.arglist->args[amo.index])); } } if (!outfile) fatal_error("expected an output file name"); char *err = save_screenshot(NULL, outfile); if (err) fatal_error("%s", err); filename_free(outfile); return 0; }