summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex/texfileio.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/texfileio.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texfileio.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/texfileio.h b/Build/source/texk/web2c/luatexdir/tex/texfileio.h
new file mode 100644
index 00000000000..77b7a6dd5b5
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/tex/texfileio.h
@@ -0,0 +1,144 @@
+/* texfileio.h
+
+ Copyright 2009 Taco Hoekwater <taco@luatex.org>
+
+ This file is part of LuaTeX.
+
+ LuaTeX is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ LuaTeX is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */
+
+/* $Id: texfileio.h 3395 2010-01-27 11:40:08Z taco $ */
+
+#ifndef TEXFILEIO_H
+# define TEXFILEIO_H
+
+extern int *input_file_callback_id;
+extern int read_file_callback_id[17];
+
+extern char *luatex_find_file(const char *s, int callback_index);
+extern char *luatex_find_read_file(const char *s, int n, int callback_index);
+extern boolean luatex_open_input(FILE ** f_ptr, const char *fn, int filefmt,
+ const_string fopen_mode, boolean must_exist);
+extern boolean luatex_open_output(FILE ** f_ptr, const char *fn,
+ const_string fopen_mode);
+
+extern boolean lua_a_open_in(alpha_file * f, char *fn, int n);
+extern boolean lua_a_open_out(alpha_file * f, char *fn, int n);
+extern boolean lua_b_open_out(alpha_file * f, char *fn);
+extern void lua_a_close_in(alpha_file f, int n);
+extern void lua_a_close_out(alpha_file f);
+
+extern packed_ASCII_code *buffer;
+extern int first;
+extern int last;
+extern int max_buf_stack;
+
+extern boolean lua_input_ln(alpha_file f, int n, boolean bypass_eoln);
+
+/*
+The user's terminal acts essentially like other files of text, except
+that it is used both for input and for output. When the terminal is
+considered an input file, the file variable is called |term_in|, and when it
+is considered an output file the file variable is |term_out|.
+@^system dependencies@>
+*/
+
+# define term_in stdin /* the terminal as an input file */
+# define term_out stdout /* the terminal as an output file */
+
+
+/*
+Here is how to open the terminal files. |t_open_out| does nothing.
+|t_open_in|, on the other hand, does the work of ``rescanning,'' or getting
+any command line arguments the user has provided. It's defined in C.
+*/
+
+# define t_open_out() /* output already open for text output */
+
+/*
+Sometimes it is necessary to synchronize the input/output mixture that
+happens on the user's terminal, and three system-dependent
+procedures are used for this
+purpose. The first of these, |update_terminal|, is called when we want
+to make sure that everything we have output to the terminal so far has
+actually left the computer's internal buffers and been sent.
+The second, |clear_terminal|, is called when we wish to cancel any
+input that the user may have typed ahead (since we are about to
+issue an unexpected error message). The third, |wake_up_terminal|,
+is supposed to revive the terminal if the user has disabled it by
+some instruction to the operating system. The following macros show how
+these operations can be specified with {\mc UNIX}. |update_terminal|
+does an |fflush|. |clear_terminal| is redefined
+to do nothing, since the user should control the terminal.
+@^system dependencies@>
+*/
+
+# define update_terminal() fflush (term_out)
+# define clear_terminal() do { ; } while (0)
+# define wake_up_terminal() do { ; } while (0) /* cancel the user's cancellation of output */
+
+extern boolean init_terminal(void);
+extern void term_input(void);
+
+extern str_number cur_name;
+extern str_number cur_area;
+extern str_number cur_ext;
+extern pool_pointer area_delimiter;
+extern pool_pointer ext_delimiter;
+
+extern char *pack_file_name(str_number n, str_number a, str_number e);
+
+# define file_name_size 512
+
+# define format_area_length 0 /* length of its area part */
+# define format_ext_length 4 /* length of its `\.{.fmt}' part */
+# define format_extension ".fmt"
+ /* the extension, as a constant */
+
+extern char *TEX_format_default;
+
+extern char *open_fmt_file(void);
+
+extern boolean name_in_progress; /* is a file name being scanned? */
+extern str_number job_name; /* principal file name */
+extern boolean log_opened; /* has the transcript file been opened? */
+
+extern unsigned char *texmf_log_name; /* full name of the log file */
+
+extern void open_log_file(void);
+extern void start_input(void);
+
+extern int open_outfile(FILE ** f, const char *name, const char *mode);
+
+extern boolean zopen_w_input(FILE **, const char *, int,
+ const_string fopen_mode);
+extern boolean zopen_w_output(FILE **, const char *, const_string fopen_mode);
+extern void zwclose(FILE *);
+
+extern int readbinfile(FILE * f, unsigned char **b, int *s);
+
+# define read_tfm_file readbinfile
+# define read_vf_file readbinfile
+# define read_ocp_file readbinfile
+# define read_data_file readbinfile
+
+extern boolean openinnameok(const_string);
+extern boolean openoutnameok(const_string);
+
+extern boolean open_in_or_pipe(FILE **, char *, int, const_string fopen_mode,
+ boolean must_exist);
+extern boolean open_out_or_pipe(FILE **, char *, const_string fopen_mode);
+extern void close_file_or_pipe(FILE *);
+
+
+#endif