From: "Dave Yeo" <gnuports@2rosenthals.com>
Received: from [192.168.100.201] (HELO mail.2rosenthals.com)
  by 2rosenthals.com (CommuniGate Pro SMTP 5.4.10)
  with ESMTPS id 3691731 for gnuports@2rosenthals.com; Mon, 16 May 2022 00:14:11 -0400
Received: from [192.168.200.201] (port=51948 helo=mail2.2rosenthals.com)
	by mail.2rosenthals.com with esmtp (Exim 4.94.2)
	(envelope-from <dave.r.yeo@gmail.com>)
	id 1nqS7M-0002Et-35
	for gnuports@2rosenthals.com; Mon, 16 May 2022 00:14:01 -0400
Received: from mail-pl1-f174.google.com ([209.85.214.174]:40726)
	by mail2.2rosenthals.com with esmtps  (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
	(Exim 4.94.2)
	(envelope-from <dave.r.yeo@gmail.com>)
	id 1nqS7B-0003kP-0T
	for gnuports@2rosenthals.com; Mon, 16 May 2022 00:13:49 -0400
Received: by mail-pl1-f174.google.com with SMTP id i1so13307301plg.7
        for <gnuports@2rosenthals.com>; Sun, 15 May 2022 21:13:48 -0700 (PDT)
X-SASI-Hits: BODYTEXTP_SIZE_3000_LESS 0.000000, BODY_SIZE_1400_1499 0.000000,
	BODY_SIZE_2000_LESS 0.000000, BODY_SIZE_5000_LESS 0.000000,
	BODY_SIZE_7000_LESS 0.000000, DATE_TZ_NA 0.000000, DKIM_ALIGNS 0.000000,
	DKIM_SIGNATURE 0.000000, HTML_00_01 0.050000, HTML_00_10 0.050000,
	KNOWN_MTA_TFX 0.000000, NO_CTA_FOUND 0.000000, NO_CTA_URI_FOUND 0.000000,
	NO_URI_FOUND 0.000000, NO_URI_HTTPS 0.000000, SENDER_NO_AUTH 0.000000,
	SXL_IP_SPAM_RCVD 0.500000, SXL_IP_TFX_WM 0.000000, WEBMAIL_SOURCE 0.000000,
	__BODY_NO_MAILTO 0.000000, __CT 0.000000, __CTE 0.000000,
	__CT_TEXT_PLAIN 0.000000, __DKIM_ALIGNS_1 0.000000, __DKIM_ALIGNS_2 0.000000,
	__DQ_NEG_DOMAIN 0.000000, __DQ_NEG_HEUR 0.000000, __DQ_NEG_IP 0.000000,
	__FRAUD_WEBMAIL 0.000000, __FRAUD_WEBMAIL_FROM 0.000000,
	__FROM_DOMAIN_NOT_IN_BODY 0.000000, __FROM_GMAIL 0.000000,
	__FROM_NAME_NOT_IN_BODY 0.000000, __FUR_HEADER 0.000000,
	__FUR_RDNS_GMAIL 0.000000, __HAS_FROM 0.000000, __HAS_MSGID 0.000000,
	__INT_PROD_MP3 0.000000, __MIME_TEXT_ONLY 0.000000, __MIME_TEXT_P 0.000000,
	__MIME_TEXT_P1 0.000000, __MIME_VERSION 0.000000,
	__MOZILLA_USER_AGENT 0.000000, __NO_HTML_TAG_RAW 0.000000,
	__PHISH_SPEAR_STRUCTURE_1 0.000000, __RDNS_WEBMAIL 0.000000,
	__SANE_MSGID 0.000000, __SUBJ_ALPHA_END 0.000000,
	__SUBJ_ALPHA_START 0.000000, __TO_MALFORMED_2 0.000000, __TO_NAME 0.000000,
	__TO_NAME_DIFF_FROM_ACC 0.000000, __TO_REAL_NAMES 0.000000,
	__URI_NO_MAILTO 0.000000, __USER_AGENT 0.000000,
	__X_GM_MESSAGE_STATE 0.000000, __X_GOOGLE_DKIM_SIGNATURE 0.000000,
	__X_GOOGLE_SMTP_SOURCE 0.000000, __YOUTUBE_RCVD 0.000000
X-SASI-Probability: 9%
X-SASI-RCODE: 200
X-SASI-Version: Antispam-Engine: 4.1.4, AntispamData: 2022.5.16.32119
X-SASI-Hits: BODYTEXTP_SIZE_3000_LESS 0.000000, BODY_SIZE_1400_1499 0.000000,
	BODY_SIZE_2000_LESS 0.000000, BODY_SIZE_5000_LESS 0.000000,
	BODY_SIZE_7000_LESS 0.000000, DATE_TZ_NA 0.000000, DKIM_ALIGNS 0.000000,
	DKIM_SIGNATURE 0.000000, HTML_00_01 0.050000, HTML_00_10 0.050000,
	KNOWN_MTA_TFX 0.000000, NO_CTA_FOUND 0.000000, NO_CTA_URI_FOUND 0.000000,
	NO_URI_FOUND 0.000000, NO_URI_HTTPS 0.000000, SENDER_NO_AUTH 0.000000,
	SXL_IP_SPAM_RCVD 0.500000, SXL_IP_TFX_WM 0.000000, WEBMAIL_SOURCE 0.000000,
	__BODY_NO_MAILTO 0.000000, __CT 0.000000, __CTE 0.000000,
	__CT_TEXT_PLAIN 0.000000, __DKIM_ALIGNS_1 0.000000, __DKIM_ALIGNS_2 0.000000,
	__DQ_NEG_DOMAIN 0.000000, __DQ_NEG_HEUR 0.000000, __DQ_NEG_IP 0.000000,
	__FRAUD_WEBMAIL 0.000000, __FRAUD_WEBMAIL_FROM 0.000000,
	__FROM_DOMAIN_NOT_IN_BODY 0.000000, __FROM_GMAIL 0.000000,
	__FROM_NAME_NOT_IN_BODY 0.000000, __FUR_HEADER 0.000000,
	__FUR_RDNS_GMAIL 0.000000, __HAS_FROM 0.000000, __HAS_MSGID 0.000000,
	__INT_PROD_MP3 0.000000, __MIME_TEXT_ONLY 0.000000, __MIME_TEXT_P 0.000000,
	__MIME_TEXT_P1 0.000000, __MIME_VERSION 0.000000,
	__MOZILLA_USER_AGENT 0.000000, __NO_HTML_TAG_RAW 0.000000,
	__PHISH_SPEAR_STRUCTURE_1 0.000000, __RDNS_WEBMAIL 0.000000,
	__SANE_MSGID 0.000000, __SUBJ_ALPHA_END 0.000000,
	__SUBJ_ALPHA_START 0.000000, __TO_MALFORMED_2 0.000000, __TO_NAME 0.000000,
	__TO_NAME_DIFF_FROM_ACC 0.000000, __TO_REAL_NAMES 0.000000,
	__URI_NO_MAILTO 0.000000, __USER_AGENT 0.000000,
	__X_GM_MESSAGE_STATE 0.000000, __X_GOOGLE_DKIM_SIGNATURE 0.000000,
	__X_GOOGLE_SMTP_SOURCE 0.000000, __YOUTUBE_RCVD 0.000000
X-SASI-Probability: 9%
X-SASI-RCODE: 200
X-SASI-Version: Antispam-Engine: 4.1.4, AntispamData: 2022.5.16.34219
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=from:subject:to:message-id:date:user-agent:mime-version
         :content-transfer-encoding;
        bh=s68qQWkoYZBwnHSBZ6vthDt4e8nSUxmLieXBMFR7U7A=;
        b=WG8ep9p0mDobMe0F+WEO4mKV9Hne8xlax28Ws77mVP82t6StMgtJh1xgoAXSPlfNa4
         qKRT/kAKy9WvJBMqx7B48ZwiukZkOsd7zRVFMBPt+lDYNpmmI5X/nXpybp3BV3VVrWcv
         reeE/3808a+bzcYUk/0KnaB9ufzUVs0UAabbpnUFZWv5GLkTvx/Jk7pPYWeWTQzQ73ml
         q96f06i9tbGC1E/UBv8gUjrPXCQAg7YzJ2rXuj7fxw3SFwbYIVKYUyi3VIAg8Nvb7CSr
         4DeL0e/fMP9uQJDu/GtCRoJxT7MpFr7UYd+ttIoNrMbLs1mlyfzIS19i3lxSnH0ZB1kg
         Ztog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:from:subject:to:message-id:date:user-agent
         :mime-version:content-transfer-encoding;
        bh=s68qQWkoYZBwnHSBZ6vthDt4e8nSUxmLieXBMFR7U7A=;
        b=n7uFc+fzGNZMfKnXSvRDVwsZUhj1f7GqXBPfXlj8Pp6zvmpxldYqYVbeXZOcfFSamH
         DKUaDBEG46OTFfl4cNy5U5SW5ZFzSZ2+VWka/BEoMhHRRaiVwg7F9lXFsD/RFpuZUMp8
         I7M4QGZxdag6kqrWuGjh2pShG8XidN0C+4b4E2FBt5dlb8z0pUEOaw7rvKS9Sk2Di5vj
         fWDBuEsEAPu5tUD1BIilMdqNcytjgYt8g9t/Z2hwmDGiaHfvV6jOal2J3Dbj9c5JxS5s
         +if3HzYKUNaL7MQN/Uz+Mwd5uRwkYxqIn5atdDkpjUITCIUHhqEh/393bW91o4Kdl8U7
         sV5g==
X-Gm-Message-State: AOAM531ycAZxmlo7qyMOrlAXITnAfET1Y+sl8Evg+ks8wXs0V3xBuMW1
	d0ttF+gTszncEb0DAvCAyUKBVeAopvw=
X-Google-Smtp-Source: ABdhPJzaPgM+RCIidCiMsIVcc++LO5jmApj/tiPbDzfHBMCJ/iXd6Lg2QcOlosdKz4waem+KWkNm+Q==
X-Received: by 2002:a17:902:6b42:b0:15d:3603:6873 with SMTP id g2-20020a1709026b4200b0015d36036873mr15699723plt.30.1652674046742;
        Sun, 15 May 2022 21:07:26 -0700 (PDT)
Return-Path: <dave.r.yeo@gmail.com>
Received: from [192.168.0.104] ([207.194.98.112])
        by smtp.gmail.com with ESMTPSA id f5-20020a170902684500b0015e8d4eb221sm2546918pln.107.2022.05.15.21.07.26
        for <gnuports@2rosenthals.com>
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Sun, 15 May 2022 21:07:26 -0700 (PDT)
Subject: getting a single keypress
To: GNU Ports for eCS Mailing List <gnuports@2rosenthals.com>
Message-ID: <a6d31b03-40eb-29d4-8307-e9fb7ba682e5@gmail.com>
Date: Sun, 15 May 2022 21:07:25 -0700
User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Trying to fix mpg123's key reading while playing a mp3, things like 
pause etc.
Example program that almost works from the developer, here it hangs and 
sometimes hangs the system.

-----------8<--------------

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/select.h>
#include <unistd.h>
#include <termios.h>

int term_fd = -1;

int get_key(int do_delay, char *val)
{
	fd_set r;
	struct timeval t;
	t.tv_sec=0;
	t.tv_usec=(do_delay) ? 1000 : 0;
	FD_ZERO(&r);
	FD_SET(term_fd,&r);
	int n = select(term_fd+1,&r,NULL,NULL,&t);
	if(n > 0 && FD_ISSET(term_fd,&r) && read(term_fd,val,1) == 1)
		return 1;
	return 0;
}


int main(int argc, char **argv)
{
	if(argc >= 2)
		term_fd = open("/dev/tty", O_RDONLY);
	else
		term_fd = STDIN_FILENO;
	if(term_fd < 0)
	{
		perror("failure opening terminal input");
		return 1;
	}
	fprintf(stderr, "terminal fd: %d\n", term_fd);

	struct termios old_tio;
	int termsetup = 0;
	if(!tcgetattr(term_fd, &old_tio))
	{
		fprintf(stderr, "proper terminal setup\n");
		struct termios tio = old_tio;
		tio.c_lflag &= ~(ICANON|ECHO);
		tio.c_cc[VMIN] = 1;
		tio.c_cc[VTIME] = 0;
		tcsetattr(term_fd,TCSANOW,&tio);
		termsetup = 1;
	}

	char val = 0;
	while(val != 'q')
	{
		if(get_key(1, &val))
			fprintf(stderr, "got key: %c\n", val);
	}

	if(termsetup)
		tcsetattr(term_fd,TCSAFLUSH,&old_tio);
	if(term_fd > 0)
		close(term_fd);
	return 0;
}

------------>8--------------

Ideas or fixes?
Dave