mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-05 16:21:15 -03:00
Remove trailing whitespaces and change tabs to spaces
This commit is contained in:
166
io.cpp
166
io.cpp
@@ -1,7 +1,7 @@
|
||||
/** \file io.c
|
||||
|
||||
Utilities for io redirection.
|
||||
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
|
||||
@@ -53,105 +53,105 @@ Utilities for io redirection.
|
||||
|
||||
void io_buffer_read( io_data_t *d )
|
||||
{
|
||||
exec_close(d->param1.pipe_fd[1] );
|
||||
exec_close(d->param1.pipe_fd[1] );
|
||||
|
||||
if( d->io_mode == IO_BUFFER )
|
||||
{
|
||||
/* if( fcntl( d->param1.pipe_fd[0], F_SETFL, 0 ) )
|
||||
{
|
||||
wperror( L"fcntl" );
|
||||
return;
|
||||
} */
|
||||
debug( 4, L"io_buffer_read: blocking read on fd %d", d->param1.pipe_fd[0] );
|
||||
while(1)
|
||||
{
|
||||
char b[4096];
|
||||
long l;
|
||||
l=read_blocked( d->param1.pipe_fd[0], b, 4096 );
|
||||
if( l==0 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if( l<0 )
|
||||
{
|
||||
/*
|
||||
exec_read_io_buffer is only called on jobs that have
|
||||
exited, and will therefore never block. But a broken
|
||||
pipe seems to cause some flags to reset, causing the
|
||||
EOF flag to not be set. Therefore, EAGAIN is ignored
|
||||
and we exit anyway.
|
||||
*/
|
||||
if( errno != EAGAIN )
|
||||
{
|
||||
debug( 1,
|
||||
_(L"An error occured while reading output from code block on file descriptor %d"),
|
||||
d->param1.pipe_fd[0] );
|
||||
wperror( L"io_buffer_read" );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
d->out_buffer_append( b, l );
|
||||
}
|
||||
}
|
||||
}
|
||||
if( d->io_mode == IO_BUFFER )
|
||||
{
|
||||
/* if( fcntl( d->param1.pipe_fd[0], F_SETFL, 0 ) )
|
||||
{
|
||||
wperror( L"fcntl" );
|
||||
return;
|
||||
} */
|
||||
debug( 4, L"io_buffer_read: blocking read on fd %d", d->param1.pipe_fd[0] );
|
||||
while(1)
|
||||
{
|
||||
char b[4096];
|
||||
long l;
|
||||
l=read_blocked( d->param1.pipe_fd[0], b, 4096 );
|
||||
if( l==0 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if( l<0 )
|
||||
{
|
||||
/*
|
||||
exec_read_io_buffer is only called on jobs that have
|
||||
exited, and will therefore never block. But a broken
|
||||
pipe seems to cause some flags to reset, causing the
|
||||
EOF flag to not be set. Therefore, EAGAIN is ignored
|
||||
and we exit anyway.
|
||||
*/
|
||||
if( errno != EAGAIN )
|
||||
{
|
||||
debug( 1,
|
||||
_(L"An error occured while reading output from code block on file descriptor %d"),
|
||||
d->param1.pipe_fd[0] );
|
||||
wperror( L"io_buffer_read" );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
d->out_buffer_append( b, l );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
io_data_t *io_buffer_create( bool is_input )
|
||||
{
|
||||
bool success = true;
|
||||
io_data_t *buffer_redirect = new io_data_t;
|
||||
buffer_redirect->out_buffer_create();
|
||||
buffer_redirect->io_mode = IO_BUFFER;
|
||||
buffer_redirect->is_input = is_input ? true : false;
|
||||
buffer_redirect->fd=is_input?0:1;
|
||||
|
||||
if( exec_pipe( buffer_redirect->param1.pipe_fd ) == -1 )
|
||||
{
|
||||
debug( 1, PIPE_ERROR );
|
||||
wperror (L"pipe");
|
||||
success = false;
|
||||
}
|
||||
else if( fcntl( buffer_redirect->param1.pipe_fd[0],
|
||||
F_SETFL,
|
||||
O_NONBLOCK ) )
|
||||
{
|
||||
debug( 1, PIPE_ERROR );
|
||||
wperror( L"fcntl" );
|
||||
success = false;
|
||||
}
|
||||
|
||||
io_data_t *buffer_redirect = new io_data_t;
|
||||
buffer_redirect->out_buffer_create();
|
||||
buffer_redirect->io_mode = IO_BUFFER;
|
||||
buffer_redirect->is_input = is_input ? true : false;
|
||||
buffer_redirect->fd=is_input?0:1;
|
||||
|
||||
if( exec_pipe( buffer_redirect->param1.pipe_fd ) == -1 )
|
||||
{
|
||||
debug( 1, PIPE_ERROR );
|
||||
wperror (L"pipe");
|
||||
success = false;
|
||||
}
|
||||
else if( fcntl( buffer_redirect->param1.pipe_fd[0],
|
||||
F_SETFL,
|
||||
O_NONBLOCK ) )
|
||||
{
|
||||
debug( 1, PIPE_ERROR );
|
||||
wperror( L"fcntl" );
|
||||
success = false;
|
||||
}
|
||||
|
||||
if (! success)
|
||||
{
|
||||
delete buffer_redirect;
|
||||
buffer_redirect = NULL;
|
||||
}
|
||||
|
||||
return buffer_redirect;
|
||||
|
||||
return buffer_redirect;
|
||||
}
|
||||
|
||||
void io_buffer_destroy( io_data_t *io_buffer )
|
||||
{
|
||||
|
||||
/**
|
||||
If this is an input buffer, then io_read_buffer will not have
|
||||
been called, and we need to close the output fd as well.
|
||||
*/
|
||||
if( io_buffer->is_input )
|
||||
{
|
||||
exec_close(io_buffer->param1.pipe_fd[1] );
|
||||
}
|
||||
/**
|
||||
If this is an input buffer, then io_read_buffer will not have
|
||||
been called, and we need to close the output fd as well.
|
||||
*/
|
||||
if( io_buffer->is_input )
|
||||
{
|
||||
exec_close(io_buffer->param1.pipe_fd[1] );
|
||||
}
|
||||
|
||||
exec_close( io_buffer->param1.pipe_fd[0] );
|
||||
exec_close( io_buffer->param1.pipe_fd[0] );
|
||||
|
||||
/*
|
||||
Dont free fd for writing. This should already be free'd before
|
||||
calling exec_read_io_buffer on the buffer
|
||||
*/
|
||||
delete io_buffer;
|
||||
/*
|
||||
Dont free fd for writing. This should already be free'd before
|
||||
calling exec_read_io_buffer on the buffer
|
||||
*/
|
||||
delete io_buffer;
|
||||
}
|
||||
|
||||
void io_chain_t::remove(const io_data_t *element)
|
||||
@@ -216,7 +216,7 @@ void io_print(const io_chain_t &chain)
|
||||
fprintf(stderr, "Empty chain %p\n", &chain);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
fprintf(stderr, "Chain %p (%ld items):\n", &chain, (long)chain.size());
|
||||
for (size_t i=0; i < chain.size(); i++) {
|
||||
const io_data_t *io = chain.at(i);
|
||||
@@ -247,7 +247,7 @@ void io_duplicate_prepend( const io_chain_t &src, io_chain_t &dst )
|
||||
return dst.duplicate_prepend(src);
|
||||
}
|
||||
|
||||
void io_chain_destroy(io_chain_t &chain)
|
||||
void io_chain_destroy(io_chain_t &chain)
|
||||
{
|
||||
chain.destroy();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user