diff --git a/c/cli/mlrcli.c b/c/cli/mlrcli.c index 4f556b31e..2997da4fd 100644 --- a/c/cli/mlrcli.c +++ b/c/cli/mlrcli.c @@ -243,7 +243,8 @@ cli_opts_t* parse_command_line(int argc, char** argv) { } // It's up to the parse func to print its usage on CLI-parse failure. - mapper_t* pmapper = pmapper_setup->pparse_func(&argi, argc, argv); + mapper_t* pmapper = pmapper_setup->pparse_func(&argi, argc, argv, + &popts->reader_opts, &popts->writer_opts); if (pmapper == NULL) { exit(1); } diff --git a/c/cli/mlrcli.h b/c/cli/mlrcli.h index ba12d3e2c..a21c8023f 100644 --- a/c/cli/mlrcli.h +++ b/c/cli/mlrcli.h @@ -11,7 +11,6 @@ #include "containers/lhmsi.h" #include "containers/lhmss.h" #include "input/lrec_reader.h" -#include "mapping/mapper.h" #include "output/lrec_writer.h" // ---------------------------------------------------------------- diff --git a/c/mapping/mapper.h b/c/mapping/mapper.h index 622637a83..3f41af740 100644 --- a/c/mapping/mapper.h +++ b/c/mapping/mapper.h @@ -3,6 +3,7 @@ #include #include "lib/context.h" +#include "cli/mlrcli.h" #include "containers/lrec.h" #include "containers/sllv.h" @@ -28,7 +29,8 @@ typedef struct _mapper_t { // Control plane: typedef void mapper_usage_func_t(FILE* o, char* argv0, char* verb); -typedef mapper_t* mapper_parse_cli_func_t(int* pargi, int argc, char** argv); +typedef mapper_t* mapper_parse_cli_func_t(int* pargi, int argc, char** argv, + cli_reader_opts_t* pmain_reader_opts, cli_writer_opts_t* pmain_writer_opts); typedef struct _mapper_setup_t { char* verb; diff --git a/c/mapping/mapper_bar.c b/c/mapping/mapper_bar.c index af7af238f..19cb80fe2 100644 --- a/c/mapping/mapper_bar.c +++ b/c/mapping/mapper_bar.c @@ -20,7 +20,8 @@ typedef struct _mapper_bar_state_t { } mapper_bar_state_t; static void mapper_bar_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_bar_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_bar_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_bar_alloc(ap_state_t* pargp, string_array_t* pfield_names, char fill_char, char oob_char, char blank_char, double lo, double hi, int width, int do_auto); @@ -62,7 +63,9 @@ static void mapper_bar_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_bar_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_bar_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ string_array_t* pfield_names = NULL; char* fill_string = NULL; char* oob_string = NULL; diff --git a/c/mapping/mapper_bootstrap.c b/c/mapping/mapper_bootstrap.c index 4582b7857..fe7b81cdf 100644 --- a/c/mapping/mapper_bootstrap.c +++ b/c/mapping/mapper_bootstrap.c @@ -13,7 +13,8 @@ typedef struct _mapper_bootstrap_state_t { } mapper_bootstrap_state_t; static void mapper_bootstrap_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_bootstrap_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_bootstrap_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_bootstrap_alloc(int nout, ap_state_t* pargp); static void mapper_bootstrap_free(mapper_t* pmapper); static sllv_t* mapper_bootstrap_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -35,7 +36,9 @@ static void mapper_bootstrap_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "See also %s sample and %s shuffle.\n", argv0, argv0); } -static mapper_t* mapper_bootstrap_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_bootstrap_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int nout = NOUT_EQUALS_NIN; if ((argc - *pargi) < 1) { mapper_bootstrap_usage(stderr, argv[0], argv[*pargi]); diff --git a/c/mapping/mapper_cat.c b/c/mapping/mapper_cat.c index 99fe54443..82ac8b93c 100644 --- a/c/mapping/mapper_cat.c +++ b/c/mapping/mapper_cat.c @@ -12,7 +12,8 @@ typedef struct _mapper_cat_state_t { #define DEFAULT_COUNTER_FIELD_NAME "n" static void mapper_cat_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_cat_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_cat_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_cat_alloc(ap_state_t* pargp, int do_counters, char* counter_field_name); static void mapper_cat_free(mapper_t* pmapper); static sllv_t* mapper_cat_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -26,7 +27,9 @@ mapper_setup_t mapper_cat_setup = { }; // ---------------------------------------------------------------- -static mapper_t* mapper_cat_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_cat_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* default_counter_field_name = DEFAULT_COUNTER_FIELD_NAME; char* counter_field_name = NULL; int do_counters = FALSE; diff --git a/c/mapping/mapper_check.c b/c/mapping/mapper_check.c index 3e4443958..7405eff73 100644 --- a/c/mapping/mapper_check.c +++ b/c/mapping/mapper_check.c @@ -3,7 +3,8 @@ #include "containers/sllv.h" static void mapper_check_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_check_alloc(); static void mapper_check_free(mapper_t* pmapper); static sllv_t* mapper_check_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -22,7 +23,9 @@ static void mapper_check_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Useful for doing a well-formatted check on input data.\n"); } -static mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 1) { mapper_check_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_cut.c b/c/mapping/mapper_cut.c index e687ac2e3..d58ea9441 100644 --- a/c/mapping/mapper_cut.c +++ b/c/mapping/mapper_cut.c @@ -18,7 +18,8 @@ typedef struct _mapper_cut_state_t { } mapper_cut_state_t; static void mapper_cut_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_cut_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_cut_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_cut_alloc(ap_state_t* pargp, slls_t* pfield_name_list, int do_arg_order, int do_complement, int do_regexes); static void mapper_cut_free(mapper_t* pmapper); @@ -53,7 +54,9 @@ static void mapper_cut_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_cut_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_cut_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pfield_name_list = NULL; int do_arg_order = FALSE; int do_complement = FALSE; diff --git a/c/mapping/mapper_decimate.c b/c/mapping/mapper_decimate.c index 2f4276819..d2691c8fb 100644 --- a/c/mapping/mapper_decimate.c +++ b/c/mapping/mapper_decimate.c @@ -19,7 +19,8 @@ typedef struct _mapper_decimate_state_t { } mapper_decimate_state_t; static void mapper_decimate_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_decimate_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_decimate_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_decimate_alloc(ap_state_t* pargp, slls_t* pgroup_by_field_names, unsigned long long decimate_count, int keep_last); static void mapper_decimate_free(mapper_t* pmapper); @@ -42,7 +43,9 @@ static void mapper_decimate_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Passes through one of every n records, optionally by category.\n"); } -static mapper_t* mapper_decimate_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_decimate_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int decimate_count = 10; int keep_last = TRUE; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_filter.c b/c/mapping/mapper_filter.c index 669f1a020..ae0d0d2dc 100644 --- a/c/mapping/mapper_filter.c +++ b/c/mapping/mapper_filter.c @@ -20,7 +20,8 @@ typedef struct _mapper_filter_state_t { } mapper_filter_state_t; static void mapper_filter_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_filter_alloc(ap_state_t* pargp, char* mlr_dsl_expression, char* comment_stripped_mlr_dsl_expression, mlr_dsl_ast_node_t* past, int type_inferencing, int do_exclude); static void mapper_filter_free(mapper_t* pmapper); @@ -79,7 +80,9 @@ static void mapper_filter_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* verb = argv[(*pargi)++]; char* mlr_dsl_expression = NULL; char* comment_stripped_mlr_dsl_expression = NULL; diff --git a/c/mapping/mapper_grep.c b/c/mapping/mapper_grep.c index 0c929d109..ff68051f4 100644 --- a/c/mapping/mapper_grep.c +++ b/c/mapping/mapper_grep.c @@ -13,7 +13,8 @@ typedef struct _mapper_grep_state_t { } mapper_grep_state_t; static void mapper_grep_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_grep_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_grep_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_grep_alloc(ap_state_t* pargp, char* regex_string, int exclude, int ignore_case); static void mapper_grep_free(mapper_t* pmapper); static sllv_t* mapper_grep_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -26,7 +27,9 @@ mapper_setup_t mapper_grep_setup = { }; // ---------------------------------------------------------------- -static mapper_t* mapper_grep_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_grep_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* regex_string = NULL; int exclude = FALSE; int ignore_case = FALSE; diff --git a/c/mapping/mapper_group_like.c b/c/mapping/mapper_group_like.c index 170f4f4d9..0b12d6ab5 100644 --- a/c/mapping/mapper_group_like.c +++ b/c/mapping/mapper_group_like.c @@ -14,7 +14,8 @@ typedef struct _mapper_group_like_state_t { } mapper_group_like_state_t; static void mapper_group_like_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_group_like_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_group_like_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_group_like_alloc(); static void mapper_group_like_free(mapper_t* pmapper); static sllv_t* mapper_group_like_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -32,7 +33,9 @@ static void mapper_group_like_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Outputs records in batches having identical field names.\n"); } -static mapper_t* mapper_group_like_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_group_like_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 1) { mapper_group_like_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_having_fields.c b/c/mapping/mapper_having_fields.c index 1115ba474..b97b148d8 100644 --- a/c/mapping/mapper_having_fields.c +++ b/c/mapping/mapper_having_fields.c @@ -25,7 +25,8 @@ typedef struct _mapper_having_fields_state_t { } mapper_having_fields_state_t; static void mapper_having_fields_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_having_fields_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_having_fields_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_having_fields_alloc(slls_t* pfield_names, char* regex_string, criterion_t criterion); static void mapper_having_fields_free(mapper_t* pmapper); @@ -64,7 +65,9 @@ static void mapper_having_fields_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_having_fields_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_having_fields_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pfield_names = NULL; char* regex_string = NULL; criterion_t criterion = HAVING_FIELDS_UNSPECIFIED; diff --git a/c/mapping/mapper_head.c b/c/mapping/mapper_head.c index 8242a6983..7694e7c3f 100644 --- a/c/mapping/mapper_head.c +++ b/c/mapping/mapper_head.c @@ -19,7 +19,8 @@ typedef struct _mapper_head_state_t { } mapper_head_state_t; static void mapper_head_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_head_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_head_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_head_alloc(ap_state_t* pargp, slls_t* pgroup_by_field_names, unsigned long long head_count); static void mapper_head_free(mapper_t* pmapper); static sllv_t* mapper_head_process_unkeyed(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -42,7 +43,9 @@ static void mapper_head_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "records have been read.\n"); } -static mapper_t* mapper_head_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_head_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int head_count = 10; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_histogram.c b/c/mapping/mapper_histogram.c index ffea00724..724494688 100644 --- a/c/mapping/mapper_histogram.c +++ b/c/mapping/mapper_histogram.c @@ -26,7 +26,8 @@ typedef struct _mapper_histogram_state_t { } mapper_histogram_state_t; static void mapper_histogram_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_histogram_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_histogram_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_histogram_alloc(ap_state_t* pargp, slls_t* value_field_names, double lo, int nbins, double hi, int do_auto); static void mapper_histogram_free(mapper_t* pmapper); @@ -58,7 +59,9 @@ static void mapper_histogram_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Just a histogram. Input values < lo or > hi are not counted.\n"); } -static mapper_t* mapper_histogram_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_histogram_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* value_field_names = NULL; double lo = 0.0; double hi = 0.0; diff --git a/c/mapping/mapper_join.c b/c/mapping/mapper_join.c index 40727a277..d49078a14 100644 --- a/c/mapping/mapper_join.c +++ b/c/mapping/mapper_join.c @@ -49,7 +49,8 @@ typedef struct _mapper_join_state_t { // ---------------------------------------------------------------- static void mapper_join_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_join_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_join_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_join_alloc(mapper_join_opts_t* popts); static void mapper_join_free(mapper_t* pmapper); static void ingest_left_file(mapper_join_state_t* pstate); @@ -111,7 +112,9 @@ static void mapper_join_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_join_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_join_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ mapper_join_opts_t* popts = mlr_malloc_or_die(sizeof(mapper_join_opts_t)); cli_reader_opts_init(&popts->reader_opts); diff --git a/c/mapping/mapper_label.c b/c/mapping/mapper_label.c index f99ec2afb..43a96fa64 100644 --- a/c/mapping/mapper_label.c +++ b/c/mapping/mapper_label.c @@ -8,7 +8,8 @@ typedef struct _mapper_label_state_t { } mapper_label_state_t; static void mapper_label_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_label_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_label_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_label_alloc(slls_t* pnames); static void mapper_label_free(mapper_t* pmapper); static sllv_t* mapper_label_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -33,7 +34,9 @@ static void mapper_label_usage(FILE* o, char* argv0, char* verb) { } -static mapper_t* mapper_label_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_label_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 2) { mapper_label_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_merge_fields.c b/c/mapping/mapper_merge_fields.c index ca0550982..c185100aa 100644 --- a/c/mapping/mapper_merge_fields.c +++ b/c/mapping/mapper_merge_fields.c @@ -56,7 +56,8 @@ typedef struct _mapper_merge_fields_state_t { // ---------------------------------------------------------------- static void mapper_merge_fields_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_merge_fields_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_merge_fields_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_merge_fields_alloc(slls_t* paccumulator_names, merge_by_t do_which, slls_t* pvalue_field_names, char* output_field_basename, int allow_int_float, int do_interpolated_percentiles, int keep_input_fields); @@ -105,7 +106,9 @@ static void mapper_merge_fields_usage(FILE* o, char* argv0, char* verb) { fprintf(o, " \"b_y\", and \"b_out_x\" collapses to \"b_x\".\n"); } -static mapper_t* mapper_merge_fields_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_merge_fields_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* paccumulator_names = NULL; slls_t* pvalue_field_names = NULL; char* output_field_basename = NULL; diff --git a/c/mapping/mapper_nest.c b/c/mapping/mapper_nest.c index a55f0c0e6..03c8cd2a8 100644 --- a/c/mapping/mapper_nest.c +++ b/c/mapping/mapper_nest.c @@ -31,7 +31,8 @@ typedef struct _nest_bucket_t { } nest_bucket_t; static void mapper_nest_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_nest_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_nest_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_nest_alloc(ap_state_t* pargp, char* argv0, char* field_name, char* nested_fs, char* nested_ps, int do_explode, int do_pairs, int do_across_fields); @@ -110,7 +111,9 @@ static void mapper_nest_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "See also %s reshape.\n", argv0); } -static mapper_t* mapper_nest_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_nest_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* field_name = NULL; char* nested_fs = ";"; char* nested_ps = ":"; diff --git a/c/mapping/mapper_nothing.c b/c/mapping/mapper_nothing.c index 5f85c6c95..44ffe35cb 100644 --- a/c/mapping/mapper_nothing.c +++ b/c/mapping/mapper_nothing.c @@ -4,7 +4,8 @@ #include "containers/sllv.h" static void mapper_nothing_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_nothing_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_nothing_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_nothing_alloc(); static void mapper_nothing_free(mapper_t* pmapper); static sllv_t* mapper_nothing_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -17,7 +18,9 @@ mapper_setup_t mapper_nothing_setup = { }; // ---------------------------------------------------------------- -static mapper_t* mapper_nothing_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_nothing_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 1) { mapper_nothing_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_put.c b/c/mapping/mapper_put.c index d4a45e853..ce210adec 100644 --- a/c/mapping/mapper_put.c +++ b/c/mapping/mapper_put.c @@ -33,7 +33,8 @@ typedef struct _mapper_put_state_t { } mapper_put_state_t; static void mapper_put_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_put_alloc(char* mlr_dsl_expression, char* comment_stripped_mlr_dsl_expression, mlr_dsl_ast_t* past, int outer_filter, int type_inferencing, char* oosvar_flatten_separator, int flush_every_record, cli_writer_opts_t* pwriter_opts); @@ -113,7 +114,9 @@ static void mapper_put_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* mlr_dsl_expression = NULL; char* comment_stripped_mlr_dsl_expression = NULL; char* expression_filename = NULL; diff --git a/c/mapping/mapper_regularize.c b/c/mapping/mapper_regularize.c index d7203ba84..676ddbbb3 100644 --- a/c/mapping/mapper_regularize.c +++ b/c/mapping/mapper_regularize.c @@ -9,7 +9,8 @@ typedef struct _mapper_regularize_state_t { } mapper_regularize_state_t; static void mapper_regularize_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_regularize_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_regularize_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_regularize_alloc(); static void mapper_regularize_free(mapper_t* pmapper); static sllv_t* mapper_regularize_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -31,7 +32,9 @@ static void mapper_regularize_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "output as a=1,c=2,b=3, then e=4,d=5, then a=6,c=7,b=8\n"); } -static mapper_t* mapper_regularize_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_regularize_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ *pargi += 1; return mapper_regularize_alloc(); } diff --git a/c/mapping/mapper_rename.c b/c/mapping/mapper_rename.c index 0f6c9bdae..aa5244ab2 100644 --- a/c/mapping/mapper_rename.c +++ b/c/mapping/mapper_rename.c @@ -22,7 +22,8 @@ typedef struct _mapper_rename_state_t { } mapper_rename_state_t; static void mapper_rename_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_rename_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_rename_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_rename_alloc(ap_state_t* pargp, lhmss_t* pold_to_new, int do_regexes, int do_gsub); static void mapper_rename_free(mapper_t* pmapper); static sllv_t* mapper_rename_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -59,7 +60,9 @@ static void mapper_rename_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "%s %s -r '\"name\"i,Name' Rename \"name\", \"Name\", \"NAME\", etc. to \"Name\"\n", argv0, verb); } -static mapper_t* mapper_rename_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_rename_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int do_regexes = FALSE; int do_gsub = FALSE; diff --git a/c/mapping/mapper_reorder.c b/c/mapping/mapper_reorder.c index 46a187f5c..f85710e55 100644 --- a/c/mapping/mapper_reorder.c +++ b/c/mapping/mapper_reorder.c @@ -12,7 +12,8 @@ typedef struct _mapper_reorder_state_t { } mapper_reorder_state_t; static void mapper_reorder_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_reorder_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_reorder_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_reorder_alloc(ap_state_t* pargp, slls_t* pfield_name_list, int put_at_end); static void mapper_reorder_free(mapper_t* pmapper); static sllv_t* mapper_reorder_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -38,7 +39,9 @@ static void mapper_reorder_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_reorder_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_reorder_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pfield_name_list = NULL; int put_at_end = FALSE; diff --git a/c/mapping/mapper_repeat.c b/c/mapping/mapper_repeat.c index d70b0ba28..c9ed5f1d8 100644 --- a/c/mapping/mapper_repeat.c +++ b/c/mapping/mapper_repeat.c @@ -22,7 +22,8 @@ typedef struct _mapper_repeat_state_t { } mapper_repeat_state_t; static void mapper_repeat_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_repeat_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_repeat_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_repeat_alloc(ap_state_t* pargp, long long repeat_count, char* repeat_count_field_name); static void mapper_repeat_free(mapper_t* pmapper); static sllv_t* mapper_repeat_process_nop(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -65,7 +66,9 @@ static void mapper_repeat_usage(FILE* o, char* argv0, char* verb) { } static const long long UNINIT_REPEAT_COUNT = -123457689LL; -static mapper_t* mapper_repeat_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_repeat_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ long long repeat_count = UNINIT_REPEAT_COUNT; char* repeat_count_field_name = NULL; diff --git a/c/mapping/mapper_reshape.c b/c/mapping/mapper_reshape.c index 7098b6e16..e1f661b0e 100644 --- a/c/mapping/mapper_reshape.c +++ b/c/mapping/mapper_reshape.c @@ -57,7 +57,8 @@ typedef struct _reshape_bucket_t { } reshape_bucket_t; static void mapper_reshape_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_reshape_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_reshape_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_reshape_alloc( ap_state_t* pargp, slls_t* input_field_names, @@ -140,7 +141,9 @@ static void mapper_reshape_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "See also %s nest.\n", argv0); } -static mapper_t* mapper_reshape_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_reshape_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* input_field_names = NULL; slls_t* input_field_regex_strings = NULL; slls_t* output_field_names = NULL; diff --git a/c/mapping/mapper_sample.c b/c/mapping/mapper_sample.c index dd9d8a19a..e56694916 100644 --- a/c/mapping/mapper_sample.c +++ b/c/mapping/mapper_sample.c @@ -32,7 +32,8 @@ typedef struct _mapper_sample_state_t { } mapper_sample_state_t; static void mapper_sample_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_sample_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_sample_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_sample_alloc(ap_state_t* pargp, slls_t* pgroup_by_field_names, unsigned long long sample_count); static void mapper_sample_free(mapper_t* pmapper); @@ -54,7 +55,9 @@ static void mapper_sample_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "See also %s bootstrap and %s shuffle.\n", argv0, argv0); } -static mapper_t* mapper_sample_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_sample_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int sample_count = -1; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_sec2gmt.c b/c/mapping/mapper_sec2gmt.c index 1b344a6d2..62093db4f 100644 --- a/c/mapping/mapper_sec2gmt.c +++ b/c/mapping/mapper_sec2gmt.c @@ -10,7 +10,8 @@ typedef struct _mapper_sec2gmt_state_t { } mapper_sec2gmt_state_t; static void mapper_sec2gmt_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_sec2gmt_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_sec2gmt_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_sec2gmt_alloc(slls_t* pfield_names); static void mapper_sec2gmt_free(mapper_t* pmapper); static sllv_t* mapper_sec2gmt_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -34,7 +35,9 @@ static void mapper_sec2gmt_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_sec2gmt_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_sec2gmt_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 2) { mapper_sec2gmt_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_sec2gmtdate.c b/c/mapping/mapper_sec2gmtdate.c index 4e2cbee93..4e9d5c246 100644 --- a/c/mapping/mapper_sec2gmtdate.c +++ b/c/mapping/mapper_sec2gmtdate.c @@ -10,7 +10,8 @@ typedef struct _mapper_sec2gmtdate_state_t { } mapper_sec2gmtdate_state_t; static void mapper_sec2gmtdate_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_sec2gmtdate_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_sec2gmtdate_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_sec2gmtdate_alloc(slls_t* pfield_names); static void mapper_sec2gmtdate_free(mapper_t* pmapper); static sllv_t* mapper_sec2gmtdate_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -34,7 +35,9 @@ static void mapper_sec2gmtdate_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_sec2gmtdate_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_sec2gmtdate_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 2) { mapper_sec2gmtdate_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_shuffle.c b/c/mapping/mapper_shuffle.c index 59c45b3c4..79fa53f79 100644 --- a/c/mapping/mapper_shuffle.c +++ b/c/mapping/mapper_shuffle.c @@ -19,7 +19,8 @@ typedef struct _mapper_shuffle_state_t { } mapper_shuffle_state_t; static void mapper_shuffle_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_shuffle_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_shuffle_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_shuffle_alloc(ap_state_t* pargp); static void mapper_shuffle_free(mapper_t* pmapper); static sllv_t* mapper_shuffle_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -39,7 +40,9 @@ static void mapper_shuffle_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "See also %s bootstrap and %s sample.\n", argv0, argv0); } -static mapper_t* mapper_shuffle_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_shuffle_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ char* verb = argv[(*pargi)++]; ap_state_t* pstate = ap_alloc(); diff --git a/c/mapping/mapper_sort.c b/c/mapping/mapper_sort.c index 5eec005f3..1f40a9b71 100644 --- a/c/mapping/mapper_sort.c +++ b/c/mapping/mapper_sort.c @@ -79,9 +79,11 @@ typedef struct _sort_bucket_t { // ---------------------------------------------------------------- static void mapper_sort_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_sort_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_sort_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static void mapper_group_by_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_group_by_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_group_by_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_sort_alloc(slls_t* pkey_field_names, int* sort_params, int do_sort); static void mapper_sort_free(mapper_t* pmapper); static sllv_t* mapper_sort_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -129,7 +131,9 @@ static void mapper_sort_usage(FILE* o, char* argv0, char* verb) { fprintf(o, " %s %s -f a -f b -nr x -nr y -nr z\n", argv0, verb); } -static mapper_t* mapper_sort_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_sort_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 3) { mapper_sort_usage(stderr, argv[0], argv[*pargi]); return NULL; @@ -192,7 +196,9 @@ static void mapper_group_by_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Outputs records in batches having identical values at specified field names.\n"); } -static mapper_t* mapper_group_by_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_group_by_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 2) { mapper_group_by_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_stats1.c b/c/mapping/mapper_stats1.c index 56e47976e..e8e72c8bb 100644 --- a/c/mapping/mapper_stats1.c +++ b/c/mapping/mapper_stats1.c @@ -30,7 +30,8 @@ typedef struct _mapper_stats1_state_t { } mapper_stats1_state_t; static void mapper_stats1_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_stats1_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_stats1_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_stats1_alloc(ap_state_t* pargp, slls_t* paccumulator_names, string_array_t* pvalue_field_names, slls_t* pgroup_by_field_names, int do_iterative_stats, int allow_int_float, int do_interpolated_percentiles); static void mapper_stats1_free(mapper_t* pmapper); @@ -82,7 +83,9 @@ static void mapper_stats1_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "* When there are mode ties, the first-encountered datum wins.\n"); } -static mapper_t* mapper_stats1_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_stats1_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* paccumulator_names = NULL; string_array_t* pvalue_field_names = NULL; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_stats2.c b/c/mapping/mapper_stats2.c index 050f6ac98..9a43dd42a 100644 --- a/c/mapping/mapper_stats2.c +++ b/c/mapping/mapper_stats2.c @@ -55,7 +55,8 @@ typedef stats2_acc_t* stats2_alloc_func_t(char* value_field_name_1, char* value_ // ---------------------------------------------------------------- static void mapper_stats2_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_stats2_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_stats2_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_stats2_alloc(ap_state_t* pargp, slls_t* paccumulator_names, string_array_t* pvalue_field_name_pairs, slls_t* pgroup_by_field_names, int do_verbose, int do_iterative_stats, int do_hold_and_fit); @@ -127,7 +128,9 @@ static void mapper_stats2_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Example: %s %s -a corr -f x,y\n", argv0, verb); } -static mapper_t* mapper_stats2_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_stats2_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* paccumulator_names = NULL; string_array_t* pvalue_field_names = NULL; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_step.c b/c/mapping/mapper_step.c index fc720f78b..2efee95db 100644 --- a/c/mapping/mapper_step.c +++ b/c/mapping/mapper_step.c @@ -73,7 +73,8 @@ typedef struct _mapper_step_state_t { // ---------------------------------------------------------------- static void mapper_step_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_step_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_step_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_step_alloc(ap_state_t* pargp, slls_t* pstepper_names, string_array_t* pvalue_field_names, slls_t* pgroup_by_field_names, int allow_int_float, slls_t* pstring_alphas, slls_t* pewma_suffixes); static void mapper_step_free(mapper_t* pmapper); @@ -149,7 +150,9 @@ static void mapper_step_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "for more information on EWMA.\n"); } -static mapper_t* mapper_step_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_step_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pstepper_names = NULL; string_array_t* pvalue_field_names = NULL; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_tac.c b/c/mapping/mapper_tac.c index e89dc9824..dfd589668 100644 --- a/c/mapping/mapper_tac.c +++ b/c/mapping/mapper_tac.c @@ -8,7 +8,8 @@ typedef struct _mapper_tac_state_t { } mapper_tac_state_t; static void mapper_tac_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_tac_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_tac_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_tac_alloc(); static void mapper_tac_free(mapper_t* pmapper); static sllv_t* mapper_tac_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -26,7 +27,9 @@ static void mapper_tac_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Prints records in reverse order from the order in which they were encountered.\n"); } -static mapper_t* mapper_tac_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_tac_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ if ((argc - *pargi) < 1) { mapper_tac_usage(stderr, argv[0], argv[*pargi]); return NULL; diff --git a/c/mapping/mapper_tail.c b/c/mapping/mapper_tail.c index 98d620135..e005b2ae3 100644 --- a/c/mapping/mapper_tail.c +++ b/c/mapping/mapper_tail.c @@ -19,7 +19,8 @@ typedef struct _mapper_tail_state_t { } mapper_tail_state_t; static void mapper_tail_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_tail_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_tail_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_tail_alloc(ap_state_t* pargp, slls_t* pgroup_by_field_names, unsigned long long tail_count); static void mapper_tail_free(mapper_t* pmapper); static sllv_t* mapper_tail_process(lrec_t* pinrec, context_t* pctx, void* pvstate); @@ -39,7 +40,9 @@ static void mapper_tail_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "Passes through the last n records, optionally by category.\n"); } -static mapper_t* mapper_tail_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_tail_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int tail_count = 10; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_tee.c b/c/mapping/mapper_tee.c index 65ad43714..5f21c7f52 100644 --- a/c/mapping/mapper_tee.c +++ b/c/mapping/mapper_tee.c @@ -16,7 +16,8 @@ typedef struct _mapper_tee_state_t { #define DEFAULT_COUNTER_FIELD_NAME "n" static void mapper_tee_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_tee_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_tee_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_tee_alloc(int do_append, int flush_every_record, char* output_file_name, cli_writer_opts_t* pwriter_opts); static void mapper_tee_free(mapper_t* pmapper); @@ -30,7 +31,9 @@ mapper_setup_t mapper_tee_setup = { }; // ---------------------------------------------------------------- -static mapper_t* mapper_tee_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_tee_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int do_append = FALSE; int flush_every_record = TRUE; cli_writer_opts_t* pwriter_opts = mlr_malloc_or_die(sizeof(cli_writer_opts_t)); diff --git a/c/mapping/mapper_top.c b/c/mapping/mapper_top.c index b689d90a4..db838ea61 100644 --- a/c/mapping/mapper_top.c +++ b/c/mapping/mapper_top.c @@ -28,7 +28,8 @@ typedef struct _mapper_top_state_t { } mapper_top_state_t; static void mapper_top_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_top_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_top_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_top_alloc(ap_state_t* pargp, slls_t* pvalue_field_names, slls_t* pgroup_by_field_names, int top_count, int do_max, int show_full_records, int allow_int_float); static void mapper_top_free(mapper_t* pmapper); @@ -59,7 +60,9 @@ static void mapper_top_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "optionally by category.\n"); } -static mapper_t* mapper_top_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_top_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ int top_count = 1; slls_t* pvalue_field_names = NULL; slls_t* pgroup_by_field_names = slls_alloc(); diff --git a/c/mapping/mapper_uniq.c b/c/mapping/mapper_uniq.c index b77d3e39f..857d31da1 100644 --- a/c/mapping/mapper_uniq.c +++ b/c/mapping/mapper_uniq.c @@ -19,9 +19,11 @@ typedef struct _mapper_uniq_state_t { } mapper_uniq_state_t; static void mapper_uniq_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_uniq_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_uniq_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static void mapper_count_distinct_usage(FILE* o, char* argv0, char* verb); -static mapper_t* mapper_count_distinct_parse_cli(int* pargi, int argc, char** argv); +static mapper_t* mapper_count_distinct_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __); static mapper_t* mapper_uniq_alloc(ap_state_t* pargp, slls_t* pgroup_by_field_names, int show_counts, int show_num_distinct_only); static void mapper_uniq_free(mapper_t* pmapper); @@ -53,7 +55,9 @@ static void mapper_count_distinct_usage(FILE* o, char* argv0, char* verb) { } // ---------------------------------------------------------------- -static mapper_t* mapper_count_distinct_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_count_distinct_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pfield_names = NULL; int show_num_distinct_only = FALSE; @@ -86,7 +90,9 @@ static void mapper_uniq_usage(FILE* o, char* argv0, char* verb) { fprintf(o, "count-distinct. For uniq, -f is a synonym for -g.\n"); } -static mapper_t* mapper_uniq_parse_cli(int* pargi, int argc, char** argv) { +static mapper_t* mapper_uniq_parse_cli(int* pargi, int argc, char** argv, + cli_reader_opts_t* _, cli_writer_opts_t* __) +{ slls_t* pgroup_by_field_names = NULL; int show_counts = FALSE; int show_num_distinct_only = FALSE; diff --git a/c/mlrmain.c b/c/mlrmain.c index ec37b86af..3d91c8147 100644 --- a/c/mlrmain.c +++ b/c/mlrmain.c @@ -2,9 +2,9 @@ #include #include -#include "cli/mlrcli.h" #include "lib/mlrutil.h" #include "lib/mlr_globals.h" +#include "cli/mlrcli.h" #include "containers/lrec.h" #include "containers/sllv.h" #include "input/lrec_readers.h" diff --git a/c/todo.txt b/c/todo.txt index 9a21f2187..39f05d8f8 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -17,11 +17,13 @@ TOP OF LIST: ---------------------------------------------------------------- 4.5.0 for sure: -* put/tee --oxxx flags overlays +! rid entirely of MLR_GLOBALS.popts; all on the stack w/ population-order caveat. +* mlh/mld for put/tee --oxxx flags overlays * xxxes * valgrinds +k put/tee --oxxx flags overlays k mlrcli functionize k simplify mapper_join k -i, -o, --io