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