1 #ifndef _YANDYTEX_TEXD_H
2 #define _YANDYTEX_TEXD_H
3 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
4 #define ALLOCATEINI /* allocate iniTeX (550 k) trie_c, trie_o, trie_l, trie_r, trie_hash, trie_taken */
5 #define ALLOCATEMAIN /* allocate main memory for TeX (2 Meg) zmem = zzzaa */
6 #define ALLOCATEFONT /* allocate font_info (800 k) (dynamically now) */
7 #define ALLOCATETRIES /* allocate hyphenation trie stuff (270 k) trie_trl, trie_tro, trie_trc */
8 #define ALLOCATEHYPHEN /* allocate hyphenation exception tables */
9 #define VARIABLETRIESIZE /* allow trie_size to be variable */
10 #define ALLOCATESTRING /* allocate strings and string pointers (184 k)str_pool & str_start */
11 #define ALLOCATESAVESTACK /* experiment to dynamically deal with save_stack 99/Jan/4 */
12 #define ALLOCATEINPUTSTACK /* experiment to dynamically deal with input_stack 99/Jan/21 */
13 #define ALLOCATENESTSTACK /* experiment to dynamically deal with nest_stack 99/Jan/21 */
14 #define ALLOCATEPARAMSTACK /* experiment to dynamically deal with param_stack 99/Jan/21 */
15 #define ALLOCATEBUFFER /* experiment to dynamically deal with input buffer 99/Jan/22 */
17 /* increase number of fonts - quarterword 16 bit - max_quarterword limit */
18 /* there may still be some bugs with this however ... also may slow down */
19 /* also: should split use of quarterword for (i) font from (ii) char */
20 /* for example, xeq_level ? hyphenation trie_trc ? */
23 #define INCREASETRIEOP
29 #define file_name_size PATH_MAX
31 // #define max_halfword 65535L /* for 32 bit memory word */
32 #define min_halfword -2147483647L /* for 64 bit memory word (signed) */
33 #define max_halfword 2147483647L /* for 64 bit memory word (signed) */
35 #define block_size 1000 /* block_size for variable length node alloc */
37 #define min_quarterword 0
39 #define max_quarterword 65535L
41 #define max_quarterword 255
44 #define default_mem_top 262140L /* usual big TeX allocation 2 Meg bytes */
45 /* #define default_mem_top 131070L */ /* usual big TeX allocation 1 Meg bytes */
46 /* #define default_mem_top 65534L */ /* usual small TeX allocation 0.5 Meg */
51 EXTERN integer mem_top;
52 #define max_mem_size (max_halfword / sizeof(memory_word) - 1)
54 #define mem_top 262140L
58 EXTERN integer mem_max;
60 #define mem_max mem_top
64 EXTERN integer mem_min;
70 #define initial_buf_size 1000
71 #define increment_buf_size 2000
72 #define buf_size 2000000L
73 EXTERN ASCII_code * buffer;
75 #define buf_size 20000
76 EXTERN ASCII_code buffer[buf_size + 4];
81 EXTERN integer max_buf_stack;
84 #define half_error_line 50
85 #define max_print_line 79
88 #define max_in_open 127
90 #define max_in_open 15
100 #define font_mem_size (max_halfword / sizeof(memory_word) - 1)
102 #define font_mem_size 100000L
106 #define initial_font_mem_size 20000
107 #define increment_font_mem_size 40000
110 #ifdef ALLOCATESTRING
111 #define max_strings (max_halfword / sizeof(pool_pointer) - 1)
112 #define pool_size (max_halfword - 1)
114 #define max_strings 16384
115 #define pool_size 124000L
118 #define string_vacancies 100000L
120 #ifdef VARIABLETRIESIZE
121 EXTERN integer trie_size;
122 #define default_trie_size 60000
124 #define trie_size 30000
127 #ifdef INCREASETRIEOP
128 #define trie_op_size 3001
129 #define neg_trie_op_size -3001
130 #define min_trie_op 0
131 #define max_trie_op 1000
133 #define trie_op_size 751
134 #define neg_trie_op_size -751
135 #define min_trie_op 0
136 #define max_trie_op 500
139 #ifdef ALLOCATEDVIBUF
140 #define default_dvi_buf_size 16384
141 EXTERN int dvi_buf_size;
143 #define dvi_buf_size 16384
146 #define hash_extra (255 - font_max)
147 #define hash_prime 27197 // (prime ~ 85% * (hash_size + hash_extra))
148 #define hash_size 32768 // 97280 9500 25000
150 #if (hash_extra != 255 - font_max)
151 #error ERROR: hash_extra not equal to (255 - font_max)
156 typedef unsigned short quarterword;
158 typedef unsigned char quarterword;
160 /* possible alternative ? */
161 /* min_halfword = 0 and double max_halfword ? */
162 /* typedef unsigned long halfword; NO NO: since mem_min may be < 0 */
164 typedef long halfword;
165 typedef halfword pointer;
166 typedef char two_choices;
167 typedef char four_choices;
169 #include "texmfmem.h"
170 #include "yandy_macros.h"
172 typedef char glue_ord;
177 halfword head_field, tail_field;
178 integer pg_field, ml_field;
179 memory_word aux_field;
182 typedef char group_code;
186 quarterword state_field, index_field;
187 halfword start_field, loc_field, limit_field, name_field;
190 typedef integer internal_font_number;
191 typedef integer font_index;
193 typedef integer dvi_index;
195 typedef integer trie_op_code;
197 typedef integer trie_pointer;
198 typedef integer hyph_pointer;
201 EXTERN ASCII_code xord[256];
202 EXTERN ASCII_code xchr[256];
203 EXTERN unsigned char name_of_file[file_name_size + 4];
204 EXTERN integer name_length;
206 #ifdef ALLOCATESTRING
207 #define initial_pool_size 40000
208 #define increment_pool_size 80000
209 EXTERN packed_ASCII_code * str_pool;
210 #define initial_max_strings 5000
211 #define increment_max_strings 10000
212 EXTERN pool_pointer * str_start;
214 EXTERN packed_ASCII_code str_pool[pool_size + 1];
215 EXTERN pool_pointer str_start[max_strings + 1];
218 EXTERN pool_pointer pool_ptr;
219 EXTERN str_number str_ptr;
220 EXTERN pool_pointer init_pool_ptr;
221 EXTERN str_number init_str_ptr;
224 EXTERN alpha_file pool_file;
227 EXTERN alpha_file log_file;
229 EXTERN char dig[23 + 1];
230 EXTERN integer tally;
231 EXTERN integer term_offset;
232 EXTERN integer file_offset;
233 EXTERN ASCII_code trick_buf[error_line + 1];
234 EXTERN integer trick_count;
235 EXTERN integer first_count;
236 EXTERN int interaction;
237 EXTERN boolean deletions_allowed;
238 EXTERN boolean set_box_allowed;
240 EXTERN int error_count;
241 EXTERN char * help_line[6];
243 EXTERN boolean use_err_help;
244 EXTERN volatile integer interrupt;
245 EXTERN boolean OK_to_interrupt;
246 EXTERN boolean arith_error;
247 EXTERN scaled tex_remainder;
248 EXTERN halfword temp_ptr;
252 EXTERN memory_word * main_memory; /* remembered so can be free() later */
253 EXTERN memory_word * mem;
256 /* #define zmem (zzzaa - (int)(mem_min)) */
257 /* zzzaa[mem_max - mem_min + 1]; */
258 #define zmem (zzzaa - (int)(mem_bot))
259 zzzaa[mem_max - mem_bot + 1];
262 EXTERN pointer lo_mem_max;
263 EXTERN pointer hi_mem_min;
264 EXTERN integer var_used, dyn_used;
266 EXTERN pointer avail;
267 EXTERN pointer mem_end;
268 EXTERN halfword mem_start; // for yandytex
270 EXTERN halfword rover;
272 /* NOTE: the following really also need to be dynamically allocated */
279 /* #define freearr (zzzab - (int)(mem_min)) */
280 /* zzzab[mem_max - mem_min + 1]; */
281 #define freearr (zzzab - (int)(mem_bot))
282 zzzab[mem_max - mem_bot + 1];
288 /* EXTERN boolean */ /* save (4 - 1) * mem_max - mem_min */
290 /* #define wasfree (zzzac - (int)(mem_min)) */
291 #define wasfree (zzzac - (int)(mem_bot))
292 /* zzzac[mem_max - mem_min + 1]; */
293 zzzac[mem_max - mem_bot + 1];
296 EXTERN halfword was_mem_end, was_lo_max, was_hi_min;
297 EXTERN boolean panicking;
300 EXTERN integer font_in_short_display;
301 EXTERN integer depth_threshold;
302 EXTERN integer breadth_max;
303 EXTERN int shown_mode;
304 EXTERN int old_setting;
307 #define eqtb_extra (font_max - 255 + hash_extra)
312 /* Probably require eqtb_extra to be zero, so hash_extra = 255 - font_max */
313 #if (eqtb_extra != 0)
314 #error ERROR: eqtb_extra is not zero (need hash_extra equal 255 - font_max)
318 EXTERN memory_word * zeqtb;
321 EXTERN memory_word eqtb[(hash_size + 4007) + eqtb_extra];
323 EXTERN memory_word zeqtb[(hash_size + 4007)];
328 #define xeq_level (zzzad - (int_base + eqtb_extra))
330 #define xeq_level (zzzad - (int_base))
333 EXTERN quarterword zzzad[844];
334 /* region 5 & 6 int_base to eqtb_size: 13507 - 12663 */
338 EXTERN htwo_halves *zzzae;
340 EXTERN two_halves *zzzae;
343 #define hash (zzzae - 514)
351 #define hash (zzzae - 514)
354 zzzae[hash_size + 267 + eqtb_extra];
356 zzzae[hash_size + 267];
360 EXTERN halfword hash_used;
361 EXTERN boolean no_new_control_sequence;
362 EXTERN integer cs_count;
364 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
365 /* using allocated save stack slows it down 1% to 2% */
366 /* despite reallocation, we still limit it to something finite */
367 /* to avoid soaking up all of machine memory in case of infinite loop */
368 #ifdef ALLOCATESAVESTACK
369 #define save_size 65536
370 #define initial_save_size 1000
371 #define increment_save_size 2000
372 EXTERN memory_word * save_stack;
374 #define save_size 8000
375 EXTERN memory_word save_stack[save_size + 1];
378 EXTERN integer save_ptr;
379 EXTERN integer max_save_stack;
380 EXTERN int cur_level;
381 EXTERN int cur_group;
382 EXTERN integer cur_boundary;
383 EXTERN integer mag_set;
386 EXTERN halfword cur_cs;
387 EXTERN halfword cur_tok;
389 #ifdef ALLOCATENESTSTACK
390 #define nest_size 65536
391 #define initial_nest_size 100
392 #define increment_nest_size 200
393 EXTERN list_state_record * nest;
395 #define nest_size 200
396 EXTERN list_state_record nest[nest_size + 1];
399 EXTERN integer nest_ptr;
400 EXTERN integer max_nest_stack;
401 EXTERN list_state_record cur_list;
403 #ifdef ALLOCATEPARAMSTACK
404 #define param_size 65536
405 #define initial_param_size 100
406 #define increment_param_size 200
407 EXTERN halfword * param_stack;
409 #define param_size 500
410 EXTERN halfword param_stack[param_size + 1];
413 EXTERN integer param_ptr;
414 EXTERN integer max_param_stack;
416 #ifdef ALLOCATEINPUTSTACK
417 #define stack_size 65536
418 #define initial_stack_size 100
419 #define increment_stack_size 200
420 EXTERN in_state_record * input_stack;
422 #define stack_size 800
423 EXTERN in_state_record input_stack[stack_size + 1];
426 EXTERN integer input_ptr;
427 EXTERN integer max_in_stack;
428 EXTERN integer high_in_open;
429 EXTERN in_state_record cur_input;
431 EXTERN integer open_parens;
432 EXTERN integer max_open_parens;
433 EXTERN alpha_file input_file[max_in_open + 1];
435 EXTERN integer line_stack[max_in_open + 1];
436 EXTERN int scanner_status;
437 EXTERN halfword warning_index;
438 EXTERN halfword def_ref;
439 EXTERN integer align_state;
440 EXTERN integer base_ptr;
441 EXTERN halfword par_loc;
442 EXTERN halfword par_token;
443 EXTERN boolean force_eof;
444 EXTERN halfword cur_mark[6];
445 EXTERN int long_state;
446 EXTERN halfword pstack[10];
448 EXTERN int cur_val_level;
450 EXTERN int cur_order;
451 EXTERN alpha_file read_file[16]; /* hard wired limit in TeX */
452 EXTERN char read_open[20];
453 EXTERN halfword cond_ptr;
456 EXTERN integer if_line;
457 EXTERN integer skip_line;
458 EXTERN str_number cur_name;
459 EXTERN str_number cur_area;
460 EXTERN str_number cur_ext;
461 EXTERN pool_pointer area_delimiter;
462 EXTERN pool_pointer ext_delimiter;
463 EXTERN integer format_default_length;
464 EXTERN char * TEX_format_default;
465 EXTERN boolean name_in_progress;
466 EXTERN boolean log_opened;
467 EXTERN boolean quoted_file_name;
468 EXTERN str_number job_name;
469 EXTERN str_number output_file_name;
470 EXTERN str_number texmf_log_name;
471 EXTERN byte_file dvi_file;
472 EXTERN byte_file tfm_file;
473 EXTERN byte_file pdf_file;
474 EXTERN char * dvi_file_name;
475 EXTERN char * pdf_file_name;
476 EXTERN char * log_file_name;
479 EXTERN memory_word * font_info;
481 EXTERN memory_word font_info[font_mem_size + 1];
484 EXTERN font_index fmem_ptr;
485 EXTERN internal_font_number font_ptr;
486 EXTERN internal_font_number frozen_font_ptr;
487 EXTERN four_quarters font_check[font_max + 1];
488 EXTERN scaled font_size[font_max + 1];
489 EXTERN scaled font_dsize[font_max + 1];
490 EXTERN font_index font_params[font_max + 1];
491 EXTERN str_number font_name[font_max + 1];
492 EXTERN str_number font_area[font_max + 1];
493 EXTERN eight_bits font_bc[font_max + 1];
494 EXTERN eight_bits font_ec[font_max + 1];
495 EXTERN halfword font_glue[font_max + 1];
496 EXTERN boolean font_used[font_max + 1];
497 EXTERN integer hyphen_char[font_max + 1];
498 EXTERN integer skew_char[font_max + 1];
499 EXTERN font_index bchar_label[font_max + 1];
500 EXTERN short font_bchar[font_max + 1];
501 EXTERN short font_false_bchar[font_max + 1];
502 EXTERN integer char_base[font_max + 1];
503 EXTERN integer width_base[font_max + 1];
504 EXTERN integer height_base[font_max + 1];
505 EXTERN integer depth_base[font_max + 1];
506 EXTERN integer italic_base[font_max + 1];
507 EXTERN integer lig_kern_base[font_max + 1];
508 EXTERN integer kern_base[font_max + 1];
509 EXTERN integer exten_base[font_max + 1];
510 EXTERN integer param_base[font_max + 1];
511 EXTERN four_quarters null_character;
512 EXTERN integer total_pages;
515 EXTERN integer max_push;
516 EXTERN integer last_bop;
517 EXTERN integer dead_cycles;
518 EXTERN boolean doing_leaders;
520 EXTERN scaled rule_ht, rule_dp, rule_wd;
522 EXTERN integer lq, lr;
523 EXTERN eight_bits dvi_buf[dvi_buf_size + 4];
524 EXTERN dvi_index half_buf;
525 EXTERN dvi_index dvi_limit;
526 EXTERN dvi_index dvi_ptr;
527 EXTERN integer dvi_offset;
528 EXTERN integer pdf_offset;
529 EXTERN integer dvi_gone;
530 EXTERN halfword down_ptr, right_ptr;
531 EXTERN scaled dvi_h, dvi_v;
532 EXTERN scaled pdf_h, pdf_v;
533 EXTERN scaled pdf_x, pdf_y;
534 EXTERN scaled pdf_delta_h, pdf_delta_v;
535 EXTERN scaled cur_h, cur_v;
536 EXTERN internal_font_number dvi_f;
537 EXTERN internal_font_number pdf_f;
538 EXTERN integer cur_s; /* sec 616 */
539 EXTERN scaled total_stretch[4], total_shrink[4];
540 EXTERN integer last_badness;
541 EXTERN halfword adjust_tail;
542 EXTERN integer pack_begin_line;
543 EXTERN two_halves empty_field;
544 EXTERN four_quarters null_delimiter;
545 EXTERN halfword cur_mlist;
546 EXTERN int cur_style;
548 EXTERN scaled cur_mu;
549 EXTERN boolean mlist_penalties;
550 EXTERN internal_font_number cur_f;
552 EXTERN four_quarters cur_i;
553 EXTERN integer magic_offset;
554 EXTERN halfword cur_align;
555 EXTERN halfword cur_span;
556 EXTERN halfword cur_loop;
557 EXTERN halfword align_ptr;
558 EXTERN halfword cur_head, cur_tail;
559 EXTERN halfword just_box;
560 EXTERN halfword passive;
561 EXTERN halfword printed_node;
562 EXTERN halfword pass_number;
563 EXTERN scaled active_width[8];
564 EXTERN scaled cur_active_width[8];
565 EXTERN scaled background[8];
566 EXTERN scaled break_width[8];
567 EXTERN boolean no_shrink_error_yet;
568 EXTERN halfword cur_p;
569 EXTERN boolean second_pass;
570 EXTERN boolean final_pass;
571 EXTERN integer threshold;
572 EXTERN integer minimal_demerits[4];
573 EXTERN integer minimum_demerits;
574 EXTERN halfword best_place[4];
575 EXTERN halfword best_pl_line[4];
576 EXTERN scaled disc_width;
577 EXTERN halfword easyline;
578 EXTERN halfword last_special_line;
579 EXTERN scaled first_width;
580 EXTERN scaled second_width;
581 EXTERN scaled first_indent;
582 EXTERN scaled second_indent;
583 EXTERN halfword best_bet;
584 EXTERN integer fewest_demerits;
585 EXTERN halfword best_line;
586 EXTERN integer actual_looseness;
587 EXTERN integer line_diff;
590 EXTERN halfword ha, hb;
594 EXTERN int cur_lang, init_cur_lang;
595 EXTERN integer lhyf, rhyf;
596 EXTERN integer init_l_hyf, init_r_hyf;
597 EXTERN halfword hyfbchar;
599 EXTERN halfword init_list;
600 EXTERN boolean init_lig;
601 EXTERN boolean init_lft;
602 EXTERN int hyphen_passed;
603 EXTERN int cur_l, cur_r;
604 EXTERN halfword cur_q;
605 EXTERN halfword lig_stack;
606 EXTERN boolean ligature_present;
607 EXTERN boolean lft_hit, rt_hit;
610 EXTERN halfword * trie_trl;
611 EXTERN halfword * trie_tro;
612 EXTERN quarterword * trie_trc;
614 EXTERN halfword trie_trl[trie_size + 1];
615 EXTERN halfword trie_tro[trie_size + 1];
616 EXTERN quarterword trie_trc[trie_size + 1];
619 EXTERN small_number hyf_distance[trie_op_size + 1];
620 EXTERN small_number hyf_num[trie_op_size + 1];
621 EXTERN trie_op_code hyf_next[trie_op_size + 1];
622 EXTERN integer op_start[256];
624 /* if ALLOCATEHYPHEN is true, then hyphen_prime is a variable */
625 /* otherwise it is a pre-processor defined constant */
626 #ifdef ALLOCATEHYPHEN
627 #define default_hyphen_prime 1009
628 EXTERN str_number * hyph_word;
629 EXTERN halfword * hyph_list;
630 EXTERN integer hyphen_prime;
632 #define hyphen_prime 607
633 EXTERN str_number hyph_word[hyphen_prime + 1];
634 EXTERN halfword hyph_list[hyphen_prime + 1];
637 EXTERN int hyph_count;
640 EXTERN integer trie_op_hash_C[trie_op_size - neg_trie_op_size + 1];
641 #define trie_op_hash (trie_op_hash_C - (int)(neg_trie_op_size))
642 EXTERN trie_op_code trie_used[256];
643 EXTERN ASCII_code trie_op_lang[trie_op_size + 1];
644 EXTERN trie_op_code trie_op_val[trie_op_size + 1];
645 EXTERN integer trie_op_ptr;
648 EXTERN trie_op_code max_op_used;
652 EXTERN packed_ASCII_code *trie_c; /* characters to match */
653 EXTERN trie_op_code *trie_o; /* operations to perform */
654 EXTERN trie_pointer *trie_l; /* left subtrie links */
655 EXTERN trie_pointer *trie_r; /* right subtrie links */
656 EXTERN trie_pointer *trie_hash; /* used to identify equivlent subtries */
658 EXTERN packed_ASCII_code trie_c[trie_size + 1];
659 EXTERN trie_op_code trie_o[trie_size + 1];
660 EXTERN trie_pointer trie_l[trie_size + 1];
661 EXTERN trie_pointer trie_r[trie_size + 1];
662 EXTERN trie_pointer trie_hash[trie_size + 1];
665 EXTERN trie_pointer trie_ptr;
670 EXTERN char * trie_taken;
672 EXTERN boolean trie_taken[trie_size + 1];
675 EXTERN trie_pointer trie_min[256];
676 EXTERN trie_pointer trie_max;
677 EXTERN boolean trie_not_ready;
680 EXTERN scaled best_height_plus_depth;
681 EXTERN halfword page_tail;
682 EXTERN int page_contents;
684 /* do *some* sanity checking here --- rather than in TeX later 96/Jan/18 */
685 /* (cannot catch everything here, since some is now dynamic) */
687 #if (half_error_line < 30) || (half_error_line > error_line - 15)
688 #error ERROR: (half_error_line < 30) || (half_error_line > error_line - 15) BAD 1
691 #if (max_print_line < 60)
692 #error ERROR: (max_print_line < 60) BAD 2
695 #if (hash_prime > hash_size)
696 #error ERROR: (hash_prime > hash_size) BAD 5
699 #if (max_in_open > 127)
700 #error ERROR: (max_in_open > 127) BAD 6
703 #if (min_quarterword > 0) || (max_quarterword < 127)
704 #error ERROR: (min_quarterword > 0) || (max_quarterword < 127) BAD 11
707 #if (min_halfword > 0) || (max_halfword < 32767)
708 #error ERROR: (min_halfword > 0) || (max_halfword < 32767) BAD 12
711 #if (min_quarterword < min_halfword) || (max_quarterword > max_halfword)
712 #error ERROR: (min_quarterword < min_halfword) || (max_quarterword > max_halfword) BAD 13
715 #if (font_max > max_quarterword)
716 #error ERROR: (font_max > max_quarterword) BAD 15
719 #if (save_size > max_halfword)
720 #error ERROR: (save_size > max_halfword) BAD 17
723 #if (buf_size > max_halfword)
724 #error ERROR: (buf_size > max_halfword) BAD 18
727 #if (max_quarterword - min_quarterword) < 255
728 #error (max_quarterword - min_quarterword) < 255 BAD 19
731 EXTERN scaled page_max_depth;
732 EXTERN halfword best_page_break;
733 EXTERN integer least_page_cost;
734 EXTERN scaled best_size;
735 EXTERN scaled page_so_far[8];
736 EXTERN halfword last_glue;
737 EXTERN integer last_penalty;
738 EXTERN scaled last_kern;
739 EXTERN integer insert_penalties;
740 EXTERN boolean output_active;
742 EXTERN internal_font_number main_f;
743 EXTERN four_quarters main_i;
744 EXTERN four_quarters main_j;
745 EXTERN font_index main_k;
746 EXTERN pointer main_p;
747 EXTERN integer main_s;
748 EXTERN halfword bchar;
749 EXTERN halfword false_bchar;
750 EXTERN boolean cancel_boundary;
751 EXTERN boolean ins_disc;
753 EXTERN pointer cur_box;
754 EXTERN halfword after_token;
755 EXTERN boolean long_help_seen;
756 EXTERN str_number format_ident;
757 EXTERN word_file fmt_file;
758 EXTERN gzFile gz_fmt_file;
760 EXTERN integer ready_already;
762 EXTERN alpha_file write_file[16];
763 EXTERN boolean write_open[18];
765 EXTERN pointer write_loc;
766 EXTERN pool_pointer edit_name_start;
767 EXTERN integer edit_name_length, edit_line;
770 /* new variables defined in local.c */
771 EXTERN boolean is_initex;
772 EXTERN boolean verbose_flag;
773 EXTERN boolean trace_flag;
774 EXTERN boolean debug_flag;
775 EXTERN boolean open_trace_flag;
776 EXTERN boolean knuth_flag;
777 EXTERN boolean no_interrupts;
778 EXTERN boolean c_style_flag;
779 EXTERN boolean non_ascii;
780 EXTERN boolean key_replace;
781 EXTERN boolean deslash;
782 EXTERN boolean trimeof;
783 EXTERN boolean allow_patterns;
784 EXTERN boolean show_fonts_used;
785 EXTERN boolean reset_exceptions;
786 EXTERN boolean show_current;
787 EXTERN boolean return_flag;
788 EXTERN boolean want_version;
789 EXTERN boolean civilize_flag;
790 EXTERN boolean show_numeric;
791 EXTERN boolean restrict_to_ascii;
792 EXTERN boolean show_missing;
793 EXTERN boolean full_file_name_flag;
794 EXTERN int mem_initex;
795 EXTERN int mem_extra_high;
796 EXTERN int mem_extra_low;
797 EXTERN int new_hyphen_prime;
798 EXTERN int missing_characters;
799 EXTERN int show_in_hex;
800 EXTERN int show_in_dos;
801 EXTERN int show_fmt_flag;
802 EXTERN int show_tfm_flag;
803 EXTERN boolean show_texinput_flag;
804 EXTERN boolean truncate_long_lines;
805 EXTERN boolean show_cs_names;
807 EXTERN int pseudo_tilde;
808 EXTERN int pseudo_space;
809 EXTERN int allow_quoted_names;
810 EXTERN int default_rule;
811 EXTERN char * format_file;
812 EXTERN char * source_direct;
813 EXTERN char * format_name;
814 EXTERN char * encoding_name;
815 EXTERN boolean show_line_break_stats;
816 EXTERN int first_pass_count;
817 EXTERN int second_pass_count;
818 EXTERN int final_pass_count;
819 EXTERN int underfull_hbox;
820 EXTERN int overfull_hbox;
821 EXTERN int underfull_vbox;
822 EXTERN int overfull_vbox;
823 EXTERN int paragraph_failed;
824 EXTERN int single_line;
825 EXTERN FILE * errout;
826 EXTERN int font_dimen_zero;
827 EXTERN int ignore_frozen;
828 EXTERN boolean suppress_f_ligs;
829 EXTERN int jump_used;
830 EXTERN jmp_buf jumpbuffer;
831 extern int current_pool_size;
832 extern int current_max_strings;
833 extern int current_mem_size;
834 extern int current_font_mem_size;
835 extern int current_save_size;
836 extern int current_stack_size;
837 extern int current_nest_size;
838 extern int current_param_size;
839 extern int current_buf_size;
840 extern char *tex_version;
841 extern char *application;
842 extern char *yandyversion;
843 extern unsigned char wintodos[128];
844 extern char log_line[MAXLINE];
845 extern char *texpath;
847 memory_word * allocate_main_memory (int);
848 memory_word * realloc_main (int, int);
849 packed_ASCII_code * realloc_str_pool (int);
850 pool_pointer * realloc_str_start (int);
851 memory_word * realloc_save_stack (int);
852 list_state_record * realloc_nest_stack (int);
853 in_state_record * realloc_input_stack (int);
854 halfword * realloc_param_stack (int);
855 ASCII_code * realloc_buffer (int);
856 memory_word * realloc_font_info (int);
858 int realloc_hyphen (int);
859 int allocate_tries (int);
860 void check_eqtb (char *);
861 void probe_memory (void);
862 void print_cs_names (FILE *, int);
863 void perrormod(char *);
864 char *grabenv(char *);
865 void stamp_it (char *);
866 void stampcopy (char *);
870 void uexit (int unix_code);
871 void t_open_in (void);
874 void call_edit (ASCII_code *filename, pool_pointer fnstart,
875 integer fnlength, integer linenumber);
877 void add_variable_space(int);
879 char *unixify (char *);
884 extern inline void push_input(void);
885 extern inline void pop_input(void);
886 extern inline void print_err (const char * s);
887 extern inline void ensure_dvi_open(void);
888 extern inline void write_dvi(size_t a, size_t b);
889 extern inline void prompt_input(const char *s);
890 extern inline void synch_h(void);
891 extern inline void synch_v(void);
892 extern inline void set_cur_lang(void);
893 extern char * md5_file (FILE * in_file);
894 extern inline void str_room (int val);
895 extern inline void tail_append_ (pointer val);
896 #define tail_append(a) tail_append_((pointer) a)
897 extern inline void tex_help (unsigned int n, ...);
898 extern inline void append_char(ASCII_code c);
899 extern inline void append_lc_hex(ASCII_code c);
900 extern inline void succumb(void);
901 extern inline void dvi_out_ (ASCII_code op);
902 #define dvi_out(op) dvi_out_((ASCII_code) (op))
903 extern inline void free_avail_(halfword p);
904 #define free_avail(p) free_avail_((halfword) (p))
905 extern inline void flush_string (void);
906 extern str_number load_pool_strings (integer spare_size);
907 extern str_number make_string_pool (const char *s);
908 #define help0() tex_help(0)
909 #define help1(...) tex_help(1, __VA_ARGS__)
910 #define help2(...) tex_help(2, __VA_ARGS__)
911 #define help3(...) tex_help(3, __VA_ARGS__)
912 #define help4(...) tex_help(4, __VA_ARGS__)
913 #define help5(...) tex_help(5, __VA_ARGS__)
914 #define help6(...) tex_help(6, __VA_ARGS__)
916 EXTERN boolean shipout_flag;