{"verbose", 'v', 0, 0,
"Increase verbosity (can be specified more than once for debugging)"},
{"quiet", 'q', 0, 0, "Only show errors"},
+ {"stdout", 'c', 0, 0, "Direct output to stdout"},
{"version", 'V', 0, 0, "Show program version"},
{ 0 }
};
struct arguments {
char *args[1];
zck_log_type log_level;
+ int stdout;
};
static error_t parse_opt (int key, char *arg, struct argp_state *state) {
case 'q':
arguments->log_level = ZCK_LOG_ERROR;
break;
+ case 'c':
+ arguments->stdout = 1;
+ break;
case 'V':
version();
break;
char *out_name = malloc(strlen(arguments.args[0]) - 3);
snprintf(out_name, strlen(arguments.args[0]) - 3, "%s", arguments.args[0]);
- int dst_fd = open(out_name, O_TRUNC | O_WRONLY | O_CREAT, 0644);
- if(dst_fd < 0) {
- printf("Unable to open %s", out_name);
- perror("");
- free(out_name);
- exit(1);
+ int dst_fd = STDOUT_FILENO;
+ if(!arguments.stdout) {
+ dst_fd = open(out_name, O_TRUNC | O_WRONLY | O_CREAT, 0644);
+ if(dst_fd < 0) {
+ printf("Unable to open %s", out_name);
+ perror("");
+ free(out_name);
+ exit(1);
+ }
}
int good_exit = False;