summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-10-18 12:05:36 +0200
committerYorhel <git@yorhel.nl>2009-10-18 12:05:36 +0200
commitadaf8a609831734c41e89f386bdec83598a0912b (patch)
tree88e6b4318ad4f10316712c5e343dadbac748913a
parent783993dbf5c7f86085c59b08a0faccc1bdf5f9d2 (diff)
Call setlocale() at initialization
This (in combination with linking to ncursesw) fixes the display of non-ASCII characters.
-rw-r--r--ChangeLog1
-rw-r--r--TODO3
-rw-r--r--configure.in4
-rw-r--r--src/main.c3
4 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dd3b0cf..8c71264 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@ git - ?
- Return to previously opened directory on failed recalculation
- Properly display MiB units instead of MB (IEEE 1541 - bug #2831412)
- Link to ncursesw when available
+ - Improved support for non-ASCII characters
1.5 - 2009-05-02
- Fixed incorrect apparent size on directory refresh
diff --git a/TODO b/TODO
index 8ed7a89..6c10601 100644
--- a/TODO
+++ b/TODO
@@ -24,3 +24,6 @@ Small list of planned features/changes, suggestions are always welcome.
This should be both more intuitive and more correct than simply
counting a semi-random occurence and ignoring others, as we do now.
+- Better handling of multibyte or multicolumn characters
+ * strlen() <> number_of_columns() <> number_of_characters()
+
diff --git a/configure.in b/configure.in
index 18487a7..c4ee13e 100644
--- a/configure.in
+++ b/configure.in
@@ -11,7 +11,7 @@ AC_PROG_RANLIB
# Check for header files.
AC_CHECK_HEADERS(
- [limits.h stdlib.h string.h sys/time.h sys/types.h sys/stat.h dirent.h unistd.h fnmatch.h ncurses.h],[],
+ [limits.h stdlib.h string.h sys/time.h sys/types.h sys/stat.h dirent.h unistd.h fnmatch.h ncurses.h locale.h],[],
AC_MSG_ERROR([required header file not found]))
# Check for typedefs, structures, and compiler characteristics.
@@ -21,7 +21,7 @@ AC_STRUCT_ST_BLOCKS
# Check for library functions.
AC_CHECK_FUNCS(
- [getcwd gettimeofday memset fnmatch chdir rmdir unlink lstat getcwd],[],
+ [getcwd gettimeofday memset fnmatch chdir rmdir unlink lstat getcwd setlocale],[],
AC_MSG_ERROR([required function missing]))
diff --git a/src/main.c b/src/main.c
index d3f22d6..697c1e2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,6 +31,7 @@
#include <unistd.h>
#include <sys/time.h>
+#include <locale.h>
int pstate;
@@ -146,6 +147,8 @@ char *argv_parse(int argc, char **argv) {
int main(int argc, char **argv) {
char *dir;
+ setlocale(LC_ALL, "");
+
if((dir = argv_parse(argc, argv)) == NULL)
dir = ".";