Re: getchar implementation without GNUishms

Liste des Groupes 
Sujet : Re: getchar implementation without GNUishms
De : addr (at) *nospam* is.invalid (Arti F. Idiot)
Groupes : comp.lang.awk
Date : 26. Mar 2025, 05:16:32
Autres entêtes
Organisation : Anarchists of America
Message-ID : <vrvv30$spj$1@nnrp.usenet.blueworldhosting.com>
References : 1 2
User-Agent : Mozilla Thunderbird
On 3/25/25 7:10 AM, Janis Papanagnou wrote:
On 25.03.2025 10:51, anthk wrote:
Hello the guy from https://luxferre.top and gopher://hoi.st
has pretty interesting stuff, such as
>
[ shell specific or other tries to emulate some getchar function ]
>
Could it be possible to implement a true portable getchar?
 Those who think that getchar is a useful function may implement that
natively in Awk. (It avoids external dependencies and all the issues
that the posted/quoted code has made obvious.)
I know you can iterate over input strings a character at a time in AWK
but I don't think you can read a single character from stdin without
also providing a newline via ENTER, which is perhaps what the OP was
actually wanting to do?
I kind of like making CLI interactive stuff and like not having to
press ENTER after entering single character menu choices.  Tried a
few options using bash and lua before landing on stty(1) and dd(1),
both POSIX tools:
--
# getchar_posix.awk - read exactly one char from stdin and return it
#                     without waiting for ENTER to be pressed.
#
BEGIN {
     printf "enter a char: "
     Char = getchar()
     printf "\n you entered: %s\n", Char
}
function getchar(   ,Cmd, Chr) {
     # put TTY in "raw" mode..
     system ("stty -icanon")
     #
     # read  Chr via dd(1)..
     Cmd = "dd bs=1 count=1 2>/dev/null"
     Cmd | getline Chr
     close (Cmd)
     #
     # put TTY in "normal" mode..
     system ("stty icanon")
     #
     return Chr
}
--
Saving the TTY state via 'stty -g' beforehand would probably be a good
addition so if things go sideways the TTY isn't a mess.
-A

Date Sujet#  Auteur
25 Mar 25 * getchar implementation without GNUishms8anthk
25 Mar 25 `* Re: getchar implementation without GNUishms7Janis Papanagnou
26 Mar 25  `* Re: getchar implementation without GNUishms6Arti F. Idiot
26 Mar 25   +* Re: getchar implementation without GNUishms2Kenny McCormack
26 Mar 25   i`- Re: getchar implementation without GNUishms1Kenny McCormack
26 Mar 25   `* Re: getchar implementation without GNUishms3Janis Papanagnou
26 Mar 25    `* What is getchar? (Was: getchar implementation without GNUishms)2Kenny McCormack
26 Mar 25     `- Re: What is getchar? (Was: getchar implementation without GNUishms)1Kaz Kylheku

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal