On Fri, Dec 15, 2023 at 05:41:10PM -0700, David Snyder wrote:
> Not the correct solution, but I was able to get vile to work on macOS
> Sonoma with this change:
> 
> $ git diff
> diff --git a/eightbit.c b/eightbit.c
> index f5b0b158..24e9f617 100644
> --- a/eightbit.c
> +++ b/eightbit.c
> @@ -616,6 +616,7 @@ vl_get_encoding(char **target, const char *locale)
>      } else {
>  #ifdef HAVE_LANGINFO_CODESET
>         result = nl_langinfo(CODESET);
> +       result = utf_eight;
>  #else
>         if (vl_is_utf8_encoding(locale)) {
>             result = utf_eight;
> 
> For some reason, nl_langinfo(CODESET) returns an empty string when locale
> is "en_US"

"en_US" would be ISO-8859-1

Actually I'd expect "en_US.UTF-8", since that's what locale shows me on
a command-line (in Ventura).  If Apple removed the data for non-Unicode
locales, I suppose it could return an empty string.

I dimly recall some long-ago discussion of how Apple sets the locale,
but in the settings I see only "English (US) -- Primary" for the
Language & Region

This still applies to Ventura (perhaps your problem):

https://blog.remibergsma.com/2012/07/10/setting-locales-correctly-on-mac-osx-terminal-application/

or it may be in your /etc/profile (I don't see it there):

https://stackoverflow.com/questions/7165108/in-os-x-lion-lang-is-not-set-to-utf-8-how-to-fix-it
 
> * thread #1, queue = 'com.apple.main-thread', stop reason = step over
>     frame #0: 0x000000010007ecd4
> vile`vl_get_encoding(target=0x00000001000cc1c8, locale="en_US") at
> eightbit.c:618:11 [opt]
>    615 endofDisplay();
>    616    } else {
>    617 #ifdef HAVE_LANGINFO_CODESET
> -> 618 result = nl_langinfo(CODESET);
>    619 result = utf_eight;
>    620 #else
>    621 if (vl_is_utf8_encoding(locale)) {
> Target 0: (vile) stopped.
> (lldb) p (char *) nl_langinfo(0)
> (char *) 0x000000018b435db8 ""
> 
> Hope this helps you work out a proper solution.
> 
> 
> On Fri, Dec 15, 2023 at 4:15 PM David Snyder <dsnyder0...@gmail.com> wrote:
> 
> > Not surprisingly, installing vile via Homebrew produces the same results.
> >
> > ==> Downloading https://ghcr.io/v2/homebrew/core/vile/manifests/9.8y
> > #########################################################################
> > 100.0%
> > ==> Fetching vile
> > ==> Downloading
> > https://ghcr.io/v2/homebrew/core/vile/blobs/sha256:9c04feee9958f
> > #########################################################################
> > 100.0%
> > ==> Pouring vile--9.8y.arm64_sonoma.bottle.tar.gz
> > 🍺  /opt/homebrew/Cellar/vile/9.8y: 223 files, 7.9MB
> > ==> Running `brew cleanup vile`...
> > Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
> > Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
> > $ vile
> > Cannot setup translation from  to UTF-8
> >
> > On Fri, Dec 15, 2023 at 9:24 AM David Snyder <dsnyder0...@gmail.com>
> > wrote:
> >
> >> Hi Thomas,
> >>
> >> Thanks for your reply. I was hoping that would work, but no luck so far:
> >>
> >> $ LC_ALL=en_US.UTF-8 vile
> >> Cannot setup translation from  to UTF-8
> >>
> >> It seems odd that vl_narrow_enc.encoding is *empty* in the error message
> >> above.
> >>
> >> For locale, I see the same as you:
> >>
> >> $ locale -a | wc -l
> >>      203
> >>
> >> Output of locale:
> >>
> >> $ locale
> >> LANG="en_US.UTF-8"
> >> LC_COLLATE="en_US.UTF-8"
> >> LC_CTYPE="en_US.UTF-8"
> >> LC_MESSAGES="en_US.UTF-8"
> >> LC_MONETARY="en_US.UTF-8"
> >> LC_NUMERIC="en_US.UTF-8"
> >> LC_TIME="en_US.UTF-8"
> >> LC_ALL=
> >>
> >> However, as I showed above, even explicitly setting LC_ALL has no effect:
> >>
> >> $ export LC_ALL="en_US.UTF-8"
> >> $ locale
> >> LANG="en_US.UTF-8"
> >> LC_COLLATE="en_US.UTF-8"
> >> LC_CTYPE="en_US.UTF-8"
> >> LC_MESSAGES="en_US.UTF-8"
> >> LC_MONETARY="en_US.UTF-8"
> >> LC_NUMERIC="en_US.UTF-8"
> >> LC_TIME="en_US.UTF-8"
> >> LC_ALL="en_US.UTF-8"
> >>
> >> $ vile
> >> Cannot setup translation from  to UTF-8
> >>
> >>
> >> On Thu, Dec 14, 2023 at 6:44 PM Thomas Dickey <dic...@his.com> wrote:
> >>
> >>> ----- Original Message -----
> >>> | From: "David Snyder" <dsnyder0...@gmail.com>
> >>> | To: "Vile mailing list" <vile@nongnu.org>
> >>> | Sent: Thursday, December 14, 2023 7:51:46 PM
> >>> | Subject: Encoding translation error on macOS Sonoma 14.2
> >>>
> >>> | After upgrading to macOS Sonoma 14.2 (MacBook Pro with Apple M1 Pro
> >>> | processor), I can't seem to get vile to run. Even after a fresh build,
> >>> I
> >>> | see the following error:
> >>>
> >>> hmm - I've 3 macs that I intend upgrading to Sonoma, but as usual put it
> >>> off.
> >>> One is an M2 (the others are Intel).  Those are all on Ventura, and
> >>> locales work.
> >>>
> >>> "locale -a |wc -l" lists 203 settings.
> >>>
> >>> What does "locale" print for your environment?
> >>> The message indicates that there's no locale set.
> >>>
> >>> If Apple's lobotomized locale support, you might just as well set
> >>>
> >>>     LC_ALL=en_US.UTF-8
> >>>
> >>> (that would probably even work with something like OpenBSD).
> >>>
> >>> |
> >>> | $ vile
> >>> | Cannot setup translation from  to UTF-8
> >>> |
> >>> | Looking at the source I see this function in eightbit.c:
> >>> |
> >>> | static void
> >>> | open_encoding(char *from, char *to)
> >>> | {
> >>> |    if (!try_encoding(from, to)) {
> >>> |        fprintf(stderr, "Cannot setup translation from %s to %s\n",
> >>> from,
> >>> | to);
> >>> |        tidy_exit(BADEXIT);
> >>> |    }
> >>> | }
> >>> |
> >>> | I also tried rebuilding using --with-locale:
> >>> |
> >>> | $ ./configure -v --with-locale
> >>> |
> >>> | Unfortunately, the same result. Also, this is on an M1 MacBook Pro, so
> >>> I
> >>> | don't have gdb handy.
> >>> |
> >>> | Compiling using --with-trace, I see these warnings, which look
> >>> | disconcerting:
> >>> |
> >>> | trace.c:488:59: warning: overflow in expression; result is 2147483647
> >>> with
> >>> | type 'int' [-Winteger-overflow]
> >>> |            int c = buffer[j] & ((1 << (8 * sizeof(VIDEO_TEXT))) - 1);
> >>> |                                                                 ^
> >>> | trace.c:488:30: warning: shift count >= width of type
> >>> | [-Wshift-count-overflow]
> >>> |            int c = buffer[j] & ((1 << (8 * sizeof(VIDEO_TEXT))) - 1);
> >>> |                                    ^  ~~~~~~~~~~~~~~~~~~~~~~~~
> >>> |
> >>> | Hoping someone with better development tools on Apple silicon can
> >>> reproduce
> >>> | this issue and provide more helpful debugging info. Thanks.
> >>> |
> >>> | -- David
> >>>
> >>> --
> >>> Thomas E. Dickey <dic...@invisible-island.net>
> >>> https://invisible-island.net
> >>>
> >>

-- 
Thomas E. Dickey <dic...@invisible-island.net>
https://invisible-island.net

Attachment: signature.asc
Description: PGP signature

Reply via email to