/* JNetHack Copyright */
/* (c) Issei Numata 1994-2000 */
-/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2020 */
+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2021 */
/* JNetHack may be freely redistributed. See license for details. */
#include <stdio.h>
#endif
int xputc(CHAR_P);
-int xputc2(int, int);
+int xputc2(unsigned char *);
#define EUC 0
/* print out 2 bytes character to tty (no conversion) */
static void
-tty_cputc2(unsigned int c, unsigned int c2)
+tty_cputc2(unsigned char *str)
{
#if defined(NO_TERMS) && (defined(MSDOS) || defined(WIN32CON))
- xputc2(c, c2);
+ xputc2(str);
#else
- putchar(c);
- putchar(c2);
+ while(*str){
+ putchar(*str++);
+ }
#endif
}
/* print out 2 bytes character to tty (IC->output_kcode) */
static void
-tty_jputc2(unsigned int c, unsigned int c2)
+tty_jputc2(unsigned char *str)
{
#if defined(NO_TERMS) && (defined(MSDOS) || defined(WIN32CON))
- xputc2(c, c2);
+ xputc2(str);
#else
- putchar(c);
- putchar(c2);
+ while(*str){
+ putchar(*str++);
+ }
#endif
}
unsigned int c,
unsigned int *buf,
void (*f1)(unsigned int),
- void (*f2)(unsigned int, unsigned int))
+ void (*f2)(unsigned char *))
{
static unsigned int ibuf[2];
unsigned int c1, c2;
unsigned char uc[2];
unsigned char *p;
#endif
+ unsigned char f2buf[16];
if(!buf) buf = ibuf;
if(!f1) f1 = tty_jputc;
if(IC == output_kcode)
#ifdef POSIX_ICONV
- f2(c1, c2);
+ {
+ f2buf[0] = c1;
+ f2buf[1] = c2;
+ f2buf[2] = '\0';
+ f2(f2buf);
+ }
else if (output_dsc) {
char buf_in[2], buf_out[16];
char *src = buf_in, *dst=buf_out;
*(buf_in + 1) = c2;
if (iconv(output_dsc, &src,
&src_len, &dst, &dst_len) == (size_t)-1) {
- f2(c1, c2);
+ f2buf[0] = c1;
+ f2buf[1] = c2;
+ f2buf[2] = '\0';
+ f2(f2buf);
} else {
*dst = '\0';
dst = buf_out;
break;
}
}
- f2(c1, c2);
+ f2buf[0] = c1;
+ f2buf[1] = c2;
+ f2buf[2] = '\0';
+ f2(f2buf);
#endif
buf[0] = 0;
return 2;
unsigned int c,
unsigned int *buf,
void (*f1)(unsigned int),
- void (*f2)(unsigned int, unsigned int))
+ void (*f2)(unsigned char *))
{
static unsigned int ibuf[2];
+ unsigned char f2buf[16];
if(!buf) buf = ibuf;
if(!f1) f1 = tty_cputc;
return 0;
}
else if(buf[0]){
- f2(buf[1], c);
+ f2buf[0] = buf[1];
+ f2buf[1] = c;
+ f2buf[2] = '\0';
+ f2(f2buf);
buf[0] = 0;
return 2;
}