/* -*- buffer-read-only: t -*- vi: set ro:
 *
 * Prototypes for autoopts
 * Generated Sun Aug 26 10:44:39 PDT 2018
 */
#ifndef AUTOOPTS_PROTO_H_GUARD
#define AUTOOPTS_PROTO_H_GUARD 1


/*
 * Static declarations from alias.c
 */
static tSuccess
too_many_occurrences(tOptions * opts, tOptDesc * od);

/*
 * Static declarations from autoopts.c
 */
static void *
ao_malloc(size_t sz);

static void *
ao_realloc(void *p, size_t sz);

static char *
ao_strdup(char const *str);

static tSuccess
handle_opt(tOptions * opts, tOptState * o_st);

static tSuccess
next_opt(tOptions * opts, tOptState * o_st);

static tSuccess
regular_opts(tOptions * opts);

/*
 * Static declarations from check.c
 */
static bool
has_conflict(tOptions * pOpts, tOptDesc * od);

static bool
occurs_enough(tOptions * pOpts, tOptDesc * pOD);

static bool
is_consistent(tOptions * pOpts);

/*
 * Static declarations from configfile.c
 */
static void
file_preset(tOptions * opts, char const * fname, int dir);

static char *
handle_comment(char * txt);

static char *
handle_cfg(tOptions * opts, tOptState * ost, char * txt, int dir);

static char *
handle_directive(tOptions * opts, char * txt);

static char *
aoflags_directive(tOptions * opts, char * txt);

static char *
program_directive(tOptions * opts, char * txt);

static char *
handle_section(tOptions * opts, char * txt);

static int
parse_xml_encoding(char ** ppz);

static char *
trim_xml_text(char * intxt, char const * pznm, tOptionLoadMode mode);

static void
cook_xml_text(char * pzData);

static char *
handle_struct(tOptions * opts, tOptState * ost, char * txt, int dir);

static void
intern_file_load(tOptions * opts);

static char const *
parse_attrs(tOptions * opts, char const * txt, tOptionLoadMode * pMode,
            tOptionValue * pType);

static char const *
parse_keyword(tOptions * opts, char const * txt, tOptionValue * typ);

static char const *
parse_set_mem(tOptions * opts, char const * txt, tOptionValue * typ);

static char const *
parse_value(char const * txt, tOptionValue * typ);

/*
 * Static declarations from cook.c
 */
static char *
nl_count(char * start, char * end, int * lnct_p);

static bool
contiguous_quote(char ** pps, char * pq, int * lnct_p);

/*
 * Static declarations from enum.c
 */
static void
enum_err(tOptions * pOpts, tOptDesc * pOD,
         char const * const * paz_names, int name_ct);

static uintptr_t
find_name(char const * name, tOptions * pOpts, tOptDesc * pOD,
          char const * const *  paz_names, unsigned int name_ct);

static void
set_memb_shell(tOptions * pOpts, tOptDesc * pOD, char const * const * paz_names,
               unsigned int name_ct);

static void
set_memb_names(tOptions * opts, tOptDesc * od, char const * const * nm_list,
               unsigned int nm_ct);

static uintptr_t
check_membership_start(tOptDesc * od, char const ** argp, bool * invert);

static uintptr_t
find_member_bit(tOptions * opts, tOptDesc * od, char const * pz, int len,
                char const * const * nm_list, unsigned int nm_ct);

/*
 * Static declarations from env.c
 */
static void
doPrognameEnv(tOptions * pOpts, teEnvPresetType type);

static void
do_env_opt(tOptState * os, char * env_name,
            tOptions * pOpts, teEnvPresetType type);

static void
env_presets(tOptions * pOpts, teEnvPresetType type);

/*
 * Static declarations from file.c
 */
static void
check_existence(teOptFileType ftype, tOptions * pOpts, tOptDesc * pOD);

static void
open_file_fd(tOptions * pOpts, tOptDesc * pOD, tuFileMode mode);

static void
fopen_file_fp(tOptions * pOpts, tOptDesc * pOD, tuFileMode mode);

/*
 * Static declarations from find.c
 */
static int
parse_opt(char const ** nm_pp, char ** arg_pp, char * buf, size_t bufsz);

static void
opt_ambiguities(tOptions * opts, char const * name, int nm_len);

static int
opt_match_ct(tOptions * opts, char const * name, int nm_len,
             int * ixp, bool * disable);

static tSuccess
opt_set(tOptions * opts, char * arg, int idx, bool disable, tOptState * st);

static tSuccess
opt_unknown(tOptions * opts, char const * name, char * arg, tOptState * st);

static tSuccess
opt_ambiguous(tOptions * opts, char const * name, int match_ct);

static tSuccess
opt_find_long(tOptions * opts, char const * opt_name, tOptState * state);

static tSuccess
opt_find_short(tOptions * pOpts, uint_t optValue, tOptState * pOptState);

static tSuccess
get_opt_arg_must(tOptions * opts, tOptState * o_st);

static tSuccess
get_opt_arg_may(tOptions * pOpts, tOptState * o_st);

static tSuccess
get_opt_arg_none(tOptions * pOpts, tOptState * o_st);

static tSuccess
get_opt_arg(tOptions * opts, tOptState * o_st);

static tSuccess
find_opt(tOptions * opts, tOptState * o_st);

/*
 * Static declarations from init.c
 */
static tSuccess
validate_struct(tOptions * opts, char const * pname);

static tSuccess
immediate_opts(tOptions * opts);

static tSuccess
do_presets(tOptions * opts);

static bool
ao_initialize(tOptions * opts, int a_ct, char ** a_v);

/*
 * Static declarations from load.c
 */
static bool
get_realpath(char * buf, size_t b_sz);

static bool
add_prog_path(char * buf, int b_sz, char const * fname, char const * prg_path);

static bool
add_env_val(char * buf, int buf_sz, char const * name);

static void
munge_str(char * txt, tOptionLoadMode mode);

static char *
assemble_arg_val(char * txt, tOptionLoadMode mode);

static char *
trim_quotes(char * arg);

static bool
direction_ok(opt_state_mask_t f, int dir);

static void
load_opt_line(tOptions * opts, tOptState * opt_state, char * line,
              tDirection direction, tOptionLoadMode load_mode );

/*
 * Static declarations from makeshell.c
 */
noreturn static void
option_exits(int exit_code);

noreturn static void
ao_bug(char const * msg);

static void
fserr_warn(char const * prog, char const * op, char const * fname);

noreturn static void
fserr_exit(char const * prog, char const * op, char const * fname);

static void
emit_var_text(char const * prog, char const * var, int fdin);

static void
text_to_var(tOptions * opts, teTextTo which, tOptDesc * od);

static void
emit_usage(tOptions * opts);

static void
emit_wrapup(tOptions * opts);

static void
emit_setup(tOptions * opts);

static void
emit_action(tOptions * opts, tOptDesc * od);

static void
emit_inaction(tOptions * opts, tOptDesc * od);

static void
emit_flag(tOptions * opts);

static void
emit_match_expr(char const * name, tOptDesc * cod, tOptions * opts);

static void
emit_long(tOptions * opts);

static char *
load_old_output(char const * fname, char const * pname);

static void
open_out(char const * fname, char const * pname);

/*
 * Static declarations from nested.c
 */
static void
remove_continuation(char * src);

static char const *
scan_q_str(char const * pzTxt);

static tOptionValue *
add_string(void ** pp, char const * name, size_t nm_len,
           char const * val, size_t d_len);

static tOptionValue *
add_bool(void ** pp, char const * name, size_t nm_len,
         char const * val, size_t d_len);

static tOptionValue *
add_number(void ** pp, char const * name, size_t nm_len,
           char const * val, size_t d_len);

static tOptionValue *
add_nested(void ** pp, char const * name, size_t nm_len,
           char * val, size_t d_len);

static char const *
scan_name(char const * name, tOptionValue * res);

static char const *
unnamed_xml(char const * txt);

static char const *
scan_xml_name(char const * name, size_t * nm_len, tOptionValue * val);

static char const *
find_end_xml(char const * src, size_t nm_len, char const * val, size_t * len);

static char const *
scan_xml(char const * xml_name, tOptionValue * res_val);

static void
unload_arg_list(tArgList * arg_list);

static void
sort_list(tArgList * arg_list);

static tOptionValue *
optionLoadNested(char const * text, char const * name, size_t nm_len);

static int
get_special_char(char const ** ppz, int * ct);

static void
emit_special_char(FILE * fp, int ch);

/*
 * Static declarations from parse-duration.c
 */
static unsigned long
str_const_to_ul (cch_t * str, cch_t ** ppz, int base);

static long
str_const_to_l (cch_t * str, cch_t ** ppz, int base);

static time_t
scale_n_add (time_t base, time_t val, int scale);

static time_t
parse_hr_min_sec (time_t start, cch_t * pz);

static time_t
parse_scaled_value (time_t base, cch_t ** ppz, cch_t * endp, int scale);

static time_t
parse_year_month_day (cch_t * pz, cch_t * ps);

static time_t
parse_yearmonthday (cch_t * in_pz);

static time_t
parse_YMWD (cch_t * pz);

static time_t
parse_hour_minute_second (cch_t * pz, cch_t * ps);

static time_t
parse_hourminutesecond (cch_t * in_pz);

static time_t
parse_HMS (cch_t * pz);

static time_t
parse_time (cch_t * pz);

static char *
trim (char * pz);

static time_t
parse_period (cch_t * in_pz);

static time_t
parse_non_iso8601 (cch_t * pz);

/*
 * Static declarations from pgusage.c
 */
static inline FILE *
open_tmp_usage(char ** buf);

static inline char *
mk_pager_cmd(char const * fname);

/*
 * Static declarations from putshell.c
 */
static size_t
string_size(char const * scan, size_t nl_len);

static char const *
print_quoted_apostrophes(char const * str);

static void
print_quot_str(char const * str);

static void
print_enumeration(tOptions * pOpts, tOptDesc * pOD);

static void
print_membership(tOptions * pOpts, tOptDesc * pOD);

static void
print_stacked_arg(tOptions * pOpts, tOptDesc * pOD);

static void
print_reordering(tOptions * opts);

/*
 * Static declarations from reset.c
 */
static void
optionReset(tOptions * pOpts, tOptDesc * pOD);

static void
optionResetEverything(tOptions * pOpts);

/*
 * Static declarations from restore.c
 */
static void
fixupSavedOptionArgs(tOptions * pOpts);

/*
 * Static declarations from save.c
 */
static char const *
find_dir_name(tOptions * opts, int * p_free);

static char const *
find_file_name(tOptions * opts, int * p_free_name);

static void
prt_entry(FILE * fp, tOptDesc * od, char const * l_arg, save_flags_mask_t save_fl);

static void
prt_value(FILE * fp, int depth, tOptDesc * od, tOptionValue const * ovp);

static void
prt_string(FILE * fp, char const * name, char const * pz);

static void
prt_val_list(FILE * fp, char const * name, tArgList * al);

static void
prt_nested(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);

static void
remove_settings(tOptions * opts, char const * fname);

static FILE *
open_sv_file(tOptions * opts, save_flags_mask_t save_fl);

static void
prt_no_arg_opt(FILE * fp, tOptDesc * vod, tOptDesc * pod, save_flags_mask_t save_fl);

static void
prt_str_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);

static void
prt_enum_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);

static void
prt_set_arg(FILE * fp, tOptDesc * od, save_flags_mask_t save_fl);

static void
prt_file_arg(FILE * fp, tOptDesc * od, tOptions * opts, save_flags_mask_t save_fl);

/*
 * Static declarations from sort.c
 */
static tSuccess
must_arg(tOptions * opts, char * arg_txt, tOptState * pOS,
         char ** opt_txt, uint32_t * opt_idx);

static tSuccess
maybe_arg(tOptions * opts, char * arg_txt, tOptState * pOS,
          char ** opt_txt, uint32_t * opt_idx);

static tSuccess
short_opt_ck(tOptions * opts, char * arg_txt, tOptState * pOS,
             char ** opt_txt, uint32_t * opt_idx);

static void
optionSort(tOptions * opts);

/*
 * Static declarations from stack.c
 */
static void
addArgListEntry(void ** ppAL, void * entry);

/*
 * Static declarations from text_mmap.c
 */
static void
load_text_file(tmap_info_t * mapinfo, char const * pzFile);

static void
validate_mmap(char const * fname, int prot, int flags, tmap_info_t * mapinfo);

static void
close_mmap_files(tmap_info_t * mi);

/*
 * Static declarations from tokenize.c
 */
static void
copy_cooked(ch_t ** ppDest, char const ** ppSrc);

static void
copy_raw(ch_t ** ppDest, char const ** ppSrc);

static token_list_t *
alloc_token_list(char const * str);

/*
 * Static declarations from usage.c
 */
static unsigned int
parse_usage_flags(ao_flag_names_t const * fnt, char const * txt);

static void
set_usage_flags(tOptions * opts, char const * flg_txt);

static inline bool
do_gnu_usage(tOptions * pOpts);

static inline bool
skip_misuse_usage(tOptions * pOpts);

static void
print_offer_usage(tOptions * opts);

static void
print_usage_details(tOptions * opts, int exit_code);

static void
print_one_paragraph(char const * text, bool plain, FILE * fp);

static void
prt_conflicts(tOptions * opts, tOptDesc * od);

static void
prt_one_vendor(tOptions *    opts,  tOptDesc *   od,
               arg_types_t * argtp, char const * usefmt);

static void
prt_vendor_opts(tOptions * opts, char const * title);

static void
prt_extd_usage(tOptions * opts, tOptDesc * od, char const * title);

static void
prt_ini_list(char const * const * papz, char const * ini_file,
             char const * path_nm);

static void
prt_preamble(tOptions * opts, tOptDesc * od, arg_types_t * at);

static void
prt_one_usage(tOptions * opts, tOptDesc * od, arg_types_t * at);

static void
prt_opt_usage(tOptions * opts, int ex_code, char const * title);

static void
prt_prog_detail(tOptions * opts);

static int
setGnuOptFmts(tOptions * opts, char const ** ptxt);

static int
setStdOptFmts(tOptions * opts, char const ** ptxt);

/*
 * Static declarations from version.c
 */
static void
emit_first_line(
    FILE * fp, char const * alt1, char const * alt2, char const * alt3);

static void
emit_simple_ver(tOptions * o, FILE * fp);

static void
emit_copy_full(tOptions * o, FILE * fp);

static void
emit_copy_note(tOptions * opts, FILE * fp);

static void
print_ver(tOptions * opts, tOptDesc * od, FILE * fp, bool call_exit);

#endif /* AUTOOPTS_PROTO_H_GUARD */
