mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-14 05:53:59 +00:00
Minor edits
darcs-hash:20051008020008-ac50b-401f0e36582075d177afb2f1573c765c572f1a97.gz
This commit is contained in:
parent
29d43269ee
commit
929519cb0f
3 changed files with 33 additions and 8 deletions
6
common.c
6
common.c
|
@ -580,13 +580,15 @@ wcslcpy(wchar_t *dst, const wchar_t *src, size_t siz)
|
||||||
|
|
||||||
wchar_t *wcsdup( const wchar_t *in )
|
wchar_t *wcsdup( const wchar_t *in )
|
||||||
{
|
{
|
||||||
wchar_t *out = malloc( sizeof( wchar_t)*(wcslen(in)+1));
|
size_t len=wcslen(in);
|
||||||
|
wchar_t *out = malloc( sizeof( wchar_t)*(len+1));
|
||||||
if( out == 0 )
|
if( out == 0 )
|
||||||
{
|
{
|
||||||
die_mem();
|
die_mem();
|
||||||
|
|
||||||
}
|
}
|
||||||
wcscpy( out, in );
|
|
||||||
|
memcpy( out, in, sizeof( wchar_t)*(len+1));
|
||||||
return out;
|
return out;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
17
parser.c
17
parser.c
|
@ -72,6 +72,9 @@ The fish parser. Contains functions for parsing code.
|
||||||
*/
|
*/
|
||||||
#define RECURSION_ERR_MSG L"Maximum recursion depth reached. Accidental infinite loop?"
|
#define RECURSION_ERR_MSG L"Maximum recursion depth reached. Accidental infinite loop?"
|
||||||
|
|
||||||
|
/**
|
||||||
|
Error message used when the end of a block can't be located
|
||||||
|
*/
|
||||||
#define BLOCK_END_ERR_MSG L"Could not locate end of block. The 'end' command may be missing or misspelled."
|
#define BLOCK_END_ERR_MSG L"Could not locate end of block. The 'end' command may be missing or misspelled."
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,12 +129,20 @@ io_data_t *block_io;
|
||||||
*/
|
*/
|
||||||
static array_list_t profile_data;
|
static array_list_t profile_data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Keeps track of how many recursive eval calls have been made. Eval
|
||||||
|
doesn't call itself directly, recursion happens on blocks and on
|
||||||
|
command substitutions.
|
||||||
|
*/
|
||||||
static int eval_level=-1;
|
static int eval_level=-1;
|
||||||
|
|
||||||
static int parse_job( process_t *p,
|
static int parse_job( process_t *p,
|
||||||
job_t *j,
|
job_t *j,
|
||||||
tokenizer *tok );
|
tokenizer *tok );
|
||||||
|
|
||||||
|
/**
|
||||||
|
Struct used to keep track of profiling data for a command
|
||||||
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int exec, parse, level, skipped;
|
int exec, parse, level, skipped;
|
||||||
|
@ -340,6 +351,9 @@ int parser_is_pipe_forbidden( wchar_t *word )
|
||||||
(void *)0 );
|
(void *)0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Search the text for the end of the current block
|
||||||
|
*/
|
||||||
static const wchar_t *parser_find_end( const wchar_t * buff )
|
static const wchar_t *parser_find_end( const wchar_t * buff )
|
||||||
{
|
{
|
||||||
tokenizer tok;
|
tokenizer tok;
|
||||||
|
@ -709,6 +723,9 @@ void parser_destroy()
|
||||||
al_destroy( &forbidden_function );
|
al_destroy( &forbidden_function );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print error message if an error has occured while parsing
|
||||||
|
*/
|
||||||
static void print_errors()
|
static void print_errors()
|
||||||
{
|
{
|
||||||
if( error_code )
|
if( error_code )
|
||||||
|
|
10
tokenizer.c
10
tokenizer.c
|
@ -53,6 +53,12 @@
|
||||||
|
|
||||||
\return 0 if the system could not provide the memory needed, and 1 otherwise.
|
\return 0 if the system could not provide the memory needed, and 1 otherwise.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Maximum length of a string containing a file descriptor number
|
||||||
|
*/
|
||||||
|
#define FD_STR_MAX_LEN 16
|
||||||
|
|
||||||
const static wchar_t *tok_desc[] =
|
const static wchar_t *tok_desc[] =
|
||||||
{
|
{
|
||||||
L"Tokenizer not yet initialized",
|
L"Tokenizer not yet initialized",
|
||||||
|
@ -546,9 +552,9 @@ void tok_next( tokenizer *tok )
|
||||||
tok_error( tok, PIPE_ERROR );
|
tok_error( tok, PIPE_ERROR );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
check_size( tok, 16 );
|
check_size( tok, FD_STR_MAX_LEN );
|
||||||
tok->buff++;
|
tok->buff++;
|
||||||
swprintf( tok->last, 16, L"%d", fd );
|
swprintf( tok->last, FD_STR_MAX_LEN, L"%d", fd );
|
||||||
tok->last_type = TOK_PIPE;
|
tok->last_type = TOK_PIPE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue