aboutsummaryrefslogtreecommitdiffhomepage
path: root/builtin_complete.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-02-15 12:49:00 +1000
committerGravatar axel <axel@liljencrantz.se>2006-02-15 12:49:00 +1000
commit143602e5f6653011230d377c299427bcde1fbb66 (patch)
treea5f8b1012f0a76d75d4611e66a5fe1e4630cd316 /builtin_complete.c
parent1c2d3583e70d7f69be5b60bc23a6862b4483253f (diff)
Minor edits
darcs-hash:20060215024900-ac50b-51863879c32660d9787db706c34fef10aa4c30c2.gz
Diffstat (limited to 'builtin_complete.c')
-rw-r--r--builtin_complete.c140
1 files changed, 69 insertions, 71 deletions
diff --git a/builtin_complete.c b/builtin_complete.c
index 1e3ef7eb..e9f315aa 100644
--- a/builtin_complete.c
+++ b/builtin_complete.c
@@ -27,7 +27,7 @@ const static wchar_t *temporary_buffer;
/*
builtin_complete_* are a set of rather silly looping functions that
make sure that all the proper combinations of complete_add or
- complete_remove get called.
+ complete_remove get called.
*/
static void builtin_complete_add2( const wchar_t *cmd,
@@ -307,7 +307,8 @@ int builtin_complete( wchar_t **argv )
}
,
{
- L"long-option", required_argument, 0, 'l' }
+ L"long-option", required_argument, 0, 'l'
+ }
,
{
L"old-option", required_argument, 0, 'o'
@@ -415,10 +416,8 @@ int builtin_complete( wchar_t **argv )
comp = woptarg;
break;
-
case 'e':
remove = 1;
-
break;
case 'n':
@@ -441,86 +440,85 @@ int builtin_complete( wchar_t **argv )
}
- if( res != 0 )
- {
- }
- else if( do_complete )
+ if( !res )
{
- array_list_t comp;
- int i;
+ if( do_complete )
+ {
+ array_list_t comp;
+ int i;
- const wchar_t *prev_temporary_buffer = temporary_buffer;
- temporary_buffer = do_complete;
+ const wchar_t *prev_temporary_buffer = temporary_buffer;
+ temporary_buffer = do_complete;
- if( recursion_level < 1 )
- {
- recursion_level++;
+ if( recursion_level < 1 )
+ {
+ recursion_level++;
+
+ al_init( &comp );
+
+ complete( do_complete, &comp );
+ for( i=0; i<al_get_count( &comp ); i++ )
+ {
+ wchar_t *next = (wchar_t *)al_get( &comp, i );
+ wchar_t *sep = wcschr( next, COMPLETE_SEP );
+ if( sep )
+ *sep = L'\t';
+ sb_printf( sb_out, L"%ls\n", next );
+ }
+
+ al_foreach( &comp, (void (*)(const void *))&free );
+ al_destroy( &comp );
+ recursion_level--;
+ }
- al_init( &comp );
-
- complete( do_complete, &comp );
-
- for( i=0; i<al_get_count( &comp ); i++ )
- {
- wchar_t *next = (wchar_t *)al_get( &comp, i );
- wchar_t *sep = wcschr( next, COMPLETE_SEP );
- if( sep )
- *sep = L'\t';
- sb_printf( sb_out, L"%ls\n", next );
- }
+ temporary_buffer = prev_temporary_buffer;
- al_foreach( &comp, (void (*)(const void *))&free );
- al_destroy( &comp );
- recursion_level--;
}
-
- temporary_buffer = prev_temporary_buffer;
-
- }
- else if( woptind != argc )
- {
- sb_printf( sb_err,
- _( L"%ls: Too many arguments\n" ),
- argv[0] );
- sb_append( sb_err,
- parser_current_line() );
- // builtin_print_help( argv[0], sb_err );
+ else if( woptind != argc )
+ {
+ sb_printf( sb_err,
+ _( L"%ls: Too many arguments\n" ),
+ argv[0] );
+ sb_append( sb_err,
+ parser_current_line() );
+ // builtin_print_help( argv[0], sb_err );
- res = 1;
- }
- else if( (al_get_count( &cmd) == 0 ) && (al_get_count( &path) == 0 ) )
- {
- /* No arguments specified, meaning we print the definitions of
- * all specified completions to stdout.*/
- complete_print( sb_out );
- }
- else
- {
- if( remove )
+ res = 1;
+ }
+ else if( (al_get_count( &cmd) == 0 ) && (al_get_count( &path) == 0 ) )
{
- builtin_complete_remove( &cmd,
- &path,
- (wchar_t *)short_opt.buff,
- &gnu_opt,
- &old_opt );
+ /* No arguments specified, meaning we print the definitions of
+ * all specified completions to stdout.*/
+ complete_print( sb_out );
}
else
{
- builtin_complete_add( &cmd,
- &path,
- (wchar_t *)short_opt.buff,
- &gnu_opt,
- &old_opt,
- result_mode,
- authorative,
- condition,
- comp,
- desc );
- }
-
- }
+ if( remove )
+ {
+ builtin_complete_remove( &cmd,
+ &path,
+ (wchar_t *)short_opt.buff,
+ &gnu_opt,
+ &old_opt );
+ }
+ else
+ {
+ builtin_complete_add( &cmd,
+ &path,
+ (wchar_t *)short_opt.buff,
+ &gnu_opt,
+ &old_opt,
+ result_mode,
+ authorative,
+ condition,
+ comp,
+ desc );
+ }
+ }
+ }
+
al_foreach( &cmd, (void (*)(const void *))&free );
al_foreach( &path, (void (*)(const void *))&free );