mirror of
https://git.openwrt.org/project/make_ext4fs.git
synced 2024-11-25 00:20:40 -05:00
make_ext4fs: explicitly call setlocale() before creating image
The alphasort(3) function, which is used as comparison function for scandir(3) is locale dependent (at least in glibc, in which it defers to strcoll(3)). This patch explicitly calls setlocale(3), setting the locale to "C". Currently, there are no other calls to setlocale(), so this does not change the behaviour. However, we'd like to be sure that in the future no-one will break that. Signed-off-by: Wojtek Porczyk <woju@invisiblethingslab.com>
This commit is contained in:
parent
98e3d5c1ce
commit
bd53eaafbc
@ -33,6 +33,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
/* TODO: Not implemented:
|
/* TODO: Not implemented:
|
||||||
Allocating blocks in the same block group as the file inode
|
Allocating blocks in the same block group as the file inode
|
||||||
@ -66,6 +67,9 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path
|
|||||||
u32 dirs = 0;
|
u32 dirs = 0;
|
||||||
bool needs_lost_and_found = false;
|
bool needs_lost_and_found = false;
|
||||||
|
|
||||||
|
/* alphasort is locale-dependent; let's fix the locale to some sane value */
|
||||||
|
setlocale(LC_COLLATE, "C");
|
||||||
|
|
||||||
if (full_path) {
|
if (full_path) {
|
||||||
entries = scandir(full_path, &namelist, filter_dot, (void*)alphasort);
|
entries = scandir(full_path, &namelist, filter_dot, (void*)alphasort);
|
||||||
if (entries < 0) {
|
if (entries < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user