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> --- 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