Home | History | Annotate | Line # | Download | only in libopts
proto.h revision 1.5.8.1
      1 /*	$NetBSD: proto.h,v 1.5.8.1 2025/08/02 05:22:59 perseant Exp $	*/
      2 
      3 /* -*- buffer-read-only: t -*- vi: set ro:
      4  *
      5  * Prototypes for autoopts
      6  * Generated Sun Aug 26 10:44:39 PDT 2018
      7  */
      8 #ifndef AUTOOPTS_PROTO_H_GUARD
      9 #define AUTOOPTS_PROTO_H_GUARD 1
     10 
     11 
     12 /*
     13  * Static declarations from alias.c
     14  */
     15 static tSuccess
     16 too_many_occurrences(tOptions * opts, tOptDesc * od);
     17 
     18 /*
     19  * Static declarations from autoopts.c
     20  */
     21 static void *
     22 ao_malloc(size_t sz);
     23 
     24 static void *
     25 ao_realloc(void *p, size_t sz);
     26 
     27 static char *
     28 ao_strdup(char const *str);
     29 
     30 static tSuccess
     31 handle_opt(tOptions * opts, tOptState * o_st);
     32 
     33 static tSuccess
     34 next_opt(tOptions * opts, tOptState * o_st);
     35 
     36 static tSuccess
     37 regular_opts(tOptions * opts);
     38 
     39 /*
     40  * Static declarations from check.c
     41  */
     42 static bool
     43 has_conflict(tOptions * pOpts, tOptDesc * od);
     44 
     45 static bool
     46 occurs_enough(tOptions * pOpts, tOptDesc * pOD);
     47 
     48 static bool
     49 is_consistent(tOptions * pOpts);
     50 
     51 /*
     52  * Static declarations from configfile.c
     53  */
     54 static void
     55 file_preset(tOptions * opts, char const * fname, int dir);
     56 
     57 static char *
     58 handle_comment(char * txt);
     59 
     60 static char *
     61 handle_cfg(tOptions * opts, tOptState * ost, char * txt, int dir);
     62 
     63 static char *
     64 handle_directive(tOptions * opts, char * txt);
     65 
     66 static char *
     67 aoflags_directive(tOptions * opts, char * txt);
     68 
     69 static char *
     70 program_directive(tOptions * opts, char * txt);
     71 
     72 static char *
     73 handle_section(tOptions * opts, char * txt);
     74 
     75 static int
     76 parse_xml_encoding(char ** ppz);
     77 
     78 static char *
     79 trim_xml_text(char * intxt, char const * pznm, tOptionLoadMode mode);
     80 
     81 static void
     82 cook_xml_text(char * pzData);
     83 
     84 static char *
     85 handle_struct(tOptions * opts, tOptState * ost, char * txt, int dir);
     86 
     87 static void
     88 intern_file_load(tOptions * opts);
     89 
     90 static char const *
     91 parse_attrs(tOptions * opts, char const * txt, tOptionLoadMode * pMode,
     92             tOptionValue * pType);
     93 
     94 static char const *
     95 parse_keyword(tOptions * opts, char const * txt, tOptionValue * typ);
     96 
     97 static char const *
     98 parse_set_mem(tOptions * opts, char const * txt, tOptionValue * typ);
     99 
    100 static char const *
    101 parse_value(char const * txt, tOptionValue * typ);
    102 
    103 /*
    104  * Static declarations from cook.c
    105  */
    106 static char *
    107 nl_count(char * start, char * end, int * lnct_p);
    108 
    109 static bool
    110 contiguous_quote(char ** pps, char * pq, int * lnct_p);
    111 
    112 /*
    113  * Static declarations from enum.c
    114  */
    115 static void
    116 enum_err(tOptions * pOpts, tOptDesc * pOD,
    117          char const * const * paz_names, int name_ct);
    118 
    119 static uintptr_t
    120 find_name(char const * name, tOptions * pOpts, tOptDesc * pOD,
    121           char const * const *  paz_names, unsigned int name_ct);
    122 
    123 static void
    124 set_memb_shell(tOptions * pOpts, tOptDesc * pOD, char const * const * paz_names,
    125                unsigned int name_ct);
    126 
    127 static void
    128 set_memb_names(tOptions * opts, tOptDesc * od, char const * const * nm_list,
    129                unsigned int nm_ct);
    130 
    131 static uintptr_t
    132 check_membership_start(tOptDesc * od, char const ** argp, bool * invert);
    133 
    134 static uintptr_t
    135 find_member_bit(tOptions * opts, tOptDesc * od, char const * pz, int len,
    136                 char const * const * nm_list, unsigned int nm_ct);
    137 
    138 /*
    139  * Static declarations from env.c
    140  */
    141 static void
    142 doPrognameEnv(tOptions * pOpts, teEnvPresetType type);
    143 
    144 static void
    145 do_env_opt(tOptState * os, char * env_name,
    146             tOptions * pOpts, teEnvPresetType type);
    147 
    148 static void
    149 env_presets(tOptions * pOpts, teEnvPresetType type);
    150 
    151 /*
    152  * Static declarations from file.c
    153  */
    154 static void
    155 check_existence(teOptFileType ftype, tOptions * pOpts, tOptDesc * pOD);
    156 
    157 static void
    158 open_file_fd(tOptions * pOpts, tOptDesc * pOD, tuFileMode mode);
    159 
    160 static void
    161 fopen_file_fp(tOptions * pOpts, tOptDesc * pOD, tuFileMode mode);
    162 
    163 /*
    164  * Static declarations from find.c
    165  */
    166 static int
    167 parse_opt(char const ** nm_pp, char ** arg_pp, char * buf, size_t bufsz);
    168 
    169 static void
    170 opt_ambiguities(tOptions * opts, char const * name, int nm_len);
    171 
    172 static int
    173 opt_match_ct(tOptions * opts, char const * name, int nm_len,
    174              int * ixp, bool * disable);
    175 
    176 static tSuccess
    177 opt_set(tOptions * opts, char * arg, int idx, bool disable, tOptState * st);
    178 
    179 static tSuccess
    180 opt_unknown(tOptions * opts, char const * name, char * arg, tOptState * st);
    181 
    182 static tSuccess
    183 opt_ambiguous(tOptions * opts, char const * name, int match_ct);
    184 
    185 static tSuccess
    186 opt_find_long(tOptions * opts, char const * opt_name, tOptState * state);
    187 
    188 static tSuccess
    189 opt_find_short(tOptions * pOpts, uint_t optValue, tOptState * pOptState);
    190 
    191 static tSuccess
    192 get_opt_arg_must(tOptions * opts, tOptState * o_st);
    193 
    194 static tSuccess
    195 get_opt_arg_may(tOptions * pOpts, tOptState * o_st);
    196 
    197 static tSuccess
    198 get_opt_arg_none(tOptions * pOpts, tOptState * o_st);
    199 
    200 static tSuccess
    201 get_opt_arg(tOptions * opts, tOptState * o_st);
    202 
    203 static tSuccess
    204 find_opt(tOptions * opts, tOptState * o_st);
    205 
    206 /*
    207  * Static declarations from init.c
    208  */
    209 static tSuccess
    210 validate_struct(tOptions * opts, char const * pname);
    211 
    212 static tSuccess
    213 immediate_opts(tOptions * opts);
    214 
    215 static tSuccess
    216 do_presets(tOptions * opts);
    217 
    218 static bool
    219 ao_initialize(tOptions * opts, int a_ct, char ** a_v);
    220 
    221 /*
    222  * Static declarations from load.c
    223  */
    224 static bool
    225 get_realpath(char * buf, size_t b_sz);
    226 
    227 static bool
    228 add_prog_path(char * buf, int b_sz, char const * fname, char const * prg_path);
    229 
    230 static bool
    231 add_env_val(char * buf, int buf_sz, char const * name);
    232 
    233 static void
    234 munge_str(char * txt, tOptionLoadMode mode);
    235 
    236 static char *
    237 assemble_arg_val(char * txt, tOptionLoadMode mode);
    238 
    239 static char *
    240 trim_quotes(char * arg);
    241 
    242 static bool
    243 direction_ok(opt_state_mask_t f, int dir);
    244 
    245 static void
    246 load_opt_line(tOptions * opts, tOptState * opt_state, char * line,
    247               tDirection direction, tOptionLoadMode load_mode );
    248 
    249 /*
    250  * Static declarations from makeshell.c
    251  */
    252 lo_noreturn static void
    253 option_exits(int exit_code);
    254 
    255 lo_noreturn static void
    256 ao_bug(char const * msg);
    257 
    258 static void
    259 fserr_warn(char const * prog, char const * op, char const * fname);
    260 
    261 lo_noreturn static void
    262 fserr_exit(char const * prog, char const * op, char const * fname);
    263 
    264 static void
    265 emit_var_text(char const * prog, char const * var, int fdin);
    266 
    267 static void
    268 text_to_var(tOptions * opts, teTextTo which, tOptDesc * od);
    269 
    270 static void
    271 emit_usage(tOptions * opts);
    272 
    273 static void
    274 emit_wrapup(tOptions * opts);
    275 
    276 static void
    277 emit_setup(tOptions * opts);
    278 
    279 static void
    280 emit_action(tOptions * opts, tOptDesc * od);
    281 
    282 static void
    283 emit_inaction(tOptions * opts, tOptDesc * od);
    284 
    285 static void
    286 emit_flag(tOptions * opts);
    287 
    288 static void
    289 emit_match_expr(char const * name, tOptDesc * cod, tOptions * opts);
    290 
    291 static void
    292 emit_long(tOptions * opts);
    293 
    294 static char *
    295 load_old_output(char const * fname, char const * pname);
    296 
    297 static void
    298 open_out(char const * fname, char const * pname);
    299 
    300 /*
    301  * Static declarations from nested.c
    302  */
    303 static void
    304 remove_continuation(char * src);
    305 
    306 static char const *
    307 scan_q_str(char const * pzTxt);
    308 
    309 static tOptionValue *
    310 add_string(void ** pp, char const * name, size_t nm_len,
    311            char const * val, size_t d_len);
    312 
    313 static tOptionValue *
    314 add_bool(void ** pp, char const * name, size_t nm_len,
    315          char const * val, size_t d_len);
    316 
    317 static tOptionValue *
    318 add_number(void ** pp, char const * name, size_t nm_len,
    319            char const * val, size_t d_len);
    320 
    321 static tOptionValue *
    322 add_nested(void ** pp, char const * name, size_t nm_len,
    323            char * val, size_t d_len);
    324 
    325 static char const *
    326 scan_name(char const * name, tOptionValue * res);
    327 
    328 static char const *
    329 unnamed_xml(char const * txt);
    330 
    331 static char const *
    332 scan_xml_name(char const * name, size_t * nm_len, tOptionValue * val);
    333 
    334 static char const *
    335 find_end_xml(char const * src, size_t nm_len, char const * val, size_t * len);
    336 
    337 static char const *
    338 scan_xml(char const * xml_name, tOptionValue * res_val);
    339 
    340 static void
    341 unload_arg_list(tArgList * arg_list);
    342 
    343 static void
    344 sort_list(tArgList * arg_list);
    345 
    346 static tOptionValue *
    347 optionLoadNested(char const * text, char const * name, size_t nm_len);
    348 
    349 static int
    350 get_special_char(char const ** ppz, int * ct);
    351 
    352 static void
    353 emit_special_char(FILE * fp, int ch);
    354 
    355 /*
    356  * Static declarations from parse-duration.c
    357  */
    358 static unsigned long
    359 str_const_to_ul (cch_t * str, cch_t ** ppz, int base);
    360 
    361 static long
    362 str_const_to_l (cch_t * str, cch_t ** ppz, int base);
    363 
    364 static time_t
    365 scale_n_add (time_t base, time_t val, int scale);
    366 
    367 static time_t
    368 parse_hr_min_sec (time_t start, cch_t * pz);
    369 
    370 static time_t
    371 parse_scaled_value (time_t base, cch_t ** ppz, cch_t * endp, int scale);
    372 
    373 static time_t
    374 parse_year_month_day (cch_t * pz, cch_t * ps);
    375 
    376 static time_t
    377 parse_yearmonthday (cch_t * in_pz);
    378 
    379 static time_t
    380 parse_YMWD (cch_t * pz);
    381 
    382 static time_t
    383 parse_hour_minute_second (cch_t * pz, cch_t * ps);
    384 
    385 static time_t
    386 parse_hourminutesecond (cch_t * in_pz);
    387 
    388 static time_t
    389 parse_HMS (cch_t * pz);
    390 
    391 static time_t
    392 parse_time (cch_t * pz);
    393 
    394 static char *
    395 trim (char * pz);
    396 
    397 static time_t
    398 parse_period (cch_t * in_pz);
    399 
    400 static time_t
    401 parse_non_iso8601 (cch_t * pz);
    402 
    403 /*
    404  * Static declarations from pgusage.c
    405  */
    406 static inline FILE *
    407 open_tmp_usage(char ** buf);
    408 
    409 static inline char *
    410 mk_pager_cmd(char const * fname);
    411 
    412 /*
    413  * Static declarations from putshell.c
    414  */
    415 static size_t
    416 string_size(char const * scan, size_t nl_len);
    417 
    418 static char const *
    419 print_quoted_apostrophes(char const * str);
    420 
    421 static void
    422 print_quot_str(char const * str);
    423 
    424 static void
    425 print_enumeration(tOptions * pOpts, tOptDesc * pOD);
    426 
    427 static void
    428 print_membership(tOptions * pOpts, tOptDesc * pOD);
    429 
    430 static void
    431 print_stacked_arg(tOptions * pOpts, tOptDesc * pOD);
    432 
    433 static void
    434 print_reordering(tOptions * opts);
    435 
    436 /*
    437  * Static declarations from reset.c
    438  */
    439 static void
    440 optionReset(tOptions * pOpts, tOptDesc * pOD);
    441 
    442 static void
    443 optionResetEverything(tOptions * pOpts);
    444 
    445 /*
    446  * Static declarations from restore.c
    447  */
    448 static void
    449 fixupSavedOptionArgs(tOptions * pOpts);
    450 
    451 /*
    452  * Static declarations from save.c
    453  */
    454 static char const *
    455 find_dir_name(tOptions * opts, int * p_free);
    456 
    457 static char const *
    458 find_file_name(tOptions * opts, int * p_free_name);
    459 
    460 static void
    461 prt_entry(FILE * fp, tOptDesc * od, char const * l_arg, save_flags_mask_t save_fl);
    462 
    463 static void
    464 prt_value(FILE * fp, int depth, tOptDesc * od, tOptionValue const * ovp);
    465 
    466 static void
    467 prt_string(FILE * fp, char const * name, char const * pz);
    468 
    469 static void
    470 prt_val_list(FILE * fp, char const * name, tArgList * al);
    471 
    472 static void
    473 prt_nested(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);
    474 
    475 static void
    476 remove_settings(tOptions * opts, char const * fname);
    477 
    478 static FILE *
    479 open_sv_file(tOptions * opts, save_flags_mask_t save_fl);
    480 
    481 static void
    482 prt_no_arg_opt(FILE * fp, tOptDesc * vod, tOptDesc * pod, save_flags_mask_t save_fl);
    483 
    484 static void
    485 prt_str_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);
    486 
    487 static void
    488 prt_enum_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);
    489 
    490 static void
    491 prt_set_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);
    492 
    493 static void
    494 prt_file_arg(FILE * fp, tOptDesc * od, tOptions * opts, save_flags_mask_t save_fl);
    495 
    496 /*
    497  * Static declarations from sort.c
    498  */
    499 static tSuccess
    500 must_arg(tOptions * opts, char * arg_txt, tOptState * pOS,
    501          char ** opt_txt, uint32_t * opt_idx);
    502 
    503 static tSuccess
    504 maybe_arg(tOptions * opts, char * arg_txt, tOptState * pOS,
    505           char ** opt_txt, uint32_t * opt_idx);
    506 
    507 static tSuccess
    508 short_opt_ck(tOptions * opts, char * arg_txt, tOptState * pOS,
    509              char ** opt_txt, uint32_t * opt_idx);
    510 
    511 static void
    512 optionSort(tOptions * opts);
    513 
    514 /*
    515  * Static declarations from stack.c
    516  */
    517 static void
    518 addArgListEntry(void ** ppAL, void * entry);
    519 
    520 /*
    521  * Static declarations from text_mmap.c
    522  */
    523 static void
    524 load_text_file(tmap_info_t * mapinfo, char const * pzFile);
    525 
    526 static void
    527 validate_mmap(char const * fname, int prot, int flags, tmap_info_t * mapinfo);
    528 
    529 static void
    530 close_mmap_files(tmap_info_t * mi);
    531 
    532 /*
    533  * Static declarations from tokenize.c
    534  */
    535 static void
    536 copy_cooked(ch_t ** ppDest, char const ** ppSrc);
    537 
    538 static void
    539 copy_raw(ch_t ** ppDest, char const ** ppSrc);
    540 
    541 static token_list_t *
    542 alloc_token_list(char const * str);
    543 
    544 /*
    545  * Static declarations from usage.c
    546  */
    547 static unsigned int
    548 parse_usage_flags(ao_flag_names_t const * fnt, char const * txt);
    549 
    550 static void
    551 set_usage_flags(tOptions * opts, char const * flg_txt);
    552 
    553 static inline bool
    554 do_gnu_usage(tOptions * pOpts);
    555 
    556 static inline bool
    557 skip_misuse_usage(tOptions * pOpts);
    558 
    559 static void
    560 print_offer_usage(tOptions * opts);
    561 
    562 static void
    563 print_usage_details(tOptions * opts, int exit_code);
    564 
    565 static void
    566 print_one_paragraph(char const * text, bool plain, FILE * fp);
    567 
    568 static void
    569 prt_conflicts(tOptions * opts, tOptDesc * od);
    570 
    571 static void
    572 prt_one_vendor(tOptions *    opts,  tOptDesc *   od,
    573                arg_types_t * argtp, char const * usefmt);
    574 
    575 static void
    576 prt_vendor_opts(tOptions * opts, char const * title);
    577 
    578 static void
    579 prt_extd_usage(tOptions * opts, tOptDesc * od, char const * title);
    580 
    581 static void
    582 prt_ini_list(char const * const * papz, char const * ini_file,
    583              char const * path_nm);
    584 
    585 static void
    586 prt_preamble(tOptions * opts, tOptDesc * od, arg_types_t * at);
    587 
    588 static void
    589 prt_one_usage(tOptions * opts, tOptDesc * od, arg_types_t * at);
    590 
    591 static void
    592 prt_opt_usage(tOptions * opts, int ex_code, char const * title);
    593 
    594 static void
    595 prt_prog_detail(tOptions * opts);
    596 
    597 static int
    598 setGnuOptFmts(tOptions * opts, char const ** ptxt);
    599 
    600 static int
    601 setStdOptFmts(tOptions * opts, char const ** ptxt);
    602 
    603 /*
    604  * Static declarations from version.c
    605  */
    606 static void
    607 emit_first_line(
    608     FILE * fp, char const * alt1, char const * alt2, char const * alt3);
    609 
    610 static void
    611 emit_simple_ver(tOptions * o, FILE * fp);
    612 
    613 static void
    614 emit_copy_full(tOptions * o, FILE * fp);
    615 
    616 static void
    617 emit_copy_note(tOptions * opts, FILE * fp);
    618 
    619 static void
    620 print_ver(tOptions * opts, tOptDesc * od, FILE * fp, bool call_exit);
    621 
    622 #endif /* AUTOOPTS_PROTO_H_GUARD */
    623