1 /* $Id: istream.h,v 1.12 2003/10/20 16:41:56 ukai Exp $ */
7 #include <openssl/bio.h>
8 #include <openssl/x509.h>
9 #include <openssl/ssl.h>
12 #include <sys/types.h>
16 struct stream_buffer {
21 typedef struct stream_buffer *StreamBuffer;
38 union input_stream *is;
46 struct stream_buffer stream;
55 struct stream_buffer stream;
56 struct file_handle *handle;
64 struct stream_buffer stream;
74 struct stream_buffer stream;
75 struct ssl_handle *handle;
83 struct encoded_stream {
84 struct stream_buffer stream;
85 struct ens_handle *handle;
93 struct base_stream base;
94 struct file_stream file;
95 struct str_stream str;
97 struct ssl_stream ssl;
99 struct encoded_stream ens;
102 typedef struct base_stream *BaseStream;
103 typedef struct file_stream *FileStream;
104 typedef struct str_stream *StrStream;
106 typedef struct ssl_stream *SSLStream;
108 typedef struct encoded_stream *EncodedStrStream;
110 typedef union input_stream *InputStream;
112 extern InputStream newInputStream(int des);
113 extern InputStream newFileStream(FILE * f, void (*closep) ());
114 extern InputStream newStrStream(Str s);
116 extern InputStream newSSLStream(SSL * ssl, int sock);
118 extern InputStream newEncodedStream(InputStream is, char encoding);
119 extern int ISclose(InputStream stream);
120 extern int ISgetc(InputStream stream);
121 extern int ISundogetc(InputStream stream);
122 extern Str StrISgets(InputStream stream);
123 extern Str StrmyISgets(InputStream stream);
124 extern int ISread(InputStream stream, Str buf, int count);
125 extern int ISfileno(InputStream stream);
126 extern int ISeos(InputStream stream);
128 extern void ssl_accept_this_site(char *hostname);
129 extern Str ssl_get_certificate(SSL * ssl, char *hostname);
136 #define IST_ENCODED 4
137 #define IST_UNCLOSE 0x10
139 #define IStype(stream) ((stream)->base.type)
140 #define is_eos(stream) ISeos(stream)
141 #define iseos(stream) ((stream)->base.iseos)
142 #define file_of(stream) ((stream)->file.handle->f)
143 #define set_close(stream,closep) ((IStype(stream)==IST_FILE)?((stream)->file.handle->close=(closep)):0)
144 #define str_of(stream) ((stream)->str.handle)
146 #define ssl_socket_of(stream) ((stream)->ssl.handle->sock)
147 #define ssl_of(stream) ((stream)->ssl.handle->ssl)
150 #ifdef USE_BINMODE_STREAM
151 #define openIS(path) newInputStream(open((path),O_RDONLY|O_BINARY))
153 #define openIS(path) newInputStream(open((path),O_RDONLY))
154 #endif /* USE_BINMODE_STREAM */