1 /* -*- buffer-read-only: t -*- vi: set ro: 2 * 3 * Prototypes for agen5 4 * Generated Sun Aug 26 10:44:48 PDT 2018 5 */ 6 #ifndef AGEN5_PROTO_H_GUARD 7 #define AGEN5_PROTO_H_GUARD 1 8 9 10 /* 11 * Static declarations from agCgi.c 12 */ 13 static void 14 load_cgi(void); 15 16 /* 17 * Static declarations from agDep.c 18 */ 19 static void 20 add_source_file(char const * pz); 21 22 static void 23 rm_source_file(char const * pz); 24 25 static void 26 add_target_file(char const * pz); 27 28 static void 29 rm_target_file(char const * pz); 30 31 static void 32 start_dep_file(void); 33 34 static void 35 wrap_up_depends(void); 36 37 /* 38 * Static declarations from agInit.c 39 */ 40 static void 41 initialize(int arg_ct, char ** arg_vec); 42 43 static void 44 init_scm(void); 45 46 static char const * 47 make_quote_str(char const * str); 48 49 static void 50 dep_usage(char const * fmt, ...); 51 52 static void 53 config_dep(tOptions * opts, tOptDesc * od); 54 55 static void 56 add_sys_env(char * env_name); 57 58 static void 59 prep_env(void); 60 61 /* 62 * Static declarations from agShell.c 63 */ 64 static void 65 close_server_shell(void); 66 67 static void 68 handle_signal(int signo); 69 70 static void 71 set_orig_dir(void); 72 73 static bool 74 send_cmd_ok(char const * cmd); 75 76 static void 77 start_server_cmd_trace(void); 78 79 static void 80 send_server_init_cmds(void); 81 82 static void 83 server_setup(void); 84 85 static int 86 chain_open(int in_fd, char const ** arg_v, pid_t * child_pid); 87 88 static pid_t 89 server_open(fd_pair_t * fd_pair, char const ** ppArgs); 90 91 static pid_t 92 server_fp_open(fp_pair_t * fp_pair, char const ** ppArgs); 93 94 static inline void 95 realloc_text(char ** p_txt, size_t * p_sz, size_t need_len); 96 97 static char * 98 load_data(void); 99 100 static char * 101 shell_cmd(char const * cmd); 102 103 /* 104 * Static declarations from agUtils.c 105 */ 106 static void 107 fswarn(char const * op, char const * fname); 108 109 static char * 110 aprf(char const * pzFmt, ...); 111 112 static void 113 define_base_name(void); 114 115 static void 116 put_defines_into_env(void); 117 118 static void 119 open_trace_file(char ** av, tOptDesc * odsc); 120 121 static void 122 check_make_dep_env(void); 123 124 static void 125 process_ag_opts(int arg_ct, char ** arg_vec); 126 127 static char const * 128 get_define_str(char const * de_name, bool check_env); 129 130 static char * 131 span_quote(char * in_q); 132 133 static char const * 134 skip_quote(char const * qstr); 135 136 static char const * 137 skip_scheme(char const * scan, char const * end); 138 139 static char const * 140 skip_expr(char const * src, size_t len); 141 142 /* 143 * Static declarations from autogen.c 144 */ 145 static noreturn void 146 cleanup_and_abort(int sig); 147 148 static void 149 catch_sig_and_bail(int sig); 150 151 static void 152 ignore_signal(int sig); 153 154 static void 155 done_check(void); 156 157 static noreturn void 158 ag_abend_at(char const * msg 159 #ifdef DEBUG_ENABLED 160 , char const * fname, int line 161 #endif 162 ); 163 164 static void * 165 ao_malloc (size_t sz); 166 167 static void * 168 ao_realloc (void *p, size_t sz); 169 170 static char * 171 ao_strdup(char const * str); 172 173 /* 174 * Static declarations from defDirect.c 175 */ 176 static char * 177 end_of_directive(char * scan); 178 179 static char * 180 processDirective(char * scan); 181 182 static int 183 count_lines(char const * start, char const * end); 184 185 static char * 186 next_directive(char * scan); 187 188 static char * 189 skip_to_endif(char * start); 190 191 static char * 192 skip_to_endmac(char * start); 193 194 static char * 195 skip_to_else_end(char * start); 196 197 static void 198 check_assert_str(char const * pz, char const * arg); 199 200 static size_t 201 file_size(char const * fname); 202 203 static char * 204 ignore_directive(directive_enum_t id, char const * arg, char * scan_next); 205 206 static char * 207 bad_dirv_ctx(directive_enum_t id, char const * arg, char * scan_next); 208 209 /* 210 * Static declarations from defFind.c 211 */ 212 static int 213 canonical_name(char * pzD, char const * pzS, int srcLen); 214 215 static def_ent_t * 216 find_def_ent(char * name, bool * indexed); 217 218 static void 219 print_used_defines(void); 220 221 static def_ent_t ** 222 find_def_ent_list(char * name); 223 224 /* 225 * Static declarations from defLex.c 226 */ 227 static void 228 pop_context(void); 229 230 static int 231 count_nl(char const * pz); 232 233 static void 234 trim_whitespace(void); 235 236 static void 237 lex_escaped_char(void); 238 239 static tSuccess 240 lex_backquote(void); 241 242 static tSuccess 243 lex_comment(void); 244 245 static tSuccess 246 lex_dollar(void); 247 248 static tSuccess 249 lex_here_string(void); 250 251 static te_dp_event 252 yylex(void); 253 254 static void 255 yyerror(char * s); 256 257 static void 258 loadScheme(void); 259 260 static void 261 alist_to_autogen_def(void); 262 263 static char * 264 gather_name(char * scan, te_dp_event * ret_val); 265 266 static char * 267 build_here_str(char * scan); 268 269 /* 270 * Static declarations from defLoad.c 271 */ 272 static def_ent_t * 273 new_def_ent(void); 274 275 static void 276 free_def_ent(def_ent_t * de); 277 278 static void 279 print_ent(def_ent_t * de); 280 281 static void 282 delete_ent(def_ent_t * de); 283 284 static def_ent_t * 285 number_and_insert_ent(char * name, char const * idx_str); 286 287 static void 288 mod_time_is_now(void); 289 290 static void 291 read_defs(void); 292 293 static void 294 unload_defs(void); 295 296 /* 297 * Static declarations from expExtract.c 298 */ 299 static char * 300 load_file(char const * fname); 301 302 static char const * 303 load_extract_file(char const * new_fil); 304 305 static SCM 306 mk_empty_text(char const * start, char const * end, SCM def); 307 308 static SCM 309 get_text(char const * text, char const * start, char const * end, SCM def); 310 311 /* 312 * Static declarations from expGuile.c 313 */ 314 static char * 315 ag_scm2zchars(SCM s, const char * type); 316 317 static teGuileType 318 ag_scm_type_e(SCM typ); 319 320 static SCM 321 ag_scm_c_eval_string_from_file_line( 322 char const * pzExpr, char const * pzFile, int line); 323 324 /* 325 * Static declarations from expMake.c 326 */ 327 static bool 328 handle_eol(char ** ppzi, char ** ppzo, char tabch, char * bol); 329 330 static bool 331 handle_sed_expr(char ** src_p, char ** out_p); 332 333 static size_t 334 script_size(char ** txt_p, char * tab); 335 336 /* 337 * Static declarations from expOutput.c 338 */ 339 static int 340 current_line(FILE * fp); 341 342 static SCM 343 do_output_file_line(int line_delta, char const * fmt); 344 345 static void 346 make_readonly(void); 347 348 static void 349 open_output_file(char const * fname, size_t nmsz, char const * mode, int flags); 350 351 /* 352 * Static declarations from expPrint.c 353 */ 354 static ssize_t 355 safePrintf(char ** ppzBuf, char const * pzFmt, void ** argV); 356 357 static SCM 358 run_printf(char const * pzFmt, int len, SCM alist); 359 360 /* 361 * Static declarations from expString.c 362 */ 363 static size_t 364 stringify_for_sh(char * pzNew, uint_t qt, char const * pzDta); 365 366 static SCM 367 shell_stringify(SCM obj, uint_t qt); 368 369 static int 370 sub_count(char const * haystack, char const * needle); 371 372 static void 373 do_substitution( 374 char const * src_str, 375 ssize_t str_len, 376 SCM match, 377 SCM repl, 378 char ** ppz_res, 379 ssize_t * res_len); 380 381 static void 382 do_multi_subs(char ** ppzStr, ssize_t * pStrLen, SCM match, SCM repl); 383 384 static inline void 385 tr_char_range(unsigned char * ch_map, unsigned char * from, unsigned char * to); 386 387 /* 388 * Static declarations from fmemopen.c 389 */ 390 static ssize_t 391 fmem_read(void *cookie, void *pBuf, size_t sz); 392 393 static ssize_t 394 fmem_write(void *cookie, const void *pBuf, size_t sz); 395 396 static int 397 fmem_close(void * cookie); 398 399 /* 400 * Static declarations from funcCase.c 401 */ 402 static void 403 compile_re(regex_t * re, char const * pat, int flags); 404 405 static inline void 406 up_case(char * pz); 407 408 static tSuccess 409 Select_Compare(char const * sample, char const * pattern); 410 411 static tSuccess 412 Select_Compare_End(char const * sample, char const * pattern); 413 414 static tSuccess 415 Select_Compare_Start(char const * sample, char const * pattern); 416 417 static tSuccess 418 Select_Compare_Full(char const * sample, char const * pattern); 419 420 static tSuccess 421 Select_Equivalent(char const * sample, char const * pattern); 422 423 static tSuccess 424 Select_Equivalent_End(char const * sample, char const * pattern); 425 426 static tSuccess 427 Select_Equivalent_Start(char const * sample, char const * pattern); 428 429 static tSuccess 430 Select_Equivalent_Full(char const * sample, char const * pattern); 431 432 static tSuccess 433 Select_Match(char const * sample, char const * pattern); 434 435 static tSuccess 436 Select_Match_End(char const * sample, char const * pattern); 437 438 static tSuccess 439 Select_Match_Start(char const * sample, char const * pattern); 440 441 static tSuccess 442 Select_Match_Full(char const * sample, char const * pattern); 443 444 static tSuccess 445 Select_Match_Always(char const * sample, char const * pattern); 446 447 static tSuccess 448 Select_Match_Existence(char const * sample, char const * pattern); 449 450 static tSuccess 451 Select_Match_NonExistence(char const * sample, char const * pattern); 452 453 static bool 454 selection_type_complete(templ_t * tpl, macro_t * mac, char const ** psrc); 455 456 static macro_t * 457 mLoad_Select(templ_t * tpl, macro_t * mac, char const ** pscan); 458 459 /* 460 * Static declarations from funcDef.c 461 */ 462 static void 463 parse_mac_args(templ_t * pT, macro_t * mac); 464 465 static templ_t * 466 new_template(templ_t * base_tpl, macro_t * mac, char const * scan); 467 468 static void 469 load_define_tpl(templ_t * tpl, char const ** ppzScan); 470 471 /* 472 * Static declarations from funcEval.c 473 */ 474 static char const * 475 scm2display(SCM s); 476 477 static inline char const * 478 tpl_text(templ_t * tpl, macro_t * mac); 479 480 static void 481 tpl_warning(templ_t * tpl, macro_t * mac, char const * msg); 482 483 static char const * 484 is_mac_entry_ok(bool * allocated, def_ent_t * ent, 485 int * code, templ_t * tpl, macro_t * mac); 486 487 static char const * 488 eval_mac_expr(bool * allocated); 489 490 static void 491 emit_insertion_file(char const * fname, FILE * outfp); 492 493 static SCM 494 eval(char const * expr); 495 496 static int 497 expr_type(char * pz); 498 499 /* 500 * Static declarations from funcFor.c 501 */ 502 static for_state_t * 503 find_for_state(SCM which_scm); 504 505 static bool 506 next_def(bool invert, def_ent_t ** de_lst); 507 508 static inline t_word 509 set_loop_limit(def_ent_t * found); 510 511 static int 512 for_by_step(templ_t * pT, macro_t * pMac, def_ent_t * found); 513 514 static int 515 for_each(templ_t * tpl, macro_t * mac, def_ent_t * def_ent); 516 517 static void 518 load_for_in(char const * pzSrc, size_t srcLen, templ_t * pT, macro_t * pMac); 519 520 static for_state_t * 521 new_for_context(void); 522 523 static void 524 free_for_context(int pop_ct); 525 526 /* 527 * Static declarations from funcIf.c 528 */ 529 static bool 530 eval_true(void); 531 532 static macro_t * 533 mLoad_Elif(templ_t * pT, macro_t * pMac, char const ** ppzScan); 534 535 static macro_t * 536 mLoad_Else(templ_t * pT, macro_t * pMac, char const ** ppzScan); 537 538 /* 539 * Static declarations from functions.c 540 */ 541 static loop_jmp_type_t 542 call_gen_block(jmp_buf jbuf, templ_t * tpl, macro_t * mac, macro_t * end_mac); 543 544 static void 545 gen_new_block(templ_t * tpl); 546 547 /* 548 * Static declarations from loadPseudo.c 549 */ 550 static char const * 551 do_scheme_expr(char const * text, char const * fname); 552 553 static char const * 554 do_suffix(char const * const text, char const * fname, int lineNo); 555 556 static char const * 557 handle_hash_line(char const * pz); 558 559 static te_pm_event 560 next_pm_token(char const ** ptext, te_pm_state fsm_state, char const * fnm); 561 562 static char const * 563 copy_mark(char const * text, char * marker, size_t * ret_ct); 564 565 static char const * 566 load_pseudo_mac(char const * text, char const * fname); 567 568 /* 569 * Static declarations from tpLoad.c 570 */ 571 static templ_t * 572 find_tpl(char const * tpl_name); 573 574 static bool 575 read_okay(char const * fname); 576 577 static char const * 578 expand_dir(char const ** dir_pp, char * name_buf); 579 580 static inline bool 581 file_search_dirs( 582 char const * in_name, 583 char * res_name, 584 char const * const * sfx_list, 585 char const * referring_tpl, 586 size_t nm_len, 587 bool no_suffix); 588 589 static tSuccess 590 find_file(char const * in_name, 591 char * res_name, 592 char const * const * sfx_list, 593 char const * referring_tpl); 594 595 static size_t 596 cnt_macros(char const * pz); 597 598 static void 599 load_macs(templ_t * tpl, char const * fname, char const * pzData); 600 601 static templ_t * 602 digest_tpl(tmap_info_t * minfo, char * fname); 603 604 static templ_t * 605 tpl_load(char const * fname, char const * referrer); 606 607 static void 608 tpl_unload(templ_t * tpl); 609 610 static void 611 cleanup(templ_t * tpl); 612 613 /* 614 * Static declarations from tpParse.c 615 */ 616 static mac_func_t 617 func_code(char const ** pscan); 618 619 static char const * 620 find_mac_end(char const ** ppzMark); 621 622 static char const * 623 find_mac_start(char const * pz, macro_t ** ppm, templ_t * tpl); 624 625 static char const * 626 find_macro(templ_t * tpl, macro_t ** ppm, char const ** pscan); 627 628 static macro_t * 629 parse_tpl(macro_t * mac, char const ** p_scan); 630 631 /* 632 * Static declarations from tpProcess.c 633 */ 634 static void 635 gen_block(templ_t * tpl, macro_t * mac, macro_t * emac); 636 637 static void 638 trace_macro(templ_t * tpl, macro_t * mac); 639 640 static void 641 do_stdout_tpl(templ_t * tpl); 642 643 static out_spec_t * 644 next_out_spec(out_spec_t * os); 645 646 static void 647 process_tpl(templ_t * tpl); 648 649 static void 650 set_utime(char const * fname); 651 652 static void 653 out_close(bool purge); 654 655 static void 656 open_output(out_spec_t * spec); 657 658 #endif /* AGEN5_PROTO_H_GUARD */ 659