mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-23 03:54:04 +08:00
Removed buffer_t
This commit is contained in:
parent
191221eec5
commit
2c5001a5b3
|
@ -1113,16 +1113,13 @@ static void destroy()
|
||||||
*/
|
*/
|
||||||
static void read_array( FILE* file, wcstring_list_t &comp )
|
static void read_array( FILE* file, wcstring_list_t &comp )
|
||||||
{
|
{
|
||||||
buffer_t buffer;
|
std::vector<char> buffer;
|
||||||
int c;
|
int c;
|
||||||
char cc;
|
|
||||||
wchar_t *wcs;
|
wchar_t *wcs;
|
||||||
|
|
||||||
b_init( &buffer );
|
|
||||||
|
|
||||||
while( !feof( file ) )
|
while( !feof( file ) )
|
||||||
{
|
{
|
||||||
buffer.used=0;
|
buffer.clear();
|
||||||
|
|
||||||
while( 1 )
|
while( 1 )
|
||||||
{
|
{
|
||||||
|
@ -1137,17 +1134,14 @@ static void read_array( FILE* file, wcstring_list_t &comp )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc=c;
|
buffer.push_back(static_cast<char>(c));
|
||||||
|
|
||||||
b_append( &buffer, &cc, 1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( buffer.used )
|
if( ! buffer.empty() )
|
||||||
{
|
{
|
||||||
cc=0;
|
buffer.push_back(0);
|
||||||
b_append( &buffer, &cc, 1 );
|
|
||||||
|
|
||||||
wcs = str2wcs( buffer.buff );
|
wcs = str2wcs( &buffer.at(0) );
|
||||||
if( wcs )
|
if( wcs )
|
||||||
{
|
{
|
||||||
wcstring tmp = wcs;
|
wcstring tmp = wcs;
|
||||||
|
@ -1160,8 +1154,6 @@ static void read_array( FILE* file, wcstring_list_t &comp )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
b_destroy( &buffer );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_fd( const char *str )
|
static int get_fd( const char *str )
|
||||||
|
|
30
screen.cpp
30
screen.cpp
|
@ -42,6 +42,7 @@ efficient way for transforming that to the desired screen content.
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
#include "fallback.h"
|
#include "fallback.h"
|
||||||
|
@ -63,7 +64,8 @@ efficient way for transforming that to the desired screen content.
|
||||||
tputs. Since tputs external function can only take an integer and
|
tputs. Since tputs external function can only take an integer and
|
||||||
not a pointer as parameter we need a static storage buffer.
|
not a pointer as parameter we need a static storage buffer.
|
||||||
*/
|
*/
|
||||||
static buffer_t *s_writeb_buffer=0;
|
typedef std::vector<char> data_buffer_t;
|
||||||
|
static data_buffer_t *s_writeb_buffer=0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Tests if the specified narrow character sequence is present at the
|
Tests if the specified narrow character sequence is present at the
|
||||||
|
@ -428,7 +430,7 @@ static void s_desired_append_char( screen_t *s,
|
||||||
*/
|
*/
|
||||||
static int s_writeb( char c )
|
static int s_writeb( char c )
|
||||||
{
|
{
|
||||||
b_append( s_writeb_buffer, &c, 1 );
|
s_writeb_buffer->push_back(c);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,7 +444,7 @@ static int s_writeb( char c )
|
||||||
\param new_x the new x position
|
\param new_x the new x position
|
||||||
\param new_y the new y position
|
\param new_y the new y position
|
||||||
*/
|
*/
|
||||||
static void s_move( screen_t *s, buffer_t *b, int new_x, int new_y )
|
static void s_move( screen_t *s, data_buffer_t *b, int new_x, int new_y )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int x_steps, y_steps;
|
int x_steps, y_steps;
|
||||||
|
@ -492,8 +494,7 @@ static void s_move( screen_t *s, buffer_t *b, int new_x, int new_y )
|
||||||
|
|
||||||
if( x_steps && new_x == 0 )
|
if( x_steps && new_x == 0 )
|
||||||
{
|
{
|
||||||
char c = '\r';
|
b->push_back('\r');
|
||||||
b_append( b, &c, 1 );
|
|
||||||
x_steps = 0;
|
x_steps = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +522,7 @@ static void s_move( screen_t *s, buffer_t *b, int new_x, int new_y )
|
||||||
/**
|
/**
|
||||||
Set the pen color for the terminal
|
Set the pen color for the terminal
|
||||||
*/
|
*/
|
||||||
static void s_set_color( screen_t *s, buffer_t *b, int c )
|
static void s_set_color( screen_t *s, data_buffer_t *b, int c )
|
||||||
{
|
{
|
||||||
|
|
||||||
int (*writer_old)(char) = output_get_writer();
|
int (*writer_old)(char) = output_get_writer();
|
||||||
|
@ -541,7 +542,7 @@ static void s_set_color( screen_t *s, buffer_t *b, int c )
|
||||||
Convert a wide character to a multibyte string and append it to the
|
Convert a wide character to a multibyte string and append it to the
|
||||||
buffer.
|
buffer.
|
||||||
*/
|
*/
|
||||||
static void s_write_char( screen_t *s, buffer_t *b, wchar_t c )
|
static void s_write_char( screen_t *s, data_buffer_t *b, wchar_t c )
|
||||||
{
|
{
|
||||||
int (*writer_old)(char) = output_get_writer();
|
int (*writer_old)(char) = output_get_writer();
|
||||||
|
|
||||||
|
@ -558,7 +559,7 @@ static void s_write_char( screen_t *s, buffer_t *b, wchar_t c )
|
||||||
Send the specified string through tputs and append the output to
|
Send the specified string through tputs and append the output to
|
||||||
the specified buffer.
|
the specified buffer.
|
||||||
*/
|
*/
|
||||||
static void s_write_mbs( buffer_t *b, char *s )
|
static void s_write_mbs( data_buffer_t *b, char *s )
|
||||||
{
|
{
|
||||||
int (*writer_old)(char) = output_get_writer();
|
int (*writer_old)(char) = output_get_writer();
|
||||||
|
|
||||||
|
@ -574,7 +575,7 @@ static void s_write_mbs( buffer_t *b, char *s )
|
||||||
Convert a wide string to a multibyte string and append it to the
|
Convert a wide string to a multibyte string and append it to the
|
||||||
buffer.
|
buffer.
|
||||||
*/
|
*/
|
||||||
static void s_write_str( buffer_t *b, const wchar_t *s )
|
static void s_write_str( data_buffer_t *b, const wchar_t *s )
|
||||||
{
|
{
|
||||||
int (*writer_old)(char) = output_get_writer();
|
int (*writer_old)(char) = output_get_writer();
|
||||||
|
|
||||||
|
@ -596,13 +597,10 @@ static void s_update( screen_t *scr, const wchar_t *prompt )
|
||||||
int current_width=0;
|
int current_width=0;
|
||||||
int screen_width = common_get_width();
|
int screen_width = common_get_width();
|
||||||
int need_clear = scr->need_clear;
|
int need_clear = scr->need_clear;
|
||||||
buffer_t output;
|
data_buffer_t output;
|
||||||
|
|
||||||
scr->need_clear = 0;
|
scr->need_clear = 0;
|
||||||
|
|
||||||
b_init( &output );
|
|
||||||
|
|
||||||
|
|
||||||
if( scr->actual_width != screen_width )
|
if( scr->actual_width != screen_width )
|
||||||
{
|
{
|
||||||
need_clear = 1;
|
need_clear = 1;
|
||||||
|
@ -691,13 +689,11 @@ static void s_update( screen_t *scr, const wchar_t *prompt )
|
||||||
|
|
||||||
s_set_color( scr, &output, 0xffffffff);
|
s_set_color( scr, &output, 0xffffffff);
|
||||||
|
|
||||||
if( output.used )
|
if( ! output.empty() )
|
||||||
{
|
{
|
||||||
write_loop( 1, output.buff, output.used );
|
write_loop( 1, &output.at(0), output.size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
b_destroy( &output );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
56
util.cpp
56
util.cpp
|
@ -166,62 +166,6 @@ int wcsfilecmp( const wchar_t *a, const wchar_t *b )
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void b_init( buffer_t *b)
|
|
||||||
{
|
|
||||||
CHECK( b, );
|
|
||||||
memset( b,0,sizeof(buffer_t));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void b_destroy( buffer_t *b )
|
|
||||||
{
|
|
||||||
CHECK( b, );
|
|
||||||
free( b->buff );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int b_append( buffer_t *b, const void *d, ssize_t len )
|
|
||||||
{
|
|
||||||
if( len<=0 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
CHECK( b, -1 );
|
|
||||||
|
|
||||||
if( !b )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !d )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( b->length <= (b->used + len) )
|
|
||||||
{
|
|
||||||
size_t l = maxi( b->length*2,
|
|
||||||
b->used+len+MIN_SIZE );
|
|
||||||
|
|
||||||
void *d = realloc( b->buff, l );
|
|
||||||
if( !d )
|
|
||||||
{
|
|
||||||
oom_handler( b );
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
b->buff=(char *)d;
|
|
||||||
b->length = l;
|
|
||||||
}
|
|
||||||
memcpy( ((char*)b->buff)+b->used,
|
|
||||||
d,
|
|
||||||
len );
|
|
||||||
|
|
||||||
// fwprintf( stderr, L"Copy %s, new value %s\n", d, b->buff );
|
|
||||||
b->used+=len;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
long long get_time()
|
long long get_time()
|
||||||
{
|
{
|
||||||
struct timeval time_struct;
|
struct timeval time_struct;
|
||||||
|
|
23
util.h
23
util.h
|
@ -87,29 +87,6 @@ int mini( int a, int b );
|
||||||
*/
|
*/
|
||||||
int wcsfilecmp( const wchar_t *a, const wchar_t *b );
|
int wcsfilecmp( const wchar_t *a, const wchar_t *b );
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Buffer functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
Initialize the specified buffer_t
|
|
||||||
*/
|
|
||||||
void b_init( buffer_t *b);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Destroy the specified buffer_t
|
|
||||||
*/
|
|
||||||
|
|
||||||
void b_destroy( buffer_t *b );
|
|
||||||
|
|
||||||
/**
|
|
||||||
Add data of the specified length to the specified buffer_t
|
|
||||||
|
|
||||||
\return 0 on error, non-zero otherwise
|
|
||||||
*/
|
|
||||||
int b_append( buffer_t *b, const void *d, ssize_t len );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get the current time in microseconds since Jan 1, 1970
|
Get the current time in microseconds since Jan 1, 1970
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user