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... -- View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/10f6311f91ae56ce58b57e4... You're receiving this email because of your account on gitlab.common-lisp.net.
participants (1)
-
Raymond Toy (@rtoy)