diff options
author | axel <axel@liljencrantz.se> | 2006-02-15 12:49:00 +1000 |
---|---|---|
committer | axel <axel@liljencrantz.se> | 2006-02-15 12:49:00 +1000 |
commit | 143602e5f6653011230d377c299427bcde1fbb66 (patch) | |
tree | a5f8b1012f0a76d75d4611e66a5fe1e4630cd316 /builtin_complete.c | |
parent | 1c2d3583e70d7f69be5b60bc23a6862b4483253f (diff) |
Minor edits
darcs-hash:20060215024900-ac50b-51863879c32660d9787db706c34fef10aa4c30c2.gz
Diffstat (limited to 'builtin_complete.c')
-rw-r--r-- | builtin_complete.c | 140 |
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 ); |