Raymond Toy pushed to branch issue-139-add-alias-local-external-format at cmucl / cmucl
Commits: ee9f2d02 by Raymond Toy at 2022-11-22T08:34:24-08:00 Revert an unexpected space change that's not relevant
Not sure why tabs were converted to spaces, but that has been reverted so that the diff is smaller, as expected.
- - - - - eb17d936 by Raymond Toy at 2022-11-22T13:44:34-08:00 Change os_get_locale_codeset to return the result of nl_langinfo
Update unix::unix-get-locale-codeset appropriately
- - - - -
4 changed files:
- src/code/unix.lisp - src/i18n/locale/cmucl-unix.pot - src/lisp/os-common.c - tests/issues.lisp
Changes:
===================================== src/code/unix.lisp ===================================== @@ -2918,10 +2918,7 @@
(defun unix-get-locale-codeset () _N"Get the codeset from the locale" - (with-alien ((codeset (array c-call:char 512))) - (alien-funcall + (cast (alien-funcall (extern-alien "os_get_locale_codeset" - (function void (* char) int)) - (cast codeset (* c-call:char)) - 512) - (cast codeset c-string))) + (function (* char)))) + c-string))
===================================== src/i18n/locale/cmucl-unix.pot ===================================== @@ -1428,6 +1428,13 @@ msgstr "" msgid "Call setlocale(3c) with fixed args. Returns 0 on success." msgstr ""
+#: src/code/unix.lisp +msgid "" +"Get LC_MESSAGES from the current locale. If we can't, return\n" +" NIL. A call to UNIX-SETLOCALE must have been done previously before\n" +" calling this so that the correct locale is returned." +msgstr "" + #: src/code/unix.lisp msgid "Get the codeset from the locale" msgstr ""
===================================== src/lisp/os-common.c ===================================== @@ -798,12 +798,8 @@ os_get_lc_messages(char *buf, int len) return locale ? 0 : -1; }
-void -os_get_locale_codeset(char* codeset, int len) +char * +os_get_locale_codeset() { - char *code; - - code = nl_langinfo(CODESET); - - strncpy(codeset, code, len); + return nl_langinfo(CODESET); }
===================================== tests/issues.lisp ===================================== @@ -727,24 +727,24 @@ ;; using an explicit format of utf8 and verifying that we got the ;; right contents. (let ((string (concatenate 'string - ;; This is "hello" in Korean - '(#\Hangul_syllable_an - #\Hangul_Syllable_Nyeong - #\Hangul_Syllable_Ha - #\Hangul_Syllable_Se - #\Hangul_Syllable_Yo)))) + ;; This is "hello" in Korean + '(#\Hangul_syllable_an + #\Hangul_Syllable_Nyeong + #\Hangul_Syllable_Ha + #\Hangul_Syllable_Se + #\Hangul_Syllable_Yo)))) (with-open-file (s (merge-pathnames "out-utf8.txt" - *test-path*) - :direction :output - :if-exists :supersede) + *test-path*) + :direction :output + :if-exists :supersede) (write-line string s)) (with-open-file (s (merge-pathnames "out-utf8.txt" - *test-path*) - :direction :input - :external-format :utf-8) + *test-path*) + :direction :input + :external-format :utf-8) (assert-equal (map 'list #'char-name string) - (map 'list #'char-name (read-line s)))))) - + (map 'list #'char-name (read-line s)))))) + (define-test issue.139-locale-external-format (:tag :issues) ;; Just verify that :locale format exists
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/10f6311f91ae56ce58b57e4...