- replace netcode.obj by base64.obj
- add lib/libcrash.obj
WEBVIEW:
- use custom utf8rutodos() if iconv() failed (the case for forum.old-dos.ru)

git-svn-id: svn://kolibrios.org@9304 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2021-11-24 10:52:23 +00:00
parent a3c4521c77
commit 3b314ebaf8
6 changed files with 22 additions and 24 deletions

View File

@ -39,7 +39,6 @@ img_files = {
{"FONTS/TAHOMA.KF", "common/fonts/tahoma.kf"},
{"LIB/ICONV.OBJ", "common/lib/iconv.obj"},
{"LIB/KMENU.OBJ", "common/lib/kmenu.obj"},
{"LIB/NETCODE.OBJ", "common/lib/netcode.obj"},
{"LIB/PIXLIB.OBJ", "common/lib/pixlib.obj"},
{"MEDIA/IMGF/IMGF", "common/media/ImgF/ImgF"},
{"MEDIA/IMGF/CEDG.OBJ", "common/media/ImgF/cEdg.obj"},
@ -486,6 +485,7 @@ tup.append_table(img_files, {
{"LIB/CNV_PNG.OBJ", PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
{"LIB/DLL.OBJ", PROGS .. "/develop/libraries/dll/dll.obj"},
{"LIB/HTTP.OBJ", PROGS .. "/develop/libraries/http/http.obj"},
{"LIB/LIBCRASH.OBJ", PROGS .. "/develop/libraries/libcrash/libcrash.obj"},
{"LIB/LIBGFX.OBJ", PROGS .. "/develop/libraries/libs-dev/libgfx/libgfx.obj"},
{"LIB/LIBIMG.OBJ", PROGS .. "/develop/libraries/libs-dev/libimg/libimg.obj"},
{"LIB/LIBINI.OBJ", PROGS .. "/develop/libraries/libs-dev/libini/libini.obj"},
@ -722,6 +722,7 @@ end -- tup.getconfig('NO_TCC') ~= 'full'
if tup.getconfig('NO_GCC') ~= 'full' then
tup.append_table(img_files, {
{"GAMES/REVERSI", PROGS .. "/games/reversi/trunk/reversi"},
{"LIB/BASE64.OBJ", PROGS .. "/develop/libraries/base64/base64.obj"},
{"LIB/LIBC.OBJ", PROGS .. "/develop/ktcc/trunk/libc.obj/source/libc.obj"},
{"LIB/MTAR.OBJ", PROGS .. "/develop/libraries/microtar/mtar.obj"},
})

Binary file not shown.

View File

@ -148,7 +148,7 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
cur_encoding = CH_CP866;
if (custom_encoding != -1) {
cur_encoding = custom_encoding;
bufpointer = ChangeCharset(cur_encoding, "CP866", bufpointer);
bufpointer = ChangeCharset(cur_encoding, CH_CP866, bufpointer);
bufsize = strlen(bufpointer);
}
}
@ -197,7 +197,6 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
#tag.name, draw_x, draw_y, #linebuf));
}
//*/
RenderTextbuf();
if (debug_mode) { debugch('<'); if(!tag.opened)debugch('/'); debug(#tag.name); debugln(">"); }
$push cur_encoding
@ -257,9 +256,9 @@ void TWebBrowser::ChangeEncoding(int _new_encoding)
{
if (cur_encoding == _new_encoding) return;
cur_encoding = _new_encoding;
bufpointer = ChangeCharset(cur_encoding, "CP866", bufpointer);
bufpointer = ChangeCharset(cur_encoding, CH_CP866, bufpointer);
if (header) {
ChangeCharset(cur_encoding, "CP866", #header);
ChangeCharset(cur_encoding, CH_CP866, #header);
DrawTitle(#header);
}
}

View File

@ -107,4 +107,4 @@ char editbox_icons[] = FROM "res/editbox_icons.raw";
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
char version[]="WebView 3.62";
char version[]="WebView 3.62b";

View File

@ -6,6 +6,10 @@
#include "../lib/kolibri.h"
#endif
#ifndef INCLUDE_ENCODING_H
#include "../lib/encoding.h"
#endif
dword iconv_lib = #a_iconv_lib;
char a_iconv_lib[]="/sys/lib/iconv.obj";
@ -23,31 +27,27 @@ dword ChangeCharset(dword from_chs, to_chs, conv_buf)
{
dword cd, in_len, out_len, new_buf;
from_chs = from_chs*10+#charsets;
//debug("iconv: from_chs = "); debugln(from_chs);
//debug("iconv: to_chs = "); debugln(to_chs);
iconv_open stdcall (from_chs, to_chs); //CP866, CP1251, CP1252, KOI8-RU, UTF-8, ISO8859-5
iconv_open stdcall (from_chs*10+#charsets, to_chs*10+#charsets);
if (EAX==-1) {
debugln("iconv: unsupported charset");
return 0;
}
cd = EAX;
in_len = out_len = strlen(conv_buf)+1;
new_buf = mem_Alloc(in_len);
in_len = strlen(conv_buf)+1;
out_len = in_len * 2;
new_buf = mem_Alloc(out_len);
iconv stdcall (cd, #conv_buf, #in_len, #new_buf, #out_len);
if (EAX!=0)
{
cd = EAX;
debugval("iconv: something is wrong with stdcall iconv()", cd);
debugval("in_len", in_len);
debugval("out_len", out_len);
new_buf = free(new_buf);
return conv_buf;
debugval("iconv failed", cd);
if (from_chs == CH_UTF8) && (to_chs == CH_CP866) {
utf8rutodos(conv_buf);
}
} else {
strcpy(conv_buf, new_buf);
}
free(new_buf);
return conv_buf;
}

View File

@ -10,16 +10,14 @@
#include "../lib/dll.h"
#endif
dword netcode_lib = #a_netcode_lib;
char a_netcode_lib[]="/sys/lib/netcode.obj";
char a_netcode_lib[]="/sys/lib/base64.obj";
dword base64_encode = #aBase64_encode;
dword base64_decode = #aBase64_decode;
dword qp_decode = #aQp_decode;
$DD 2 dup 0
char aBase64_encode[] = "base64_encode";
char aBase64_decode[] = "base64_decode";
char aQp_decode[] = "qp_decode";
/*int base64_encode(char inp[], char outp[], int len);
Кодирование массива inp длиной len в массив outp (строку с '\0'). Функция возвращает длину outp.