#if M_RCSID
#ifndef lint
static char rcsID[] =
"$Header: /team/ps/sun_xcurses/archive/local_changes/xcurses/src/lib/"
"libxcurses/src/libc/xcurses/rcs/wacs.c 1.6 1998/05/04 21:16:22 "
"cbates Exp $";
#endif
#endif
#include <private.h>
#include <limits.h>
const cchar_t __WACS_VLINE =
{ 1, 1, 0, WA_ALTCHARSET, L"x" };
const cchar_t __WACS_HLINE =
{ 1, 1, 0, WA_ALTCHARSET, L"q" };
const cchar_t __WACS_ULCORNER =
{ 1, 1, 0, WA_ALTCHARSET, L"l" };
const cchar_t __WACS_URCORNER =
{ 1, 1, 0, WA_ALTCHARSET, L"k" };
const cchar_t __WACS_LLCORNER =
{ 1, 1, 0, WA_ALTCHARSET, L"m" };
const cchar_t __WACS_LRCORNER =
{ 1, 1, 0, WA_ALTCHARSET, L"j" };
const cchar_t __WACS_RTEE =
{ 1, 1, 0, WA_ALTCHARSET, L"u" };
const cchar_t __WACS_LTEE =
{ 1, 1, 0, WA_ALTCHARSET, L"t" };
const cchar_t __WACS_BTEE =
{ 1, 1, 0, WA_ALTCHARSET, L"v" };
const cchar_t __WACS_TTEE =
{ 1, 1, 0, WA_ALTCHARSET, L"w" };
const cchar_t __WACS_PLUS =
{ 1, 1, 0, WA_ALTCHARSET, L"n" };
const cchar_t __WACS_S1 =
{ 1, 1, 0, WA_ALTCHARSET, L"o" };
const cchar_t __WACS_S9 =
{ 1, 1, 0, WA_ALTCHARSET, L"s" };
const cchar_t __WACS_DIAMOND =
{ 1, 1, 0, WA_ALTCHARSET, L"`" };
const cchar_t __WACS_CKBOARD =
{ 1, 1, 0, WA_ALTCHARSET, L"a" };
const cchar_t __WACS_DEGREE =
{ 1, 1, 0, WA_ALTCHARSET, L"f" };
const cchar_t __WACS_PLMINUS =
{ 1, 1, 0, WA_ALTCHARSET, L"g" };
const cchar_t __WACS_BULLET =
{ 1, 1, 0, WA_ALTCHARSET, L"~" };
const cchar_t __WACS_LARROW =
{ 1, 1, 0, WA_ALTCHARSET, L"," };
const cchar_t __WACS_RARROW =
{ 1, 1, 0, WA_ALTCHARSET, L"+" };
const cchar_t __WACS_DARROW =
{ 1, 1, 0, WA_ALTCHARSET, L"." };
const cchar_t __WACS_UARROW =
{ 1, 1, 0, WA_ALTCHARSET, L"-" };
const cchar_t __WACS_BOARD =
{ 1, 1, 0, WA_ALTCHARSET, L"h" };
const cchar_t __WACS_LANTERN =
{ 1, 1, 0, WA_ALTCHARSET, L"i" };
const cchar_t __WACS_BLOCK =
{ 1, 1, 0, WA_ALTCHARSET, L"0" };
static const unsigned char acs_defaults[] =
"x|q-l+k+m+j+u+t+v+w+n+o-s_`+a:f\'g#~o,<+>.v-^h#i#0#";
int
__m_acs_cc(chtype acs, cchar_t *cc)
{
int i;
unsigned char *acsc;
chtype vacs;
vacs = acs & A_CHARTEXT;
if (UCHAR_MAX < vacs ||
__m_chtype_cc(acs, cc) == ERR)
return (-1);
if (!(acs & A_ALTCHARSET))
return (0);
if (acs_chars == NULL) {
acsc = (unsigned char *) acs_defaults;
acs &= ~A_ALTCHARSET;
} else {
acsc = (unsigned char *) acs_chars;
}
for (i = 0; acsc[i] != '\0'; i += 2) {
if (acsc[i] == vacs) {
(void) __m_chtype_cc((chtype)
((acs & A_ATTRIBUTES) | acsc[i+1]), cc);
break;
}
}
return (0);
}
int
__m_wacs_cc(const cchar_t *acs, cchar_t *cc)
{
int i;
unsigned char *acsc, mb[MB_LEN_MAX];
int clearit = 0;
*cc = *acs;
cc->_f = 1;
if (!(acs->_at & WA_ALTCHARSET) ||
acs->_n != 1 || wctomb((char *) mb, acs->_wc[0]) != 1)
return (0);
if (acs_chars == NULL) {
acsc = (unsigned char *) acs_defaults;
clearit = 1;
} else {
acsc = (unsigned char *) acs_chars;
}
for (i = 0; acsc[i] != '\0'; i += 2) {
if (acsc[i] == *mb) {
(void) mbtowc(cc->_wc, (char *) &acsc[i+1], 1);
break;
}
}
return (clearit);
}