On Mon, Apr 03, 2023 at 04:28:15PM +0200, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > With a high enough number of chips, gpiodetect currently sorts them > like this: > > gpiochip0 > gpiochip1 > gpiochip10 > gpiochip11 > gpiochip12 > gpiochip13 > gpiochip14 > gpiochip15 > gpiochip16 > gpiochip17 > gpiochip18 > gpiochip19 > gpiochip2 > gpiochip20 > gpiochip21 > gpiochip22 > gpiochip23 > gpiochip24 > gpiochip25 > gpiochip26 > gpiochip3 > gpiochip4 > gpiochip5 > gpiochip6 > gpiochip7 > gpiochip8 > gpiochip9 > > Switching to using versionsort() instead of alphasort() makes it look > better and the order is more logical: > > gpiochip0 > gpiochip1 > gpiochip2 > gpiochip3 > gpiochip4 > gpiochip5 > gpiochip6 > gpiochip7 > gpiochip8 > gpiochip9 > gpiochip10 > gpiochip11 > gpiochip12 > gpiochip13 > gpiochip14 > gpiochip15 > gpiochip16 > gpiochip17 > gpiochip18 > gpiochip19 > gpiochip20 > gpiochip21 > gpiochip22 > gpiochip23 > gpiochip24 > gpiochip25 > gpiochip26 > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> The checkin comment is a bit excessive - perhaps just list an example where it gets it wrong, like gpiochip10 < gpiochip2? But otherwise it makes sense. Reviewed-by: Kent Gibson <warthog618@xxxxxxxxx> > --- > configure.ac | 2 +- > tools/tools-common.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 7d72c24..c1005a9 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -119,7 +119,7 @@ AS_IF([test "x$with_tools" = xtrue], > AC_CHECK_FUNC([daemon], [], [FUNC_NOT_FOUND_TOOLS([daemon])]) > AC_CHECK_FUNC([asprintf], [], [FUNC_NOT_FOUND_LIB([asprintf])]) > AC_CHECK_FUNC([scandir], [], [FUNC_NOT_FOUND_LIB([scandir])]) > - AC_CHECK_FUNC([alphasort], [], [FUNC_NOT_FOUND_LIB([alphasort])]) > + AC_CHECK_FUNC([versionsort], [], [FUNC_NOT_FOUND_LIB([versionsort])]) > AS_IF([test "x$with_gpioset_interactive" = xtrue], > [PKG_CHECK_MODULES([LIBEDIT], [libedit >= 3.1])]) > ]) > diff --git a/tools/tools-common.c b/tools/tools-common.c > index e5f6fc1..64592d3 100644 > --- a/tools/tools-common.c > +++ b/tools/tools-common.c > @@ -469,7 +469,7 @@ int all_chip_paths(char ***paths_ptr) > struct dirent **entries; > char **paths; > > - num_chips = scandir("/dev/", &entries, chip_dir_filter, alphasort); > + num_chips = scandir("/dev/", &entries, chip_dir_filter, versionsort); > if (num_chips < 0) > die_perror("unable to scan /dev"); > > -- > 2.37.2 >