mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-26 04:43:10 +00:00
Update status builtin to properly handle and document all of its options.
darcs-hash:20070801194450-35ec8-e2fe5b798e728d1caef474295a92230c35c79c17.gz
This commit is contained in:
parent
88199d6b51
commit
8ed521c817
2 changed files with 59 additions and 8 deletions
59
builtin.c
59
builtin.c
|
@ -364,6 +364,18 @@ static void builtin_unknown_option( const wchar_t *cmd, const wchar_t *opt )
|
|||
builtin_print_help( cmd, sb_err );
|
||||
}
|
||||
|
||||
/**
|
||||
Perform error reporting for encounter with missing argument
|
||||
*/
|
||||
static void builtin_missing_argument( const wchar_t *cmd, const wchar_t *opt )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_MISSING,
|
||||
cmd,
|
||||
opt );
|
||||
builtin_print_help( cmd, sb_err );
|
||||
}
|
||||
|
||||
/*
|
||||
Here follows the definition of all builtin commands. The function
|
||||
names are all on the form builtin_NAME where NAME is the name of the
|
||||
|
@ -1913,19 +1925,19 @@ static int builtin_status( wchar_t **argv )
|
|||
}
|
||||
,
|
||||
{
|
||||
L"is-command-substitution", no_argument, &mode, IS_SUBST
|
||||
L"is-command-substitution", no_argument, 0, 'c'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"is-block", no_argument, &mode, IS_BLOCK
|
||||
L"is-block", no_argument, 0, 'b'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"is-interactive", no_argument, &mode, IS_INTERACTIVE
|
||||
L"is-interactive", no_argument, 0, 'i'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"is-login", no_argument, &mode, IS_LOGIN
|
||||
L"is-login", no_argument, 0, 'l'
|
||||
}
|
||||
,
|
||||
{
|
||||
|
@ -1941,11 +1953,11 @@ static int builtin_status( wchar_t **argv )
|
|||
}
|
||||
,
|
||||
{
|
||||
L"current-filename", no_argument, &mode, CURRENT_FILENAME
|
||||
L"current-filename", no_argument, 0, 'f'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"current-line-number", no_argument, &mode, CURRENT_LINE_NUMBER
|
||||
L"current-line-number", no_argument, 0, 'n'
|
||||
}
|
||||
,
|
||||
{
|
||||
|
@ -1968,7 +1980,7 @@ static int builtin_status( wchar_t **argv )
|
|||
|
||||
int opt = wgetopt_long( argc,
|
||||
argv,
|
||||
L"hj:t",
|
||||
L":cbilfnhj:t",
|
||||
long_options,
|
||||
&opt_index );
|
||||
if( opt == -1 )
|
||||
|
@ -1984,9 +1996,32 @@ static int builtin_status( wchar_t **argv )
|
|||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
|
||||
case 'c':
|
||||
mode = IS_SUBST;
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
mode = IS_BLOCK;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
mode = IS_INTERACTIVE;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
mode = IS_LOGIN;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
mode = CURRENT_FILENAME;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
mode = CURRENT_LINE_NUMBER;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
builtin_print_help( argv[0], sb_out );
|
||||
return STATUS_BUILTIN_OK;
|
||||
|
@ -2013,6 +2048,14 @@ static int builtin_status( wchar_t **argv )
|
|||
break;
|
||||
|
||||
|
||||
case 't':
|
||||
mode = STACK_TRACE;
|
||||
break;
|
||||
|
||||
case ':':
|
||||
builtin_missing_argument( argv[0], argv[woptind-1] );
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
|
||||
case '?':
|
||||
builtin_unknown_option( argv[0], argv[woptind-1] );
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
|
|
|
@ -8,3 +8,11 @@
|
|||
- <tt>-b</tt> or <tt>--is-block</tt> returns 0 if fish is currently executing a block of code
|
||||
- <tt>-i</tt> or <tt>--is-interactive</tt> returns 0 if fish is interactive, i.e.connected to a keyboard
|
||||
- <tt>-l</tt> or <tt>--is-login</tt> returns 0 if fish is a login shell, i.e. if fish should perform login tasks such as setting up the PATH.
|
||||
- <tt>--is-full-job-control</tt> returns 0 if full job control is enabled
|
||||
- <tt>--is-interactive-job-control</tt> returns 0 if interactive job control is enabled
|
||||
- <tt>--is-no-job-control</tt> returns 0 if no job control is enabled
|
||||
- <tt>-f</tt> or <tt>--current-filename</tt> prints the filename of the currently running script
|
||||
- <tt>-n</tt> or <tt>--current-line-number</tt> prints the line number of the currently running script
|
||||
- <tt>-j CONTROLTYPE</tt> or <tt>--job-control=CONTROLTYPE</tt> set the job control type. Can be one of: none, full, interactive
|
||||
- <tt>-t</tt> or <tt>--print-stack-trace</tt>
|
||||
- <tt>-h</tt> or <tt>--help</tt> display a help message and exit
|
||||
|
|
Loading…
Reference in a new issue