Commit da9dd0f1 by Stéphane Graber

Add a bionic_alphasort function on bionic

alphasort doesn't have the right signature on bionic which causes the build to fail. This implements a new bionic_alphasort function when building on bionic providing the right signature and a functional equivalent of glibc's alphasort. This signature problem with alphasort was fixed in upstream bionic but hasn't been released yet. This commit can therefore be reverted as soon as the following commit hits the Android NDK: 40e467ec668b59be25491bd44bf348a884d6a68d Signed-off-by: 's avatarStéphane Graber <stgraber@ubuntu.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent ffbf5815
...@@ -39,6 +39,17 @@ ...@@ -39,6 +39,17 @@
#endif #endif
#endif #endif
/* Workaround for the broken signature of alphasort() in bionic.
This was fixed upstream in 40e467ec668b59be25491bd44bf348a884d6a68d so the
workaround can probably be dropped with the next version of the Android NDK.
*/
#ifdef IS_BIONIC
int bionic_alphasort(const struct dirent** a, const struct dirent** b) {
return strcoll((*a)->d_name, (*b)->d_name);
}
#endif
lxc_log_define(lxc_parse, lxc); lxc_log_define(lxc_parse, lxc);
static int dir_filter(const struct dirent *dirent) static int dir_filter(const struct dirent *dirent)
...@@ -55,7 +66,11 @@ int lxc_dir_for_each(const char *name, const char *directory, ...@@ -55,7 +66,11 @@ int lxc_dir_for_each(const char *name, const char *directory,
struct dirent **namelist; struct dirent **namelist;
int n, ret = 0; int n, ret = 0;
#ifdef IS_BIONIC
n = scandir(directory, &namelist, dir_filter, bionic_alphasort);
#else
n = scandir(directory, &namelist, dir_filter, alphasort); n = scandir(directory, &namelist, dir_filter, alphasort);
#endif
if (n < 0) { if (n < 0) {
SYSERROR("failed to scan %s directory", directory); SYSERROR("failed to scan %s directory", directory);
return -1; return -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment