@@ -321,14 +321,25 @@ static void print_meow(void)
321321 printk ("%s%s%s\n" , meows [meow ], meow_punctuations [punctuation ], meow_suffixes [suffix ]);
322322}
323323
324+ static int32_t parse_config_settings_id (char * s )
325+ {
326+ int32_t id = parse_i32 (s , 10 );
327+ uint8_t buf [12 ];
328+ snprintk (buf , 12 , "%d" , id );
329+ if (strcmp (buf , s ) != 0 )
330+ return -1 ;
331+ return id ;
332+ }
333+
324334static int parse_config_settings_write (char * s , int32_t v )
325335{
336+ int32_t id = parse_config_settings_id (s );
326337 uint16_t k = 0 ;
327338 for (int i = 0 ; i < CONFIG_SETTINGS_COUNT ; i ++ )
328339 {
329340 for (int j = 0 ; j < config_settings_count [i ]; j ++ )
330341 {
331- if (strcmp (s , config_settings_names [k ]) == 0 )
342+ if (id < 0 ? strcmp (s , config_settings_names [k ]) == 0 : id == k )
332343 {
333344 switch (i )
334345 {
@@ -359,18 +370,19 @@ static int parse_config_settings_write(char *s, int32_t v)
359370 k ++ ;
360371 }
361372 }
362- printk ("Invalid config name\n" );
373+ printk ("Invalid config name or id \n" );
363374 return -1 ;
364375}
365376
366377static void parse_config_settings_read (char * s )
367378{
379+ int32_t id = parse_config_settings_id (s );
368380 uint16_t k = 0 ;
369381 for (int i = 0 ; i < CONFIG_SETTINGS_COUNT ; i ++ )
370382 {
371383 for (int j = 0 ; j < config_settings_count [i ]; j ++ )
372384 {
373- if (strcmp (s , config_settings_names [k ]) == 0 )
385+ if (id < 0 ? strcmp (s , config_settings_names [k ]) == 0 : id == k )
374386 {
375387 int32_t val = -1 ;
376388 switch (i )
@@ -396,25 +408,26 @@ static void parse_config_settings_read(char *s)
396408 k ++ ;
397409 }
398410 }
399- printk ("Invalid config name\n" );
411+ printk ("Invalid config name or id \n" );
400412}
401413
402414static int parse_config_settings_reset (char * s )
403415{
416+ int32_t id = parse_config_settings_id (s );
404417 uint16_t k = 0 ;
405418 for (int i = 0 ; i < CONFIG_SETTINGS_COUNT ; i ++ )
406419 {
407420 for (int j = 0 ; j < config_settings_count [i ]; j ++ )
408421 {
409- if (strcmp (s , config_settings_names [k ]) == 0 )
422+ if (id < 0 ? strcmp (s , config_settings_names [k ]) == 0 : id == k )
410423 {
411424 config_settings_reset (i , j );
412425 return 0 ;
413426 }
414427 k ++ ;
415428 }
416429 }
417- printk ("Invalid config name\n" );
430+ printk ("Invalid config name or id \n" );
418431 return -1 ;
419432}
420433
@@ -622,7 +635,7 @@ static void console_thread(void)
622635 printk ("Config %d:\n" , i );
623636 for (int j = 0 ; j < config_settings_count [i ]; j ++ )
624637 {
625- printk ("%s\n" , config_settings_names [k ]);
638+ printk ("%u: % s\n" , k , config_settings_names [k ]);
626639 k ++ ;
627640 }
628641 }
0 commit comments