4 #define ALLOCATEINI /* allocate iniTeX (550 k) trie_c, trie_o, trie_l, trie_r, trie_hash, trie_taken */
\r
5 #define ALLOCATEMAIN /* allocate main memory for TeX (2 Meg) */
\r
6 #define ALLOCATEFONT /* allocate font_info (800 k) (dynamically now) */
\r
7 #define ALLOCATETRIES /* allocate hyphenation trie stuff (270 k) trie_trl, trie_tro, trie_trc */
\r
8 #define ALLOCATEHYPHEN /* allocate hyphenation exception tables */
\r
9 #define VARIABLETRIESIZE /* allow trie_size to be variable */
\r
10 #define ALLOCATESTRING /* allocate strings and string pointers (184 k) str_pool & str_start */
\r
11 #define ALLOCATESAVESTACK /* experiment to dynamically deal with save_stack */
\r
12 #define ALLOCATEINPUTSTACK /* experiment to dynamically deal with input_stack */
\r
13 #define ALLOCATENESTSTACK /* experiment to dynamically deal with nest_stack */
\r
14 #define ALLOCATEPARAMSTACK /* experiment to dynamically deal with param_stack */
\r
15 #define ALLOCATEBUFFER /* experiment to dynamically deal with input buffer */
\r
16 #define INCREASEFIXED /* max_in_open */
\r
17 #define INCREASEFONTS /* 65536 fonts */
\r
18 #define INCREASETRIEOP /* tire_* */
\r
19 #define COMPACTFORMAT /* .fmt file with zlib */
\r
20 #define STAT /* TeX's statistics (tex82) */
\r
21 #define INITEX /* invoke initex */
\r
22 #define WORDS_BIGENDIAN 0 /* about format file */
\r
26 #define file_name_size PATH_MAX
\r
28 #define min_halfword -2147483647L /* LONG_MIN, for 64 bit memory word (signed) */
\r
29 #define max_halfword 2147483647L /* LONG_MAX, for 64 bit memory word (signed) */
\r
31 #define block_size 1000 /* block_size for variable length node alloc */
\r
33 #ifdef INCREASEFONTS
\r
34 #define min_quarterword 0
\r
35 #define max_quarterword 65535L
\r
37 #define min_quarterword 0
\r
38 #define max_quarterword 255
\r
41 #define default_mem_top 262140L /* usual big TeX allocation 2 Meg bytes */
\r
42 /* #define default_mem_top 131070L */ /* usual big TeX allocation 1 Meg bytes */
\r
43 /* #define default_mem_top 65534L */ /* usual small TeX allocation 0.5 Meg */
\r
48 EXTERN integer mem_top;
\r
49 EXTERN integer mem_max;
\r
50 EXTERN integer mem_min;
\r
51 #define max_mem_size (max_halfword / sizeof(memory_word) - 1)
\r
53 #define mem_top 262140L
\r
54 #define mem_max mem_top
\r
58 #ifdef ALLOCATEBUFFER
\r
59 #define initial_buf_size 1000
\r
60 #define increment_buf_size 2000
\r
61 #define buf_size 2000000L
\r
62 EXTERN ASCII_code * buffer;
\r
64 #define buf_size 20000
\r
65 EXTERN ASCII_code buffer[buf_size + 4];
\r
68 EXTERN integer first;
\r
69 EXTERN integer last;
\r
70 EXTERN integer max_buf_stack;
\r
72 #define error_line 79
\r
73 #define half_error_line 50
\r
74 #define max_print_line 79
\r
76 #ifdef INCREASEFIXED
\r
77 #define max_in_open 127
\r
79 #define max_in_open 15
\r
82 #ifdef INCREASEFONTS
\r
83 #define font_max 65535
\r
85 #define font_max 255
\r
89 #define font_mem_size (max_halfword / sizeof(memory_word) - 1)
\r
90 #define initial_font_mem_size 20000
\r
91 #define increment_font_mem_size 40000
\r
93 #define font_mem_size 100000L
\r
96 #ifdef ALLOCATESTRING
\r
97 #define max_strings (max_halfword / sizeof(pool_pointer) - 1)
\r
98 #define pool_size (max_halfword - 1)
\r
100 #define max_strings 16384
\r
101 #define pool_size 124000L
\r
104 #define string_vacancies 100000L
\r
106 #ifdef VARIABLETRIESIZE
\r
107 EXTERN integer trie_size;
\r
108 #define default_trie_size 60000
\r
110 #define trie_size 30000
\r
113 #ifdef INCREASETRIEOP
\r
114 #define trie_op_size 3001
\r
115 #define neg_trie_op_size -3001
\r
116 #define min_trie_op 0
\r
117 #define max_trie_op 1000
\r
119 #define trie_op_size 751
\r
120 #define neg_trie_op_size -751
\r
121 #define min_trie_op 0
\r
122 #define max_trie_op 500
\r
125 #define dvi_buf_size 16384
\r
127 #define hash_extra (255 - font_max)
\r
128 #define hash_prime 27197 // (prime ~ 85% * (hash_size + hash_extra))
\r
129 #define hash_size 97280 // 32768 9500 25000
\r
131 #if (hash_extra != 255 - font_max)
\r
132 #error ERROR: hash_extra not equal to (255 - font_max)
\r
136 #ifdef INCREASEFONTS
\r
137 typedef unsigned short quarterword;
\r
139 typedef unsigned char quarterword;
\r
142 /* typedef unsigned long halfword; NO NO: since mem_min may be < 0 */
\r
144 typedef int32_t halfword;
\r
145 typedef halfword pointer;
\r
146 typedef char two_choices;
\r
147 typedef char four_choices;
\r
149 #include "memory.h"
\r
150 #include "macros.h"
\r
152 typedef char glue_ord;
\r
157 halfword head_field, tail_field;
\r
158 integer pg_field, ml_field;
\r
159 memory_word aux_field;
\r
160 } list_state_record;
\r
162 typedef char group_code;
\r
166 quarterword state_field, index_field;
\r
167 halfword start_field, loc_field, limit_field, name_field;
\r
168 } in_state_record;
\r
170 typedef integer internal_font_number;
\r
171 typedef integer font_index;
\r
173 typedef integer dvi_index;
\r
175 typedef integer trie_op_code;
\r
177 typedef integer trie_pointer;
\r
178 typedef integer hyph_pointer;
\r
180 EXTERN integer bad;
\r
181 EXTERN ASCII_code xord[256];
\r
182 EXTERN ASCII_code xchr[256];
\r
183 EXTERN ASCII_code name_of_file[file_name_size + 4];
\r
184 EXTERN integer name_length;
\r
186 #ifdef ALLOCATESTRING
\r
187 #define initial_pool_size 40000
\r
188 #define increment_pool_size 80000
\r
189 EXTERN packed_ASCII_code * str_pool;
\r
190 #define initial_max_strings 5000
\r
191 #define increment_max_strings 10000
\r
192 EXTERN pool_pointer * str_start;
\r
194 EXTERN packed_ASCII_code str_pool[pool_size + 1];
\r
195 EXTERN pool_pointer str_start[max_strings + 1];
\r
198 EXTERN pool_pointer pool_ptr;
\r
199 EXTERN str_number str_ptr;
\r
200 EXTERN pool_pointer init_pool_ptr;
\r
201 EXTERN str_number init_str_ptr;
\r
204 EXTERN alpha_file pool_file;
\r
207 EXTERN alpha_file log_file;
\r
208 EXTERN int selector;
\r
209 EXTERN char dig[23 + 1];
\r
210 EXTERN integer tally;
\r
211 EXTERN integer term_offset;
\r
212 EXTERN integer file_offset;
\r
213 EXTERN ASCII_code trick_buf[error_line + 1];
\r
214 EXTERN integer trick_count;
\r
215 EXTERN integer first_count;
\r
216 EXTERN int interaction;
\r
217 EXTERN boolean deletions_allowed;
\r
218 EXTERN boolean set_box_allowed;
\r
219 EXTERN int history;
\r
220 EXTERN int error_count;
\r
221 EXTERN char * help_line[6];
\r
222 EXTERN int help_ptr;
\r
223 EXTERN boolean use_err_help;
\r
224 EXTERN volatile integer interrupt;
\r
225 EXTERN boolean OK_to_interrupt;
\r
226 EXTERN boolean arith_error;
\r
227 EXTERN scaled tex_remainder;
\r
228 EXTERN halfword temp_ptr;
\r
231 #ifdef ALLOCATEMAIN
\r
232 EXTERN memory_word * main_memory;
\r
233 EXTERN memory_word * mem;
\r
235 EXTERN memory_word zzzaa[mem_max - mem_bot + 1];
\r
236 #define zmem (zzzaa - (int)(mem_bot))
\r
239 EXTERN pointer lo_mem_max;
\r
240 EXTERN pointer hi_mem_min;
\r
241 EXTERN integer var_used, dyn_used;
\r
243 EXTERN pointer avail;
\r
244 EXTERN pointer mem_end;
\r
245 EXTERN pointer mem_start;
\r
247 EXTERN pointer rover;
\r
249 /* NOTE: the following really also need to be dynamically allocated */
\r
251 #ifdef ALLOCATEMAIN
\r
252 EXTERN char * zzzab;
\r
256 #define freearr (zzzab - (int)(mem_bot))
\r
257 zzzab[mem_max - mem_bot + 1];
\r
260 #ifdef ALLOCATEMAIN
\r
261 EXTERN char *zzzac;
\r
263 /* EXTERN boolean */ /* save (4 - 1) * mem_max - mem_min */
\r
265 /* #define wasfree (zzzac - (int)(mem_min)) */
\r
266 #define wasfree (zzzac - (int)(mem_bot))
\r
267 /* zzzac[mem_max - mem_min + 1]; */
\r
268 zzzac[mem_max - mem_bot + 1];
\r
271 EXTERN pointer was_mem_end, was_lo_max, was_hi_min;
\r
272 EXTERN boolean panicking;
\r
275 EXTERN integer font_in_short_display;
\r
276 EXTERN integer depth_threshold;
\r
277 EXTERN integer breadth_max;
\r
278 EXTERN int shown_mode;
\r
279 EXTERN int old_setting;
\r
281 #ifdef INCREASEFONTS
\r
282 #define eqtb_extra (font_max - 255 + hash_extra)
\r
284 #define eqtb_extra 0
\r
287 #if (eqtb_extra != 0)
\r
288 #error ERROR: eqtb_extra is not zero (need hash_extra equal 255 - font_max)
\r
291 #ifdef INCREASEFONTS
\r
292 EXTERN memory_word eqtb[eqtb_size + 1 + eqtb_extra];
\r
294 EXTERN memory_word eqtb[eqtb_size + 1];
\r
297 #ifdef INCREASEFONTS
\r
298 #define xeq_level (zzzad - (int_base + eqtb_extra))
\r
300 #define xeq_level (zzzad - (int_base))
\r
303 EXTERN quarterword zzzad[eqtb_size - int_base + 1];
\r
305 #ifdef ALLOCATEHASH
\r
306 EXTERN two_halves *zzzae;
\r
307 #define hash (zzzae - hash_base)
\r
309 #ifdef INCREASEFONTS
\r
310 EXTERN two_halves zzzae[undefined_control_sequence - hash_base + eqtb_extra];
\r
312 EXTERN two_halves zzzae[undefined_control_sequence - hash_base];
\r
315 #define hash (zzzae - hash_base)
\r
318 EXTERN pointer hash_used;
\r
319 EXTERN boolean no_new_control_sequence;
\r
320 EXTERN integer cs_count;
\r
322 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
\r
323 /* using allocated save stack slows it down 1% to 2% */
\r
324 /* despite reallocation, we still limit it to something finite */
\r
325 /* to avoid soaking up all of machine memory in case of infinite loop */
\r
326 #ifdef ALLOCATESAVESTACK
\r
327 #define save_size 65536
\r
328 #define initial_save_size 1000
\r
329 #define increment_save_size 2000
\r
330 EXTERN memory_word * save_stack;
\r
332 #define save_size 8000
\r
333 EXTERN memory_word save_stack[save_size + 1];
\r
336 EXTERN integer save_ptr;
\r
337 EXTERN integer max_save_stack;
\r
338 EXTERN int cur_level;
\r
339 EXTERN int cur_group;
\r
340 EXTERN integer cur_boundary;
\r
341 EXTERN integer mag_set;
\r
342 EXTERN int cur_cmd;
\r
343 EXTERN halfword cur_chr;
\r
344 EXTERN pointer cur_cs;
\r
345 EXTERN halfword cur_tok;
\r
347 #ifdef ALLOCATENESTSTACK
\r
348 #define nest_size 65536
\r
349 #define initial_nest_size 100
\r
350 #define increment_nest_size 200
\r
351 EXTERN list_state_record * nest;
\r
353 #define nest_size 200
\r
354 EXTERN list_state_record nest[nest_size + 1];
\r
357 EXTERN integer nest_ptr;
\r
358 EXTERN integer max_nest_stack;
\r
359 EXTERN list_state_record cur_list;
\r
361 #ifdef ALLOCATEPARAMSTACK
\r
362 #define param_size 65536
\r
363 #define initial_param_size 100
\r
364 #define increment_param_size 200
\r
365 EXTERN pointer * param_stack;
\r
367 #define param_size 500
\r
368 EXTERN pointer param_stack[param_size + 1];
\r
371 EXTERN integer param_ptr;
\r
372 EXTERN integer max_param_stack;
\r
374 #ifdef ALLOCATEINPUTSTACK
\r
375 #define stack_size 65536
\r
376 #define initial_stack_size 100
\r
377 #define increment_stack_size 200
\r
378 EXTERN in_state_record * input_stack;
\r
380 #define stack_size 800
\r
381 EXTERN in_state_record input_stack[stack_size + 1];
\r
384 EXTERN integer input_ptr;
\r
385 EXTERN integer max_in_stack;
\r
386 EXTERN integer high_in_open;
\r
387 EXTERN in_state_record cur_input;
\r
388 EXTERN int in_open;
\r
389 EXTERN integer open_parens;
\r
390 EXTERN integer max_open_parens;
\r
391 EXTERN alpha_file input_file[max_in_open + 1];
\r
392 EXTERN integer line;
\r
393 EXTERN integer line_stack[max_in_open + 1];
\r
394 EXTERN int scanner_status;
\r
395 EXTERN pointer warning_index;
\r
396 EXTERN pointer def_ref;
\r
397 EXTERN integer align_state;
\r
398 EXTERN integer base_ptr;
\r
399 EXTERN pointer par_loc;
\r
400 EXTERN halfword par_token;
\r
401 EXTERN boolean force_eof;
\r
402 EXTERN pointer cur_mark[6];
\r
403 EXTERN int long_state;
\r
404 EXTERN pointer pstack[10];
\r
405 EXTERN integer cur_val;
\r
406 EXTERN int cur_val_level;
\r
408 EXTERN int cur_order;
\r
409 EXTERN alpha_file read_file[16];
\r
410 EXTERN char read_open[20];
\r
411 EXTERN pointer cond_ptr;
\r
412 EXTERN int if_limit;
\r
414 EXTERN integer if_line;
\r
415 EXTERN integer skip_line;
\r
416 EXTERN str_number cur_name;
\r
417 EXTERN str_number cur_area;
\r
418 EXTERN str_number cur_ext;
\r
419 EXTERN pool_pointer area_delimiter;
\r
420 EXTERN pool_pointer ext_delimiter;
\r
421 EXTERN integer format_default_length;
\r
422 EXTERN char * TEX_format_default;
\r
423 EXTERN boolean name_in_progress;
\r
424 EXTERN boolean log_opened;
\r
425 EXTERN boolean quoted_file_name;
\r
426 EXTERN str_number job_name;
\r
427 EXTERN const char * c_job_name;
\r
428 EXTERN str_number output_file_name;
\r
429 EXTERN str_number log_name;
\r
430 EXTERN byte_file dvi_file;
\r
431 EXTERN byte_file tfm_file;
\r
432 EXTERN byte_file pdf_file;
\r
433 EXTERN char * dvi_file_name;
\r
434 EXTERN char * pdf_file_name;
\r
435 EXTERN char * log_file_name;
\r
437 #ifdef ALLOCATEFONT
\r
438 EXTERN memory_word * font_info;
\r
440 EXTERN memory_word font_info[font_mem_size + 1];
\r
443 EXTERN font_index fmem_ptr;
\r
444 EXTERN internal_font_number font_ptr;
\r
445 EXTERN internal_font_number frozen_font_ptr;
\r
446 EXTERN four_quarters font_check[font_max + 1];
\r
447 EXTERN int font_id[font_max + 1];
\r
448 EXTERN scaled font_size[font_max + 1];
\r
449 EXTERN scaled font_dsize[font_max + 1];
\r
450 EXTERN font_index font_params[font_max + 1];
\r
451 EXTERN str_number font_name[font_max + 1];
\r
452 EXTERN str_number font_area[font_max + 1];
\r
453 EXTERN eight_bits font_bc[font_max + 1];
\r
454 EXTERN eight_bits font_ec[font_max + 1];
\r
455 EXTERN pointer font_glue[font_max + 1];
\r
456 EXTERN boolean font_used[font_max + 1];
\r
457 EXTERN integer hyphen_char[font_max + 1];
\r
458 EXTERN integer skew_char[font_max + 1];
\r
459 EXTERN font_index bchar_label[font_max + 1];
\r
460 EXTERN short font_bchar[font_max + 1];
\r
461 EXTERN short font_false_bchar[font_max + 1];
\r
462 EXTERN integer char_base[font_max + 1];
\r
463 EXTERN integer width_base[font_max + 1];
\r
464 EXTERN integer height_base[font_max + 1];
\r
465 EXTERN integer depth_base[font_max + 1];
\r
466 EXTERN integer italic_base[font_max + 1];
\r
467 EXTERN integer lig_kern_base[font_max + 1];
\r
468 EXTERN integer kern_base[font_max + 1];
\r
469 EXTERN integer exten_base[font_max + 1];
\r
470 EXTERN integer param_base[font_max + 1];
\r
471 EXTERN four_quarters null_character;
\r
472 EXTERN integer total_pages;
\r
473 EXTERN scaled max_v;
\r
474 EXTERN scaled max_h;
\r
475 EXTERN integer max_push;
\r
476 EXTERN integer last_bop;
\r
477 EXTERN integer dead_cycles;
\r
478 EXTERN boolean doing_leaders;
\r
479 EXTERN quarterword c, f;
\r
480 EXTERN scaled rule_ht, rule_dp, rule_wd;
\r
482 EXTERN integer lq, lr;
\r
483 EXTERN eight_bits dvi_buf[dvi_buf_size + 4];
\r
484 EXTERN dvi_index half_buf;
\r
485 EXTERN dvi_index dvi_limit;
\r
486 EXTERN dvi_index dvi_ptr;
\r
487 EXTERN integer dvi_offset;
\r
488 EXTERN integer dvi_gone;
\r
489 EXTERN pointer down_ptr, right_ptr;
\r
490 EXTERN scaled dvi_h, dvi_v;
\r
491 EXTERN scaled cur_h, cur_v;
\r
492 EXTERN internal_font_number dvi_f;
\r
493 EXTERN integer cur_s;
\r
494 EXTERN scaled total_stretch[4], total_shrink[4];
\r
495 EXTERN integer last_badness;
\r
496 EXTERN pointer adjust_tail;
\r
497 EXTERN integer pack_begin_line;
\r
498 EXTERN two_halves empty_field;
\r
499 EXTERN four_quarters null_delimiter;
\r
500 EXTERN pointer cur_mlist;
\r
501 EXTERN small_number cur_style;
\r
502 EXTERN small_number cur_size;
\r
503 EXTERN scaled cur_mu;
\r
504 EXTERN boolean mlist_penalties;
\r
505 EXTERN internal_font_number cur_f;
\r
506 EXTERN quarterword cur_c;
\r
507 EXTERN four_quarters cur_i;
\r
508 EXTERN integer magic_offset;
\r
509 EXTERN pointer cur_align;
\r
510 EXTERN pointer cur_span;
\r
511 EXTERN pointer cur_loop;
\r
512 EXTERN pointer align_ptr;
\r
513 EXTERN pointer cur_head, cur_tail;
\r
514 EXTERN pointer just_box;
\r
515 EXTERN pointer passive;
\r
516 EXTERN pointer printed_node;
\r
517 EXTERN halfword pass_number;
\r
518 EXTERN scaled active_width[8];
\r
519 EXTERN scaled cur_active_width[8];
\r
520 EXTERN scaled background[8];
\r
521 EXTERN scaled break_width[8];
\r
522 EXTERN boolean no_shrink_error_yet;
\r
523 EXTERN pointer cur_p;
\r
524 EXTERN boolean second_pass;
\r
525 EXTERN boolean final_pass;
\r
526 EXTERN integer threshold;
\r
527 EXTERN integer minimal_demerits[4];
\r
528 EXTERN integer minimum_demerits;
\r
529 EXTERN pointer best_place[4];
\r
530 EXTERN halfword best_pl_line[4];
\r
531 EXTERN scaled disc_width;
\r
532 EXTERN halfword easy_line;
\r
533 EXTERN halfword last_special_line;
\r
534 EXTERN scaled first_width;
\r
535 EXTERN scaled second_width;
\r
536 EXTERN scaled first_indent;
\r
537 EXTERN scaled second_indent;
\r
538 EXTERN pointer best_bet;
\r
539 EXTERN integer fewest_demerits;
\r
540 EXTERN halfword best_line;
\r
541 EXTERN integer actual_looseness;
\r
542 EXTERN integer line_diff;
\r
545 EXTERN halfword ha, hb;
\r
548 EXTERN int hyf_char;
\r
549 EXTERN int cur_lang, init_cur_lang;
\r
550 EXTERN integer l_hyf, r_hyf;
\r
551 EXTERN integer init_l_hyf, init_r_hyf;
\r
552 EXTERN halfword hyf_bchar;
\r
553 EXTERN char hyf[68];
\r
554 EXTERN pointer init_list;
\r
555 EXTERN boolean init_lig;
\r
556 EXTERN boolean init_lft;
\r
557 EXTERN int hyphen_passed;
\r
558 EXTERN halfword cur_l, cur_r;
\r
559 EXTERN pointer cur_q;
\r
560 EXTERN pointer lig_stack;
\r
561 EXTERN boolean ligature_present;
\r
562 EXTERN boolean lft_hit, rt_hit;
\r
564 #ifdef ALLOCATETRIES
\r
565 EXTERN halfword * trie_trl;
\r
566 EXTERN halfword * trie_tro;
\r
567 EXTERN quarterword * trie_trc;
\r
569 EXTERN halfword trie_trl[trie_size + 1];
\r
570 EXTERN halfword trie_tro[trie_size + 1];
\r
571 EXTERN quarterword trie_trc[trie_size + 1];
\r
574 EXTERN small_number hyf_distance[trie_op_size + 1];
\r
575 EXTERN small_number hyf_num[trie_op_size + 1];
\r
576 EXTERN trie_op_code hyf_next[trie_op_size + 1];
\r
577 EXTERN integer op_start[256];
\r
579 #ifdef ALLOCATEHYPHEN
\r
580 #define default_hyphen_prime 1009
\r
581 EXTERN str_number * hyph_word;
\r
582 EXTERN pointer * hyph_list;
\r
583 EXTERN integer hyphen_prime;
\r
585 #define hyphen_prime 607
\r
586 EXTERN str_number hyph_word[hyphen_prime + 1];
\r
587 EXTERN pointer hyph_list[hyphen_prime + 1];
\r
590 EXTERN hyph_pointer hyph_count;
\r
593 EXTERN integer trie_op_hash_C[trie_op_size - neg_trie_op_size + 1];
\r
594 #define trie_op_hash (trie_op_hash_C - (int)(neg_trie_op_size))
\r
595 EXTERN trie_op_code trie_used[256];
\r
596 EXTERN ASCII_code trie_op_lang[trie_op_size + 1];
\r
597 EXTERN trie_op_code trie_op_val[trie_op_size + 1];
\r
598 EXTERN integer trie_op_ptr;
\r
601 EXTERN trie_op_code max_op_used;
\r
605 EXTERN packed_ASCII_code * trie_c; /* characters to match */
\r
606 EXTERN trie_op_code * trie_o; /* operations to perform */
\r
607 EXTERN trie_pointer * trie_l; /* left subtrie links */
\r
608 EXTERN trie_pointer * trie_r; /* right subtrie links */
\r
609 EXTERN trie_pointer * trie_hash; /* used to identify equivlent subtries */
\r
611 EXTERN packed_ASCII_code trie_c[trie_size + 1];
\r
612 EXTERN trie_op_code trie_o[trie_size + 1];
\r
613 EXTERN trie_pointer trie_l[trie_size + 1];
\r
614 EXTERN trie_pointer trie_r[trie_size + 1];
\r
615 EXTERN trie_pointer trie_hash[trie_size + 1];
\r
618 EXTERN trie_pointer trie_ptr;
\r
623 EXTERN char * trie_taken;
\r
625 EXTERN boolean trie_taken[trie_size + 1];
\r
628 EXTERN trie_pointer trie_min[256];
\r
629 EXTERN trie_pointer trie_max;
\r
630 EXTERN boolean trie_not_ready;
\r
633 EXTERN scaled best_height_plus_depth;
\r
634 EXTERN pointer page_tail;
\r
635 EXTERN int page_contents;
\r
637 #if (half_error_line < 30) || (half_error_line > error_line - 15)
\r
638 #error ERROR: (half_error_line < 30) || (half_error_line > error_line - 15) BAD 1
\r
641 #if (max_print_line < 60)
\r
642 #error ERROR: (max_print_line < 60) BAD 2
\r
645 #if (hash_prime > hash_size)
\r
646 #error ERROR: (hash_prime > hash_size) BAD 5
\r
649 #if (max_in_open > 127)
\r
650 #error ERROR: (max_in_open > 127) BAD 6
\r
653 #if (min_quarterword > 0) || (max_quarterword < 127)
\r
654 #error ERROR: (min_quarterword > 0) || (max_quarterword < 127) BAD 11
\r
657 #if (min_halfword > 0) || (max_halfword < 32767)
\r
658 #error ERROR: (min_halfword > 0) || (max_halfword < 32767) BAD 12
\r
661 #if (min_quarterword < min_halfword) || (max_quarterword > max_halfword)
\r
662 #error ERROR: (min_quarterword < min_halfword) || (max_quarterword > max_halfword) BAD 13
\r
665 #if (font_max > max_quarterword)
\r
666 #error ERROR: (font_max > max_quarterword) BAD 15
\r
669 #if (save_size > max_halfword)
\r
670 #error ERROR: (save_size > max_halfword) BAD 17
\r
673 #if (buf_size > max_halfword)
\r
674 #error ERROR: (buf_size > max_halfword) BAD 18
\r
677 #if (max_quarterword - min_quarterword) < 255
\r
678 #error (max_quarterword - min_quarterword) < 255 BAD 19
\r
681 EXTERN scaled page_max_depth;
\r
682 EXTERN pointer best_page_break;
\r
683 EXTERN integer least_page_cost;
\r
684 EXTERN scaled best_size;
\r
685 EXTERN scaled page_so_far[8];
\r
686 EXTERN pointer last_glue;
\r
687 EXTERN integer last_penalty;
\r
688 EXTERN scaled last_kern;
\r
689 EXTERN integer insert_penalties;
\r
690 EXTERN boolean output_active;
\r
692 EXTERN internal_font_number main_f;
\r
693 EXTERN four_quarters main_i;
\r
694 EXTERN four_quarters main_j;
\r
695 EXTERN font_index main_k;
\r
696 EXTERN pointer main_p;
\r
697 EXTERN integer main_s;
\r
698 EXTERN halfword bchar;
\r
699 EXTERN halfword false_bchar;
\r
700 EXTERN boolean cancel_boundary;
\r
701 EXTERN boolean ins_disc;
\r
703 EXTERN pointer cur_box;
\r
704 EXTERN halfword after_token;
\r
705 EXTERN boolean long_help_seen;
\r
706 EXTERN str_number format_ident;
\r
707 EXTERN word_file fmt_file;
\r
708 EXTERN gzFile gz_fmt_file;
\r
710 EXTERN integer ready_already;
\r
712 EXTERN alpha_file write_file[16];
\r
713 EXTERN boolean write_open[18];
\r
715 EXTERN pointer write_loc;
\r
716 EXTERN pool_pointer edit_name_start;
\r
717 EXTERN integer edit_name_length, edit_line;
\r
719 /* new variables defined in local.c */
\r
720 EXTERN boolean is_initex;
\r
721 EXTERN boolean verbose_flag;
\r
722 EXTERN boolean trace_flag;
\r
723 EXTERN boolean open_trace_flag;
\r
724 EXTERN boolean knuth_flag;
\r
725 EXTERN boolean c_style_flag;
\r
726 EXTERN boolean non_ascii;
\r
727 EXTERN boolean key_replace;
\r
728 EXTERN boolean deslash;
\r
729 EXTERN boolean trimeof;
\r
730 EXTERN boolean allow_patterns;
\r
731 EXTERN boolean show_fonts_used;
\r
732 EXTERN boolean reset_exceptions;
\r
733 EXTERN boolean show_current;
\r
734 EXTERN boolean return_flag;
\r
735 EXTERN boolean civilize_flag;
\r
736 EXTERN boolean show_numeric;
\r
737 EXTERN boolean restrict_to_ascii;
\r
738 EXTERN boolean show_missing;
\r
739 EXTERN boolean full_file_name_flag;
\r
740 EXTERN int mem_initex;
\r
741 EXTERN int mem_extra_high;
\r
742 EXTERN int mem_extra_low;
\r
743 EXTERN int new_hyphen_prime;
\r
744 EXTERN int missing_characters;
\r
745 EXTERN boolean show_in_hex;
\r
746 EXTERN boolean show_fmt_flag;
\r
747 EXTERN boolean show_tfm_flag;
\r
748 EXTERN boolean truncate_long_lines;
\r
749 EXTERN boolean show_cs_names;
\r
750 EXTERN int tab_step;
\r
751 EXTERN int pseudo_tilde;
\r
752 EXTERN int pseudo_space;
\r
753 EXTERN boolean allow_quoted_names;
\r
754 EXTERN int default_rule;
\r
755 EXTERN char * format_file;
\r
756 EXTERN char * source_direct;
\r
757 EXTERN char * format_name;
\r
758 EXTERN boolean show_line_break_stats;
\r
759 EXTERN int first_pass_count;
\r
760 EXTERN int second_pass_count;
\r
761 EXTERN int final_pass_count;
\r
762 EXTERN int underfull_hbox;
\r
763 EXTERN int overfull_hbox;
\r
764 EXTERN int underfull_vbox;
\r
765 EXTERN int overfull_vbox;
\r
766 EXTERN int paragraph_failed;
\r
767 EXTERN int single_line;
\r
768 EXTERN FILE * errout;
\r
769 EXTERN int ignore_frozen;
\r
770 EXTERN boolean suppress_f_ligs;
\r
771 EXTERN int jump_used;
\r
772 EXTERN jmp_buf jumpbuffer;
\r
773 extern int current_pool_size;
\r
774 extern int current_max_strings;
\r
775 extern int current_mem_size;
\r
776 extern int current_font_mem_size;
\r
777 extern int current_save_size;
\r
778 extern int current_stack_size;
\r
779 extern int current_nest_size;
\r
780 extern int current_param_size;
\r
781 extern int current_buf_size;
\r
782 extern const char * banner;
\r
783 extern const char * application;
\r
784 extern const char * yandyversion;
\r
785 extern char log_line[256];
\r
786 extern char * dvi_directory;
\r
787 extern char * log_directory;
\r
788 extern char * aux_directory;
\r
789 extern char * fmt_directory;
\r
790 extern char * pdf_directory;
\r
791 extern clock_t start_time, main_time, finish_time;
\r
793 extern memory_word * allocate_main_memory (int size);
\r
794 extern memory_word * realloc_main (int lo_size, int hi_size);
\r
795 extern packed_ASCII_code * realloc_str_pool (int size);
\r
796 extern pool_pointer * realloc_str_start (int size);
\r
797 extern memory_word * realloc_save_stack (int size);
\r
798 extern list_state_record * realloc_nest_stack (int size);
\r
799 extern in_state_record * realloc_input_stack (int size);
\r
800 extern halfword * realloc_param_stack (int size);
\r
801 extern ASCII_code * realloc_buffer (int size);
\r
802 extern memory_word * realloc_font_info (int size);
\r
803 extern int realloc_hyphen (int hyphen_prime);
\r
804 extern int allocate_tries (int trie_max);
\r
805 extern void probe_memory (void);
\r
806 extern void print_cs_names (FILE * output, int pass);
\r
807 extern void perrormod (const char * s);
\r
808 extern char * grabenv (const char * varname);
\r
809 extern void flush_trailing_slash (char * directory);
\r
810 extern boolean prime (int x);
\r
811 extern int endit (int flag);
\r
812 extern void uexit (int unix_code);
\r
813 extern void t_open_in (void);
\r
814 extern void call_edit (ASCII_code * filename, pool_pointer fnstart,
\r
815 integer fnlength, integer linenumber);
\r
816 extern void add_variable_space (int size);
\r
817 extern char * unixify (char * t);
\r
819 #include "coerce.h"
\r
822 extern void node_list_display (integer p);
\r
823 extern void do_nothing (void);
\r
824 extern void update_terminal (void);
\r
825 extern void check_full_save_stack (void);
\r
826 extern void push_input (void);
\r
827 extern void pop_input (void);
\r
828 extern void print_err (const char * s);
\r
829 extern void ensure_dvi_open (void);
\r
830 extern void write_dvi (size_t a, size_t b);
\r
831 extern void prompt_input (const char * s);
\r
832 extern void synch_h (void);
\r
833 extern void synch_v (void);
\r
834 extern void set_cur_lang (void);
\r
835 extern void str_room (int val);
\r
836 extern void tail_append_ (pointer val);
\r
837 #define tail_append(a) tail_append_((pointer) a)
\r
838 extern void tex_help (unsigned int n, ...);
\r
839 extern void append_char (ASCII_code c);
\r
840 extern void append_lc_hex (ASCII_code c);
\r
841 extern void succumb (void);
\r
842 extern void dvi_out_ (ASCII_code op);
\r
843 #define dvi_out(op) dvi_out_((ASCII_code) (op))
\r
844 extern void free_avail_ (halfword p);
\r
845 #define free_avail(p) free_avail_((halfword) (p))
\r
846 extern void flush_string (void);
\r
847 extern str_number load_pool_strings (integer spare_size);
\r
848 extern str_number make_string_pool (const char * s);
\r
849 extern void print_plus (int i, const char * s);
\r
850 extern void fget (void);
\r
851 extern str_number get_job_name (str_number job);
\r
852 extern void show_font_info (void);
\r