util/spkmodem-recv: always disable line buffering

thus, there's no need to handle flushing of stdout
whatsoever, and the code can be greatly simplified

ascii bits are still reset, when no input on stdin
is given

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2023-06-05 01:05:38 +01:00
parent 118bb19ff8
commit 264a31b95d
+5 -11
View File
@@ -23,7 +23,7 @@
#define ERR() (errno = errno ? errno : ECANCELED)
signed short frame[2 * SAMPLES_PER_FRAME], pulse[2 * SAMPLES_PER_FRAME];
int flush, freq_data, freq_separator, sample_count, ascii_bit = 7;
int freq_data, freq_separator, sample_count, ascii_bit = 7;
char ascii = 0;
void handle_audio(void);
@@ -40,11 +40,7 @@ main(int argc, char *argv[])
if (pledge("stdio", NULL) == -1)
err(ERR(), "pledge");
#endif
while ((c = getopt(argc, argv, "u")) != -1) {
if (c != 'u')
err(errno = EINVAL, NULL);
setvbuf(stdout, NULL, _IONBF, 0);
}
setvbuf(stdout, NULL, _IONBF, 0);
while (!feof(stdin))
handle_audio();
if (errno)
@@ -55,21 +51,19 @@ main(int argc, char *argv[])
void
handle_audio(void)
{
if ((flush = (sample_count > (3 * SAMPLES_PER_FRAME)))) {
if (sample_count > (3 * SAMPLES_PER_FRAME)) {
ascii_bit = 7;
ascii = sample_count = 0;
if (fflush(stdout) == EOF)
err(ERR(), NULL);
}
if ((freq_separator <= FREQ_SEP_MIN) || (freq_separator >= FREQ_SEP_MAX)
|| (freq_data <= FREQ_DATA_MIN) || (freq_data >= FREQ_DATA_MAX)) {
fetch_sample();
return;
}
if (!set_ascii_bit())
print_char();
sample_count = flush = 0;
sample_count = 0;
for (int sample = 0; sample < SAMPLES_PER_FRAME; sample++)
fetch_sample();
}