diff mbox series

[libgpiod] tools: replace alphasort() with versionsort()

Message ID 20230403142815.183891-1-brgl@bgdev.pl
State New
Headers show
Series [libgpiod] tools: replace alphasort() with versionsort() | expand

Commit Message

Bartosz Golaszewski April 3, 2023, 2:28 p.m. UTC
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

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@linaro.org>
---
 configure.ac         | 2 +-
 tools/tools-common.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff mbox series

Patch

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");