From fdc1afd407e8d3d54e1020e4ff263ea90ec20d12 Mon Sep 17 00:00:00 2001 From: Juho Hiltunen Date: Mon, 26 Jul 2021 20:30:30 +0300 Subject: [PATCH] code cleanup: new function ReadNumbers() ReadNumbers8) parses an unknown number of numbers from language files. Used mostly for setting flags. Used mostly for setting flags. --- src/libespeak-ng/voices.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index da61cb88..3ebcfb38 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -476,6 +476,26 @@ static int Read8Numbers(char *data_in, int *data) &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7]); } +static void ReadNumbers(char *p, int *flags, int maxValue, MNEM_TAB *keyword_tab, int key) { + // read a list of numbers from string p + // store them as flags in *flags + // the meaning of the numbers is bit ordinals, not integer values + // give an error if number > maxValue is read + int n; + while (*p != 0) { + while (isspace(*p)) p++; + if ((n = atoi(p)) > 0) { + p++; + if (n < maxValue) { + *flags |= (1 << n); + } else { + fprintf(stderr, "%s: Bad option number %d\n", LookupMnemName(keyword_tab, key), n); + } + } + while (isalnum(*p)) p++; + } +} + static int CheckTranslator(Translator *tr, MNEM_TAB *keyword_tab, int key) { // Return 0 if translator is set.