pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/audio/yasr



Module Name:    pkgsrc
Committed By:   wiz
Date:           Mon Mar 11 07:52:38 UTC 2024

Added Files:
        pkgsrc/audio/yasr: DESCR Makefile PLIST distinfo
        pkgsrc/audio/yasr/patches: patch-meson.build patch-yasr_main.c
            patch-yasr_tts.c patch-yasr_yasr.h

Log Message:
audio/yasr: import yasr-0.0.0.144

Packaged for wip by adr.

YASR ("Yet Another Screen Reader") is an attempt at a lightweight,
portable screen reader. It works by opening a shell in a pty and
intercepting all user input/output, maintaining a window of what
should be on the screen by looking at the codes and text sent to the
screen. It thus uses no Linuxisms such as /dev/vcsa0 and does not
necessarily need to be setuid root (the only requirement being that
the user be able to access the tts device).


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/audio/yasr/DESCR pkgsrc/audio/yasr/Makefile \
    pkgsrc/audio/yasr/PLIST pkgsrc/audio/yasr/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/audio/yasr/patches/patch-meson.build \
    pkgsrc/audio/yasr/patches/patch-yasr_main.c \
    pkgsrc/audio/yasr/patches/patch-yasr_tts.c \
    pkgsrc/audio/yasr/patches/patch-yasr_yasr.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: pkgsrc/audio/yasr/DESCR
diff -u /dev/null pkgsrc/audio/yasr/DESCR:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/DESCR     Mon Mar 11 07:52:38 2024
@@ -0,0 +1,7 @@
+YASR ("Yet Another Screen Reader") is an attempt at a lightweight,
+portable screen reader. It works by opening a shell in a pty and
+intercepting all user input/output, maintaining a window of what
+should be on the screen by looking at the codes and text sent to the
+screen. It thus uses no Linuxisms such as /dev/vcsa0 and does not
+necessarily need to be setuid root (the only requirement being that
+the user be able to access the tts device).
Index: pkgsrc/audio/yasr/Makefile
diff -u /dev/null pkgsrc/audio/yasr/Makefile:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/Makefile  Mon Mar 11 07:52:38 2024
@@ -0,0 +1,33 @@
+# $NetBSD: Makefile,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+COMMITS=       144
+DISTNAME=      yasr-0.0.0.${COMMITS}
+CATEGORIES=    audio
+MASTER_SITES=  ${MASTER_SITE_GITHUB:=mgorse/}
+GITHUB_TAG=    f60db19350542e6f4b7d268a310b9f2b9f3076c0
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      https://github.com/mgorse/yasr
+COMMENT=       Lightweight and portable screen reader
+LICENSE=       gnu-gpl-v2
+
+USE_LANGUAGES= c
+USE_TOOLS=     pkg-config msgfmt xgettext
+
+# Replace bash with sh in configuration example
+SUBST_CLASSES+=                use-sh
+SUBST_STAGE.use-sh=    pre-configure
+SUBST_MESSAGE.use-sh=  Use sh instead of bash
+SUBST_FILES.use-sh=    yasr/yasr.conf
+SUBST_SED.use-sh=      -e 's,/bin/bash,/bin/sh,'
+
+# Fix eflite path in configuration example
+SUBST_CLASSES+=                        fix-eflite
+SUBST_STAGE.fix-eflite=                pre-configure
+SUBST_MESSAGE.fix-eflite=      Fix eflite path
+SUBST_FILES.fix-eflite=                yasr/yasr.conf
+SUBST_SED.fix-eflite=          -e 's,/usr/local/bin/eflite,${PREFIX}/bin/eflite,'
+
+.include "../../devel/meson/build.mk"
+.include "../../audio/speech-dispatcher/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/audio/yasr/PLIST
diff -u /dev/null pkgsrc/audio/yasr/PLIST:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/PLIST     Mon Mar 11 07:52:38 2024
@@ -0,0 +1,6 @@
+@comment $NetBSD: PLIST,v 1.1 2024/03/11 07:52:38 wiz Exp $
+bin/yasr
+man/man1/yasr.1
+share/locale/es/LC_MESSAGES/yasr.mo
+share/locale/fr/LC_MESSAGES/yasr.mo
+share/yasr/yasr.conf
Index: pkgsrc/audio/yasr/distinfo
diff -u /dev/null pkgsrc/audio/yasr/distinfo:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/distinfo  Mon Mar 11 07:52:38 2024
@@ -0,0 +1,9 @@
+$NetBSD: distinfo,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+BLAKE2s (yasr-0.0.0.144-f60db19350542e6f4b7d268a310b9f2b9f3076c0.tar.gz) = 72d9fca67181fbc0761515cf44ab01e07f97e4f90863d54df2bb614a7cd88a6c
+SHA512 (yasr-0.0.0.144-f60db19350542e6f4b7d268a310b9f2b9f3076c0.tar.gz) = 
1a97f4d18586e9e72a01b05b0c6240a7e346b44d920771d662a0cbf9cba26467732d5681f391938d01cf0bd9e269bf0879fd7fcbf48f9678b5eafa30cbecca63
+Size (yasr-0.0.0.144-f60db19350542e6f4b7d268a310b9f2b9f3076c0.tar.gz) = 99434 bytes
+SHA1 (patch-meson.build) = 81c27075691073e33799681441e4662275e62d3a
+SHA1 (patch-yasr_main.c) = 5e6493b9a995b3fb15b160569d21c893e99ed9d9
+SHA1 (patch-yasr_tts.c) = c7cd92e8530785e682d61f9423d4b796391fa453
+SHA1 (patch-yasr_yasr.h) = 8c1f5fdeb8c9f05e9145ee60983c707834c04b16

Index: pkgsrc/audio/yasr/patches/patch-meson.build
diff -u /dev/null pkgsrc/audio/yasr/patches/patch-meson.build:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/patches/patch-meson.build Mon Mar 11 07:52:38 2024
@@ -0,0 +1,15 @@
+$NetBSD: patch-meson.build,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+Add test for necessary headers
+
+--- meson.build.orig   2023-04-08 21:22:57.000000000 +0000
++++ meson.build
+@@ -26,7 +26,7 @@ localedir = join_paths(prefix, get_optio
+ conf.set_quoted('LOCALEDIR', localedir)
+ 
+ foreach h : [ 'fcntl.h', 'sys/ioctl.h', 'sys/time.h', 'unistd.h',  'utmpx.h',
+-  'pty.h', 'locale.h']
++  'util.h', 'libutil.h', 'pty.h', 'locale.h']
+   if cc.check_header(h)
+     conf.set('HAVE_@0@'.format(h.underscorify().to_upper()), 1)
+   endif
Index: pkgsrc/audio/yasr/patches/patch-yasr_main.c
diff -u /dev/null pkgsrc/audio/yasr/patches/patch-yasr_main.c:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/patches/patch-yasr_main.c Mon Mar 11 07:52:38 2024
@@ -0,0 +1,946 @@
+$NetBSD: patch-yasr_main.c,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+Remove non-portable use of WCHAR_T in iconv code.
+Remove the enforcing of UTF-8 (but the code is expeting multibyte
+encodings or ASCII).
+Fix the reading of char after space using right cursor key.
+Use defined constants in buffer sizes when they are used elsewhere.
+Remove unused argument of gulp().
+Fix bug: buf[] used instead of kbuf[].
+Fix bug: the reading of master can be truncated even just getting one char at
+a time (bug in NetBSD's pty implementation?), the code has to take that
+into account.
+Simplify formatting now that we are there, but according to the rest of the code.
+
+--- yasr/main.c.orig   2023-04-08 21:22:57.000000000 +0000
++++ yasr/main.c
+@@ -39,8 +39,10 @@ static int cpid;
+ static int size, wsize;
+ static int master, slave;
+ char *conffile = NULL;
+-unsigned char buf[256];
+-wchar_t wide_buf[256];
++#define BUF_SIZE 256
++#define WIDE_BUF_SIZE 256
++char buf[BUF_SIZE];
++wchar_t wide_buf[WIDE_BUF_SIZE];
+ char usershell[OPT_STR_SIZE];
+ static struct termios t;
+ Win *win;
+@@ -50,9 +52,10 @@ Tts tts;
+ Ui ui;
+ Uirev rev;
+ static int speaking = 1;
+-int kbuf[100];
++#define KBUF_SIZE 100
++int kbuf[KBUF_SIZE];
+ int kbuflen = 0;
+-static wchar_t okbuf[100];
++static wchar_t okbuf[KBUF_SIZE];
+ static int okbuflen = 0;
+ static int oldcr = 0, oldcc = 0, oldch = 0;
+ Voices voices;
+@@ -307,40 +310,22 @@ is_separator (int ch)
+ static int
+ getkey_buf ()
+ {
+-  char *b1, *b2;
+-  size_t s1, s2;
+   wchar_t ch;
+   int key;
+   int result;
+ 
+-  s1 = size;
+-  s2 = sizeof (wchar_t);
+-  b1 = (char *) buf;
+-  b2 = (char *) &ch;
+-  iconv (ih_inp, NULL, NULL, NULL, NULL);
+-  result = iconv (ih_inp, &b1, &s1, &b2, &s2);
+-  if (result != -1)
+-  {
+-    if (!s1)
+-      return ch;
+-  }
++  result = mbtowc(&ch, buf, size);
++  if (result == size && result != -1)
++    return (int)ch;
+   key = (int) buf[0];
+   if (size > 1)
+-  {
+     key = (key << 8) + buf[1];
+-  }
+   if (size > 2)
+-  {
+     key = (key << 8) + buf[2];
+-  }
+   if (size > 3)
+-  {
+     key = (key << 8) + buf[3];
+-  }
+   if (key >> 8 == 0x1b4f)
+-  {
+     key += 0x000c00;
+-  }
+ 
+   /* Convert high-bit meta keys to escape form */
+ #ifndef __linux__
+@@ -355,11 +340,9 @@ getinput ()
+ {
+   int key;
+ 
+-  size = read (0, buf, 255);
++  size = read (0, buf, BUF_SIZE);
+   if (size <= 0)
+-  {
+     finish (0);
+-  }
+   key = getkey_buf ();
+   if (key == ui.disable)
+   {
+@@ -385,9 +368,7 @@ getinput ()
+ 
+   tts_silence ();
+   if (ui.silent == -1)
+-  {
+     ui.silent = 0;
+-  }
+   ui.silent = -ui.silent;
+   if (ui.meta)
+   {
+@@ -401,9 +382,7 @@ getinput ()
+     okbuflen = tts.oflag = 0;
+   }
+   if (!ui_keypress (key))
+-  {
+     (void) write (master, buf, size);
+-  }
+ }
+ 
+ static void
+@@ -418,9 +397,7 @@ wincpy (Win ** d, Win * s)
+   (*d)->cc = s->cc;
+   (*d)->mode = s->mode;
+   for (i = 0; i < s->rows; i++)
+-  {
+     (void) memcpy ((*d)->row[i], s->row[i], s->cols * CHARSIZE);
+-  }
+   (void) memcpy (&(*d)->savecp, &s->savecp, sizeof (Curpos));
+ }
+ 
+@@ -430,9 +407,7 @@ win_end (Win * win)
+   int i;
+ 
+   for (i = 0; i < win->rows; i++)
+-  {
+     free (win->row[i]);
+-  }
+   free (win->row);
+   free (win->tab);
+ }
+@@ -450,9 +425,7 @@ win_scrollup ()
+   tmpc = win->row[win_scrollmin];
+   (void) memset (tmpc, 0, win->cols * CHARSIZE);
+   for (i = win_scrollmin; i < win_scrollmax; i++)
+-  {
+     win->row[i] = win->row[i + 1];
+-  }
+   win->row[i] = tmpc;
+   win->cr--;
+ }
+@@ -472,9 +445,7 @@ win_lf ()
+     tmpc = win->row[win_scrollmin];
+     (void) memset (tmpc, 0, win->cols * CHARSIZE);
+     for (i = win_scrollmin; i < win_scrollmax; i++)
+-    {
+       win->row[i] = win->row[i + 1];
+-    }
+     win->row[i] = tmpc;
+     win->cr--;
+   }
+@@ -490,9 +461,7 @@ win_scrolldown ()
+   tmpc = win->row[win_scrollmax];
+   (void) memset (tmpc, 0, CHARSIZE * win->cols);
+   for (i = win_scrollmax - 1; i >= win->cr; i--)
+-  {
+     win->row[i + 1] = win->row[i];
+-  }
+   win->row[win->cr] = tmpc;
+ }
+ 
+@@ -533,41 +502,44 @@ oldgulp (unsigned char *buf, int *size, 
+     if (ep)
+     {
+       n = buf + *size - *ep;
+-      (void) memmove (buf, *ep, 256 - n);
+-      *size = n + read (master, buf + n, 255 - n);
++      (void) memmove (buf, *ep, BUF_SIZE - n);
++      *size = n + read (master, buf + n, BUF_SIZE - 1  - n);
+       buf[*size] = '\0';
+       (void) write (1, buf + n, *size - n);
+       *ep = buf;
+       return ((char *) buf + n);
+     }
+-    *size = read (master, buf, 255);
++    *size = read (master, buf, BUF_SIZE - 1);
+     buf[*size] = '\0';
+     (void) write (1, buf, *size);
+     return ((char *) buf);
+   }
+-  *size += read (master, buf + *size, 255 - *size);
++  *size += read (master, buf + *size, BUF_SIZE - 1 - *size);
+   buf[*size] = '\0';
+   return ((char *) (buf + os));
+ }
+ 
+ #endif
+ 
+-/*!
++/*
+ function reads portion of data into buf and converts
+ to wide string, leaving 'leave' character in wide_buf;
+ */
+-static int bytes_left;
++static int bytes_left = 0;
+ static char *bytes_left_start;
+ static void
+ read_buf (int leave)
+ {
+-  char *b1, *b2;
+-  size_t s1, s2;
+-  if (bytes_left)
+-  {
+-    memcpy (buf, bytes_left_start, bytes_left);
++  int mbcharsize;
++  char *mbb;
++  wchar_t *wcb, tmpb[WIDE_BUF_SIZE];
++  size_t mbs;
++  
++  if (bytes_left){
++    memcpy (tmpb, bytes_left_start, bytes_left);
++    memcpy (buf, tmpb, bytes_left);
+   }
+-  size = read (master, buf + bytes_left, 255 - bytes_left - leave);
++  size = read (master, buf + bytes_left, BUF_SIZE - bytes_left - 1);
+   if (size < 0)
+   {
+     perror ("read");
+@@ -577,39 +549,43 @@ read_buf (int leave)
+   size += bytes_left;
+   buf[size] = 0;
+   bytes_left = 0;
+-  b1 = (char *) buf;
+-  b2 = (char *) (wide_buf + leave);
+-  if (leave)
+-    memcpy (wide_buf, wide_buf + wsize - leave,
+-          sizeof (wchar_t) * (wsize - leave));
+-  s1 = size;
+-  s2 = (255 - leave) * sizeof (wchar_t);
+-  while (s1 > 0)
+-  {
+-
+-    iconv (ih_inp, NULL, NULL, NULL, NULL);
+-    if (iconv (ih_inp, &b1, &s1, &b2, &s2) == (size_t) -1)
++  mbb = buf;
++  wcb = wide_buf + leave;
++  if (leave != 0 && leave < wsize){
++    memcpy (tmpb, wide_buf + wsize - leave, sizeof (wchar_t) * leave);
++    memcpy (wide_buf, tmpb, sizeof (wchar_t) * leave);
++  }
++  mbs = size;
++  wsize = leave;
++  while (mbs > 0 && wsize < (WIDE_BUF_SIZE - 1))
++  {
++    mbcharsize = mbrtowc (wcb, mbb, mbs, NULL);
++    /* '\0's will not be copyed to wide_buf */
++    if (mbcharsize <= 0)
+     {
+-      if (errno == EINVAL)    /* incomplete sequence at end of buffer */
+-      {
++      if (mbcharsize == (size_t)-2)   /* incomplete sequence at end of buffer */
+       break;
+-      }
+       /* invalid multibyte sequence - should we ignore or insert
+          some character meaning 'invalid'? */
+-      b1++;
+-      s1--;
+-    }
+-  }
+-  bytes_left = s1;
+-  bytes_left_start = b1;
+-  wsize = (wchar_t *) b2 - wide_buf;
+-  wide_buf[wsize] = 0;
++      mbb++;
++      mbs--;
++      continue;
++    }
++    wcb++;
++    wsize++;
++    mbb += mbcharsize;
++    mbs -= mbcharsize;
++  }
++  bytes_left = mbs;
++  bytes_left_start = mbb;
++  wide_buf[wsize] = L'\0';
+ }
+ 
+ static wchar_t *
+-gulp (wchar_t *cp, wchar_t **ep)
++gulp (wchar_t **ep)
+ {
+   int leave;
++
+   if (!ep)
+     leave = 0;
+   else
+@@ -619,7 +595,7 @@ gulp (wchar_t *cp, wchar_t **ep)
+   read_buf (leave);
+   if (ep)
+     *ep = wide_buf;
+-  return wide_buf;
++  return wide_buf + leave;
+ }
+ 
+ static void
+@@ -627,12 +603,10 @@ kbsay ()
+ {
+   if (!ui.kbsay)
+     return;
+-  if (buf[0] == 8 || kbuf[0] == 127)
++  if (kbuf[0] == 8 || kbuf[0] == 127)
+   {
+     if ((ui.kbsay == 2) && (okbuflen != 0))
+-    {
+       okbuf[--okbuflen] = 0;
+-    }
+ 
+     /*tts_say(_("back")); */
+     return;
+@@ -644,10 +618,8 @@ kbsay ()
+   }
+ 
+   /* ui.kbsay == 2 -- handle word echo */
+-  if (okbuflen < sizeof (kbuf) - 1 && is_char (kbuf[0]))
+-  {
++  if (okbuflen < KBUF_SIZE - 1 && is_char (kbuf[0]))
+     okbuf[okbuflen++] = kbuf[0];
+-  }
+ }
+ 
+ #define MIN(a, b) ((a)>(b)? (b): (a))
+@@ -656,9 +628,7 @@ strwtol (wchar_t **p)
+ {
+   long t = 0;
+   while (iswdigit (**p))
+-  {
+     t = 10 * t + *(*p)++ - '0';
+-  }
+   return t;
+ }
+ 
+@@ -671,24 +641,33 @@ win_csi (wchar_t **pp)
+   int i;
+   int x;
+ 
++  /* last gulp could be just 1 char... */
++  
++  if (!**pp)
++  {
++    if (!gulp (NULL))
++      return;
++    *pp = wide_buf;
++  }
++
+   p = *pp;
++  
+   if (*p == '[')
+     p++;
++  
++  if (!*p && !(p = gulp (pp)))
++    return;
+   if (*p == '?')
+     p++;
+   while (!*p || iswdigit ((int) *p) || *p == ';')
+   {
+     if (!*p)
+     {
+-      if (!(p = gulp (p, pp)))
+-      {
++      if (!(p = gulp (pp)))
+       return;
+-      }
+     }
+     else
+-    {
+       p++;
+-    }
+   }
+   p = *pp;
+   if (*p == '[')
+@@ -697,9 +676,7 @@ win_csi (wchar_t **pp)
+     p++;
+   }
+   if (*p == '?')
+-  {
+     p++;
+-  }
+   (void) memset (&parm, 0, sizeof (int) * 16);
+   while (numparms < 16 && (*p == ';' || iswdigit ((int) *p)))
+   {
+@@ -709,12 +686,10 @@ win_csi (wchar_t **pp)
+     else
+       break;                  /* TODO: is this redundant? */
+   }
+-
+   *pp = p + 1;
+   if (ignore)
+-  {
+     return;
+-  }
++
+   switch (*p)
+   {
+   case '@':                   /* insert characters */
+@@ -727,9 +702,7 @@ win_csi (wchar_t **pp)
+   case 'A':                   /* move up */
+     win->cr -= PARM1;
+     if (win->cr < 0)
+-    {
+       win->cr = 0;
+-    }
+     break;
+ 
+   case 'B':                   /* move down */
+@@ -780,24 +753,18 @@ win_csi (wchar_t **pp)
+       (void) memset (win->row[win->cr] + win->cc, 0,
+                    CHARSIZE * (win->cols - win->cc));
+       for (i = win->cr + 1; i < win->rows; i++)
+-      {
+       (void) memset (win->row[i], 0, win->cols * CHARSIZE);
+-      }
+       break;
+ 
+     case 1:                   /* erase from start to cursor */
+       (void) memset (win->row[win->cr], 0, win->cc);
+       for (i = 0; i < win->cr; i++)
+-      {
+       (void) memset (win->row[i], 0, win->cols * CHARSIZE);
+-      }
+       break;
+ 
+     case 2:                   /* erase whole screen */
+       for (i = 0; i < win->rows; i++)
+-      {
+       (void) memset (win->row[i], 0, win->cols * CHARSIZE);
+-      }
+       break;
+     }
+     break;
+@@ -823,29 +790,19 @@ win_csi (wchar_t **pp)
+   case 'L':                   /* insert rows */
+     x = MIN (PARM1, win_scrollmax - win->cr);
+     for (i = win_scrollmax; i >= win->cr + x; i--)
+-    {
+       (void) memcpy (win->row[i], win->row[i - x], win->cols * CHARSIZE);
+-    }
+     for (i = win->cr; i < win->cr + x; i++)
+-    {
+       (void) memset (win->row[i], 0, win->cols * CHARSIZE);
+-    }
+     break;
+ 
+   case 'M':
+     x = MIN (PARM1, win_scrollmax - win->cr);
+     if (x + win->cr > win_scrollmax)
+-    {
+       x = win_scrollmax - win->cr;
+-    }
+     for (i = win->cr; i <= win_scrollmax - x; i++)
+-    {
+       (void) memcpy (win->row[i], win->row[i + x], win->cols * CHARSIZE);
+-    }
+     for (i = win_scrollmax - x + 1; i <= win_scrollmax; i++)
+-    {
+       (void) memset (win->row[i], 0, win->cols * CHARSIZE);
+-    }
+     break;
+ 
+   case 'P':                   /* delete characters */
+@@ -858,16 +815,12 @@ win_csi (wchar_t **pp)
+ 
+   case 'S':                   /* Scroll up */
+     for (i = 0; i < PARM1; i++)
+-    {
+       win_scrollup ();
+-    }
+     break;
+ 
+   case 'T':                   /* Scroll down */
+     for (i = 0; i < PARM1; i++)
+-    {
+       win_scrolldown ();;
+-    }
+     break;
+ 
+   case 'X':                   /* Erase characters */
+@@ -884,9 +837,7 @@ win_csi (wchar_t **pp)
+     {
+     case 3:
+       for (i = 0; i < win->cols; i++)
+-      {
+       win->tab[i] = 0;
+-      }
+       break;
+ 
+     case 0:
+@@ -956,13 +907,9 @@ win_csi (wchar_t **pp)
+   }
+ 
+   if (win->cr >= win->rows)
+-  {
+     win->cr = win->rows - 1;
+-  }
+   else if (win->cr < 0)
+-  {
+     win->cr = 0;
+-  }
+   if (win->cc >= win->cols - 1)
+     win->cc = win->cols - 1;
+   else if (win->cc < 0)
+@@ -979,20 +926,14 @@ win_addchr (wchar_t ch, int tflag)
+     win->carry++;
+   }
+   if (win->mode & 0x08)
+-  {
+     (void) memmove (win->row[win->cr] + win->cc + 1,
+                   win->row[win->cr] + win->cc,
+                   (win->cols - win->cc - 1) * CHARSIZE);
+-  }
+   win->row[win->cr][win->cc].attr = win->attr;
+   win->row[win->cr][win->cc++].wchar = ch;
+   if (tflag)
+-  {
+     if (ui.silent != 1)
+-    {
+       tts_addchr (ch);
+-    }
+-  }
+ }
+ 
+ wchar_t
+@@ -1012,12 +953,8 @@ bol (int cr, int cc)
+ 
+   rptr = win->row[cr];
+   for (i = 0; i < cc; i++)
+-  {
+     if (y_isblank (rptr[i].wchar))
+-    {
+       return (0);
+-    }
+-  }
+ 
+   return (1);
+ }
+@@ -1032,12 +969,8 @@ eol (int cr, int cc)
+ 
+   rptr = win->row[cr];
+   for (i = cc + 1; i < win->cols; i++)
+-  {
+     if (y_isblank (rptr[i].wchar))
+-    {
+       return (0);
+-    }
+-  }
+ 
+   return (1);
+ }
+@@ -1053,16 +986,10 @@ firstword (int cr, int cc)
+   rptr = win->row[cr];
+   i = cc;
+   while (i && !y_isblank (rptr[i].wchar))
+-  {
+     i--;
+-  }
+   for (; i; i--)
+-  {
+     if (!y_isblank (rptr[i].wchar))
+-    {
+       return (0);
+-    }
+-  }
+ 
+   return (1);
+ }
+@@ -1077,20 +1004,12 @@ lastword (int cr, int cc)
+ 
+   rptr = win->row[cr];
+   if (y_isblank (rptr[i].wchar))
+-  {
+     i++;
+-  }
+   while (i < win->cols && !y_isblank (rptr[i].wchar))
+-  {
+     i++;
+-  }
+   while (i < win->cols)
+-  {
+     if (!y_isblank (rptr[i++].wchar))
+-    {
+       return (0);
+-    }
+-  }
+ 
+   return (1);
+ }
+@@ -1105,14 +1024,13 @@ getoutput ()
+   static int stathit = 0, oldoflag = 0;
+ 
+   read_buf (0);
++
+ #ifdef TERMTEST
+   (void) printf ("size=%d buf=%s\n", size, buf);
+ #endif
+-
++  
+   if (!size)
+-  {
+     finish (0);
+-  }
+   p = wide_buf;
+ 
+   while (p - wide_buf < wsize)
+@@ -1126,6 +1044,7 @@ getoutput ()
+     case 8:
+       if (win->cc)
+       win->cc--;
++
+       else if (win->carry && win->cr)
+       {
+       win->cr--;
+@@ -1138,9 +1057,7 @@ getoutput ()
+       ui_saychar (win->cr, win->cc);
+       }
+       if (tts.outlen)
+-      {
+       tts.outlen--;
+-      }
+       break;
+ 
+     case 9:
+@@ -1153,9 +1070,7 @@ getoutput ()
+       }
+       }
+       if (i == win->cols)
+-      {
+       win->cc = i - 1;
+-      }
+       break;
+ 
+     case 10:
+@@ -1173,15 +1088,13 @@ getoutput ()
+       break;                  /* may need to change in the future */
+ 
+     case 27:
+-      if (!*p && !(p = gulp (p, NULL)))
+-      {
++      if (!*p && !(p = gulp (NULL)))
+       return;
+-      }
+       switch (*p++)
+       {
+       case 'D':
+       win_lf ();
+-      break;
++        break;
+       case 'E':
+       break;                  /* FIXME -- new line */
+       case 'H':
+@@ -1212,13 +1125,9 @@ getoutput ()
+       if (special)
+       {
+       if (ch == '<')
+-      {
+         speaking = 0;         /* hack for medievia.com */
+-      }
+       else if (ch == '>')
+-      {
+         speaking = 1;
+-      }
+       }
+ #endif
+       if (ch == kbuf[0] && win->cr == oldcr && win->cc == oldcc && kbuflen)
+@@ -1229,19 +1138,13 @@ getoutput ()
+       (void) memmove (kbuf, kbuf + 1, (--kbuflen) * sizeof (int));
+       }
+       else
+-      {
+       win_addchr (ch, speaking && (!special || !win->cr));
+-      }
+       chr = 1;
+     }
+     if (!chr && ch != 8 && (stathit == 0 || ch < '0' || ch > '9'))
+-    {
+       tts_flush ();
+-    }
+     else
+-    {
+       chr = 0;
+-    }
+     if ((!win->cc && win->cr > win->rows - 3) || win->cr == win->rows - 1)
+     {
+       stathit = win->cr;
+@@ -1253,10 +1156,17 @@ getoutput ()
+       tts.oflag = oldoflag;
+     }
+   }
+-  if (ch == 13 || ch == 10 || ch == 32)
++  /* If last key was cursor left or cursor right just say char at cursor */
++  if (kbuf[0] == 0x1b5b43 || kbuf[0] == 0x1b5b44)
+   {
+-    tts_flush ();
++    ui_saychar (win->cr, win->cc);
++    oldcr = win->cr;
++    oldcc = win->cc;
++    oldch = win->row[win->cr][win->cc].wchar;
++    return;
+   }
++  if (ch == 13 || ch == 10 || ch == 32)
++    tts_flush ();
+   if (size > 1)
+   {
+     if (!readable (master, 0))
+@@ -1265,9 +1175,7 @@ getoutput ()
+       return;
+   }
+   else if (ch == 32 || ch == 13)
+-  {
+     tts_flush ();
+-  }
+   if (tts.oflag || kbuf[0] == 13 || kbuf[0] == 3 || ui.silent)
+   {
+     tts.oflag = stathit = 0;
+@@ -1288,25 +1196,18 @@ getoutput ()
+     case 1:                   /* cursor moved right one character */
+       if ((realchar (win->row[win->cr][win->cc - 1].wchar) == kbuf[0] &&
+          realchar (oldch) != kbuf[0]) ||
+-        ((y_isblank (oldch) && kbuf[0] == 32)))
+-      {
++                ((y_isblank (oldch) && kbuf[0] == 32)))
+       break;
+-      }
+-      if (kbuf[0] == 0x1b5b43 ||
+-        ((ui.curtrack == 2) && (ui.kbsay != 2 || is_separator (kbuf[0]))))
+-      {
++      if (ui.curtrack == 2 && (ui.kbsay != 2 || is_separator (kbuf[0])))
+       ui_saychar (win->cr, win->cc);
+-      }
+       break;
+ 
+     case 0:
+       break;
+ 
+     case -1:
+-      if (kbuf[0] == 0x1b5b44 || ui.curtrack == 2)
+-      {
++      if (ui.curtrack == 2)
+       ui_saychar (win->cr, win->cc);
+-      }
+       break;
+ 
+     default:
+@@ -1315,18 +1216,11 @@ getoutput ()
+       if (eol (win->cr, win->cc))
+         ui_saychar (win->cr, win->cc);
+       else
+-      {
+         ui_sayword (win->cr, cblank (win->cr, win->cc) ?
+                     win->cc + 1 : win->cc);
+-      }
+       }
+     }
+   }
+-  else if ((kbuf[0] == 0x1b5b43 && bol (win->cr, win->cc)) ||
+-         (kbuf[0] == 0x1b5b44 && eol (win->cr, win->cc)))
+-  {
+-    ui_saychar (win->cr, win->cc);
+-  }
+   else
+   {
+     switch (win->cr - oldcr)
+@@ -1337,24 +1231,18 @@ getoutput ()
+       ui_sayline (win->cr, 1);
+       break;
+       }
+-      if (win->cc == 0 && (oldcr == win->cols - 1 || kbuf[0] == 0x1b5b43))
++      if (win->cc == 0 && oldcr == win->cols - 1)
+       {
+       ui_saychar (win->cr, win->cc);
+       break;
+       }
+       if (ui.curtrack < 2)
+-      {
+       break;
+-      }
+       if (win->cc && bol (win->cr, win->cc) && lastword (oldcr, oldcc)
+         && oldcc)
+-      {
+       ui_sayword (win->cr, win->cc);
+-      }
+       else
+-      {
+       ui_sayline (win->cr, 1);
+-      }
+       break;
+     case -1:                  /* cursor moved up a line */
+       if (kbuf[0] == 0x1b5b41)
+@@ -1364,17 +1252,13 @@ getoutput ()
+       }
+       if (ui.curtrack < 2)
+       break;
+-      if (win->cc == win->cols - 1 && (oldcr == 0 || kbuf[0] == 0x1b5b44))
+-      {
++      if (win->cc == win->cols - 1 && oldcr == 0)
+       ui_saychar (win->cr, win->cc);
+-      }
+       else if (lastword (win->cr, win->cc) &&
+              !firstword (win->cr, win->cc) &&
+              (!win->cc || cblank (win->cr, win->cc - 1)) &&
+              firstword (oldcr, oldcc))
+-      {
+       ui_sayword (win->cr, win->cc);
+-      }
+       else
+       ui_sayline (win->cr, 1);
+       break;
+@@ -1429,18 +1313,14 @@ parent ()
+       }
+     }
+     if (FD_ISSET (0, &rf))
+-    {
+       getinput ();
+-    }
+     if (FD_ISSET (master, &rf))
+     {
+       getoutput ();
+-      kbuflen = 0;
++      kbuf[0] = kbuflen = 0;
+     }
+     if (FD_ISSET (tts.fd, &rf))
+-    {
+       get_tts_input ();
+-    }
+   }
+ }
+ 
+@@ -1470,25 +1350,12 @@ main (int argc, char *argv[])
+   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+   textdomain (GETTEXT_PACKAGE);
+   strcpy (charmap, nl_langinfo (CODESET));
+-  if (!strcmp (charmap, "ANSI_X3.4-1968"))
+-    strcpy (charmap, "UTF-8");
+-
+-  ih_inp = iconv_open ("WCHAR_T", charmap);
+-  if (ih_inp == (iconv_t) - 1)
+-  {
+-    fprintf (stderr, "Codeset %s not supported\n", charmap);
+-    exit (1);
+-  }
+-
+-
+ #endif
+ 
+   if (argv[0][0] == '-')
+     shell = 1;
+   if (isatty (0))
+-  {
+     (void) ioctl (0, TIOCGWINSZ, &winsz);
+-  }
+   if (!winsz.ws_row)
+   {
+     winsz.ws_row = 25;
+@@ -1529,9 +1396,7 @@ main (int argc, char *argv[])
+     }
+   }
+   if (argv[optind])
+-  {
+     subprog = argv + optind;
+-  }
+   readconf ();
+ 
+ #if 0                         /* this doesn't work */
+@@ -1539,9 +1404,7 @@ main (int argc, char *argv[])
+   {
+     cp = usershell + strlen (usershell) - 1;
+     while (*cp && *cp != '/')
+-    {
+       cp--;
+-    }
+     cp++;
+     argv[0] = cp;
+     (void) execv (usershell, argv);
+@@ -1620,9 +1483,7 @@ w_speak (wchar_t *ibuf, int len)
+     {
+       olen -= nc;
+       if (olen)
+-      {
+       tts_out_w (wstart, olen);
+-      }
+       olen = 0;
+       while (i < len1 && ibuf[i + 1] == lc)
+       {
+@@ -1641,22 +1502,16 @@ w_speak (wchar_t *ibuf, int len)
+       wstart = ibuf + i;
+       olen++;
+       if (ibuf[i] != lc)
+-      {
+       nc = 0;
+-      }
+       if (!iswalnum (ibuf[i]) &&
+         ibuf[i] != 32 && ibuf[i] != '=' && ibuf[i] >= 0)
+-      {
+       lc = ibuf[i];
+-      }
+       else
+       lc = 0;
+     }
+   }
+   if (olen)
+-  {
+     tts_out_w (wstart, olen);
+-  }
+ }
+ 
+ #if 0
+@@ -1678,9 +1533,7 @@ speak (char *ibuf, int len)
+     {
+       olen -= nc;
+       if (olen)
+-      {
+       tts_out ((unsigned char *) obuf, olen);
+-      }
+       olen = 0;
+       while (i < len1 && ibuf[i + 1] == lc)
+       {
+@@ -1697,14 +1550,10 @@ speak (char *ibuf, int len)
+     {
+       obuf[olen++] = ibuf[i];
+       if (ibuf[i] != lc)
+-      {
+       nc = 0;
+-      }
+       if (!isalpha ((int) ibuf[i]) && !isdigit ((int) ibuf[i]) &&
+         ibuf[i] != 32 && ibuf[i] != '=' && ibuf[i] >= 0)
+-      {
+       lc = ibuf[i];
+-      }
+       else
+       lc = 0;
+       if (olen > 250 && !nc)
+@@ -1715,8 +1564,6 @@ speak (char *ibuf, int len)
+     }
+   }
+   if (olen)
+-  {
+     tts_out ((unsigned char *) obuf, olen);
+-  }
+ }
+ #endif
Index: pkgsrc/audio/yasr/patches/patch-yasr_tts.c
diff -u /dev/null pkgsrc/audio/yasr/patches/patch-yasr_tts.c:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/patches/patch-yasr_tts.c  Mon Mar 11 07:52:38 2024
@@ -0,0 +1,373 @@
+$NetBSD: patch-yasr_tts.c,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+Remove non-portable use of WCHAR_T in iconv code.
+Fix comment's alignment.
+
+--- yasr/tts.c.orig    2023-04-08 21:22:57.000000000 +0000
++++ yasr/tts.c
+@@ -53,7 +53,8 @@ static Tts_synth synth[] = {
+   {NULL, NULL, "CANCEL SELF\r\n", NULL, NULL, FALSE, "", "quit\r\n"},
+ };
+ 
+-static char *dict[256];
++#define DICT_SIZE 256
++static char *dict[DICT_SIZE];
+ static int tts_flushed = 0;
+ 
+ 
+@@ -67,9 +68,7 @@ dict_read (char *buf)
+   {
+     c = strtol (buf, &p, 0);
+     if (c > 255)
+-    {
+       return (1);
+-    }
+     p++;
+   }
+   else
+@@ -88,20 +87,14 @@ dict_write (FILE * fp)
+ {
+   int i;
+ 
+-  for (i = 0; i < 256; i++)
+-  {
++  for (i = 0; i < DICT_SIZE; i++)
+     if (dict[i])
+     {
+       if (i > 31 && i < 127 && i != 35 && i != 91)
+-      {
+       (void) fprintf (fp, "%c=%s\n", i, dict[i]);
+-      }
+       else
+-      {
+       (void) fprintf (fp, "0x%.2x=%s\n", i, dict[i]);
+-      }
+     }
+-  }
+ }
+ 
+ 
+@@ -111,9 +104,7 @@ void
+ tts_flush ()
+ {
+   if (tts.outlen)
+-  {
+     w_speak (tts.buf, tts.outlen);
+-  }
+ 
+   tts.outlen = 0;
+ 
+@@ -128,9 +119,7 @@ tts_wait (int usecs)
+   if (usecs != -1 && !readable (tts.fd, usecs))
+     return;
+   while (readable (tts.fd, 0))
+-  {
+     read (tts.fd, buf, sizeof (buf));
+-  }
+ }
+ #endif
+ 
+@@ -140,9 +129,7 @@ tts_silence ()
+   char tmp[1] = { 0 };
+ 
+   if (tts_flushed)
+-  {
+     return;
+-  }
+   tts.obufhead = tts.obuftail = tts.flood = 0;
+ #ifdef ENABLE_SPEECHD
+   if (tts.synth == TTS_SPEECHD)
+@@ -200,17 +187,13 @@ tts_obufout (int x)
+   int oldoflag;
+ 
+   if (!tts.flood)
+-  {
+     opt_queue_empty (2);
+-  }
+   oldoflag = tts.oflag;
+   while (tts.obufhead < tts.obuftail)
+   {
+     len = strlen (tts.obuf + tts.obufhead);
+     if (len > 1024)
+-    {
+       len = 1024;
+-    }
+     len2 = write (tts.fd, tts.obuf + tts.obufhead, len);
+ #ifdef TTSLOG
+     (void) write (ofd, tts.obuf + tts.obufhead, len2);
+@@ -225,9 +208,7 @@ tts_obufout (int x)
+       return;
+     }
+     while (tts.obufhead < tts.obuftail && !tts.obuf[tts.obufhead])
+-    {
+       tts.obufhead++;
+-    }
+   }
+   tts.flood = 0;
+   tts.oflag = oldoflag;
+@@ -242,9 +223,7 @@ tts_addbuf (char *buf, int len, int len2
+ 
+   tts.flood = 1;
+   if (len2 == -1)
+-  {
+     ptr = buf;
+-  }
+   else
+   {
+     ptr = buf + len2;
+@@ -258,9 +237,7 @@ tts_addbuf (char *buf, int len, int len2
+       tts.obuf = realloc (tts.obuf, tts.obuflen);
+     }
+     else
+-    {
+       tts_obufpack ();
+-    }
+   }
+   (void) memcpy (tts.obuf + tts.obuftail, ptr, len);
+   tts.obuftail += len;
+@@ -276,13 +253,9 @@ tts_send (char *buf, int len)
+   int len2;
+ 
+   if (!len)
+-  {
+     return;
+-  }
+   if (tts_flushed)
+-  {
+     tts_flushed = 0;
+-  }
+ #ifndef SILENT
+   if (!tts.flood)
+   {
+@@ -293,9 +266,7 @@ tts_send (char *buf, int len)
+ #endif
+ 
+     if (len2 < len)
+-    {
+       tts_addbuf (buf, len, len2);
+-    }
+   }
+   else
+     tts_addbuf (buf, len, 0);
+@@ -315,10 +286,8 @@ unspeakable (unsigned char ch)
+   if (ch < 32)
+     return 1;
+   while (*p)
+-  {
+     if (*p++ == ch)
+       return 1;
+-  }
+   return (0);
+ }
+ 
+@@ -412,7 +381,6 @@ tts_out_w (wchar_t *buf, int len)
+   char *p;
+   int i;
+   int xml = 0;                        /* what's this? */
+-
+   if (!len)
+     return;
+   if (tts.synth == TTS_SPEECHD)
+@@ -420,9 +388,7 @@ tts_out_w (wchar_t *buf, int len)
+     while (len > 0)
+     {
+       if (*buf < 0x80)
+-      {
+       obuf[obo++] = *buf;
+-      }
+       else if (*buf < 0x800)
+       {
+       obuf[obo++] = 0xc0 | (*buf >> 6);
+@@ -514,9 +480,7 @@ tts_out_w (wchar_t *buf, int len)
+       }
+     }
+     else
+-    {
+       obuf[obo++] = *p;
+-    }
+     p++;
+   }
+   tts_send (obuf, obo);
+@@ -619,9 +583,7 @@ tts_out (unsigned char *buf, int len)
+       }
+     }
+     else
+-    {
+       obuf[obo++] = *p;
+-    }
+     p++;
+   }
+   tts_send (obuf, obo);
+@@ -656,9 +618,7 @@ tts_saychar (wchar_t ch)
+   char buf[8];
+ 
+   if (!ch)
+-  {
+     ch = 32;
+-  }
+   if (tts.synth == TTS_SPEECHD)
+   {
+ #ifdef ENABLE_SPEECHD
+@@ -674,21 +634,22 @@ tts_saychar (wchar_t ch)
+       tts_printf_ll ("CHAR %c\r\n", ch);
+ #else
+     else if (ch < 0x80)
+-    {
+       tts_printf_ll ("CHAR %c\r\n", ch);
+-    }
+     else
+     {
+-      char buf[8], *cin, *cout;
++      char tmpbuf[MB_CUR_MAX], buf[MB_CUR_MAX], *cin, *cout;
+       size_t l1, l2;
+       iconv_t cd;
+-      cd = iconv_open ("UTF-8", "WCHAR_T");
++      cd = iconv_open ("UTF-8", nl_langinfo (CODESET));
+       if (cd == (iconv_t) - 1)
+       return;
+-      l1 = sizeof (wchar_t);
+-      l2 = 7;
+-      cin = (char *) &ch;
++      l1 = wctomb (tmpbuf, ch);
++      if (l1 == -1)
++      return;
++      l2 = sizeof (buf) - 1;
++      cin = tmpbuf;
+       cout = buf;
++      
+       iconv (cd, &cin, &l1, &cout, &l2);
+       iconv_close (cd);
+       *cout = 0;
+@@ -704,7 +665,8 @@ tts_saychar (wchar_t ch)
+     return;
+   }
+   if (!synth[tts.synth].charoff)
+-  {                           /* assume on string does everything */
++  {
++    /* assume on string does everything */
+     (void) sprintf (ttsbuf, synth[tts.synth].charon, ch);
+     tts_send (ttsbuf, strlen (ttsbuf));
+     return;
+@@ -725,9 +687,7 @@ tts_saychar (wchar_t ch)
+   ttsbuf[0] = ch;
+   tts_send (ttsbuf, 1);
+   if (synth[tts.synth].saychar_needs_flush)
+-  {
+     tts_send (synth[tts.synth].say + 2, strlen (synth[tts.synth].say) - 2);
+-  }
+   while (j)
+   {
+     j -= 2;
+@@ -887,9 +847,7 @@ tts_init (int first_call)
+ #ifdef TTSLOG
+   ofd = open ("tts.log", O_WRONLY | O_CREAT);
+   if (ofd == -1)
+-  {
+     perror ("open");
+-  }
+ #endif
+ 
+ #ifdef ENABLE_SPEECHD
+@@ -920,17 +878,11 @@ tts_init (int first_call)
+   else if (tts.port[0] != '|')
+   {
+     if (tts.synth == TTS_DECTALK)
+-    {
+       mode = O_NOCTTY | O_RDWR;
+-    }
+     else if (tts.synth == TTS_EMACSPEAK_SERVER)
+-    {
+       mode = O_WRONLY;
+-    }
+     if (first_call)
+-    {
+       tts.fd = open (portname, mode);
+-    }
+     if (tts.fd == -1)
+     {
+       perror ("tts");
+@@ -958,21 +910,15 @@ tts_init (int first_call)
+     (void) strcpy (buf, tts.port + 1);
+     arg[i = 0] = strtok (buf, " ");
+     while (i < 7)
+-    {
+       if (!(arg[++i] = strtok (NULL, " ")))
+-      {
+       break;
+-      }
+-    }
+ 
+     if (first_call)
+-    {
+       if (openpty (&tts.fd, &tts.fd_slave, NULL, NULL, NULL) == -1)
+       {
+       perror ("openpty");
+       exit (1);
+       }
+-    }
+ 
+     if (!(tts.pid = fork ()))
+     {
+@@ -989,9 +935,7 @@ tts_init (int first_call)
+     }
+     (void) usleep (10000);
+     if (tts.pid == -1)
+-    {
+       perror ("forkpty");
+-    }
+   }
+   if (tts.synth == TTS_SPEECHD)
+   {
+@@ -1043,10 +987,8 @@ void
+ tts_addchr (wchar_t ch)
+ {
+   tts.buf[tts.outlen++] = ch;
+-  if (tts.outlen > 250)
+-  {
++  if (tts.outlen > TTS_BUF_SIZE)
+     tts_flush ();
+-  }
+ }
+ 
+ 
+@@ -1065,9 +1007,7 @@ tts_initsynth (int *argp)
+     }
+   }
+   if (!ui.silent)
+-  {
+     tts_say (_("Synthesizer reinitialized."));
+-  }
+ }
+ 
+ 
+@@ -1078,9 +1018,7 @@ tts_reinit (int *argp)
+   int pid = tts.pid;
+ 
+   if (pid == 0)
+-  {
+     return;
+-  }
+ 
+   tts.reinit = 1;             /* Start reinit */
+ 
+@@ -1090,20 +1028,14 @@ tts_reinit (int *argp)
+   if (kill (pid, SIGTERM) != 0)
+   {
+     if (errno == ESRCH)
+-    {
+       tts_reinit2 ();
+-    }
+     else
+-    {
+       kill (pid, SIGKILL);
+-    }
+   }
+ 
+   /* wait init completion (tts.fd must be available) */
+   while (tts.reinit)
+-  {
+     usleep (100000);
+-  }
+ }
+ 
+ 
Index: pkgsrc/audio/yasr/patches/patch-yasr_yasr.h
diff -u /dev/null pkgsrc/audio/yasr/patches/patch-yasr_yasr.h:1.1
--- /dev/null   Mon Mar 11 07:52:38 2024
+++ pkgsrc/audio/yasr/patches/patch-yasr_yasr.h Mon Mar 11 07:52:38 2024
@@ -0,0 +1,39 @@
+$NetBSD: patch-yasr_yasr.h,v 1.1 2024/03/11 07:52:38 wiz Exp $
+
+Remove size of array declarations defined elsewhere
+
+--- yasr/yasr.h.orig   2023-04-08 21:22:57.000000000 +0000
++++ yasr/yasr.h
+@@ -128,6 +128,7 @@ enum mpunct
+ 
+ #define OPT_STR_SIZE 256
+ 
++#define TTS_BUF_SIZE 256
+ typedef struct Tts Tts;
+ struct Tts
+ {
+@@ -140,7 +141,7 @@ struct Tts
+   int obufhead, obuflen, obuftail;
+   int oflag;                  /* set to 1 every time tts_send is called */
+   int outlen;
+-  wchar_t buf[256];
++  wchar_t buf[TTS_BUF_SIZE];
+   int synth;
+   pid_t pid;
+   char port[OPT_STR_SIZE];
+@@ -304,11 +305,11 @@ extern int cl_synthport;
+ extern Opt opt[];
+ extern int synthopt;
+ extern char *conffile;
+-extern unsigned char buf[256];
+-extern int kbuf[100];
++extern char buf[];
++extern int kbuf[];
+ extern int kbuflen;
+-extern char usershell[OPT_STR_SIZE];
+-extern char ttsbuf[80];
++extern char usershell[];
++extern char ttsbuf[];
+ extern Voices voices;
+ extern int special;
+ extern char charmap[];



Home | Main Index | Thread Index | Old Index