+#ifdef WINDOWS
#include <windows.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "putty.h"
+#include "terminal.h"
#include "misc.h"
/* Character conversion arrays; they are usually taken from windows,
}
}
-void lpage_send(int codepage, char *buf, int len, int interactive)
+void lpage_send(void *ldisc, int codepage, char *buf, int len, int interactive)
{
static wchar_t *widebuffer = 0;
static int widesize = 0;
int wclen;
if (codepage < 0) {
- ldisc_send(buf, len, interactive);
+ ldisc_send(ldisc, buf, len, interactive);
return;
}
widesize = len * 2;
}
- wclen =
- MultiByteToWideChar(codepage, 0, buf, len, widebuffer, widesize);
- luni_send(widebuffer, wclen, interactive);
+ wclen = mb_to_wc(codepage, 0, buf, len, widebuffer, widesize);
+ luni_send(ldisc, widebuffer, wclen, interactive);
}
-void luni_send(wchar_t * widebuf, int len, int interactive)
+void luni_send(void *ldisc, wchar_t * widebuf, int len, int interactive)
{
static char *linebuffer = 0;
static int linesize = 0;
- int ratio = (in_utf)?3:1;
+ int ratio = (in_utf(term))?3:1;
int i;
char *p;
linesize = len * ratio * 2;
}
- if (in_utf) {
+ if (in_utf(term)) {
/* UTF is a simple algorithm */
for (p = linebuffer, i = 0; i < len; i++) {
wchar_t ch = widebuf[i];
}
} else if (!uni_tbl) {
int rv;
- rv = WideCharToMultiByte(line_codepage, 0, widebuf, len,
- linebuffer, linesize, NULL, NULL);
+ rv = wc_to_mb(line_codepage, 0, widebuf, len,
+ linebuffer, linesize, NULL, NULL);
if (rv >= 0)
p = linebuffer + rv;
else
}
}
if (p > linebuffer)
- ldisc_send(linebuffer, p - linebuffer, interactive);
+ ldisc_send(ldisc, linebuffer, p - linebuffer, interactive);
}
wchar_t xlat_uskbd2cyrllic(int ch)
for (i = 0; i < max; i++) {
tbuf[0] = i;
- if (MultiByteToWideChar(codepage, flg, tbuf, 1, unitab + i, 1)
+ if (mb_to_wc(codepage, flg, tbuf, 1, unitab + i, 1)
!= 1)
unitab[i] = 0xFFFD;
}