Rev 3028 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3028 | Rev 3058 | ||
---|---|---|---|
Line 6... | Line 6... | ||
6 | blink; |
6 | blink; |
7 | 7 | ||
Line 8... | Line 8... | ||
8 | char download_path[]="/rd/1/.download"; |
8 | char download_path[]="/rd/1/.download"; |
9 | char search_path[]="http://nigma.ru/index.php?s="; |
9 | char search_path[]="http://nigma.ru/index.php?s="; |
10 | char version[]=" Text-based Browser 0.97.6"; |
10 | char version[]=" Text-based Browser 0.97.7"; |
Line 11... | Line 11... | ||
11 | 11 | ||
12 | 12 | ||
13 | struct TWebBrowser { |
13 | struct TWebBrowser { |
Line 25... | Line 25... | ||
25 | 25 | ||
Line 26... | Line 26... | ||
26 | TWebBrowser WB1; |
26 | TWebBrowser WB1; |
Line 27... | Line 27... | ||
27 | 27 | ||
28 | byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text, |
28 | byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text, |
Line 29... | Line 29... | ||
29 | link, ignor_text, li_tab, first_line_drawed; |
29 | link, ignor_text, li_tab, first_line_drawed, cur_encoding; |
30 | 30 | ||
31 | 31 | ||
Line 260... | Line 260... | ||
260 | ReadFile(0, filesize, buf, #download_path); |
260 | ReadFile(0, filesize, buf, #download_path); |
261 | else |
261 | else |
262 | ReadFile(0, filesize, buf, #URL); |
262 | ReadFile(0, filesize, buf, #URL); |
263 | 263 | ||
Line -... | Line 264... | ||
- | 264 | cur_encoding = encoding; |
|
264 | if (encoding==_WIN) wintodos(buf); |
265 | if (encoding==_WIN) wintodos(buf); |
265 | if (encoding==_UTF) utf8rutodos(buf); |
266 | if (encoding==_UTF) utf8rutodos(buf); |
266 | if (encoding==_KOI) koitodos(buf); |
267 | if (encoding==_KOI) koitodos(buf); |
267 | } |
268 | } |
Line 280... | Line 281... | ||
280 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
281 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
281 | DeleteFile(#download_path); |
282 | DeleteFile(#download_path); |
282 | IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; |
283 | IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; |
283 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
284 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
284 | //ýòî ãåíèàëüíî è ýòî ïèçäåö!!! |
285 | //Browser Hack v2.0 |
285 | Pause(60); |
286 | Pause(60); |
286 | if (GetProcessSlot(downloader_id)<>0) |
287 | if (GetProcessSlot(downloader_id)<>0) |
287 | { |
288 | { |
288 | debug("Browser Hack v2.0: Killing downloader and trying to run it one more!"); |
289 | debug("Browser Hack v2.0: Killing downloader and trying to run it one more!"); |
289 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
290 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
290 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
291 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
Line 374... | Line 375... | ||
374 | for (j=0; j |
375 | for (j=0; j |
375 | break; |
376 | break; |
376 | } |
377 | } |
377 | case 0x0d: |
378 | case 0x0d: |
378 | bukva = ' '; |
379 | debug("0x0d"); |
- | 380 | bukva = ' '; |
|
379 | goto DEFAULT_MARK; |
381 | goto DEFAULT_MARK; |
380 | case '<': |
382 | case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7 |
- | 383 | if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK; |
|
- | 384 | ||
- | 385 | bword++; |
|
- | 386 | bukva=ESBYTE[bword]; |
|
- | 387 | strcpy(#temp,#bukva); |
|
- | 388 | bword++; |
|
- | 389 | bukva=ESBYTE[bword]; |
|
- | 390 | strcat(#temp,#bukva); |
|
- | 391 | ||
- | 392 | bukva=Hex2Symb(#temp); |
|
- | 393 | if (bukva) goto DEFAULT_MARK; |
|
- | 394 | break; |
|
- | 395 | ||
- | 396 | case '&': // and so on |
|
- | 397 | bword++; |
|
- | 398 | tag=0; |
|
- | 399 | for (j=0; (ESBYTE[bword]<>';') && (j<7); j++, bword++;) |
|
- | 400 | { |
|
- | 401 | bukva = ESBYTE[bword]; |
|
- | 402 | strcat(#tag, #bukva); |
|
- | 403 | } |
|
- | 404 | ||
- | 405 | for (j=0; unicode_tags[j]!=0; j+=2;) |
|
- | 406 | { |
|
- | 407 | if (!strcmp(#tag, unicode_tags[j])) |
|
- | 408 | { |
|
- | 409 | strcat(#line, unicode_tags[j+1]); |
|
- | 410 | break 1; |
|
- | 411 | } |
|
- | 412 | } |
|
- | 413 | ||
- | 414 | rez = atoi(#tag + 1) - 1040; |
|
- | 415 | if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5) |
|
- | 416 | { |
|
- | 417 | bukva = unicode_chars[rez]; |
|
- | 418 | //GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó ëó÷øå íàâåðíî strcat(#line, unicode_tags[j+1]); è break 1; |
|
- | 419 | strcat(#line, #bukva); |
|
- | 420 | break; |
|
- | 421 | } |
|
- | 422 | ||
- | 423 | strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò |
|
- | 424 | break; |
|
- | 425 | case '<': |
|
381 | bword++; //ïðîìîòàåì ñèìâîë < |
426 | bword++; //ïðîìîòàåì ñèìâîë < |
382 | tag = parametr = tagparam = ignor_param = 0; |
427 | tag = parametr = tagparam = ignor_param = NULL; |
383 | if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî |
428 | if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî |
384 | { |
429 | { |
385 | bword++; |
430 | bword++; |
386 | if (ESBYTE[bword] == '-') |
431 | if (ESBYTE[bword] == '-') |
387 | { |
432 | { |
388 | HH_: |
433 | HH_: |
Line 414... | Line 459... | ||
414 | } |
459 | } |
415 | strlwr(#tag); |
460 | strlwr(#tag); |
416 | strlwr(#tagparam); |
461 | strlwr(#tagparam); |
417 | 462 | ||
Line 418... | Line 463... | ||
418 | if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //for br/ |
463 | if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=NULL; //for br/ |
419 | if (tagparam) && (strlen(#tagparam) < 4000) GetNextParam(); |
464 | if (tagparam) && (strlen(#tagparam) < 4000) GetNextParam(); |
Line 420... | Line 465... | ||
420 | 465 | ||
421 | DrawPage(); |
466 | DrawPage(); |
Line 422... | Line 467... | ||
422 | line=0; |
467 | line=NULL; |
Line 423... | Line 468... | ||
423 | 468 | ||
424 | if (tag) WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ |
- | |
425 | - | ||
426 | tag = parametr = tagparam = ignor_param = '\0'; |
- | |
427 | break; |
- | |
428 | case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7 |
- | |
429 | if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK; |
- | |
430 | - | ||
431 | bword++; |
- | |
432 | bukva=ESBYTE[bword]; |
- | |
433 | strcpy(#temp,#bukva); |
- | |
434 | bword++; |
- | |
435 | bukva=ESBYTE[bword]; |
- | |
436 | strcat(#temp,#bukva); |
- | |
437 | - | ||
438 | bukva=Hex2Symb(#temp); |
- | |
439 | if (bukva) goto DEFAULT_MARK; |
- | |
440 | break; |
- | |
441 | - | ||
442 | case '&': // and so on |
- | |
443 | bword++; |
- | |
444 | tag=0; |
- | |
445 | for (j=0; (ESBYTE[bword]<>';') && (j<7); j++, bword++;) |
- | |
446 | { |
- | |
447 | bukva = ESBYTE[bword]; |
- | |
448 | strcat(#tag, #bukva); |
- | |
449 | } |
- | |
450 | - | ||
451 | for (j=0; unicode_tags[j]!=0; j+=2;) |
- | |
452 | { |
- | |
453 | if (!strcmp(#tag, unicode_tags[j])) |
- | |
454 | { |
- | |
455 | strcat(#line, unicode_tags[j+1]); |
- | |
456 | break 1; |
- | |
457 | } |
- | |
458 | } |
- | |
459 | - | ||
460 | rez = atoi(#tag + 1) - 1040; |
- | |
461 | if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5) |
- | |
462 | { |
- | |
463 | bukva = unicode_chars[rez]; |
- | |
464 | //GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó ëó÷øå íàâåðíî strcat(#line, unicode_tags[j+1]); è break 1; |
- | |
465 | strcat(#line, #bukva); |
- | |
466 | break; |
- | |
467 | } |
469 | if (tag) WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ |
468 | 470 | ||
469 | strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò |
471 | tag = parametr = tagparam = ignor_param = NULL; |
470 | break; |
472 | break; |
471 | default: |
473 | default: |
472 | DEFAULT_MARK: |
474 | DEFAULT_MARK: |
473 | if (!pre_text) && (bukva == ' ') && (line[strlen(#line)-1]==' ') break; |
475 | if (!pre_text) && (bukva == ' ') && (line[strlen(#line)-1]==' ') break; //óáðàòü 2 ïðîáåëà ïîäðÿä |
474 | // |
476 | // |
475 | if (stolbec + strlen(#line) > lines.column_max) |
477 | if (stolbec + strlen(#line) > lines.column_max) |
Line 512... | Line 514... | ||
512 | if (!header) //&& (tag) |
514 | if (!header) //&& (tag) |
513 | { |
515 | { |
514 | if (strlen(#version)+strlen(#line)+2>sizeof(header)) |
516 | if (strlen(#version)+strlen(#line)+2>sizeof(header)) |
515 | { |
517 | { |
516 | //line = 123456789 |
- | |
517 | //header = 1234 |
- | |
518 | //line = 56789 |
- | |
519 | strcpy(#temp, #line); |
518 | strcpy(#temp, #line); |
520 | temp[sizeof(header)-strlen(#version)-2]=0; |
519 | temp[sizeof(header)-strlen(#version)-2]=0; |
521 | strcpy(#header, #temp); |
520 | strcpy(#header, #temp); |
522 | strcpy(#line, #line+strlen(#temp)); |
521 | strcpy(#line, #line+strlen(#temp)); |
523 | } |
522 | } |
Line 570... | Line 569... | ||
570 | void TWebBrowser::WhatTextStyle(int left1, top1, width1) { |
569 | void TWebBrowser::WhatTextStyle(int left1, top1, width1) { |
571 | dword hr_color; |
570 | dword hr_color; |
572 | 571 | ||
Line 573... | Line 572... | ||
573 | dword image; |
572 | dword image; |
574 | char temp[4096]; |
573 | char temp[4096], alt[4096]; |
575 | int w=0, h=0, img_lines_first=0; |
574 | int w=0, h=0, img_lines_first=0; |
Line 576... | Line 575... | ||
576 | 575 | ||
577 | //ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ |
576 | //ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ |
578 | if (tag[0] == '/') |
577 | if (tag[0] == '/') |
Line 780... | Line 779... | ||
780 | if (GetFileInfo(libimg)<>0) return; //åñëè áèáëèîòåêè íåò |
779 | if (GetFileInfo(libimg)<>0) return; //åñëè áèáëèîòåêè íåò |
781 | IMG_TAG: |
780 | IMG_TAG: |
782 | if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl() |
781 | if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl() |
783 | { |
782 | { |
784 | if (downloader_id!=0) strcpy(#temp, #history_list[history_current-1].Item); |
783 | if (downloader_id) strcpy(#temp, #history_list[history_current-1].Item); |
785 | else strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
784 | else strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
786 | if (!strcmpn(#temp, "http:", 5)) || (!strcmpn(#options, "http:", 5)) return; |
785 | if (strcmpn(#temp, "http:", 5)!=0) || (strcmpn(#options, "http:", 5)!=0) |
787 | temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
786 | { |
- | 787 | temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
|
788 | strcat(#temp, #options); |
788 | strcat(#temp, #options); |
789 | image=load_image(#temp); |
789 | image=load_image(#temp); |
790 | w=DSWORD[image+4]; |
790 | w=DSWORD[image+4]; |
791 | h=DSWORD[image+8]; |
791 | h=DSWORD[image+8]; |
792 | } |
792 | } |
793 | /*if (!strcmp(#parametr,"alt=")) |
793 | } |
- | 794 | if (!strcmp(#parametr,"alt=")) |
|
794 | { |
795 | { |
795 | strcpy(#tag, "[Image: "); |
796 | strcpy(#alt, "["); |
796 | strcat(#tag, #options); |
797 | strcat(#alt, #options); |
797 | strcat(#tag, "]"); |
798 | strcat(#alt, "]"); |
798 | }*/ |
799 | } |
799 | 800 | ||
Line 800... | Line 801... | ||
800 | IF(tagparam) |
801 | IF(tagparam) |
801 | { |
802 | { |
802 | GetNextParam(); |
803 | GetNextParam(); |
803 | GOTO IMG_TAG; |
804 | GOTO IMG_TAG; |
804 | } |
805 | } |
Line 805... | Line 806... | ||
805 | 806 | ||
- | 807 | if (!image) |
|
- | 808 | { |
|
- | 809 | if (alt) && (link) strcat(#line, #alt); |
|
- | 810 | return; |
|
Line 806... | Line 811... | ||
806 | if (!image) return; |
811 | } |
Line 807... | Line 812... | ||
807 | 812 | ||
808 | if (w>width1) w=width1; |
813 | if (w>width1) w=width1; |