]> git.ipfire.org Git - thirdparty/bash.git/blame - input.h
Imported from ../bash-2.05b.tar.gz.
[thirdparty/bash.git] / input.h
CommitLineData
726f6388
JA
1/* input.h -- Structures and unions used for reading input. */
2/* Copyright (C) 1993 Free Software Foundation, Inc.
3
4 This file is part of GNU Bash, the Bourne Again SHell.
5
6 Bash is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2, or (at your option) any later
9 version.
10
11 Bash is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 for more details.
15
16 You should have received a copy of the GNU General Public License along
17 with Bash; see the file COPYING. If not, write to the Free Software
bb70624e 18 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
726f6388 19
ccc6cda3
JA
20#if !defined (_INPUT_H_)
21#define _INPUT_H_
726f6388
JA
22
23#include "stdc.h"
24
25/* Function pointers can be declared as (Function *)foo. */
ccc6cda3
JA
26#if !defined (_FUNCTION_DEF)
27# define _FUNCTION_DEF
726f6388
JA
28typedef int Function ();
29typedef void VFunction ();
f73dda09
JA
30typedef char *CPFunction (); /* no longer used */
31typedef char **CPPFunction (); /* no longer used */
726f6388
JA
32#endif /* _FUNCTION_DEF */
33
f73dda09
JA
34typedef int sh_cget_func_t __P((void)); /* sh_ivoidfunc_t */
35typedef int sh_cunget_func_t __P((int)); /* sh_intfunc_t */
36
ccc6cda3 37enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};
726f6388
JA
38
39#if defined (BUFFERED_INPUT)
726f6388
JA
40
41/* Possible values for b_flag. */
cce855bc
JA
42#undef B_EOF
43#undef B_ERROR /* There are some systems with this define */
44#undef B_UNBUFF
45
28ef6c31
JA
46#define B_EOF 0x01
47#define B_ERROR 0x02
48#define B_UNBUFF 0x04
49#define B_WASBASHINPUT 0x08
726f6388
JA
50
51/* A buffered stream. Like a FILE *, but with our own buffering and
52 synchronization. Look in input.c for the implementation. */
53typedef struct BSTREAM
54{
f73dda09 55 int b_fd;
726f6388 56 char *b_buffer; /* The buffer that holds characters read. */
cce855bc 57 size_t b_size; /* How big the buffer is. */
f73dda09
JA
58 size_t b_used; /* How much of the buffer we're using, */
59 int b_flag; /* Flag values. */
60 size_t b_inputp; /* The input pointer, index into b_buffer. */
726f6388
JA
61} BUFFERED_STREAM;
62
cce855bc 63#if 0
726f6388 64extern BUFFERED_STREAM **buffers;
cce855bc 65#endif
726f6388
JA
66
67extern int default_buffered_input;
68
69#endif /* BUFFERED_INPUT */
70
71typedef union {
72 FILE *file;
73 char *string;
74#if defined (BUFFERED_INPUT)
75 int buffered_fd;
76#endif
77} INPUT_STREAM;
78
79typedef struct {
ccc6cda3 80 enum stream_type type;
726f6388
JA
81 char *name;
82 INPUT_STREAM location;
f73dda09
JA
83 sh_cget_func_t *getter;
84 sh_cunget_func_t *ungetter;
726f6388
JA
85} BASH_INPUT;
86
87extern BASH_INPUT bash_input;
88
7117c2d2
JA
89/* Functions from parse.y whose use directly or indirectly depends on the
90 definitions in this file. */
726f6388 91extern void initialize_bash_input __P((void));
f73dda09 92extern void init_yy_io __P((sh_cget_func_t *, sh_cunget_func_t *, enum stream_type, const char *, INPUT_STREAM));
7117c2d2 93extern char *yy_input_name __P((void));
726f6388 94extern void with_input_from_stdin __P((void));
f73dda09
JA
95extern void with_input_from_string __P((char *, const char *));
96extern void with_input_from_stream __P((FILE *, const char *));
ccc6cda3
JA
97extern void push_stream __P((int));
98extern void pop_stream __P((void));
99extern int stream_on_stack __P((enum stream_type));
726f6388
JA
100extern char *read_secondary_line __P((int));
101extern int find_reserved_word __P((char *));
726f6388
JA
102extern void gather_here_documents __P((void));
103extern void execute_prompt_command __P((char *));
104
bb70624e
JA
105extern int *save_token_state __P((void));
106extern void restore_token_state __P((int *));
107
ccc6cda3 108/* Functions from input.c */
f73dda09
JA
109extern int getc_with_restart __P((FILE *));
110extern int ungetc_with_restart __P((int, FILE *));
ccc6cda3 111
726f6388
JA
112#if defined (BUFFERED_INPUT)
113/* Functions from input.c. */
28ef6c31
JA
114extern int fd_is_bash_input __P((int));
115extern int set_bash_input_fd __P((int));
116extern int save_bash_input __P((int, int));
726f6388
JA
117extern int check_bash_input __P((int));
118extern int duplicate_buffered_stream __P((int, int));
119extern BUFFERED_STREAM *fd_to_buffered_stream __P((int));
cce855bc 120extern BUFFERED_STREAM *set_buffered_stream __P((int, BUFFERED_STREAM *));
726f6388
JA
121extern BUFFERED_STREAM *open_buffered_stream __P((char *));
122extern void free_buffered_stream __P((BUFFERED_STREAM *));
123extern int close_buffered_stream __P((BUFFERED_STREAM *));
124extern int close_buffered_fd __P((int));
125extern int sync_buffered_stream __P((int));
126extern int buffered_getchar __P((void));
127extern int buffered_ungetchar __P((int));
128extern void with_input_from_buffered_stream __P((int, char *));
129#endif /* BUFFERED_INPUT */
130
ccc6cda3 131#endif /* _INPUT_H_ */