mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 12:53:13 +00:00
Cleanup reader.cpp's usage of string_buffer, remove some other unused data structures
This commit is contained in:
parent
dfba35aee8
commit
a9313fc0c3
3 changed files with 17 additions and 85 deletions
1
output.h
1
output.h
|
@ -149,7 +149,6 @@ int writeb( tputs_arg_t b );
|
||||||
*/
|
*/
|
||||||
void output_set_writer( int (*writer)(char) );
|
void output_set_writer( int (*writer)(char) );
|
||||||
|
|
||||||
//typedef int (*func_ptr_t)(char);
|
|
||||||
/**
|
/**
|
||||||
Return the current output writer
|
Return the current output writer
|
||||||
*/
|
*/
|
||||||
|
|
55
reader.cpp
55
reader.cpp
|
@ -1074,8 +1074,7 @@ static void completion_insert( const wchar_t *val, int flags )
|
||||||
|
|
||||||
static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<completion_t> &comp )
|
static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<completion_t> &comp )
|
||||||
{
|
{
|
||||||
string_buffer_t cmd;
|
wcstring msg;
|
||||||
string_buffer_t msg;
|
|
||||||
wchar_t * prefix_esc;
|
wchar_t * prefix_esc;
|
||||||
char *foo;
|
char *foo;
|
||||||
io_data_t *in;
|
io_data_t *in;
|
||||||
|
@ -1091,15 +1090,12 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
|
||||||
prefix_esc = escape( prefix,1);
|
prefix_esc = escape( prefix,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
sb_init( &cmd );
|
wcstring cmd = format_string(L"fish_pager -c 3 -r 4 %ls -p %ls",
|
||||||
sb_init( &msg );
|
// L"valgrind --track-fds=yes --log-file=pager.txt --leak-check=full ./fish_pager %d %ls",
|
||||||
sb_printf( &cmd,
|
is_quoted?L"-q":L"",
|
||||||
L"fish_pager -c 3 -r 4 %ls -p %ls",
|
prefix_esc );
|
||||||
// L"valgrind --track-fds=yes --log-file=pager.txt --leak-check=full ./fish_pager %d %ls",
|
|
||||||
is_quoted?L"-q":L"",
|
free(prefix_esc);
|
||||||
prefix_esc );
|
|
||||||
|
|
||||||
free( prefix_esc );
|
|
||||||
|
|
||||||
in= io_buffer_create( 1 );
|
in= io_buffer_create( 1 );
|
||||||
in->fd = 3;
|
in->fd = 3;
|
||||||
|
@ -1164,15 +1160,11 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
|
||||||
}
|
}
|
||||||
else if( baz )
|
else if( baz )
|
||||||
{
|
{
|
||||||
sb_printf( &msg, L"%ls%ls%ls\n",
|
msg = format_string(L"%ls%ls%ls\n", foo, escaped_separator, baz);
|
||||||
foo,
|
|
||||||
escaped_separator,
|
|
||||||
baz );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb_printf( &msg, L"%ls\n",
|
msg = format_string(L"%ls\n", foo);
|
||||||
foo );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free( foo );
|
free( foo );
|
||||||
|
@ -1181,7 +1173,7 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
|
||||||
|
|
||||||
free( escaped_separator );
|
free( escaped_separator );
|
||||||
|
|
||||||
foo = wcs2str( (wchar_t *)msg.buff );
|
foo = wcs2str(msg.c_str());
|
||||||
b_append( in->param2.out_buffer, foo, strlen(foo) );
|
b_append( in->param2.out_buffer, foo, strlen(foo) );
|
||||||
free( foo );
|
free( foo );
|
||||||
|
|
||||||
|
@ -1192,14 +1184,11 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
|
||||||
out->fd = 4;
|
out->fd = 4;
|
||||||
|
|
||||||
parser_t &parser = parser_t::principal_parser();
|
parser_t &parser = parser_t::principal_parser();
|
||||||
parser.eval( (wchar_t *)cmd.buff, out, TOP);
|
parser.eval( cmd, out, TOP);
|
||||||
term_steal();
|
term_steal();
|
||||||
|
|
||||||
io_buffer_read( out );
|
io_buffer_read( out );
|
||||||
|
|
||||||
sb_destroy( &cmd );
|
|
||||||
sb_destroy( &msg );
|
|
||||||
|
|
||||||
int nil=0;
|
int nil=0;
|
||||||
b_append( out->param2.out_buffer, &nil, 1 );
|
b_append( out->param2.out_buffer, &nil, 1 );
|
||||||
|
|
||||||
|
@ -1805,31 +1794,21 @@ void reader_replace_current_token( const wchar_t *new_token )
|
||||||
{
|
{
|
||||||
|
|
||||||
const wchar_t *begin, *end;
|
const wchar_t *begin, *end;
|
||||||
string_buffer_t sb;
|
|
||||||
int new_pos;
|
int new_pos;
|
||||||
|
|
||||||
/*
|
/* Find current token */
|
||||||
Find current token
|
|
||||||
*/
|
|
||||||
const wchar_t *buff = data->command_line.c_str();
|
const wchar_t *buff = data->command_line.c_str();
|
||||||
parse_util_token_extent( (wchar_t *)buff, data->buff_pos, &begin, &end, 0, 0 );
|
parse_util_token_extent( (wchar_t *)buff, data->buff_pos, &begin, &end, 0, 0 );
|
||||||
|
|
||||||
if( !begin || !end )
|
if( !begin || !end )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/* Make new string */
|
||||||
Make new string
|
wcstring new_buff(buff, begin - buff);
|
||||||
*/
|
new_buff.append(new_token);
|
||||||
sb_init( &sb );
|
new_buff.append(end);
|
||||||
sb_append_substring( &sb, buff, begin-buff );
|
|
||||||
sb_append( &sb, new_token );
|
|
||||||
sb_append( &sb, end );
|
|
||||||
|
|
||||||
new_pos = (begin-buff) + wcslen(new_token);
|
new_pos = (begin-buff) + wcslen(new_token);
|
||||||
|
reader_set_buffer(new_buff, new_pos);
|
||||||
reader_set_buffer( (wchar_t *)sb.buff, new_pos );
|
|
||||||
sb_destroy( &sb );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
46
util.h
46
util.h
|
@ -15,52 +15,6 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
/**
|
|
||||||
Typedef for a generic function pointer
|
|
||||||
*/
|
|
||||||
typedef void (*func_ptr_t)();
|
|
||||||
|
|
||||||
/**
|
|
||||||
A union of all types that can be stored in an array_list_t. This is
|
|
||||||
used to make sure that the pointer type can fit whatever we want to
|
|
||||||
insert.
|
|
||||||
*/
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
long value
|
|
||||||
*/
|
|
||||||
long long_val;
|
|
||||||
/**
|
|
||||||
pointer value
|
|
||||||
*/
|
|
||||||
void *ptr_val;
|
|
||||||
/**
|
|
||||||
function pointer value
|
|
||||||
*/
|
|
||||||
func_ptr_t func_val;
|
|
||||||
}
|
|
||||||
anything_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Data structure for an automatically resizing dynamically allocated
|
|
||||||
priority queue. A priority queue allows quick retrieval of the
|
|
||||||
smallest element of a set (This implementation uses O(log n) time).
|
|
||||||
This implementation uses a heap for storing the queue.
|
|
||||||
*/
|
|
||||||
typedef struct priority_queue
|
|
||||||
{
|
|
||||||
/** Array contining the data */
|
|
||||||
void **arr;
|
|
||||||
/** Number of elements*/
|
|
||||||
int count;
|
|
||||||
/** Length of array */
|
|
||||||
int size;
|
|
||||||
/** Comparison function */
|
|
||||||
int (*compare)(void *e1, void *e2);
|
|
||||||
}
|
|
||||||
priority_queue_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Buffer for concatenating arbitrary data.
|
Buffer for concatenating arbitrary data.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue