Re: [chrony-dev] [PATCH 1/1] client: re-work tab-completion to work with libedit 20180525-3.1

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-dev Archives ]


> On Jun 14, 2018, at 9:51 AM, Miroslav Lichvar <mlichvar@xxxxxxxxxx> wrote:
> 
> On Wed, Jun 13, 2018 at 02:59:56PM -0500, Lonnie Abelbeck wrote:
>> The key was to use the readline/libedit global "rl_line_buffer" to look-back from "start" to determine which command options should be matched, if any.
>> 
> I like that the the list of commands doesn't have duplicates with and
> without the -v option.
> 
> Few comments about the patch:
> 
>> +  const char *name, *names[5][64] = {
> 
> Could you please consider using an array of pointers to arrays instead
> of the two-dimensional array? I don't like that there is a wasted space
> and the maximum length has to specified. I think you could use
> separate arrays for the base commands, add commands, and so on, and
> then point to them in the names array.
> 
>> @@ -1317,7 +1325,26 @@ command_name_generator(const char *text, int state)
>> static char **
>> command_name_completion(const char *text, int start, int end)
>> {
>> +  char first[32];
>> +  int cnt = start > sizeof(first)-1 ? sizeof(first)-1 : start;
> 
> Please use the MIN macro here.
> 
>> +
>> +  strncpy(first, rl_line_buffer, cnt);
>> +  first[cnt] = '\0';
> 
> And snprintf instead of strncpy

Hi Miroslav,

Your suggestions have be added, and I added an "enum" to help maintainability.

New patch enclosed.

Lonnie


Attachment: 0001-client-re-work-tab-completion-to-work-with-libedit-2.patch
Description: Binary data







Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/