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"

* 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
>>>
>>

Reply via email to