summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/camel/bibtex.ch
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/camel/bibtex.ch')
-rw-r--r--Master/texmf-dist/source/latex/camel/bibtex.ch768
1 files changed, 0 insertions, 768 deletions
diff --git a/Master/texmf-dist/source/latex/camel/bibtex.ch b/Master/texmf-dist/source/latex/camel/bibtex.ch
deleted file mode 100644
index df54f2e2d69..00000000000
--- a/Master/texmf-dist/source/latex/camel/bibtex.ch
+++ /dev/null
@@ -1,768 +0,0 @@
-% Change file for BibTeX in C, originally by Howard Trickey, for
-% Berkeley Unix.
-%
-% History:
-% 05/28/84 Initial implementation, version 0.41 of BibTeX
-% 07/01/84 Version 0.41a of BibTeX.
-% 12/17/84 Version 0.97c of BibTeX.
-% 02/12/85 Version 0.98c of BibTeX.
-% 02/25/85 Newer version 0.98c of BibTeX.
-% 03/25/85 Version 0.98f of BibTeX
-% 05/23/85 Version 0.98i of BibTeX
-% 02/11/88 Version 0.99b of BibTeX
-% 04/04/88 Version 0.99c; converted for use with web2c (ETM).
-% 11/30/89 Use FILENAMESIZE instead of 1024 (KB).
-% 03/09/90 `int' is a bad variable name.
-% (more recent changes in ../ChangeLog.W2C)
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [1] banner
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@d banner=='This is BibTeX, Version 0.99c' {printed when the program starts}
-@y
-@d banner=='This is BibTeX, Version 0.99c' {more is printed later}
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [2] `term_in' and `term_out' are standard input and output. But
-% there is a complication: BibTeX passes `term_out' to some routines as
-% a var parameter. web2c turns a var parameter f into &f at the calling
-% side -- and stdout is sometimes implemented as `&_iob[1]' or some
-% such. An address of an address is invalid.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@d term_out == tty
-@d term_in == tty
-@y
-@d term_out == standard_output
-@d term_in == standard_input
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [4] Turn debug..gubed et al. into #ifdef's.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@d debug == @{ { remove the `|@{|' when debugging }
-@d gubed == @t@>@} { remove the `|@}|' when debugging }
-@f debug == begin
-@f gubed == end
-@#
-@d stat == @{ { remove the `|@{|' when keeping statistics }
-@d tats == @t@>@} { remove the `|@}|' when keeping statistics }
-@f stat == begin
-@f tats == end
-@#
-@d trace == @{ { remove the `|@{|' when in |trace| mode }
-@d ecart == @t@>@} { remove the `|@}|' when in |trace| mode }
-@f trace == begin
-@f ecart == end
-@y
-@d debug == ifdef('DEBUG')
-@d gubed == endif('DEBUG')
-@f debug == begin
-@f gubed == end
-@#
-@d stat == ifdef('STAT')
-@d tats == endif('STAT')
-@f stat==begin
-@f tats==end
-@#
-@d trace == ifdef@&('TRACE')
-@d ecart == endif@&('TRACE')
-@f trace == begin
-@f ecart == end
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [10] Don't print the banner unless verbose.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-print_ln(banner);@/
-@y
-if verbose then begin
- print (banner);
- print_ln (version_string);
-end;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [10] Possibly exit with bad status. It doesn't seem worth it to move
-% the definitions of the |history| values to above this module; hence
-% the 1.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-exit_program:
-end.
-@y
-exit_program:
-if (history > 1) then uexit (history);
-end.
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [11] Remove compiler directives.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@{@&$C-,A+,D-@} {no range check, catch arithmetic overflow, no debug overhead}
-@!debug @{@&$C+,D+@}@+ gubed {but turn everything on when debugging}
-@y
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [13] Remove nonlocal goto.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
- goto exit_program;
-@y
- uexit (1);
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [14] Increase some constants.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@!buf_size=1000; {maximum number of characters in an input line (or string)}
-@y
-@!buf_size=3000; {maximum number of characters in an input line (or string)}
-@z
-@x
-@!max_bib_files=20; {maximum number of \.{.bib} files allowed}
-@y
-@!max_bib_files=1000; {maximum number of \.{.bib} files allowed}
-@z
-@x
-@!pool_size=65000; {maximum number of characters in strings}
-@y
-@!pool_size=512000; {maximum number of characters in strings}
-@z
-@x
-@!max_strings=4000; {maximum number of strings, including pre-defined;
- must be |<=hash_size|}
-@y
-@!max_strings=20000; {maximum number of strings, including pre-defined;
- must be |<=hash_size|}
-@z
-@x
-@!max_cites=750; {maximum number of distinct cite keys; must be
- |<=max_strings|}
-@y
-@!max_cites=3000; {maximum number of distinct cite keys; must be
- |<=max_strings|}
-@z
-@x
-@!min_crossrefs=2; {minimum number of cross-refs required for automatic
- |cite_list| inclusion}
-@y
-{|min_crossrefs| can be set at runtime now.}
-@z
-@x
-@!wiz_fn_space=3000; {maximum amount of |wiz_defined|-function space}
-@y
-@!wiz_fn_space=10000; {maximum amount of |wiz_defined|-function space}
-@z
-@x
-@!single_fn_space=100; {maximum amount for a single |wiz_defined|-function}
-@y
-@!single_fn_space=200; {maximum amount for a single |wiz_defined|-function}
-@z
-@x
-@!max_ent_ints=3000; {maximum number of |int_entry_var|s
- (entries $\times$ |int_entry_var|s)}
-@y
-@!max_ent_ints=25000; {maximum number of |int_entry_var|s
- (entries $\times$ |int_entry_var|s)}
-@z
-@x
-@!max_ent_strs=3000; {maximum number of |str_entry_var|s
- (entries $\times$ |str_entry_var|s)}
-@y
-@!max_ent_strs=10000; {maximum number of |str_entry_var|s
- (entries $\times$ |str_entry_var|s)}
-@z
-@x
-@!max_fields=17250; {maximum number of fields (entries $\times$ fields,
- about |23*max_cites| for consistency)}
-@y
-@!max_fields=69000; {maximum number of fields (entries $\times$ fields,
- about |23*max_cites| for consistency)}
-@z
-@x
-@d hash_size=5000 {must be |>= max_strings| and |>= hash_prime|}
-@y
-@d hash_size=21000 {must be |>= max_strings| and |>= hash_prime|}
-@z
-@x
-@d hash_prime=4253 {a prime number about 85\% of |hash_size| and |>= 128|
- and |< @t$2^{14}-2^6$@>|}
-@y
-@d hash_prime=16319 {a prime number about 85\% of |hash_size| and |>= 128|
- and |< @t$2^{14}-2^6$@>|}
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [15] Use the system constant.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@d file_name_size=40 {file names shouldn't be longer than this}
-@y
-@d file_name_size == PATH_MAX
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [22, 23, 27, 28] Allow any character as input.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x [22]
-@!ASCII_code=0..127; {seven-bit numbers}
-@y
-@!ASCII_code=0..255; {eight-bit numbers}
-@z
-
-@x [23]
-@d text_char == char {the data type of characters in text files}
-@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
-@d last_text_char=127 {ordinal number of the largest element of |text_char|}
-
-@<Local variables for initialization@>=
-i:0..last_text_char; {this is the first one declared}
-@y
-@d text_char == ASCII_code {the data type of characters in text files}
-@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
-@d last_text_char=255 {ordinal number of the largest element of |text_char|}
-
-@<Local variables for initialization@>=
-i:integer;
-@z
-
-@x [27]
-for i:=1 to @'37 do xchr[i]:=' ';
-xchr[tab]:=chr(tab);
-@y
-for i:=0 to @'37 do xchr[i]:=chr(i);
-for i:=@'177 to @'377 do xchr[i]:=chr(i);
-@z
-
-@x [28]
-for i:=first_text_char to last_text_char do xord[chr(i)]:=invalid_code;
-for i:=1 to @'176 do xord[xchr[i]]:=i;
-@y
-for i:=first_text_char to last_text_char do xord[xchr[i]]:=i;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [32] Make RET a `white_space' character, so we won't choke on DOS
-% files, which end in a CR/LF pair.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-lex_class[tab] := white_space;
-@y
-lex_class[tab] := white_space;
-lex_class[13] := white_space;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [36] Define `alpha_file' in C.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@!alpha_file=packed file of text_char; {files that contain textual data}
-@y
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [37] Can't do arithmetic with |file_name_size| any longer, sigh.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@!name_ptr:0..file_name_size+1; {index variable into |name_of_file|}
-@y
-@!name_ptr:integer; {index variable into |name_of_file|}
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [38] File opening.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-The \ph\ compiler with which the present version of \TeX\ was prepared has
-extended the rules of \PASCAL\ in a very convenient way. To open file~|f|,
-we can write
-$$\vbox{\halign{#\hfil\qquad&#\hfil\cr
-|reset(f,@t\\{name}@>,'/O')|&for input;\cr
-|rewrite(f,@t\\{name}@>,'/O')|&for output.\cr}}$$
-The `\\{name}' parameter, which is of type `\ignorespaces|packed
-array[@t\<\\{any}>@>] of text_char|', stands for the name of
-the external file that is being opened for input or output.
-Blank spaces that might appear in \\{name} are ignored.
-
-The `\.{/O}' parameter tells the operating system not to issue its own
-error messages if something goes wrong. If a file of the specified name
-cannot be found, or if such a file cannot be opened for some other reason
-(e.g., someone may already be trying to write the same file), we will have
-|@!erstat(f)<>0| after an unsuccessful |reset| or |rewrite|. This allows
-\TeX\ to undertake appropriate corrective action.
-
-\TeX's file-opening procedures return |false| if no file identified by
-|name_of_file| could be opened.
-
-@d reset_OK(#)==erstat(#)=0
-@d rewrite_OK(#)==erstat(#)=0
-
-@<Procedures and functions for file-system interacting@>=
-function erstat(var f:file):integer; extern; {in the runtime library}
-@#@t\2@>
-function a_open_in(var f:alpha_file):boolean; {open a text file for input}
-begin reset(f,name_of_file,'/O'); a_open_in:=reset_OK(f);
-end;
-@#
-function a_open_out(var f:alpha_file):boolean; {open a text file for output}
-begin rewrite(f,name_of_file,'/O'); a_open_out:=rewrite_OK(f);
-end;
-@y
-@ File opening will be done in C.
-@d no_file_path = -1
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [39] Do file closing in C.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@<Procedures and functions for file-system interacting@>=
-procedure a_close(var f:alpha_file); {close a text file}
-begin close(f);
-end;
-@y
-File closing will be done in C, too.
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [47] web2c doesn't understand f^.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
- buffer[last]:=xord[f^];
- get(f); incr(last);
- end;
- get(f);
-@y
- buffer[last] := xord[getc (f)];
- incr (last);
- end;
- vgetc (f); {skip the eol}
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [77] The predefined string array starts at zero instead of one.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-for i:=1 to len do
- buffer[i] := xord[pds[i]];
-@y
-for i:=1 to len do
- buffer[i] := xord[pds[i-1]];
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [97] Can't do this tangle-time arithmetic.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@!aux_name_length : 0..file_name_size+1; {\.{.aux} name sans extension}
-@y
-@!aux_name_length : integer;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [100] Reading the aux file name and command-line processing.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-This procedure consists of a loop that reads and processes a (nonnull)
-\.{.aux} file name. It's this module and the next two that must be
-changed on those systems using command-line arguments. Note: The
-|term_out| and |term_in| files are system dependent.
-
-@<Procedures and functions for the reading and processing of input files@>=
-procedure get_the_top_level_aux_file_name;
-label aux_found,@!aux_not_found;
-var @<Variables for possible command-line processing@>@/
-begin
-check_cmnd_line := false; {many systems will change this}
-loop
- begin
- if (check_cmnd_line) then
- @<Process a possible command line@>
- else
- begin
- write (term_out,'Please type input file name (no extension)--');
- if (eoln(term_in)) then {so the first |read| works}
- read_ln (term_in);
- aux_name_length := 0;
- while (not eoln(term_in)) do
- begin
- if (aux_name_length = file_name_size) then
- begin
- while (not eoln(term_in)) do {discard the rest of the line}
- get(term_in);
- sam_you_made_the_file_name_too_long;
- end;
- incr(aux_name_length);
- name_of_file[aux_name_length] := term_in^;
- get(term_in);
- end;
- end;
- @<Handle this \.{.aux} name@>;
-aux_not_found:
- check_cmnd_line := false;
- end;
-aux_found: {now we're ready to read the \.{.aux} file}
-end;
-@y
-@<Procedures and functions for the reading and processing of input files@>=
-procedure get_the_top_level_aux_file_name;
-label aux_found,@!aux_not_found;
-var @<Variables for possible command-line processing@>@/
-begin
-loop
- begin
- {initialize the path variables}
- set_paths (BIB_INPUT_PATH_BIT + BST_INPUT_PATH_BIT);
- if (argc > 1) then
- @<Process a possible command line@>
- else begin
- write (term_out,'Please type input file name (no extension)--');
- aux_name_length := 0;
- while (not eoln(term_in)) do begin
- if (aux_name_length = file_name_size) then begin
- readln(term_in);
- sam_you_made_the_file_name_too_long;
- end;
- name_of_file[aux_name_length+1] := getc(term_in);
- incr(aux_name_length);
- end;
- if (eof(term_in)) then begin
- writeln(term_out);
- writeln(term_out,
- 'Unexpected end of file on terminal---giving up!');
- uexit(1);
- end;
- readln(term_in);
- end;
- @<Handle this \.{.aux} name@>;
-aux_not_found:
- argc := 0;
- end;
-aux_found: {now we're ready to read the \.{.aux} file}
-end;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [101] Don't need this variable; we use argc to check if we have a
-% command line.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@<Variables for possible command-line processing@>=
-@!check_cmnd_line : boolean; {|true| if we're to check the command line}
-@y
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [102] Get the aux file name from the command line.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@<Process a possible command line@>=
-begin
-do_nothing; {the ``default system'' doesn't use the command line}
-end
-@y
-@<Process a possible command line@>=
-begin
- if argc > n_options + arg_options + 3
- then begin
- print ('Usage: bibtex ');
- print ('[-verbose] ');
- print ('[-min-crossrefs=<number>] ');
- print_ln ('[<aux file>].');
-@.Usage: ...@>
- uexit (1);
- end;
-
- @<Initialize the option variables@>;
- @<Parse arguments@>;
-
- argv (optind, name_of_file);
- aux_name_length := 1;
- while name_of_file[aux_name_length] <> ' '
- do incr (aux_name_length);
- decr (aux_name_length);
-end
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [106] Don't use a path to find the aux file.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-if (not a_open_in(cur_aux_file)) then
- sam_you_made_the_file_name_wrong;
-@y
-if (not a_open_in(cur_aux_file,no_file_path)) then
- sam_you_made_the_file_name_wrong;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [110] Be silent unless verbose.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-print ('The top-level auxiliary file: ');
-print_aux_name;
-@y
-if verbose then begin
- print ('The top-level auxiliary file: ');
- print_aux_name;
-end;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [123] Use BIBINPUTS to search for the .bib file.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-if (not a_open_in(cur_bib_file)) then
- begin
- add_area (s_bib_area);
- if (not a_open_in(cur_bib_file)) then
- open_bibdata_aux_err ('I couldn''t open database file ');
- end;
-@y
-if (not a_open_in(cur_bib_file,BIB_INPUT_PATH)) then
- open_bibdata_aux_err ('I couldn''t open database file ');
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [127] Use BSTINPUTS/TEXINPUTS to search for .bst files.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-add_extension (s_bst_extension);
-if (not a_open_in(bst_file)) then
- begin
- add_area (s_bst_area);
- if (not a_open_in(bst_file)) then
- begin
- print ('I couldn''t open style file ');
- print_bst_name;@/
- bst_str := 0; {mark as unused again}
- aux_err_return;
- end;
- end;
-@y
-add_extension (s_bst_extension);
-if (not a_open_in(bst_file,BST_INPUT_PATH)) then
- begin
- print ('I couldn''t open style file ');
- print_bst_name;@/
- bst_str := 0; {mark as unused again}
- aux_err_return;
- end;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [127] Be silent unless verbose.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-print ('The style file: ');
-print_bst_name;
-@y
-if verbose then begin
- print ('The style file: ');
- print_bst_name;
-end;
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [141] Don't use a path to search for subsidiary aux files, either.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-if (not a_open_in(cur_aux_file)) then
-@y
-if (not a_open_in(cur_aux_file, no_file_path)) then
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [151] This goto gets turned into a setjmp/longjmp by ./convert --
-% unfortunately, it is a nonlocal goto. ekrell@ulysses@att.com
-% implemented the conversion.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-buf_ptr2 := last; {to get the first input line}
-loop
- begin
- if (not eat_bst_white_space) then {the end of the \.{.bst} file}
- goto bst_done;
- get_bst_command_and_process;
- end;
-bst_done: a_close (bst_file);
-@y
-buf_ptr2 := last; {to get the first input line}
-hack1;
- begin
- if (not eat_bst_white_space) then {the end of the \.{.bst} file}
- hack2;
- get_bst_command_and_process;
- end;
-bst_done: a_close (bst_file);
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [198] A variable named `int' is no good in C.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@<Procedures and functions for handling numbers, characters, and strings@>=
-@y
-@d int == the_int
-
-@<Procedures and functions for handling numbers, characters, and strings@>=
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [223] Be silent unless verbose.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
- print ('Database file #',bib_ptr+1:0,': ');
- print_bib_name;@/
-@y
- if verbose then begin
- print ('Database file #',bib_ptr+1:0,': ');
- print_bib_name;
- end;
-@z
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [388] bibtex.web has mutually exclusive tests here; Oren said he
-% doesn't want to fix it until 1.0, since it's obviously of no practical
-% import (or someone would have found it before GCC 2 did). Changing
-% the second `and' to an `or' makes all but the last of multiple authors
-% be omitted in the bbl file, so I simply removed the statement.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-while ((ex_buf_xptr < ex_buf_ptr) and
- (lex_class[ex_buf[ex_buf_ptr]] = white_space) and
- (lex_class[ex_buf[ex_buf_ptr]] = sep_char)) do
- incr(ex_buf_xptr); {this removes leading stuff}
-@y
-@z
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% [467] System-dependent changes: option handling.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@x
-@* System-dependent changes.
-@^system dependencies@>
-This section should be replaced, if necessary, by changes to the program
-that are necessary to make \BibTeX\ work at a particular installation.
-It is usually best to design your change file so that all changes to
-previous sections preserve the section numbering; then everybody's version
-will be consistent with the printed program. More extensive changes,
-which introduce new sections, can be inserted here; then only the index
-itself will get a new section number.
-@y
-@* System-dependent changes. We want to parse a Unix-style command line.
-@^system dependencies@>
-
-This macro tests if its argument is the current option, as represented
-by the index variable |option_index|.
-
-@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0)
-
-@<Parse arguments@> =
-begin
- @<Define the option table@>;
- repeat
- getopt_return_val := getopt_long_only (argc, gargv, '', long_options,
- address_of_int (option_index));
- if getopt_return_val <> -1
- then begin
- if getopt_return_val = "?"
- then uexit (1); {|getopt| has already given an error message.}
-
- if argument_is ('min-crossrefs')
- then begin
- min_crossrefs := atoi (optarg);
- end
-
- else
- {It was just a flag; |getopt| has already done the assignment.}
- do_nothing;
-
- end;
- until getopt_return_val = -1;
-
- {Now |optind| is the index of first non-option on the command line.}
-end
-
-
-@ The array of information we pass in. The type |getopt_struct| is
-defined in C, to avoid type clashes. We also need to know the return
-value from getopt, and the index of the current option.
-
-@<Variables for possible command-line...@> =
-@!long_options: array[0..n_options] of getopt_struct;
-@!getopt_return_val: integer;
-@!option_index: c_int_type;
-@!current_option: 0..n_options;
-
-@ Here is the first of the options we allow.
-@.-verbose@>
-
-@<Define the option...@> =
-current_option := 0;
-long_options[0].name := 'verbose';
-long_options[0].has_arg := 0;
-long_options[0].flag := address_of_int (verbose);
-long_options[0].val := 1;
-incr (current_option);
-
-@ The global variable |verbose| determines whether or not we print
-progress information.
-
-@<Glob...@> =
-@!verbose: c_int_type;
-
-@ It starts off |false|.
-
-@<Initialize the option...@> =
-verbose := false;
-
-
-@ Here is an option to change the minimum number of cross-refs required
-for automatic |cite_list| inclusion.
-@.-min-crossrefs@>
-
-@<Define the option...@> =
-long_options[current_option].name := 'min-crossrefs';
-long_options[current_option].has_arg := 1;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-incr (current_option);
-
-@
-@<Glob...@> =
-@!min_crossrefs: integer;
-
-@ Set |min_crossrefs| to two by default, so we match the
-documentation (\.{btxdoc.tex}).
-
-@<Initialize the option...@> =
-min_crossrefs := 2;
-
-
-@ An element with all zeros always ends the list.
-
-@<Define the option...@> =
-long_options[current_option].name := 0;
-long_options[current_option].has_arg := 0;
-long_options[current_option].flag := 0;
-long_options[current_option].val := 0;
-
-
-@ Pascal compilers won't count the number of elements in an array
-constant for us. This doesn't include the zero-element at the end,
-because this array starts at index zero.
-
-@<Constants...@> =
-@!n_options = 2;
-@!arg_options = 1;
-@z