Groups | Search | Server Info | Login | Register
Groups > comp.lang.awk > #9923
| Path | csiph.com!weretis.net!feeder9.news.weretis.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!nnrp.usenet.blueworldhosting.com!.POSTED!not-for-mail |
|---|---|
| From | "Arti F. Idiot" <addr@is.invalid> |
| Newsgroups | comp.lang.awk |
| Subject | Re: getchar implementation without GNUishms |
| Date | Tue, 25 Mar 2025 22:16:32 -0600 |
| Organization | Anarchists of America |
| Message-ID | <vrvv30$spj$1@nnrp.usenet.blueworldhosting.com> (permalink) |
| References | <slrnvu4v4s.1su2.anthk@openbsd.home> <vrua0r$3d1du$1@dont-email.me> |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| Injection-Date | Wed, 26 Mar 2025 04:16:32 -0000 (UTC) |
| Injection-Info | nnrp.usenet.blueworldhosting.com; logging-data="29491"; mail-complaints-to="usenet@blueworldhosting.com" |
| User-Agent | Mozilla Thunderbird |
| Cancel-Lock | sha1:LpfaWYJWUQr9/Noxkr9EowI3QVs= sha256:KXBNpuZa/2CkOhj+p3xBs0JVz4ny8qxbPkD4paU1xIo= sha1:AEXr8Am+EO054z6YXR/Ms6tOgJE= sha256:nq2i8PkU9eZ7yW76lCb+L6dEJIpmyPjB+E8e70X8JUU= |
| In-Reply-To | <vrua0r$3d1du$1@dont-email.me> |
| Content-Language | en-US |
| Xref | csiph.com comp.lang.awk:9923 |
Show key headers only | View raw
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
Back to comp.lang.awk | Previous | Next — Previous in thread | Next in thread | Find similar
getchar implementation without GNUishms anthk <anthk@openbsd.home> - 2025-03-25 09:51 +0000
Re: getchar implementation without GNUishms Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2025-03-25 14:10 +0100
Re: getchar implementation without GNUishms "Arti F. Idiot" <addr@is.invalid> - 2025-03-25 22:16 -0600
Re: getchar implementation without GNUishms gazelle@shell.xmission.com (Kenny McCormack) - 2025-03-26 05:08 +0000
Re: getchar implementation without GNUishms gazelle@shell.xmission.com (Kenny McCormack) - 2025-03-26 05:48 +0000
Re: getchar implementation without GNUishms Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2025-03-26 06:27 +0100
What is getchar? (Was: getchar implementation without GNUishms) gazelle@shell.xmission.com (Kenny McCormack) - 2025-03-26 06:07 +0000
Re: What is getchar? (Was: getchar implementation without GNUishms) Kaz Kylheku <643-408-1753@kylheku.com> - 2025-03-26 06:10 +0000
csiph-web