istream-file.c revision 7ef5ca6fb59a318c821a852ae48a2edbb671d7dd
a81d5c3f5a4ad5d100b258d10d4c75f4a02ab1f6Stephan Bosch/* Copyright (c) 2002-2003 Timo Sirainen */
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi/* @UNSAFE: whole file */
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi struct file_istream *fstream = (struct file_istream *) stream;
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi struct _istream *_stream = (struct _istream *) stream;
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi struct _istream *_stream = (struct _istream *) stream;
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi p_free(_stream->iostream.pool, _stream->w_buffer);
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomistatic void i_stream_compress(struct _istream *stream)
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi memmove(stream->w_buffer, stream->w_buffer + stream->skip,
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi struct file_istream *fstream = (struct file_istream *) stream;
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi /* remove the unused bytes from beginning of buffer */
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi /* buffer is full - grow it */
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi ret = pread(stream->fd, stream->w_buffer + stream->pos,
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi ret = read(stream->fd, stream->w_buffer + stream->pos,
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi } while (ret < 0 && errno == EINTR && stream->istream.blocking);
df74b8f6ff432d9a26727669dfed9a15d77efb55Aki Tuomi if (ret == 0) {
if (ret < 0) {
ret = 0;
ret = 0;
return ret;
static const struct stat *
return NULL;