Added new keywords, random fixes

This commit is contained in:
Alexander S. Aganichev 2003-06-09 05:47:39 +00:00
parent 37e5560578
commit 824ad2730b
31 changed files with 743 additions and 48 deletions

View File

@ -92,6 +92,7 @@ Up AREAgotoprev
^Right AREAjump ^Right AREAjump
Tab AREAjumpnextmatch Tab AREAjumpnextmatch
^Enter AREAjumpnextmatch ^Enter AREAjumpnextmatch
; AREAmark
^Q AREAquitnow ^Q AREAquitnow
@S AREAscan @S AREAscan
@P AREAscanpm @P AREAscanpm
@ -102,6 +103,7 @@ Right AREAselect
@T AREAtoggle @T AREAtoggle
Ins AREAtoggle Ins AREAtoggle
^Z AREAtouchnetscan ^Z AREAtouchnetscan
; AREAunmark
@W AREAwritegoldlast @W AREAwritegoldlast
@Z AREAzap @Z AREAzap
@ -237,15 +239,19 @@ Down LISTgotonext
^PgDn LISTgotonext ^PgDn LISTgotonext
Up LISTgotoprev Up LISTgotoprev
^PgUp LISTgotoprev ^PgUp LISTgotoprev
; LISTmark
S LISTmarkingoptions S LISTmarkingoptions
@S LISTmarkingoptions @S LISTmarkingoptions
@F9 LISTmarkingoptions @F9 LISTmarkingoptions
; LISTnarrowsubj
^Q LISTquitnow ^Q LISTquitnow
Enter LISTselect Enter LISTselect
Tab LISTtogglebookmark Tab LISTtogglebookmark
^D LISTtoggledate ^D LISTtoggledate
Space LISTtogglemark Space LISTtogglemark
^B LISTtogglewidesubj ^B LISTtogglewidesubj
; LISTunmark
; LISTwidesubj
; ------------------------------------------------------------------ ; ------------------------------------------------------------------
@ -292,6 +298,7 @@ M READcopymoveforward
D READdeletemsg D READdeletemsg
@D READdeletemsg @D READdeletemsg
Del READdeletemsg Del READdeletemsg
; READdirquotemsg
O READdosshell O READdosshell
@O READdosshell @O READdosshell
^F10 READdosshell ^F10 READdosshell
@ -335,12 +342,17 @@ Left READgotoprevmsg
* READgotoreplynext * READgotoreplynext
- READgotoreplyprev - READgotoreplyprev
^Left READgotoreplyprev ^Left READgotoreplyprev
; READhidekludge
; READhidehidden
; READhidehiddklud
; READhidequote
; READincreasemargin ; READincreasemargin
#F10 READlookupdest #F10 READlookupdest
F10 READlookuporig F10 READlookuporig
; READmainmenu ; READmainmenu
^L READmakeuserlist ^L READmakeuserlist
^K READmakepathreport ^K READmakepathreport
; READmark
S READmarkingoptions S READmarkingoptions
@S READmarkingoptions @S READmarkingoptions
@F9 READmarkingoptions @F9 READmarkingoptions
@ -375,14 +387,26 @@ Ins READnewmsg
Q READquotemsg Q READquotemsg
@Q READquotemsg @Q READquotemsg
F4 READquotemsg F4 READquotemsg
; READdirquotemsg ; READreadmarked
; READreadall
; READrealmsgno
R READreplymsg R READreplymsg
@R READreplymsg @R READreplymsg
F3 READreplymsg F3 READreplymsg
; -- calls dummy menu. not implemented -- ; -- calls dummy menu. not implemented --
; READsearch ; READsearch
; READsequentmsgno
@F8 READshowdel @F8 READshowdel
; READshowhidden
; READshowhiddklud
; READshowhtml
; READshowkludge
; READshowquote
; READsoundkill ; READsoundkill
; READstriphtml
; READstylesnone
; READstylesshow
; READstylesstrip
; -- could not be assigned manually -- ; -- could not be assigned manually --
;#3 READthreadtree ;#3 READthreadtree
Tab READtogglebookmark Tab READtogglebookmark
@ -395,6 +419,7 @@ H READtogglehidden
V READtogglehiddklud V READtogglehiddklud
@V READtogglehiddklud @V READtogglehiddklud
^F5 READtogglehiddklud ^F5 READtogglehiddklud
; READtogglehtml
K READtogglekludge K READtogglekludge
@K READtogglekludge @K READtogglekludge
^F6 READtogglekludge ^F6 READtogglekludge
@ -415,12 +440,17 @@ T READtoggletwits
@T READtoggletwits @T READtoggletwits
^Z READtouchnetscan ^Z READtouchnetscan
; READtouchsemaphore ; READtouchsemaphore
; READtwitsblank
; READtwitsignore
; READtwitskill
; READtwitsshow
; READtwitsskip
; READunmark
^X READuudecode ^X READuudecode
W READwritemsg W READwritemsg
@W READwritemsg @W READwritemsg
F7 READwritemsg F7 READwritemsg
; ------------------------------------------------------------------ ; ------------------------------------------------------------------
; ADDRESSBOOK BROWSER COMMANDS ; ADDRESSBOOK BROWSER COMMANDS
; ------------------------------------------------------------------ ; ------------------------------------------------------------------

View File

@ -215,7 +215,7 @@ MI_DROPMSGNO "S
WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? " WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? "
MI_ZONEGATEYES "A A ª ª ¦¥ ¨­ ç¥!? " MI_ZONEGATEYES "A A ª ª ¦¥ ¨­ ç¥!? "
MI_ZONEGATENO "e <20>eâ, ¬ë ¯®©¤¥¬ ¤à㣨¬ ¯ã⥬ " MI_ZONEGATENO "e <20>eâ, ¬ë ¯®©¤¥¬ ¤à㣨¬ ¯ã⥬ "
ST_QUOTEPCT "<22><><EFBFBD><EFBFBD><><EFBFBD><E9A5AD><><EFBFBD> %i%% <20><><EFBFBD><EFBFBD><EFBFBD>%s" ST_QUOTEPCT "<22><><EFBFBD><EFBFBD><><EFBFBD><E9A5AD><><EFBFBD> %i%% <20><><EFBFBD><EFBFBD><EFBFBD>%0.0s"
WT_SAVEMSG " ‘®åà ­¨âì í⨠%i áâப? " WT_SAVEMSG " ‘®åà ­¨âì í⨠%i áâப? "
MI_YESGREAT "a „a, íâ® ªàãâ®! " MI_YESGREAT "a „a, íâ® ªàãâ®! "
MI_KICKIT "S <20>eâ, ¢ë¡à®áì⥠íâ®.. / ESC " MI_KICKIT "S <20>eâ, ¢ë¡à®áì⥠íâ®.. / ESC "

View File

@ -211,7 +211,7 @@ MI_DROPMSGNO "N N
WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? " WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? "
MI_ZONEGATEYES "Y Y € ª ª ¦¥ ¨­ ç¥!? " MI_ZONEGATEYES "Y Y € ª ª ¦¥ ¨­ ç¥!? "
MI_ZONEGATENO "N N <20>¥â, ¬ë ¯®©¤¥¬ ¤à㣨¬ ¯ã⥬ " MI_ZONEGATENO "N N <20>¥â, ¬ë ¯®©¤¥¬ ¤à㣨¬ ¯ã⥬ "
ST_QUOTEPCT "<22><><EFBFBD><EFBFBD><><EFBFBD><E9A5AD><><EFBFBD> %i%% <20><><EFBFBD><EFBFBD><EFBFBD>%s" ST_QUOTEPCT "<22><><EFBFBD><EFBFBD><><EFBFBD><E9A5AD><><EFBFBD> %i%% <20><><EFBFBD><EFBFBD><EFBFBD>%0.0s"
WT_SAVEMSG " ‘®åà ­¨âì í⨠%i áâப? " WT_SAVEMSG " ‘®åà ­¨âì í⨠%i áâப? "
MI_YESGREAT "Y Y „ , íâ® ªàãâ®! " MI_YESGREAT "Y Y „ , íâ® ªàãâ®! "
MI_KICKIT "N N <20>¥â, ¢ë¡à®áì⥠íâ®.. / ESC " MI_KICKIT "N N <20>¥â, ¢ë¡à®áì⥠íâ®.. / ESC "

View File

@ -1,14 +1,13 @@
GoldED+ compilation howto GoldED+ compilation howto
by Alexander Aganichev, 2:5020/201.58 <aaganichev@netscape.net> by Alexander Aganichev, 2:5020/201.58 <aaganichev@yandex.ru>
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
To compile GoldED+ and utilities you'll need: To compile GoldED+ and utilities you'll need:
- GNU C++ newer than 2.8.x, gcc 2.95.3 or gcc 3.0.x are recommended, gcc 3.1 - GNU C/C++ newer than 2.8.x, gcc 2.95.3 or gcc 3.x.x are recommended
not tested yet. - GNU make, GNU sed and GNU grep
- GNU make and GNU sed
- vi, emacs, or any other editor you like - vi, emacs, or any other editor you like
- beer or bear on your choice ;-) - beer or bear on your choice ;-)
@ -23,7 +22,7 @@ from www.mingw.org, copy .../lib/stdlibc++.a to /usr/local/lib/mingw, copy
---- DJGPP ONLY ---- ---- DJGPP ONLY ----
When building in DJGPP environment you may wish to use liblocal which may be When building in DJGPP environment you may wish to use liblocal which may be
found on http://aaganichev.narod.ru/djgpp/llocl01b.zip. This provides basic found on http://aaganichev.narod.ru/djgpp/llocl02b.zip. This provides basic
locale support via country.sys driver. Otherwise just comment -llocal in locale support via country.sys driver. Otherwise just comment -llocal in
GNUmakef.def. GNUmakef.def.
------ COMMON ------ ------ COMMON ------

View File

@ -12,6 +12,69 @@ ______________________________________________________________________
Notes for GoldED+ 1.1.5, /snapshot/ Notes for GoldED+ 1.1.5, /snapshot/
______________________________________________________________________ ______________________________________________________________________
- Fixed bug in HPT config parser: areas which was not explicitly
given messagebase type was omited.
+ Added new configuration keywords to main configuration file:
WRITEHEADER <YES/NO/ONLY> - default setting for Write->Header
setting, defaults to yes. Can be used in Random System Group.
STRIPHTML <YES/NO> - activate quick-n-dirty HTML-tag stripper. It
known to fail in some cases but more likely will not be improoved.
The keyword may be used in Random System Group. Defaults - NO.
NOTE: Strip HTML mode forces quoted-printable decoding.
+ Added new configuration keywords to keys configuration file:
READSTRIPHTML - Strip HTML tags
READSHOWHTML - Show HTML tags
READTOGGLEHTML - Toggle HTML tags display mode
The keywords listed below are just duplicates for corresponding
toggles. They are added mostly for use in macros (untested):
AREAMARK
AREAUNMARK
LISTMARK
LISTUNMARK
LISTWIDESUBJ
LISTNARROWSUBJ
READSHOWKLUDGE
READHIDEKLUDGE
READSHOWHIDDEN
READHIDEHIDDEN
READSHOWHIDDKLUD
READHIDEHIDDKLUD
READMARK
READUNMARK
READREADMARKED
READREADALL
READREALMSGNO
READSEQUENTMSGNO
READSTYLESNONE
READSTYLESSHOW
READSTYLESSTRIP
READTWITSSHOW
READTWITSBLANK
READTWITSSKIP
READTWITSIGNORE
READTWITSKILL
READSHOWQUOTE
READHIDEQUOTE
- X-Mailreader should not duplicate now on message changing (not
tested).
- Better support for long tearlines are added. Now long tearlines with
QuoteCtrl set to not quote tearlines no longer get quoted.
+ Added quote display mode to the statusbar (Q letter).
- More fixes to uu/xxdecoder: now sections which follows with the
"end" properly decoded; if name contained tilde inside it also broke
multisection UUE decoding.
- Fixed FWD kludges encoding. - Fixed FWD kludges encoding.
- Hooks to the delete and move messages added for the read-only areas. - Hooks to the delete and move messages added for the read-only areas.

View File

@ -260,13 +260,12 @@ assistance!
*Q:* <20>ЈЏ  эт ... <20> ЏЈс ть ЊуЄ   ЂтЎру? ;-) *Q:* <20>ЈЏ  эт ... <20> ЏЈс ть ЊуЄ   ЂтЎру? ;-)
*A:* <20>Јс ть ЋучшЅ ЂсЅЃЎ Ђ Ru.GoldED. <20> ІЅ ЋучшЅ с­ ч Ћ  ЅЃЎ ЏЎчЈт ть, ЄЎІЄ ться *A:* <20>Јс ть ЋучшЅ ЂсЅЃЎ Ђ Ru.GoldED. <20> ІЅ ЋучшЅ с­ ч Ћ  ЅЃЎ ЏЎчЈт ть, ЄЎІЄ ться
ЌЅст­ЎЃЎ FAQ, Ё ЃЋЈст  Ј тЎЋьЊЎ ЏЎтЎЌ ЏЈс ть. <20>сЋЈ уІ сЈЋь­Ў ЏрЈсЏЈчЈт, тЎ ЌЅст­ЎЃЎ FAQ, Ё ЃЋЈст  Ј тЎЋьЊЎ ЏЎтЎЌ ЏЈс ть. <20>сЋЈ уІ сЈЋь­Ў ЏрЈсЏЈчЈт, тЎ
¬®¦­® ¯¨á âì ­  2:5020/201.58, 2:5020/604.19 ¨«¨ aaganichev@netscape.net, ¬®¦­® ―¨α βμ ­  2:5020/201.58 ¨«¨ aaganichev@yandex.ru, ­® ο ᮢᥬ ­¥
­® ï ᮢᥬ ­¥ £ à ­â¨àãî, çâ® ï ®â¢¥çã. ‘â ¢ì⥠RRq, Cfm, ¥á«¨ å®â¨â¥ £ ΰ ­β¨ΰγξ, ηβ® ο ®βΆ¥ηγ. ‘β Άμβ¥ RRq, Cfm, ¥α«¨ ε®β¨β¥ §­ βμ, ηβ® Ά θ¥
§­ âì, çâ® ¢ è¥ ¯¨á쬮 ¤®è«® ¨ ï ¯à®áâ® ­¥ áâ « ­  ­¥£® ®â¢¥ç âì. Ÿ ­¥ ―¨α쬮 ¤®θ«® ¨ ο ―ΰ®αβ® ­¥ αβ « ­  ­¥£® ®βΆ¥η βμ. <20> ­¥ ®βΆ¥η ξ ­  Ά®―ΰ®αλ,
®â¢¥ç î ­  ¢®¯à®áë, ®¯¨á ­­ë¥ ¢ í⮬ FAQ ¨«¨ ¥á«¨ ï ­¥ §­ î ª ª çâ®-â® ®―¨α ­­λ¥ Ά ν⮬ FAQ ¨«¨ ¥α«¨ ο ­¥ §­ ξ <20> <EFBFBD> ηβ®-β® ΰ ΅®β ¥β Ά GoldED'¥ (ο
à ¡®â ¥â ¢ GoldED'¥ (ï ­¥ ¨á¯®«ì§ãî ᫨誮¬ ¬­®£® ¥£® ¢®§¬®¦­®á⥩ - Œ<> ­¥ ¨α―®«μ§γξ ᫨θ<C2A8>®¬ ¬­®£® ¥£® Ά®§¬®¦­®α⥩ - <20><>… ®­¨ ­¥ ­γ¦­λ) - η¨β ©β¥
®­¨ ­¥ ­ã¦­ë) - ç¨â ©â¥ ¤®ªã¬¥­â æ¨î, á¯à è¨¢ ©â¥ ¢ Ru.GoldED... “ ¬¥­ï ¤®<C2A4>㬥­β ζ¨ξ, α―ΰ θ¨Ά ©β¥ Ά Ru.GoldED... “ ¬¥­ο ᫨θ<C2A8>®¬ ¬ «® αΆ®΅®¤­®£®
᫨誮¬ ¬ «® ᢮¡®¤­®£® ¢à¥¬¥­¨, ç⮡ë à áª ¯ë¢ âì ¤«ï ¢ á ª ª çâ®-â® Άΰ¥¬¥­¨, ηβ®΅λ ΰ α<C2A0> ―λΆ βμ ¤«ο Ά α <20> <EFBFBD> ηβ®-β® ΰ ΅®β ¥β.
à ¡®â ¥â.
>============================================================================== >==============================================================================

View File

@ -766,6 +766,7 @@ CfgGed::CfgGed() {
squishscan = 2; // SQS_QUICK squishscan = 2; // SQS_QUICK
squishuserno = 0; squishuserno = 0;
statuslinehelp = 0; statuslinehelp = 0;
striphtml = false;
taglineno = 0; taglineno = 0;
taglinechar = '.'; taglinechar = '.';
taglinesupport = true; taglinesupport = true;
@ -785,6 +786,7 @@ CfgGed::CfgGed() {
viewhidden = false; viewhidden = false;
viewkludge = false; viewkludge = false;
viewquote = true; viewquote = true;
writeheader = 1;
wildcatuserno = 0; wildcatuserno = 0;
zonegating = ASK; zonegating = ASK;

View File

@ -340,6 +340,7 @@ const word CRC_SQUISHUSERNO = 0x60AD;
const word CRC_SQUISHUSERPATH = 0xFA97; const word CRC_SQUISHUSERPATH = 0xFA97;
const word CRC_STATUSLINECLOCK = 0x9C8A; const word CRC_STATUSLINECLOCK = 0x9C8A;
const word CRC_STATUSLINEHELP = 0xA150; const word CRC_STATUSLINEHELP = 0xA150;
const word CRC_STRIPHTML = 0x05EC;
const word CRC_STYLECODES = 0x4CB0; const word CRC_STYLECODES = 0x4CB0;
const word CRC_STYLECODEPUNCT = 0x9D15; const word CRC_STYLECODEPUNCT = 0x9D15;
const word CRC_STYLECODESTOPS = 0xF452; const word CRC_STYLECODESTOPS = 0xF452;
@ -381,6 +382,7 @@ const word CRC_VIEWKLUDGE = 0x4078;
const word CRC_VIEWQUOTE = 0x0AB3; const word CRC_VIEWQUOTE = 0x0AB3;
const word CRC_WHOTO = 0xB25F; const word CRC_WHOTO = 0xB25F;
const word CRC_WILDCATUSERNO = 0xC2FE; const word CRC_WILDCATUSERNO = 0xC2FE;
const word CRC_WRITEHEADER = 0x2589;
const word CRC_WRITETEMPLATE = 0xF4CB; const word CRC_WRITETEMPLATE = 0xF4CB;
const word CRC_XLATCHARSET = 0xA860; const word CRC_XLATCHARSET = 0xA860;
const word CRC_XLATESCSET = 0x4BA7; const word CRC_XLATESCSET = 0x4BA7;

View File

@ -530,6 +530,7 @@ SwitchS:
case CRC_SQUISHUSERNO : CfgSquishuserno (); break; case CRC_SQUISHUSERNO : CfgSquishuserno (); break;
case CRC_SQUISHUSERPATH : CfgSquishuserpath (); break; case CRC_SQUISHUSERPATH : CfgSquishuserpath (); break;
case CRC_STATUSLINEHELP : CfgStatuslinehelp (); break; case CRC_STATUSLINEHELP : CfgStatuslinehelp (); break;
case CRC_STRIPHTML : CfgStripHTML (); break;
case CRC_STYLECODEPUNCT : CfgStylecodepunct (); break; case CRC_STYLECODEPUNCT : CfgStylecodepunct (); break;
case CRC_STYLECODES : CfgStylecodes (); break; case CRC_STYLECODES : CfgStylecodes (); break;
case CRC_STYLECODESTOPS : CfgStylecodestops (); break; case CRC_STYLECODESTOPS : CfgStylecodestops (); break;
@ -588,6 +589,7 @@ SwitchW:
switch(crc) { switch(crc) {
case CRC_WHOTO : CfgWhoto (); break; case CRC_WHOTO : CfgWhoto (); break;
case CRC_WILDCATUSERNO : CfgWildcatuserno (); break; case CRC_WILDCATUSERNO : CfgWildcatuserno (); break;
case CRC_WRITEHEADER : CfgWriteheader (); break;
case CRC_WRITETEMPLATE : CfgWritetemplate (); break; case CRC_WRITETEMPLATE : CfgWritetemplate (); break;
default : found = false; default : found = false;
} }

View File

@ -66,6 +66,17 @@ void CfgStatuslinehelp() {
// ------------------------------------------------------------------ // ------------------------------------------------------------------
void CfgStripHTML() {
bool flag = GetYesno(val);
if(cfgingroup)
CFG->grp.AddItm(GRP_STRIPHTML, flag);
else
CFG->striphtml = flag;
}
// ------------------------------------------------------------------
void CfgStylecodepunct() { void CfgStylecodepunct() {
char* key; char* key;
@ -492,6 +503,23 @@ void CfgWildcatuserno() {
// ------------------------------------------------------------------ // ------------------------------------------------------------------
void CfgWriteheader() {
int flag;
if(strieql(val, "ONLY"))
flag = 2;
else
flag = GetYesno(val) ? 1 : 0;
if(cfgingroup)
CFG->grp.AddItm(GRP_WRITEHEADER, flag);
else
CFG->writeheader = flag;
}
// ------------------------------------------------------------------
void CfgWritetemplate() { void CfgWritetemplate() {
if(cfgingroup) { if(cfgingroup) {

View File

@ -363,6 +363,9 @@ tglobalkey globalkeys[] = {
{ CRC_FILETOGGLEMARKALL , KK_FileToggleMarkAll , KT_F }, // 0x0032 { CRC_FILETOGGLEMARKALL , KK_FileToggleMarkAll , KT_F }, // 0x0032
{ CRC_READADDRESSBOOKADD , KK_ReadAddressbookAdd , KT_R }, // 0x00FA { CRC_READADDRESSBOOKADD , KK_ReadAddressbookAdd , KT_R }, // 0x00FA
{ CRC_LISTDOSSHELL , KK_ListDosShell , KT_M }, // 0x0130 { CRC_LISTDOSSHELL , KK_ListDosShell , KT_M }, // 0x0130
{ CRC_READREADALL , KK_ReadReadAll , KT_R }, // 0x0146
{ CRC_READREADMARKED , KK_ReadReadMarked , KT_R }, // 0x01AE
{ CRC_READTWITSSHOW , KK_ReadTwitsShow , KT_R }, // 0x03C5
{ CRC_EDITGOLEFT , KK_EditGoLeft , KT_E }, // 0x043B { CRC_EDITGOLEFT , KK_EditGoLeft , KT_E }, // 0x043B
{ CRC_HEADERTOGGLESCANNED , KK_HeaderToggleScanned , KT_H }, // 0x0459 { CRC_HEADERTOGGLESCANNED , KK_HeaderToggleScanned , KT_H }, // 0x0459
{ CRC_READTOGGLEHIDDEN , KK_ReadToggleHidden , KT_R }, // 0x04CE { CRC_READTOGGLEHIDDEN , KK_ReadToggleHidden , KT_R }, // 0x04CE
@ -372,6 +375,7 @@ tglobalkey globalkeys[] = {
#endif #endif
{ CRC_READGOTOPREVMSG , KK_ReadGotoPrevMsg , KT_R }, // 0x06D9 { CRC_READGOTOPREVMSG , KK_ReadGotoPrevMsg , KT_R }, // 0x06D9
{ CRC_READPEEKURLS , KK_ReadPeekURLs , KT_R }, // 0x07BA { CRC_READPEEKURLS , KK_ReadPeekURLs , KT_R }, // 0x07BA
{ CRC_READREALMSGNO , KK_ReadRealMsgno , KT_R }, // 0x07F8
{ CRC_K_STAB , Key_S_Tab , 0 }, // 0x0886 { CRC_K_STAB , Key_S_Tab , 0 }, // 0x0886
{ CRC_EDITLOADFILE , KK_EditLoadFile , KT_A }, // 0x0931 { CRC_EDITLOADFILE , KK_EditLoadFile , KT_A }, // 0x0931
{ CRC_READFILEREQUEST , KK_ReadFileRequest , KT_R }, // 0x0A07 { CRC_READFILEREQUEST , KK_ReadFileRequest , KT_R }, // 0x0A07
@ -402,11 +406,13 @@ tglobalkey globalkeys[] = {
{ CRC_READREPLYMSG , KK_ReadReplyMsg , KT_R }, // 0x172F { CRC_READREPLYMSG , KK_ReadReplyMsg , KT_R }, // 0x172F
{ CRC_AREAGOTOLAST , KK_AreaGotoLast , KT_A }, // 0x177A { CRC_AREAGOTOLAST , KK_AreaGotoLast , KT_A }, // 0x177A
{ CRC_READINCREASEMARGIN , KK_ReadIncreaseMargin , KT_R }, // 0x1797 { CRC_READINCREASEMARGIN , KK_ReadIncreaseMargin , KT_R }, // 0x1797
{ CRC_AREAUNMARK , KK_AreaUnmark , KT_A }, // 0x17B3
{ CRC_EDITEXITMSG , KK_EditExitMsg , KT_E }, // 0x1813 { CRC_EDITEXITMSG , KK_EditExitMsg , KT_E }, // 0x1813
{ CRC_READTOGGLEPAGEBAR , KK_ReadTogglePageBar , KT_R }, // 0x18E4 { CRC_READTOGGLEPAGEBAR , KK_ReadTogglePageBar , KT_R }, // 0x18E4
{ CRC_K_F12 , Key_F12 , 0 }, // 0x1930 { CRC_K_F12 , Key_F12 , 0 }, // 0x1930
{ CRC_K_F10 , Key_F10 , 0 }, // 0x1932 { CRC_K_F10 , Key_F10 , 0 }, // 0x1932
{ CRC_K_F11 , Key_F11 , 0 }, // 0x1933 { CRC_K_F11 , Key_F11 , 0 }, // 0x1933
{ CRC_READHIDEKLUDGE , KK_ReadHideKludge , KT_R }, // 0x19EC
{ CRC_READGOTOREPLIES , KK_ReadGotoReplies , KT_R }, // 0x1A6B { CRC_READGOTOREPLIES , KK_ReadGotoReplies , KT_R }, // 0x1A6B
{ CRC_READMOVEQUOTEMSG , KK_ReadMoveQuoteMsg , KT_R }, // 0x1B41 { CRC_READMOVEQUOTEMSG , KK_ReadMoveQuoteMsg , KT_R }, // 0x1B41
{ CRC_EDITGOEOL , KK_EditGoEOL , KT_E }, // 0x1CC6 { CRC_EDITGOEOL , KK_EditGoEOL , KT_E }, // 0x1CC6
@ -418,6 +424,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_SDEL , Key_S_Del , 0 }, // 0x1EB9 { CRC_K_SDEL , Key_S_Del , 0 }, // 0x1EB9
#endif #endif
{ CRC_EDITCOPY , KK_EditCopy , KT_E }, // 0x1F77 { CRC_EDITCOPY , KK_EditCopy , KT_E }, // 0x1F77
{ CRC_READHIDEQUOTE , KK_ReadHideQuote , KT_R }, // 0x1FA8
{ CRC_READEXTERNUTILMENU , KK_ReadExternUtilMenu , KT_R }, // 0x2000 { CRC_READEXTERNUTILMENU , KK_ReadExternUtilMenu , KT_R }, // 0x2000
{ CRC_READCHANGEAKA , KK_ReadChangeAka , KT_R }, // 0x2015 { CRC_READCHANGEAKA , KK_ReadChangeAka , KT_R }, // 0x2015
{ CRC_EDITGOWORDRIGHT , KK_EditGoWordRight , KT_E }, // 0x20D0 { CRC_EDITGOWORDRIGHT , KK_EditGoWordRight , KT_E }, // 0x20D0
@ -442,15 +449,18 @@ tglobalkey globalkeys[] = {
{ CRC_K_CF12 , Key_C_F12 , 0 }, // 0x3480 { CRC_K_CF12 , Key_C_F12 , 0 }, // 0x3480
{ CRC_K_CF10 , Key_C_F10 , 0 }, // 0x3482 { CRC_K_CF10 , Key_C_F10 , 0 }, // 0x3482
{ CRC_K_CF11 , Key_C_F11 , 0 }, // 0x3483 { CRC_K_CF11 , Key_C_F11 , 0 }, // 0x3483
{ CRC_READTWITSSKIP , KK_ReadTwitsSkip , KT_R }, // 0x35A1
{ CRC_K_CHOME , Key_C_Home , 0 }, // 0x35C4 { CRC_K_CHOME , Key_C_Home , 0 }, // 0x35C4
{ CRC_HEADERTOGGLERECEIVED , KK_HeaderToggleReceived , KT_H }, // 0x36B9 { CRC_HEADERTOGGLERECEIVED , KK_HeaderToggleReceived , KT_H }, // 0x36B9
{ CRC_K_CPGDN , Key_C_PgDn , 0 }, // 0x371D { CRC_K_CPGDN , Key_C_PgDn , 0 }, // 0x371D
{ CRC_EDITCOPYABOVECHAR , KK_EditCopyAboveChar , KT_E }, // 0x380C { CRC_EDITCOPYABOVECHAR , KK_EditCopyAboveChar , KT_E }, // 0x380C
{ CRC_LISTSELECT , KK_ListSelect , KT_M }, // 0x3829 { CRC_LISTSELECT , KK_ListSelect , KT_M }, // 0x3829
{ CRC_READGOTOFIRSTMSG , KK_ReadGotoFirstMsg , KT_R }, // 0x392F { CRC_READGOTOFIRSTMSG , KK_ReadGotoFirstMsg , KT_R }, // 0x392F
{ CRC_READSTYLESSTRIP , KK_ReadStylesStrip , KT_R }, // 0x39E8
{ CRC_AREAGOTONEXT , KK_AreaGotoNext , KT_A }, // 0x3A9C { CRC_AREAGOTONEXT , KK_AreaGotoNext , KT_A }, // 0x3A9C
{ CRC_EDITDELLTWORD , KK_EditDelLtWord , KT_E }, // 0x3B67 { CRC_EDITDELLTWORD , KK_EditDelLtWord , KT_E }, // 0x3B67
{ CRC_LISTGOTOLAST , KK_ListGotoLast , KT_M }, // 0x3BA7 { CRC_LISTGOTOLAST , KK_ListGotoLast , KT_M }, // 0x3BA7
{ CRC_READSHOWQUOTE , KK_ReadShowQuote , KT_R }, // 0x3C6C
{ CRC_LISTTOGGLEWIDESUBJ , KK_ListToggleWideSubj , KT_M }, // 0x3C76 { CRC_LISTTOGGLEWIDESUBJ , KK_ListToggleWideSubj , KT_M }, // 0x3C76
{ CRC_EDITGODOWN , KK_EditGoDown , KT_E }, // 0x3DC2 { CRC_EDITGODOWN , KK_EditGoDown , KT_E }, // 0x3DC2
{ CRC_K_A0 , Key_A_0 , 0 }, // 0x4030 { CRC_K_A0 , Key_A_0 , 0 }, // 0x4030
@ -513,6 +523,7 @@ tglobalkey globalkeys[] = {
{ CRC_READCHANGEATTRS , KK_ReadChangeAttrs , KT_R }, // 0x47F8 { CRC_READCHANGEATTRS , KK_ReadChangeAttrs , KT_R }, // 0x47F8
{ CRC_READSEARCH , KK_ReadSearch , KT_R }, // 0x48EF { CRC_READSEARCH , KK_ReadSearch , KT_R }, // 0x48EF
{ CRC_READMSGPGDN , KK_ReadMsgPgDn , KT_R }, // 0x4908 { CRC_READMSGPGDN , KK_ReadMsgPgDn , KT_R }, // 0x4908
{ CRC_READSTRIPHTML , KK_ReadStripHTML , KT_R }, // 0x499A
{ CRC_LISTGOTOPREV , KK_ListGotoPrev , KT_M }, // 0x49E9 { CRC_LISTGOTOPREV , KK_ListGotoPrev , KT_M }, // 0x49E9
{ CRC_READQUOTEBUF , KK_ReadQuoteBuf , KT_R }, // 0x49EE { CRC_READQUOTEBUF , KK_ReadQuoteBuf , KT_R }, // 0x49EE
{ CRC_EDITDELETE , KK_EditDelete , KT_E }, // 0x4A37 { CRC_EDITDELETE , KK_EditDelete , KT_E }, // 0x4A37
@ -556,6 +567,7 @@ tglobalkey globalkeys[] = {
#endif #endif
{ CRC_READGOTONEXTAREA , KK_ReadGotoNextArea , KT_R }, // 0x5B23 { CRC_READGOTONEXTAREA , KK_ReadGotoNextArea , KT_R }, // 0x5B23
{ CRC_K_TAB , Key_Tab , 0 }, // 0x5B33 { CRC_K_TAB , Key_Tab , 0 }, // 0x5B33
{ CRC_READHIDEHIDDEN , KK_ReadHideHidden , KT_R }, // 0x5B89
{ CRC_K_AEND , Key_A_End , 0 }, // 0x5BE9 { CRC_K_AEND , Key_A_End , 0 }, // 0x5BE9
{ CRC_FILEMACRO , KK_FileMacro , KT_F }, // 0x5D48 { CRC_FILEMACRO , KK_FileMacro , KT_F }, // 0x5D48
{ CRC_READMSGLINEDOWN , KK_ReadMsgLineDown , KT_R }, // 0x5DB2 { CRC_READMSGLINEDOWN , KK_ReadMsgLineDown , KT_R }, // 0x5DB2
@ -589,9 +601,11 @@ tglobalkey globalkeys[] = {
{ CRC_K_CZ , Key_C_Z , 0 }, // 0x5E5A { CRC_K_CZ , Key_C_Z , 0 }, // 0x5E5A
{ CRC_READCOMMENTMSG , KK_ReadCommentMsg , KT_R }, // 0x5E89 { CRC_READCOMMENTMSG , KK_ReadCommentMsg , KT_R }, // 0x5E89
{ CRC_READTOGGLETWITS , KK_ReadToggleTwits , KT_R }, // 0x5FD1 { CRC_READTOGGLETWITS , KK_ReadToggleTwits , KT_R }, // 0x5FD1
{ CRC_LISTWIDESUBJ , KK_ListWideSubj , KT_M }, // 0x6026
{ CRC_EDITGOPGDN , KK_EditGoPgDn , KT_E }, // 0x607D { CRC_EDITGOPGDN , KK_EditGoPgDn , KT_E }, // 0x607D
{ CRC_K_CDEL , Key_C_Del , 0 }, // 0x60BC { CRC_K_CDEL , Key_C_Del , 0 }, // 0x60BC
{ CRC_KK_AUTO , Key_Auto , 0 }, // 0x60E2 { CRC_KK_AUTO , Key_Auto , 0 }, // 0x60E2
{ CRC_READMARK , KK_ReadMark , KT_R }, // 0x6190
{ CRC_READFINDHEADER , KK_ReadFindHeader , KT_R }, // 0x6343 { CRC_READFINDHEADER , KK_ReadFindHeader , KT_R }, // 0x6343
{ CRC_EDITDELETESOL , KK_EditDeleteSOL , KT_E }, // 0x63B4 { CRC_EDITDELETESOL , KK_EditDeleteSOL , KT_E }, // 0x63B4
{ CRC_K_PGUP , Key_PgUp , 0 }, // 0x63CC { CRC_K_PGUP , Key_PgUp , 0 }, // 0x63CC
@ -619,6 +633,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_HOME , Key_Home , 0 }, // 0x700B { CRC_K_HOME , Key_Home , 0 }, // 0x700B
{ CRC_ADDRESSBOOKDELETE , KK_AddressbookDelete , KT_B }, // 0x70D1 { CRC_ADDRESSBOOKDELETE , KK_AddressbookDelete , KT_B }, // 0x70D1
{ CRC_EDITGOPGUP , KK_EditGoPgUp , KT_E }, // 0x7163 { CRC_EDITGOPGUP , KK_EditGoPgUp , KT_E }, // 0x7163
{ CRC_READTWITSIGNORE , KK_ReadTwitsIgnore , KT_R }, // 0x71CA
{ CRC_READMSGLINEUP , KK_ReadMsgLineUp , KT_R }, // 0x7238 { CRC_READMSGLINEUP , KK_ReadMsgLineUp , KT_R }, // 0x7238
{ CRC_EDITHEADER , KK_EditHeader , KT_E }, // 0x726F { CRC_EDITHEADER , KK_EditHeader , KT_E }, // 0x726F
{ CRC_K_PGDN , Key_PgDn , 0 }, // 0x72D2 { CRC_K_PGDN , Key_PgDn , 0 }, // 0x72D2
@ -628,15 +643,19 @@ tglobalkey globalkeys[] = {
{ CRC_HEADERADDRESSBOOK , KK_HeaderAddressbook , KT_H }, // 0x76FC { CRC_HEADERADDRESSBOOK , KK_HeaderAddressbook , KT_H }, // 0x76FC
{ CRC_EDITUNDEFINE , KK_EditUndefine , KT_E }, // 0x7873 { CRC_EDITUNDEFINE , KK_EditUndefine , KT_E }, // 0x7873
{ CRC_LISTGOTOFIRST , KK_ListGotoFirst , KT_M }, // 0x7925 { CRC_LISTGOTOFIRST , KK_ListGotoFirst , KT_M }, // 0x7925
{ CRC_READSTYLESNONE , KK_ReadStylesNone , KT_R }, // 0x79D7
{ CRC_K_CEND , Key_C_End , 0 }, // 0x7B95 { CRC_K_CEND , Key_C_End , 0 }, // 0x7B95
{ CRC_READSTYLESSHOW , KK_ReadStylesShow , KT_R }, // 0x7D0D
{ CRC_K_APGUP , Key_A_PgUp , 0 }, // 0x7E61 { CRC_K_APGUP , Key_A_PgUp , 0 }, // 0x7E61
{ CRC_EDITQUITNOW , KK_EditQuitNow , KT_E }, // 0x80BA { CRC_EDITQUITNOW , KK_EditQuitNow , KT_E }, // 0x80BA
{ CRC_LISTMARKINGOPTIONS , KK_ListMarkingOptions , KT_M }, // 0x8138 { CRC_LISTMARKINGOPTIONS , KK_ListMarkingOptions , KT_M }, // 0x8138
{ CRC_EDITZAPQUOTEBELOW , KK_EditZapQuoteBelow , KT_E }, // 0x814F { CRC_EDITZAPQUOTEBELOW , KK_EditZapQuoteBelow , KT_E }, // 0x814F
{ CRC_EDITDUPLINE , KK_EditDupLine , KT_E }, // 0x816A { CRC_EDITDUPLINE , KK_EditDupLine , KT_E }, // 0x816A
{ CRC_READSHOWHIDDKLUD , KK_ReadShowHiddKlud , KT_R }, // 0x81EB
{ CRC_EDITDELRTWORD , KK_EditDelRtWord , KT_E }, // 0x829A { CRC_EDITDELRTWORD , KK_EditDelRtWord , KT_E }, // 0x829A
{ CRC_AREAUNDEFINE , KK_AreaUndefine , KT_A }, // 0x835B { CRC_AREAUNDEFINE , KK_AreaUndefine , KT_A }, // 0x835B
{ CRC_READGOTOREPLYNEXT , KK_ReadGotoReplyNext , KT_R }, // 0x844F { CRC_READGOTOREPLYNEXT , KK_ReadGotoReplyNext , KT_R }, // 0x844F
{ CRC_READHIDEHIDDKLUD , KK_ReadHideHiddKlud , KT_R }, // 0x84ED
{ CRC_EDITMACRO , KK_EditMacro , KT_E }, // 0x85CD { CRC_EDITMACRO , KK_EditMacro , KT_E }, // 0x85CD
{ CRC_READSHOWDEL , KK_ReadShowDel , KT_R }, // 0x8615 { CRC_READSHOWDEL , KK_ReadShowDel , KT_R }, // 0x8615
{ CRC_K_ENTER , Key_Ent , 0 }, // 0x87BD { CRC_K_ENTER , Key_Ent , 0 }, // 0x87BD
@ -646,9 +665,12 @@ tglobalkey globalkeys[] = {
{ CRC_EDITASKEXIT , KK_EditAskExit , KT_E }, // 0x89AF { CRC_EDITASKEXIT , KK_EditAskExit , KT_E }, // 0x89AF
{ CRC_HEADERTOGGLEHOLD , KK_HeaderToggleHold , KT_H }, // 0x8A5F { CRC_HEADERTOGGLEHOLD , KK_HeaderToggleHold , KT_H }, // 0x8A5F
{ CRC_EDITBLOCKHOME , KK_EditBlockHome , KT_E }, // 0x8B82 { CRC_EDITBLOCKHOME , KK_EditBlockHome , KT_E }, // 0x8B82
{ CRC_READSHOWHIDDEN , KK_ReadShowHidden , KT_R }, // 0x8B88
{ CRC_READDELETEMSG , KK_ReadDeleteMsg , KT_R }, // 0x8BCE { CRC_READDELETEMSG , KK_ReadDeleteMsg , KT_R }, // 0x8BCE
{ CRC_EDITTAB , KK_EditTab , KT_E }, // 0x8C26 { CRC_EDITTAB , KK_EditTab , KT_E }, // 0x8C26
{ CRC_LISTUNMARK , KK_ListUnmark , KT_M }, // 0x8DEB
{ CRC_K_KEY5 , Key_5Num , 0 }, // 0x9062 { CRC_K_KEY5 , Key_5Num , 0 }, // 0x9062
{ CRC_READSEQUENTMSGNO , KK_ReadSequentMsgno , KT_R }, // 0x9085
{ CRC_EDITPASTE , KK_EditPaste , KT_E }, // 0x90C4 { CRC_EDITPASTE , KK_EditPaste , KT_E }, // 0x90C4
{ CRC_HEADERTOGGLEAUDIT , KK_HeaderToggleAudit , KT_H }, // 0x91B7 { CRC_HEADERTOGGLEAUDIT , KK_HeaderToggleAudit , KT_H }, // 0x91B7
{ CRC_EDITGOBOTLINE , KK_EditGoBotLine , KT_E }, // 0x92DD { CRC_EDITGOBOTLINE , KK_EditGoBotLine , KT_E }, // 0x92DD
@ -683,6 +705,7 @@ tglobalkey globalkeys[] = {
{ CRC_READTHREADTREE , KK_ReadThreadtree , KT_R }, // 0x9827 { CRC_READTHREADTREE , KK_ReadThreadtree , KT_R }, // 0x9827
{ CRC_EDITBLOCKPGUP , KK_EditBlockPgUp , KT_E }, // 0x9842 { CRC_EDITBLOCKPGUP , KK_EditBlockPgUp , KT_E }, // 0x9842
{ CRC_K_ARIGHT , Key_A_Rgt , 0 }, // 0x9911 { CRC_K_ARIGHT , Key_A_Rgt , 0 }, // 0x9911
{ CRC_READTWITSKILL , KK_ReadTwitsKill , KT_R }, // 0x9A25
{ CRC_K_AINS , Key_A_Ins , 0 }, // 0x9A72 { CRC_K_AINS , Key_A_Ins , 0 }, // 0x9A72
{ CRC_EDITGOBOTMSG , KK_EditGoBotMsg , KT_E }, // 0x9B29 { CRC_EDITGOBOTMSG , KK_EditGoBotMsg , KT_E }, // 0x9B29
{ CRC_READDOSSHELL , KK_ReadDosShell , KT_R }, // 0x9C2B { CRC_READDOSSHELL , KK_ReadDosShell , KT_R }, // 0x9C2B
@ -690,6 +713,7 @@ tglobalkey globalkeys[] = {
{ CRC_NODEABORT , KK_NodeAbort , KT_N }, // 0xA08C { CRC_NODEABORT , KK_NodeAbort , KT_N }, // 0xA08C
{ CRC_READTOGGLEHIDDKLUD , KK_ReadToggleHiddKlud , KT_R }, // 0xA24F { CRC_READTOGGLEHIDDKLUD , KK_ReadToggleHiddKlud , KT_R }, // 0xA24F
{ CRC_AREASELECT , KK_AreaSelect , KT_A }, // 0xA271 { CRC_AREASELECT , KK_AreaSelect , KT_A }, // 0xA271
{ CRC_READSHOWHTML , KK_ReadShowHTML , KT_R }, // 0xA27F
{ CRC_LISTMACRO , KK_ListMacro , KT_M }, // 0xA2B6 { CRC_LISTMACRO , KK_ListMacro , KT_M }, // 0xA2B6
{ CRC_EDITDELCHAR , KK_EditDelChar , KT_E }, // 0xA3C7 { CRC_EDITDELCHAR , KK_EditDelChar , KT_E }, // 0xA3C7
{ CRC_AREAASKEXIT , KK_AreaAskExit , KT_A }, // 0xA3D1 { CRC_AREAASKEXIT , KK_AreaAskExit , KT_A }, // 0xA3D1
@ -716,6 +740,7 @@ tglobalkey globalkeys[] = {
{ CRC_EDITUNDO , KK_EditUndo , KT_E }, // 0xB295 { CRC_EDITUNDO , KK_EditUndo , KT_E }, // 0xB295
{ CRC_READDIRQUOTEMSG , KK_ReadDirQuoteMsg , KT_R }, // 0xB351 { CRC_READDIRQUOTEMSG , KK_ReadDirQuoteMsg , KT_R }, // 0xB351
{ CRC_FILETOGGLEMARK , KK_FileToggleMark , KT_F }, // 0xB431 { CRC_FILETOGGLEMARK , KK_FileToggleMark , KT_F }, // 0xB431
{ CRC_READTWITSBLANK , KK_ReadTwitsBlank , KT_R }, // 0xB571
{ CRC_FILEGOTOPREV , KK_FileGotoPrev , KT_F }, // 0xB644 { CRC_FILEGOTOPREV , KK_FileGotoPrev , KT_F }, // 0xB644
{ CRC_EDITLOOKUPCURSOR , KK_EditLookupCursor , KT_E }, // 0xB7CC { CRC_EDITLOOKUPCURSOR , KK_EditLookupCursor , KT_E }, // 0xB7CC
{ CRC_NODEGOTOPREV , KK_NodeGotoPrev , KT_N }, // 0xB85D { CRC_NODEGOTOPREV , KK_NodeGotoPrev , KT_N }, // 0xB85D
@ -723,6 +748,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_CINS , Key_C_Ins , 0 }, // 0xBA0E { CRC_K_CINS , Key_C_Ins , 0 }, // 0xBA0E
{ CRC_READGOTONEXTUNREAD , KK_ReadGotoNextUnread , KT_R }, // 0xBA34 { CRC_READGOTONEXTUNREAD , KK_ReadGotoNextUnread , KT_R }, // 0xBA34
{ CRC_READADDRESSBOOK , KK_ReadAddressbook , KT_R }, // 0xBAC1 { CRC_READADDRESSBOOK , KK_ReadAddressbook , KT_R }, // 0xBAC1
{ CRC_READTOGGLEHTML , KK_ReadToggleHTML , KT_R }, // 0xBC02
#if !defined(__UNIX__) || defined(__USE_NCURSES__) #if !defined(__UNIX__) || defined(__USE_NCURSES__)
{ CRC_K_SPGUP , Key_S_PgUp , 0 }, // 0xBC5A { CRC_K_SPGUP , Key_S_PgUp , 0 }, // 0xBC5A
#endif #endif
@ -741,6 +767,7 @@ tglobalkey globalkeys[] = {
{ CRC_K_SINS , Key_S_Ins , 0 }, // 0xC40B { CRC_K_SINS , Key_S_Ins , 0 }, // 0xC40B
#endif #endif
{ CRC_AREASCANPM , KK_AreaScanPM , KT_A }, // 0xC4FF { CRC_AREASCANPM , KK_AreaScanPM , KT_A }, // 0xC4FF
{ CRC_LISTMARK , KK_ListMark , KT_M }, // 0xC530
{ CRC_READMSGEND , KK_ReadMsgEnd , KT_R }, // 0xC5AD { CRC_READMSGEND , KK_ReadMsgEnd , KT_R }, // 0xC5AD
{ CRC_AREATOGGLE , KK_AreaToggle , KT_A }, // 0xC734 { CRC_AREATOGGLE , KK_AreaToggle , KT_A }, // 0xC734
#if !defined(__UNIX__) || defined(__USE_NCURSES__) #if !defined(__UNIX__) || defined(__USE_NCURSES__)
@ -748,6 +775,7 @@ tglobalkey globalkeys[] = {
#endif #endif
{ CRC_HEADERTOGGLEORPHAN , KK_HeaderToggleOrphan , KT_H }, // 0xC98A { CRC_HEADERTOGGLEORPHAN , KK_HeaderToggleOrphan , KT_H }, // 0xC98A
{ CRC_HEADERTOGGLEFILE , KK_HeaderToggleFile , KT_H }, // 0xC997 { CRC_HEADERTOGGLEFILE , KK_HeaderToggleFile , KT_H }, // 0xC997
{ CRC_READSHOWKLUDGE , KK_ReadShowKludge , KT_R }, // 0xC9ED
{ CRC_NODEGOTOLAST , KK_NodeGotoLast , KT_N }, // 0xCA13 { CRC_NODEGOTOLAST , KK_NodeGotoLast , KT_N }, // 0xCA13
{ CRC_FILEGOTOFIRST , KK_FileGotoFirst , KT_F }, // 0xCAD5 { CRC_FILEGOTOFIRST , KK_FileGotoFirst , KT_F }, // 0xCAD5
{ CRC_HEADERTOGGLEDELSENT , KK_HeaderToggleDelsent , KT_H }, // 0xCD4B { CRC_HEADERTOGGLEDELSENT , KK_HeaderToggleDelsent , KT_H }, // 0xCD4B
@ -783,12 +811,14 @@ tglobalkey globalkeys[] = {
{ CRC_READMOVECOMMENTMSG , KK_ReadMoveCommentMsg , KT_R }, // 0xE4E7 { CRC_READMOVECOMMENTMSG , KK_ReadMoveCommentMsg , KT_R }, // 0xE4E7
{ CRC_READGOTOREPLY1ST , KK_ReadGotoReply1st , KT_R }, // 0xE54F { CRC_READGOTOREPLY1ST , KK_ReadGotoReply1st , KT_R }, // 0xE54F
{ CRC_READTOGGLEHEXDUMP , KK_ReadToggleHexdump , KT_R }, // 0xE6D5 { CRC_READTOGGLEHEXDUMP , KK_ReadToggleHexdump , KT_R }, // 0xE6D5
{ CRC_LISTNARROWSUBJ , KK_ListNarrowSubj , KT_M }, // 0xE756
{ CRC_NODEQUITNOW , KK_NodeQuitNow , KT_N }, // 0xE780 { CRC_NODEQUITNOW , KK_NodeQuitNow , KT_N }, // 0xE780
{ CRC_NODEGOTONEXT , KK_NodeGotoNext , KT_N }, // 0xE7F5 { CRC_NODEGOTONEXT , KK_NodeGotoNext , KT_N }, // 0xE7F5
{ CRC_READMAKEUSERLIST , KK_ReadMakeUserlist , KT_R }, // 0xE8C6 { CRC_READMAKEUSERLIST , KK_ReadMakeUserlist , KT_R }, // 0xE8C6
{ CRC_EDITCLEARPASTEBUF , KK_EditClearPasteBuf , KT_E }, // 0xE8E4 { CRC_EDITCLEARPASTEBUF , KK_EditClearPasteBuf , KT_E }, // 0xE8E4
{ CRC_K_AENTER , Key_A_Ent , 0 }, // 0xE921 { CRC_K_AENTER , Key_A_Ent , 0 }, // 0xE921
{ CRC_READMARKINGOPTIONS , KK_ReadMarkingOptions , KT_R }, // 0xE97A { CRC_READMARKINGOPTIONS , KK_ReadMarkingOptions , KT_R }, // 0xE97A
{ CRC_READUNMARK , KK_ReadUnmark , KT_R }, // 0xE9BB
{ CRC_FILEGOTONEXT , KK_FileGotoNext , KT_F }, // 0xE9EC { CRC_FILEGOTONEXT , KK_FileGotoNext , KT_F }, // 0xE9EC
{ CRC_EDITBLOCKLEFT , KK_EditBlockLeft , KT_E }, // 0xED1D { CRC_EDITBLOCKLEFT , KK_EditBlockLeft , KT_E }, // 0xED1D
{ CRC_K_CUP , Key_C_Up , 0 }, // 0xEE6B { CRC_K_CUP , Key_C_Up , 0 }, // 0xEE6B
@ -806,6 +836,7 @@ tglobalkey globalkeys[] = {
{ CRC_EDITTABREVERSE , KK_EditTabReverse , KT_E }, // 0xF5B6 { CRC_EDITTABREVERSE , KK_EditTabReverse , KT_E }, // 0xF5B6
{ CRC_HEADERTOGGLEPVT , KK_HeaderTogglePvt , KT_H }, // 0xF614 { CRC_HEADERTOGGLEPVT , KK_HeaderTogglePvt , KT_H }, // 0xF614
{ CRC_HEADERTOGGLESENT , KK_HeaderToggleSent , KT_H }, // 0xF68C { CRC_HEADERTOGGLESENT , KK_HeaderToggleSent , KT_H }, // 0xF68C
{ CRC_AREAMARK , KK_AreaMark , KT_A }, // 0xF77B
{ CRC_K_RIGHT , Key_Rgt , 0 }, // 0xF78D { CRC_K_RIGHT , Key_Rgt , 0 }, // 0xF78D
{ CRC_EDITIMPORTQUOTEBUF , KK_EditImportQuotebuf , KT_E }, // 0xF797 { CRC_EDITIMPORTQUOTEBUF , KK_EditImportQuotebuf , KT_E }, // 0xF797
{ CRC_READMACRO , KK_ReadMacro , KT_R }, // 0xF7D8 { CRC_READMACRO , KK_ReadMacro , KT_R }, // 0xF7D8

View File

@ -53,6 +53,8 @@ const word CRC_AREATOUCHNETSCAN = 0x58C1;
const word CRC_AREAUNDEFINE = 0x835B; const word CRC_AREAUNDEFINE = 0x835B;
const word CRC_AREAWRITEGOLDLAST = 0xD353; const word CRC_AREAWRITEGOLDLAST = 0xD353;
const word CRC_AREAZAP = 0x5125; const word CRC_AREAZAP = 0x5125;
const word CRC_AREAMARK = 0xF77B;
const word CRC_AREAUNMARK = 0x17B3;
const word CRC_EDITABORT = 0x6468; const word CRC_EDITABORT = 0x6468;
const word CRC_EDITANCHOR = 0xDC07; const word CRC_EDITANCHOR = 0xDC07;
@ -158,6 +160,10 @@ const word CRC_LISTTOGGLEDATE = 0x6F1F;
const word CRC_LISTTOGGLEMARK = 0xD389; const word CRC_LISTTOGGLEMARK = 0xD389;
const word CRC_LISTTOGGLEWIDESUBJ = 0x3C76; const word CRC_LISTTOGGLEWIDESUBJ = 0x3C76;
const word CRC_LISTUNDEFINE = 0xAF86; const word CRC_LISTUNDEFINE = 0xAF86;
const word CRC_LISTMARK = 0xC530;
const word CRC_LISTUNMARK = 0x8DEB;
const word CRC_LISTWIDESUBJ = 0x6026;
const word CRC_LISTNARROWSUBJ = 0xE756;
const word CRC_EXTERNUTIL01 = 0x95B9; const word CRC_EXTERNUTIL01 = 0x95B9;
const word CRC_EXTERNUTIL02 = 0x95BA; const word CRC_EXTERNUTIL02 = 0x95BA;
@ -280,6 +286,31 @@ const word CRC_READTOUCHSEMAPHORE = 0x6B1D;
const word CRC_READUNDEFINE = 0x329D; const word CRC_READUNDEFINE = 0x329D;
const word CRC_READUUDECODE = 0x4F0B; const word CRC_READUUDECODE = 0x4F0B;
const word CRC_READWRITEMSG = 0x73AC; const word CRC_READWRITEMSG = 0x73AC;
const word CRC_READSHOWKLUDGE = 0xC9ED;
const word CRC_READHIDEKLUDGE = 0x19EC;
const word CRC_READSHOWHIDDEN = 0x8B88;
const word CRC_READHIDEHIDDEN = 0x5B89;
const word CRC_READSHOWHIDDKLUD = 0x81EB;
const word CRC_READHIDEHIDDKLUD = 0x84ED;
const word CRC_READMARK = 0x6190;
const word CRC_READUNMARK = 0xE9BB;
const word CRC_READREADMARKED = 0x01AE;
const word CRC_READREADALL = 0x0146;
const word CRC_READREALMSGNO = 0x07F8;
const word CRC_READSEQUENTMSGNO = 0x9085;
const word CRC_READSTYLESNONE = 0x79D7;
const word CRC_READSTYLESSHOW = 0x7D0D;
const word CRC_READSTYLESSTRIP = 0x39E8;
const word CRC_READTWITSSHOW = 0x03C5;
const word CRC_READTWITSBLANK = 0xB571;
const word CRC_READTWITSSKIP = 0x35A1;
const word CRC_READTWITSIGNORE = 0x71CA;
const word CRC_READTWITSKILL = 0x9A25;
const word CRC_READSTRIPHTML = 0x499A;
const word CRC_READSHOWHTML = 0xA27F;
const word CRC_READTOGGLEHTML = 0xBC02;
const word CRC_READSHOWQUOTE = 0x3C6C;
const word CRC_READHIDEQUOTE = 0x1FA8;
const word CRC_ADDRESSBOOKQUIT = 0x47C7; const word CRC_ADDRESSBOOKQUIT = 0x47C7;
const word CRC_ADDRESSBOOKADD = 0xFF55; const word CRC_ADDRESSBOOKADD = 0xFF55;

View File

@ -325,6 +325,7 @@ void CfgSquishuserno ();
void CfgSquishuserpath (); void CfgSquishuserpath ();
void CfgStatuslineclock (); void CfgStatuslineclock ();
void CfgStatuslinehelp (); void CfgStatuslinehelp ();
void CfgStripHTML ();
void CfgStylecodes (); void CfgStylecodes ();
void CfgStylecodepunct (); void CfgStylecodepunct ();
void CfgStylecodestops (); void CfgStylecodestops ();
@ -363,6 +364,7 @@ void CfgViewkludge ();
void CfgViewquote (); void CfgViewquote ();
void CfgWhoto (); void CfgWhoto ();
void CfgWildcatuserno (); void CfgWildcatuserno ();
void CfgWriteheader ();
void CfgWritetemplate (); void CfgWritetemplate ();
void CfgXlatcharset (); void CfgXlatcharset ();
void CfgXlatescset (); void CfgXlatescset ();
@ -378,4 +380,3 @@ void CfgZonegating ();
#endif #endif
// ------------------------------------------------------------------ // ------------------------------------------------------------------

View File

@ -592,6 +592,20 @@ bool GPickArealist::handle_key() {
cursor_down(); cursor_down();
break; break;
case KK_AreaMark:
AL[index]->set_marked(true);
display_bar();
precursor();
cursor_down();
break;
case KK_AreaUnmark:
AL[index]->set_marked(false);
display_bar();
precursor();
cursor_down();
break;
case KK_AreaBoardnos: case KK_AreaBoardnos:
CFG->switches.set(arealistnos, not CFG->switches.get(arealistnos)); CFG->switches.set(arealistnos, not CFG->switches.get(arealistnos));
update(); update();

View File

@ -322,6 +322,7 @@ public:
int squishuserno; int squishuserno;
Path squishuserpath; Path squishuserpath;
int statuslinehelp; int statuslinehelp;
bool striphtml;
char stylecodepunct[41]; char stylecodepunct[41];
char stylecodestops[41]; char stylecodestops[41];
gstrarray tagline; gstrarray tagline;
@ -358,6 +359,7 @@ public:
bool viewquote; bool viewquote;
Name whoto; Name whoto;
int wildcatuserno; int wildcatuserno;
int writeheader;
std::string wtpl; std::string wtpl;
std::vector<Map> xlatcharset; std::vector<Map> xlatcharset;
std::vector<Map> xlatescset; std::vector<Map> xlatescset;

139
golded3/gehtml.cpp Executable file
View File

@ -0,0 +1,139 @@
// ------------------------------------------------------------------
// GoldED+
// Copyright (C) 2003 Alexander S. Aganichev
// ------------------------------------------------------------------
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston,
// MA 02111-1307 USA
// ------------------------------------------------------------------
// $Id$
// ------------------------------------------------------------------
// HTML tag remover.
// ------------------------------------------------------------------
#include <golded.h>
// ------------------------------------------------------------------
const static struct html_entities {
const char *tag;
char replacement;
}
entities[] = {
{"nbsp", ' '},
{"brvbar", '|'},
{"laquo", '<'},
{"shy", '-'},
{"raquo", '>'},
{"divide", '/'},
{"quot", '\"'},
{"amp", '&'},
{"lt", '<'},
{"gt", '>'}
};
// ------------------------------------------------------------------
void RemoveHTML (char *&txt) {
long i, j, len = strlen(txt) + 1;
char *new_txt = (char *)throw_malloc(len);
bool strip = false;
bool quoted = false;
bool inside_html = false;
bool last_char_was_space = true;
for(i = j = 0; txt[i] != NUL; i++) {
if(not quoted and not strip and (txt[i] == '<')) {
if(strnieql(txt + i, "<html", 5) or strnieql(txt + i, "<!DOCTYPE", 9)
or strnieql(txt + i, "<!--", 4)) {
inside_html = true;
strip = true;
}
else if(strnieql(txt + i, "</html>", 7)) {
inside_html = false;
strip = true;
}
else if(not inside_html and (txt[i + 1] == '/')) {
inside_html = true; // closing html tag, force html mode
strip = true;
}
else if(inside_html) {
strip = true;
if(strnieql(txt + i, "<b>", 3) or strnieql(txt + i, "</b>", 4))
new_txt[j++] = '*';
if(strnieql(txt + i, "<i>", 3) or strnieql(txt + i, "</i>", 4))
new_txt[j++] = '/';
if(strnieql(txt + i, "<u>", 3) or strnieql(txt + i, "</u>", 4))
new_txt[j++] = '_';
if((strnieql(txt + i, "</h", 3) and isdigit(txt[i + 3]))
or strnieql(txt + i, "</p>", 4) or strnieql(txt + i, "</tr>", 5)
or strnieql(txt + i, "</div>", 6) or strnieql(txt + i, "<br>", 4)) {
new_txt[j++] = CR;
}
}
else {
new_txt[j++] = txt[i];
}
}
else if(not strip and not inside_html) {
new_txt[j++] = txt[i];
}
else if(strip and not quoted and (txt[i] == '>')) {
strip = false;
}
else if(inside_html) {
if(strip and (txt[1] == '\"')) {
quoted = not quoted;
}
else if(not strip and (iscntrl(txt[i]) or (txt[i] == ' '))) {
if((i > 0) && (txt[i - 1] == '=')) // compensate for quoted-printable
new_txt[j++] = txt[i];
else if(not last_char_was_space)
new_txt[j++] = ' ';
last_char_was_space = true;
}
else if(not strip and (txt[i] == '&')) {
bool found = false;
for (int k = 0; k < (sizeof(entities) / sizeof(html_entities)); k++) {
long taglen = strlen (entities[k].tag);
if(strnieql (txt + i + 1, entities[k].tag, taglen)) {
new_txt[j++] = entities[k].replacement;
i += taglen + ((txt[i + taglen + 1] == ';') ? 1 : 0);
found = true;
break;
}
}
if(not found) {
new_txt[j++] = txt[i];
}
last_char_was_space = false;
}
else if(not strip) {
new_txt[j++] = txt[i];
last_char_was_space = false;
}
}
}
new_txt[j] = NUL;
if (i != j) {
txt = (char *)throw_realloc(txt, j + 17);
memcpy(txt, new_txt, j + 1);
}
throw_free(new_txt);
}
// ------------------------------------------------------------------

View File

@ -104,6 +104,8 @@ const gkey KK_AreaToggle = 0xFEB6;
const gkey KK_AreaTouchNetscan = 0xFEB7; const gkey KK_AreaTouchNetscan = 0xFEB7;
const gkey KK_AreaWriteGoldlast = 0xFEB8; const gkey KK_AreaWriteGoldlast = 0xFEB8;
const gkey KK_AreaZap = 0xFEB9; const gkey KK_AreaZap = 0xFEB9;
const gkey KK_AreaMark = 0xFEBA;
const gkey KK_AreaUnmark = 0xFEBB;
const gkey KK_EditAbort = 0xFEC0; const gkey KK_EditAbort = 0xFEC0;
const gkey KK_EditAnchor = 0xFEC1; const gkey KK_EditAnchor = 0xFEC1;
@ -205,6 +207,10 @@ const gkey KK_ListToggleBookMark = 0xFF2D;
const gkey KK_ListToggleDate = 0xFF2E; const gkey KK_ListToggleDate = 0xFF2E;
const gkey KK_ListToggleMark = 0xFF2F; const gkey KK_ListToggleMark = 0xFF2F;
const gkey KK_ListToggleWideSubj = 0xFF30; const gkey KK_ListToggleWideSubj = 0xFF30;
const gkey KK_ListMark = 0xFF31;
const gkey KK_ListUnmark = 0xFF32;
const gkey KK_ListWideSubj = 0xFF33;
const gkey KK_ListNarrowSubj = 0xFF34;
const gkey KK_NodeAbort = 0xFF40; const gkey KK_NodeAbort = 0xFF40;
const gkey KK_NodeAskExit = 0xFF41; const gkey KK_NodeAskExit = 0xFF41;
@ -216,6 +222,12 @@ const gkey KK_NodeGotoPrev = 0xFF46;
const gkey KK_NodeQuitNow = 0xFF49; const gkey KK_NodeQuitNow = 0xFF49;
const gkey KK_NodeSelect = 0xFF4A; const gkey KK_NodeSelect = 0xFF4A;
const gkey KK_AddressbookQuit = 0xFF4B;
const gkey KK_AddressbookAdd = 0xFF4C;
const gkey KK_AddressbookSelect = 0xFF4D;
const gkey KK_AddressbookDelete = 0xFF4E;
const gkey KK_AddressbookPack = 0xFF4F;
const gkey KK_ReadAddressbookAdd = 0xFF50; const gkey KK_ReadAddressbookAdd = 0xFF50;
const gkey KK_ReadAskExit = 0xFF51; const gkey KK_ReadAskExit = 0xFF51;
const gkey KK_ReadChangeAka = 0xFF52; const gkey KK_ReadChangeAka = 0xFF52;
@ -298,12 +310,31 @@ const gkey KK_ReadDirQuoteMsg = 0xFFA2;
const gkey KK_ReadMoveDirQuoteMsg = 0xFFA3; const gkey KK_ReadMoveDirQuoteMsg = 0xFFA3;
const gkey KK_ReadPeekURLs = 0xFFA4; const gkey KK_ReadPeekURLs = 0xFFA4;
const gkey KK_ReadShowDel = 0xFFA5; const gkey KK_ReadShowDel = 0xFFA5;
const gkey KK_ReadShowKludge = 0xFFA6;
const gkey KK_AddressbookQuit = 0xFFB0; const gkey KK_ReadHideKludge = 0xFFA7;
const gkey KK_AddressbookAdd = 0xFFB1; const gkey KK_ReadShowHidden = 0xFFA8;
const gkey KK_AddressbookSelect = 0xFFB2; const gkey KK_ReadHideHidden = 0xFFA9;
const gkey KK_AddressbookDelete = 0xFFB3; const gkey KK_ReadShowHiddKlud = 0xFFAA;
const gkey KK_AddressbookPack = 0xFFB4; const gkey KK_ReadHideHiddKlud = 0xFFAB;
const gkey KK_ReadMark = 0xFFAC;
const gkey KK_ReadUnmark = 0xFFAD;
const gkey KK_ReadReadMarked = 0xFFAE;
const gkey KK_ReadReadAll = 0xFFAF;
const gkey KK_ReadRealMsgno = 0xFFB0;
const gkey KK_ReadSequentMsgno = 0xFFB1;
const gkey KK_ReadStylesNone = 0xFFB2;
const gkey KK_ReadStylesShow = 0xFFB3;
const gkey KK_ReadStylesStrip = 0xFFB4;
const gkey KK_ReadTwitsShow = 0xFFB5;
const gkey KK_ReadTwitsBlank = 0xFFB6;
const gkey KK_ReadTwitsSkip = 0xFFB7;
const gkey KK_ReadTwitsIgnore = 0xFFB8;
const gkey KK_ReadTwitsKill = 0xFFB9;
const gkey KK_ReadStripHTML = 0xFFBA;
const gkey KK_ReadShowHTML = 0xFFBB;
const gkey KK_ReadToggleHTML = 0xFFBC;
const gkey KK_ReadShowQuote = 0xFFBD;
const gkey KK_ReadHideQuote = 0xFFBE;
const gkey KK_HeaderAddressbook = 0xFFC0; const gkey KK_HeaderAddressbook = 0xFFC0;
const gkey KK_HeaderLookup = 0xFFC1; const gkey KK_HeaderLookup = 0xFFC1;

View File

@ -363,6 +363,7 @@ static const Kludges rfc_list[] = {
{ "X-Char-Esc" , RFC_X_CHAR_ESC , KCRQ_COLON }, { "X-Char-Esc" , RFC_X_CHAR_ESC , KCRQ_COLON },
{ "X-FTN-To" , RFC_X_FTN_TO , KCRQ_COLON }, { "X-FTN-To" , RFC_X_FTN_TO , KCRQ_COLON },
{ "X-Mailer" , RFC_X_MAILER , KCRQ_COLON }, { "X-Mailer" , RFC_X_MAILER , KCRQ_COLON },
{ "X-Mailreader" , RFC_X_MAILER , KCRQ_COLON },
{ "X-Newsreader" , RFC_X_NEWSREADER , KCRQ_COLON }, { "X-Newsreader" , RFC_X_NEWSREADER , KCRQ_COLON },
{ "X-To" , RFC_X_TO , KCRQ_COLON }, { "X-To" , RFC_X_TO , KCRQ_COLON },
{ "#!" , RFC_RNEWS , KCRQ_NONE }, { "#!" , RFC_RNEWS , KCRQ_NONE },
@ -1527,13 +1528,23 @@ void ScanKludges(GMsg* msg, int getvalue) {
// Check if it's a tearline // Check if it's a tearline
else if(not (gottear or gottag) and strneql("---", ptr, 3) and (ptr[3] == ' ' or ptr[3] == NUL)) { else if(not (gottear or gottag) and strneql("---", ptr, 3) and (ptr[3] == ' ' or ptr[3] == NUL)) {
Line* nnel = next_non_empty(line->next); Line* tearln = line;
if(not lineno or ((lineno-1) == originlineno) or not nnel or nnel->type & GLINE_KLUDGE) { int tearlnno = lineno;
while (tearln->type & GLINE_WRAP) {
tearln = tearln->next;
tearlnno--;
}
Line* nnel = next_non_empty(tearln->next);
if(not tearlnno or ((tearlnno-1) == originlineno) or not nnel or nnel->type & GLINE_KLUDGE) {
// Found Tearline // Found Tearline
gottear = YES; gottear = YES;
tearlineno = lineno; tearlineno = lineno;
line->type |= GLINE_TEAR; for (tearln = line; tearln->type & GLINE_WRAP; tearln = tearln->next) {
line->color = C_READT; tearln->type |= GLINE_TEAR;
tearln->color = C_READT;
}
tearln->type |= GLINE_TEAR;
tearln->color = C_READT;
strbtrim(strcpy(msg->tearline, ptr+3)); strbtrim(strcpy(msg->tearline, ptr+3));
if(getvalue and CFG->gedhandshake) { if(getvalue and CFG->gedhandshake) {
@ -1900,7 +1911,7 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
int wraps=0, para=0, chslev; int wraps=0, para=0, chslev;
bool reflow = false, quoteflag = false; bool reflow = false, quoteflag = false;
bool quotewraphard = AA->Quotewraphard(); bool quotewraphard = AA->Quotewraphard();
bool qpencoded = getvalue and IsQuotedPrintable(AA->Xlatimport()); bool qpencoded = getvalue and (IsQuotedPrintable(AA->Xlatimport()) or AA->StripHTML());
bool gotmime = false; bool gotmime = false;
bool gotmultipart = false; bool gotmultipart = false;
bool inheader = false; bool inheader = false;
@ -1953,6 +1964,8 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
char prev_ptr[3] = {"\xFF\xFF"}; char prev_ptr[3] = {"\xFF\xFF"};
if(AA->StripHTML())
RemoveHTML(msg->txt);
ptr = spanfeeds(msg->txt); ptr = spanfeeds(msg->txt);
// Set default conversion table for area // Set default conversion table for area

View File

@ -412,6 +412,34 @@ bool GMsgList::handle_key() {
case KK_ListSelect: case KK_ListSelect:
return false; return false;
case KK_ListMark:
{
ulong temp = AA->Mark.Find(mlst[index]->msgno);
if(not temp) {
AA->Mark.Add(mlst[index]->msgno);
update_marks(mlst[index]);
}
}
if(index < maximum_index)
cursor_down();
else
display_bar();
break;
case KK_ListUnmark:
{
ulong temp = AA->Mark.Find(mlst[index]->msgno);
if(temp) {
AA->Mark.DelReln(temp);
update_marks(mlst[index]);
}
}
if(index < maximum_index)
cursor_down();
else
display_bar();
break;
case KK_ListToggleMark: case KK_ListToggleMark:
{ {
ulong temp = AA->Mark.Find(mlst[index]->msgno); ulong temp = AA->Mark.Find(mlst[index]->msgno);
@ -498,6 +526,22 @@ bool GMsgList::handle_key() {
DosShell(); DosShell();
break; break;
case KK_ListWideSubj:
if(not AA->Msglistwidesubj()) {
AA->ToggleMsglistwidesubj();
update_title();
update();
}
break;
case KK_ListNarrowSubj:
if(AA->Msglistwidesubj()) {
AA->ToggleMsglistwidesubj();
update_title();
update();
}
break;
case KK_ListToggleWideSubj: case KK_ListToggleWideSubj:
AA->ToggleMsglistwidesubj(); AA->ToggleMsglistwidesubj();
update_title(); update_title();

View File

@ -327,11 +327,9 @@ int GMenuDomarks::Run(char* dowhat) {
// ------------------------------------------------------------------ // ------------------------------------------------------------------
static int gmwm_usehdr = 1;
void do_togglehdr() { void do_togglehdr() {
++gmwm_usehdr; gmwm_usehdr %= 3; ++AA->adat->writeheader; AA->adat->writeheader %= 3;
gwin.cmenu->citem->str = (gmwm_usehdr == 1 ? LNG->WriteToHdrYES : gmwm_usehdr == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO)+1; gwin.cmenu->citem->str = (AA->Writeheader() == 1 ? LNG->WriteToHdrYES : AA->Writeheader() == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO) + 1;
gwin.cmenu->citem->redisp = true; gwin.cmenu->citem->redisp = true;
} }
@ -354,7 +352,7 @@ int GMenuWriteMsg::Run() {
Item(TAG_DISKFILE, LNG->Diskfile); Item(TAG_DISKFILE, LNG->Diskfile);
Item(TAG_PRINTER, LNG->Printer); Item(TAG_PRINTER, LNG->Printer);
Item(TAG_CLIPBRD, LNG->Clipboard); Item(TAG_CLIPBRD, LNG->Clipboard);
Item(TAG_TOGGLEHDR, (gmwm_usehdr == 1 ? LNG->WriteToHdrYES : gmwm_usehdr == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO), 0, do_togglehdr); Item(TAG_TOGGLEHDR, (AA->Writeheader() == 1 ? LNG->WriteToHdrYES : AA->Writeheader() == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO), 0, do_togglehdr);
Item(TAG_QUIT, LNG->QuitWrite); Item(TAG_QUIT, LNG->QuitWrite);
SetTag(_prevtag); SetTag(_prevtag);
End(); End();
@ -362,7 +360,7 @@ int GMenuWriteMsg::Run() {
Start(); Start();
_prevtag = finaltag; _prevtag = finaltag;
int header = gmwm_usehdr == 1 ? 0 : gmwm_usehdr == 2 ? WRITE_ONLY_HEADER : WRITE_NO_HEADER; int header = AA->Writeheader() == 1 ? 0 : AA->Writeheader() == 2 ? WRITE_ONLY_HEADER : WRITE_NO_HEADER;
switch(finaltag) { switch(finaltag) {
case TAG_DISKFILE: return WRITE_FILE|header; case TAG_DISKFILE: return WRITE_FILE|header;
case TAG_PRINTER: return WRITE_PRINTER|header; case TAG_PRINTER: return WRITE_PRINTER|header;

View File

@ -619,13 +619,16 @@ static void MakeMsg2(int& mode, int& status, int& forwstat, int& topline, GMsg*
int adat_viewhidden = AA->Viewhidden(); int adat_viewhidden = AA->Viewhidden();
int adat_viewkludge = AA->Viewkludge(); int adat_viewkludge = AA->Viewkludge();
int adat_viewquote = AA->Viewquote(); int adat_viewquote = AA->Viewquote();
bool adat_striphtml = AA->StripHTML();
AA->adat->viewhidden = true; AA->adat->viewhidden = true;
AA->adat->viewkludge = true; AA->adat->viewkludge = true;
AA->adat->viewquote = true; AA->adat->viewquote = true;
AA->adat->striphtml = false;
msg->TextToLines(CFG->dispmargin-1, false); // Ignore any kludge address found msg->TextToLines(CFG->dispmargin-1, false); // Ignore any kludge address found
AA->adat->viewhidden = adat_viewhidden; AA->adat->viewhidden = adat_viewhidden;
AA->adat->viewkludge = adat_viewkludge; AA->adat->viewkludge = adat_viewkludge;
AA->adat->viewquote = adat_viewquote; AA->adat->viewquote = adat_viewquote;
AA->adat->striphtml = adat_striphtml;
msg->attr.pos0(); msg->attr.pos0();
InvalidateControlInfo(msg); InvalidateControlInfo(msg);

View File

@ -337,6 +337,7 @@ void ToggleBookMark();
void ToggleHidden(); void ToggleHidden();
void ToggleHiddKlud(); void ToggleHiddKlud();
void ToggleKludge(); void ToggleKludge();
void ToggleStripHTML();
void ToggleMark(); void ToggleMark();
void ToggleMarkRead(); void ToggleMarkRead();
void TogglePageBar(); void TogglePageBar();
@ -470,6 +471,11 @@ bool isuucp(const char *name);
const char *url_begin(const char *ptr); const char *url_begin(const char *ptr);
// ------------------------------------------------------------------
void RemoveHTML(char *&txt);
// ------------------------------------------------------------------ // ------------------------------------------------------------------
#endif #endif

View File

@ -180,6 +180,8 @@ void Area::InitData() {
adat->viewhidden = CFG->viewhidden; adat->viewhidden = CFG->viewhidden;
adat->viewkludge = CFG->viewkludge; adat->viewkludge = CFG->viewkludge;
adat->viewquote = CFG->viewquote; adat->viewquote = CFG->viewquote;
adat->writeheader = CFG->writeheader;
adat->striphtml = CFG->striphtml;
strcpy(adat->nickname, CFG->nickname); strcpy(adat->nickname, CFG->nickname);
strcpy(adat->netname, CFG->netname); strcpy(adat->netname, CFG->netname);
strcpy(adat->whoto, CFG->whoto); strcpy(adat->whoto, CFG->whoto);
@ -405,6 +407,8 @@ void Area::RandomizeData(int mode) {
CFG->grp.GetItm(GRP_VIEWHIDDEN, adat->viewhidden); CFG->grp.GetItm(GRP_VIEWHIDDEN, adat->viewhidden);
CFG->grp.GetItm(GRP_VIEWKLUDGE, adat->viewkludge); CFG->grp.GetItm(GRP_VIEWKLUDGE, adat->viewkludge);
CFG->grp.GetItm(GRP_VIEWQUOTE, adat->viewquote); CFG->grp.GetItm(GRP_VIEWQUOTE, adat->viewquote);
CFG->grp.GetItm(GRP_STRIPHTML, adat->striphtml);
CFG->grp.GetItm(GRP_WRITEHEADER, adat->writeheader);
} }
if(CFG->grp.GetItm(GRP_NICKNAME, buf, sizeof(buf))) if(CFG->grp.GetItm(GRP_NICKNAME, buf, sizeof(buf)))

View File

@ -270,24 +270,28 @@ void Reader() {
if(AA->isreadmark or AA->isreadpm) { if(AA->isreadmark or AA->isreadpm) {
GTag& tag = AA->isreadpm ? AA->PMrk : AA->Mark; GTag& tag = AA->isreadpm ? AA->PMrk : AA->Mark;
uint mtemp = tag.Find(msg->msgno); uint mtemp = tag.Find(msg->msgno);
sprintf(buf2, "%s [%s%s%s%s]", sprintf(buf2, "%s [%s%s%s%s%s%s]",
LNG->ReadMarked, LNG->ReadMarked,
AA->Viewhidden() ? "H" : "", AA->Viewhidden() ? "H" : "",
AA->Viewkludge() ? "K" : "", AA->Viewkludge() ? "K" : "",
AA->Twitmode() == TWIT_IGNORE ? "Ti" : AA->Twitmode() == TWIT_SKIP ? "Ts" : AA->Twitmode() == TWIT_BLANK ? "Tb" : AA->Twitmode() == TWIT_KILL ? "Tk" : "", AA->Twitmode() == TWIT_IGNORE ? "Ti" : AA->Twitmode() == TWIT_SKIP ? "Ts" : AA->Twitmode() == TWIT_BLANK ? "Tb" : AA->Twitmode() == TWIT_KILL ? "Tk" : "",
CFG->showdeleted ? "D" : "" CFG->showdeleted ? "D" : "",
AA->Viewquote() ? "Q" : "",
AA->StripHTML() ? "S" : ""
); );
sprintf(buf, buf2, sprintf(buf, buf2,
mtemp, tag.Count(), tag.Count()-mtemp mtemp, tag.Count(), tag.Count()-mtemp
); );
} }
else { else {
sprintf(buf2, "%s [%s%s%s%s]", sprintf(buf2, "%s [%s%s%s%s%s%s]",
LNG->ReadAll, LNG->ReadAll,
AA->Viewhidden() ? "H" : "", AA->Viewhidden() ? "H" : "",
AA->Viewkludge() ? "K" : "", AA->Viewkludge() ? "K" : "",
AA->Twitmode() == TWIT_IGNORE ? "Ti" : AA->Twitmode() == TWIT_SKIP ? "Ts" : AA->Twitmode() == TWIT_BLANK ? "Tb" : AA->Twitmode() == TWIT_KILL ? "Tk" : "", AA->Twitmode() == TWIT_IGNORE ? "Ti" : AA->Twitmode() == TWIT_SKIP ? "Ts" : AA->Twitmode() == TWIT_BLANK ? "Tb" : AA->Twitmode() == TWIT_KILL ? "Tk" : "",
CFG->showdeleted ? "D" : "" CFG->showdeleted ? "D" : "",
AA->Viewquote() ? "Q" : "",
AA->StripHTML() ? "S" : ""
); );
sprintf(buf, buf2, sprintf(buf, buf2,
AA->lastread(), AA->Msgn.Count(), AA->Msgn.Count()-AA->lastread() AA->lastread(), AA->Msgn.Count(), AA->Msgn.Count()-AA->lastread()
@ -480,6 +484,29 @@ void Reader() {
IncMargin(); IncMargin();
break; break;
case KK_ReadStylesNone:
if(CFG->usestylies or CFG->hidestylies)
CFG->usestylies = CFG->hidestylies = false;
else
reader_keyok = true;
break;
case KK_ReadStylesShow:
if(not CFG->usestylies or CFG->hidestylies) {
CFG->usestylies = true;
CFG->hidestylies = false;
}
else
reader_keyok = true;
break;
case KK_ReadStylesStrip:
if(not CFG->usestylies or not CFG->hidestylies)
CFG->usestylies = CFG->hidestylies = true;
else
reader_keyok = true;
break;
case KK_ReadToggleStyles: case KK_ReadToggleStyles:
ToggleStyles(); ToggleStyles();
break; break;
@ -488,14 +515,105 @@ void Reader() {
AA->attr().hexX(); AA->attr().hexX();
break; break;
case KK_ReadStripHTML:
if(not AA->StripHTML())
ToggleStripHTML();
else
reader_keyok = true;
break;
case KK_ReadShowHTML:
if(AA->StripHTML())
ToggleStripHTML();
else
reader_keyok = true;
break;
case KK_ReadToggleHTML:
ToggleStripHTML();
break;
case KK_ReadTwitsShow:
if(AA->Twitmode() != TWIT_SHOW) {
AA->SetTwitmode(TWIT_SHOW);
CFG->twitmode = TWIT_SHOW;
}
else
reader_keyok = true;
break;
case KK_ReadTwitsBlank:
if(AA->Twitmode() != TWIT_BLANK) {
AA->SetTwitmode(TWIT_BLANK);
CFG->twitmode = TWIT_BLANK;
}
else
reader_keyok = true;
break;
case KK_ReadTwitsSkip:
if(AA->Twitmode() != TWIT_SKIP) {
AA->SetTwitmode(TWIT_SKIP);
CFG->twitmode = TWIT_SKIP;
}
else
reader_keyok = true;
break;
case KK_ReadTwitsIgnore:
if(AA->Twitmode() != TWIT_IGNORE) {
AA->SetTwitmode(TWIT_IGNORE);
CFG->twitmode = TWIT_IGNORE;
}
else
reader_keyok = true;
break;
case KK_ReadTwitsKill:
if(AA->Twitmode() != TWIT_KILL) {
AA->SetTwitmode(TWIT_KILL);
CFG->twitmode = TWIT_KILL;
}
else
reader_keyok = true;
break;
case KK_ReadToggleTwits: case KK_ReadToggleTwits:
ToggleTwits(); ToggleTwits();
break; break;
case KK_ReadReadMarked:
if(not AA->isreadmark)
ToggleMarkRead();
else
reader_keyok = true;
break;
case KK_ReadReadAll:
if(AA->isreadmark)
ToggleMarkRead();
else
reader_keyok = true;
break;
case KK_ReadToggleMarkRead: case KK_ReadToggleMarkRead:
ToggleMarkRead(); ToggleMarkRead();
break; break;
case KK_ReadMark:
if(not AA->Mark.Find(reader_msg->msgno))
ToggleMark();
else
reader_keyok = true;
break;
case KK_ReadUnmark:
if(AA->Mark.Find(reader_msg->msgno))
ToggleMark();
else
reader_keyok = true;
break;
case KK_ReadToggleMark: case KK_ReadToggleMark:
ToggleMark(); ToggleMark();
break; break;
@ -549,18 +667,82 @@ void Reader() {
GotoPrevUnread(); GotoPrevUnread();
break; break;
case KK_ReadShowHiddKlud:
if(not AA->Viewhidden() and not AA->Viewkludge())
ToggleHiddKlud();
else if(not AA->Viewhidden())
ToggleHidden();
else if(not AA->Viewkludge())
ToggleKludge();
else
reader_keyok = true;
break;
case KK_ReadHideHiddKlud:
if(AA->Viewhidden() and AA->Viewkludge())
ToggleHiddKlud();
else if(AA->Viewhidden())
ToggleHidden();
else if(AA->Viewkludge())
ToggleKludge();
else
reader_keyok = true;
break;
case KK_ReadToggleHiddKlud: case KK_ReadToggleHiddKlud:
ToggleHiddKlud(); ToggleHiddKlud();
break; break;
case KK_ReadShowKludge:
if(not AA->Viewkludge())
ToggleKludge();
else
reader_keyok = true;
break;
case KK_ReadHideKludge:
if(AA->Viewkludge())
ToggleKludge();
else
reader_keyok = true;
break;
case KK_ReadToggleKludge: case KK_ReadToggleKludge:
ToggleKludge(); ToggleKludge();
break; break;
case KK_ReadShowHidden:
if(not AA->Viewhidden())
ToggleHidden();
else
reader_keyok = true;
break;
case KK_ReadHideHidden:
if(AA->Viewhidden())
ToggleHidden();
else
reader_keyok = true;
break;
case KK_ReadToggleHidden: case KK_ReadToggleHidden:
ToggleHidden(); ToggleHidden();
break; break;
case KK_ReadShowQuote:
if(not AA->Viewquote())
ToggleQuote();
else
reader_keyok = true;
break;
case KK_ReadHideQuote:
if(AA->Viewquote())
ToggleQuote();
else
reader_keyok = true;
break;
case KK_ReadToggleQuote: case KK_ReadToggleQuote:
ToggleQuote(); ToggleQuote();
break; break;
@ -573,6 +755,20 @@ void Reader() {
TogglePageBar(); TogglePageBar();
break; break;
case KK_ReadRealMsgno:
if(not CFG->switches.get(disprealmsgno))
ToggleRealMsgno();
else
reader_keyok = true;
break;
case KK_ReadSequentMsgno:
if(CFG->switches.get(disprealmsgno))
ToggleRealMsgno();
else
reader_keyok = true;
break;
case KK_ReadToggleRealMsgno: case KK_ReadToggleRealMsgno:
ToggleRealMsgno(); ToggleRealMsgno();
break; break;

View File

@ -153,6 +153,16 @@ void ToggleHidden() {
} }
// ------------------------------------------------------------------
void ToggleStripHTML() {
AA->ToggleStripHTML();
MsgLineReIndex(reader_msg);
reader_topline = 0;
}
// ------------------------------------------------------------------ // ------------------------------------------------------------------
void ToggleQuote() { void ToggleQuote() {

View File

@ -323,6 +323,8 @@ struct AreaData {
bool viewhidden; bool viewhidden;
bool viewkludge; bool viewkludge;
bool viewquote; bool viewquote;
bool striphtml;
int writeheader;
}; };
// ------------------------------------------------------------------ // ------------------------------------------------------------------
@ -559,6 +561,7 @@ public:
bool Quotewraphard() const { return adat->quotewraphard; } bool Quotewraphard() const { return adat->quotewraphard; }
const GPlay& Play() const { return adat->play; } const GPlay& Play() const { return adat->play; }
const int Replyre() const { return adat->replyre; } const int Replyre() const { return adat->replyre; }
bool StripHTML() const { return adat->striphtml; }
const char* Searchfor() const { return adat->searchfor; } const char* Searchfor() const { return adat->searchfor; }
const char* Tagline() const { return adat->tagline; } const char* Tagline() const { return adat->tagline; }
char Taglinechar() const { return adat->taglinechar; } char Taglinechar() const { return adat->taglinechar; }
@ -575,6 +578,7 @@ public:
bool Viewkludge() const { return adat->viewkludge; } bool Viewkludge() const { return adat->viewkludge; }
bool Viewquote() const { return adat->viewquote; } bool Viewquote() const { return adat->viewquote; }
const char* Whoto() const { return adat->whoto; } const char* Whoto() const { return adat->whoto; }
int Writeheader() const { return adat->writeheader; }
const char* WTpl() const { return adat->wtpl; } const char* WTpl() const { return adat->wtpl; }
const char* Xlatexport() const { return adat->xlatexport; } const char* Xlatexport() const { return adat->xlatexport; }
const char* Xlatimport() const { return adat->xlatimport; } const char* Xlatimport() const { return adat->xlatimport; }
@ -596,7 +600,7 @@ public:
int ToggleViewhidden() { adat->viewhidden = not adat->viewhidden; return adat->viewhidden; } int ToggleViewhidden() { adat->viewhidden = not adat->viewhidden; return adat->viewhidden; }
int ToggleViewkludge() { adat->viewkludge = not adat->viewkludge; return adat->viewkludge; } int ToggleViewkludge() { adat->viewkludge = not adat->viewkludge; return adat->viewkludge; }
int ToggleViewquote() { adat->viewquote = not adat->viewquote; return adat->viewquote; } int ToggleViewquote() { adat->viewquote = not adat->viewquote; return adat->viewquote; }
bool ToggleStripHTML() { adat->striphtml = not adat->striphtml; return adat->striphtml; }
}; };

View File

@ -81,6 +81,7 @@ geutil cpp all nov bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
geutil2 cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be geutil2 cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
geview cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be geview cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
gmarea cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be gmarea cpp all ovl bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
gehtml cpp all nov bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
golded3 cpp all nov bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be golded3 cpp all nov bcd bco bcx djg emx lnx rsx wcn wco wcx cyg be
gedcyg rc cyg gedcyg rc cyg
gedemx rc emx gedemx rc emx

View File

@ -86,6 +86,7 @@ enum {
GRP_QUOTESTOPS, GRP_QUOTESTOPS,
GRP_QUOTEWRAPHARD, GRP_QUOTEWRAPHARD,
GRP_SEARCHFOR, GRP_SEARCHFOR,
GRP_STRIPHTML,
GRP_TAGLINE, GRP_TAGLINE,
GRP_TAGLINECHAR, GRP_TAGLINECHAR,
GRP_TAGLINESUPPORT, GRP_TAGLINESUPPORT,
@ -101,6 +102,7 @@ enum {
GRP_VIEWKLUDGE, GRP_VIEWKLUDGE,
GRP_VIEWQUOTE, GRP_VIEWQUOTE,
GRP_WHOTO, GRP_WHOTO,
GRP_WRITEHEADER,
GRP_WRITETEMPLATE, GRP_WRITETEMPLATE,
GRP_XLATEXPORT, GRP_XLATEXPORT,
GRP_XLATIMPORT, GRP_XLATIMPORT,

View File

@ -336,14 +336,20 @@ void gareafile::ReadHPTFile(char* path, char* file, char* origin, int group) {
switch(aa.type) { switch(aa.type) {
case GMB_NET: case GMB_NET:
aa.attr = attribsnet; aa.attr = attribsnet;
if(aa.msgbase == 0)
aa.msgbase = fidomsgtype;
AddNewArea(aa); AddNewArea(aa);
break; break;
case GMB_ECHO: case GMB_ECHO:
aa.attr = attribsecho; aa.attr = attribsecho;
if(aa.msgbase == 0)
aa.msgbase = fidomsgtype;
AddNewArea(aa); AddNewArea(aa);
break; break;
case GMB_LOCAL: case GMB_LOCAL:
aa.attr = attribslocal; aa.attr = attribslocal;
if(aa.msgbase == 0)
aa.msgbase = fidomsgtype;
AddNewArea(aa); AddNewArea(aa);
break; break;
case GMB_DEFAULT: case GMB_DEFAULT:

View File

@ -76,7 +76,8 @@ char * uunconc_id = "$Id$";
#define BEGIN (1) #define BEGIN (1)
#define DATA (2) #define DATA (2)
#define END (3) #define END (3)
#define DONE (4) #define END2 (4)
#define DONE (5)
/* /*
* mallocable areas * mallocable areas
@ -1072,7 +1073,15 @@ UUDecodePart (FILE *datain, FILE *dataout, int *state,
tc = tf = vlc = 0; tc = tf = vlc = 0;
lc[0] = lc[1] = 0; lc[0] = lc[1] = 0;
} }
else if ((*state == END) && else if ((*state == END) && (method == UU_ENCODED)) {
if (strncmp (line, "`", 1) == 0)
*state = END2;
}
else if ((*state == END) && (method == XX_ENCODED)) {
if (strncmp (line, "+", 1) == 0)
*state = END2;
}
else if ((*state == END2) &&
(method == UU_ENCODED || method == XX_ENCODED)) { (method == UU_ENCODED || method == XX_ENCODED)) {
if (strncmp (line, "end", 3) == 0) { if (strncmp (line, "end", 3) == 0) {
*state = DONE; *state = DONE;
@ -1117,7 +1126,7 @@ UUDecodePart (FILE *datain, FILE *dataout, int *state,
break; break;
} }
if (*state == DATA || *state == END) { if (*state == DATA || *state == END || *state == END2) {
if (method==B64ENCODED && line[0]=='-' && line[1]=='-' && tc) { if (method==B64ENCODED && line[0]=='-' && line[1]=='-' && tc) {
break; break;
} }
@ -1173,9 +1182,9 @@ UUDecodePart (FILE *datain, FILE *dataout, int *state,
} }
if (method == UU_ENCODED) if (method == UU_ENCODED)
*state = (line[0] == 'M') ? DATA : END; *state = (line[0] == 'M') ? DATA : (line[0] == '`') ? END2 : END;
else if (method == XX_ENCODED) else if (method == XX_ENCODED)
*state = (line[0] == 'h') ? DATA : END; *state = (line[0] == 'h') ? DATA : (line[0] == '+') ? END2 : END;
else if (method == B64ENCODED) else if (method == B64ENCODED)
*state = (strchr (line, '=') == NULL) ? DATA : DONE; *state = (strchr (line, '=') == NULL) ? DATA : DONE;
else if (method == BH_ENCODED) else if (method == BH_ENCODED)

View File

@ -525,6 +525,7 @@ ScanData (FILE *datei, char *fname, int *errcode,
long preheaders=0, oldposition; long preheaders=0, oldposition;
long yefilesize=0, yepartends=0; long yefilesize=0, yepartends=0;
size_t dcc, bhopc; size_t dcc, bhopc;
char prevlinefirstchar;
*errcode = UURET_OK; *errcode = UURET_OK;
(void) UUDecodeLine (NULL, NULL, 0); /* init */ (void) UUDecodeLine (NULL, NULL, 0); /* init */
@ -545,7 +546,9 @@ ScanData (FILE *datei, char *fname, int *errcode,
if (boundary) if (boundary)
blen = strlen (boundary); blen = strlen (boundary);
line[0] = '\0';
while (!feof (datei)) { while (!feof (datei)) {
prevlinefirstchar = line[0];
oldposition = ftell (datei); oldposition = ftell (datei);
if (_FP_fgets (line, 299, datei) == NULL) if (_FP_fgets (line, 299, datei) == NULL)
break; break;
@ -675,7 +678,17 @@ ScanData (FILE *datei, char *fname, int *errcode,
result->uudet = XX_ENCODED; result->uudet = XX_ENCODED;
if (result->uudet != B64ENCODED) { if (result->uudet != B64ENCODED) {
result->end = 1; if (result->uudet == XX_ENCODED) {
if (prevlinefirstchar == '+')
result->end = 1;
}
if (result->uudet == UU_ENCODED) {
if (prevlinefirstchar == '`')
result->end = 1;
}
else {
result->end = 1;
}
if (dflag && encoding) if (dflag && encoding)
result->uudet = encoding; result->uudet = encoding;
continue; continue;
@ -839,6 +852,7 @@ ScanData (FILE *datei, char *fname, int *errcode,
(((ptr = _FP_strrstr (line+2, "--")) == NULL) || (((ptr = _FP_strrstr (line+2, "--")) == NULL) ||
(*(ptr+2) != '\012' && *(ptr+2) != '\015')) && (*(ptr+2) != '\012' && *(ptr+2) != '\015')) &&
_FP_strstr (line+2, "_=_") != NULL) { _FP_strstr (line+2, "_=_") != NULL) {
prevlinefirstchar = line[0];
if (_FP_fgets (line, 255, datei) == NULL) { if (_FP_fgets (line, 255, datei) == NULL) {
break; break;
} }
@ -1096,6 +1110,7 @@ ScanData (FILE *datei, char *fname, int *errcode,
break; break;
} }
prevlinefirstchar = line[0];
oldposition = ftell (datei); oldposition = ftell (datei);
if (_FP_fgets (line, 255, datei) == NULL) if (_FP_fgets (line, 255, datei) == NULL)
break; break;
@ -1117,8 +1132,18 @@ ScanData (FILE *datei, char *fname, int *errcode,
else if (line[0] == 'e' && (result->uudet == UU_ENCODED || else if (line[0] == 'e' && (result->uudet == UU_ENCODED ||
result->uudet == XX_ENCODED)) { result->uudet == XX_ENCODED)) {
if (strncmp (line, "end", 3) == 0) { if (strncmp (line, "end", 3) == 0) {
result->end = 1; if (result->uudet == XX_ENCODED) {
break; if (prevlinefirstchar == '+') {
result->end = 1;
break;
}
}
else {
if (prevlinefirstchar == '`') {
result->end = 1;
break;
}
}
} }
} }
else if (line[0] == 'b') { else if (line[0] == 'b') {