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

View File

@ -215,7 +215,7 @@ MI_DROPMSGNO "S
WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? "
MI_ZONEGATEYES "A A ª ª ¦¥ ¨­ ç¥!? "
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 áâப? "
MI_YESGREAT "a „a, íâ® ªàãâ®! "
MI_KICKIT "S <20>eâ, ¢ë¡à®áì⥠íâ®.. / ESC "

View File

@ -211,7 +211,7 @@ MI_DROPMSGNO "N N
WT_ZONEGATE " <20>®á« âì ç¥à¥§ ¬¥¦§®­ «ì­ë© £¥©â? "
MI_ZONEGATEYES "Y Y € ª ª ¦¥ ¨­ ç¥!? "
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 áâப? "
MI_YESGREAT "Y Y „ , íâ® ªàãâ®! "
MI_KICKIT "N N <20>¥â, ¢ë¡à®áì⥠íâ®.. / ESC "

View File

@ -1,14 +1,13 @@
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:
- GNU C++ newer than 2.8.x, gcc 2.95.3 or gcc 3.0.x are recommended, gcc 3.1
not tested yet.
- GNU make and GNU sed
- GNU C/C++ newer than 2.8.x, gcc 2.95.3 or gcc 3.x.x are recommended
- GNU make, GNU sed and GNU grep
- vi, emacs, or any other editor you like
- 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 ----
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
GNUmakef.def.
------ COMMON ------

View File

@ -12,6 +12,69 @@ ______________________________________________________________________
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.
- Hooks to the delete and move messages added for the read-only areas.

View File

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

View File

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

View File

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

View File

@ -530,6 +530,7 @@ SwitchS:
case CRC_SQUISHUSERNO : CfgSquishuserno (); break;
case CRC_SQUISHUSERPATH : CfgSquishuserpath (); break;
case CRC_STATUSLINEHELP : CfgStatuslinehelp (); break;
case CRC_STRIPHTML : CfgStripHTML (); break;
case CRC_STYLECODEPUNCT : CfgStylecodepunct (); break;
case CRC_STYLECODES : CfgStylecodes (); break;
case CRC_STYLECODESTOPS : CfgStylecodestops (); break;
@ -588,6 +589,7 @@ SwitchW:
switch(crc) {
case CRC_WHOTO : CfgWhoto (); break;
case CRC_WILDCATUSERNO : CfgWildcatuserno (); break;
case CRC_WRITEHEADER : CfgWriteheader (); break;
case CRC_WRITETEMPLATE : CfgWritetemplate (); break;
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() {
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() {
if(cfgingroup) {

View File

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

View File

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

View File

@ -592,6 +592,20 @@ bool GPickArealist::handle_key() {
cursor_down();
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:
CFG->switches.set(arealistnos, not CFG->switches.get(arealistnos));
update();

View File

@ -322,6 +322,7 @@ public:
int squishuserno;
Path squishuserpath;
int statuslinehelp;
bool striphtml;
char stylecodepunct[41];
char stylecodestops[41];
gstrarray tagline;
@ -358,6 +359,7 @@ public:
bool viewquote;
Name whoto;
int wildcatuserno;
int writeheader;
std::string wtpl;
std::vector<Map> xlatcharset;
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_AreaWriteGoldlast = 0xFEB8;
const gkey KK_AreaZap = 0xFEB9;
const gkey KK_AreaMark = 0xFEBA;
const gkey KK_AreaUnmark = 0xFEBB;
const gkey KK_EditAbort = 0xFEC0;
const gkey KK_EditAnchor = 0xFEC1;
@ -205,6 +207,10 @@ const gkey KK_ListToggleBookMark = 0xFF2D;
const gkey KK_ListToggleDate = 0xFF2E;
const gkey KK_ListToggleMark = 0xFF2F;
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_NodeAskExit = 0xFF41;
@ -216,6 +222,12 @@ const gkey KK_NodeGotoPrev = 0xFF46;
const gkey KK_NodeQuitNow = 0xFF49;
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_ReadAskExit = 0xFF51;
const gkey KK_ReadChangeAka = 0xFF52;
@ -298,12 +310,31 @@ const gkey KK_ReadDirQuoteMsg = 0xFFA2;
const gkey KK_ReadMoveDirQuoteMsg = 0xFFA3;
const gkey KK_ReadPeekURLs = 0xFFA4;
const gkey KK_ReadShowDel = 0xFFA5;
const gkey KK_AddressbookQuit = 0xFFB0;
const gkey KK_AddressbookAdd = 0xFFB1;
const gkey KK_AddressbookSelect = 0xFFB2;
const gkey KK_AddressbookDelete = 0xFFB3;
const gkey KK_AddressbookPack = 0xFFB4;
const gkey KK_ReadShowKludge = 0xFFA6;
const gkey KK_ReadHideKludge = 0xFFA7;
const gkey KK_ReadShowHidden = 0xFFA8;
const gkey KK_ReadHideHidden = 0xFFA9;
const gkey KK_ReadShowHiddKlud = 0xFFAA;
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_HeaderLookup = 0xFFC1;

View File

@ -363,6 +363,7 @@ static const Kludges rfc_list[] = {
{ "X-Char-Esc" , RFC_X_CHAR_ESC , KCRQ_COLON },
{ "X-FTN-To" , RFC_X_FTN_TO , KCRQ_COLON },
{ "X-Mailer" , RFC_X_MAILER , KCRQ_COLON },
{ "X-Mailreader" , RFC_X_MAILER , KCRQ_COLON },
{ "X-Newsreader" , RFC_X_NEWSREADER , KCRQ_COLON },
{ "X-To" , RFC_X_TO , KCRQ_COLON },
{ "#!" , RFC_RNEWS , KCRQ_NONE },
@ -1527,13 +1528,23 @@ void ScanKludges(GMsg* msg, int getvalue) {
// Check if it's a tearline
else if(not (gottear or gottag) and strneql("---", ptr, 3) and (ptr[3] == ' ' or ptr[3] == NUL)) {
Line* nnel = next_non_empty(line->next);
if(not lineno or ((lineno-1) == originlineno) or not nnel or nnel->type & GLINE_KLUDGE) {
Line* tearln = line;
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
gottear = YES;
tearlineno = lineno;
line->type |= GLINE_TEAR;
line->color = C_READT;
for (tearln = line; tearln->type & GLINE_WRAP; tearln = tearln->next) {
tearln->type |= GLINE_TEAR;
tearln->color = C_READT;
}
tearln->type |= GLINE_TEAR;
tearln->color = C_READT;
strbtrim(strcpy(msg->tearline, ptr+3));
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;
bool reflow = false, quoteflag = false;
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 gotmultipart = 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"};
if(AA->StripHTML())
RemoveHTML(msg->txt);
ptr = spanfeeds(msg->txt);
// Set default conversion table for area

View File

@ -412,6 +412,34 @@ bool GMsgList::handle_key() {
case KK_ListSelect:
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:
{
ulong temp = AA->Mark.Find(mlst[index]->msgno);
@ -498,6 +526,22 @@ bool GMsgList::handle_key() {
DosShell();
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:
AA->ToggleMsglistwidesubj();
update_title();

View File

@ -327,11 +327,9 @@ int GMenuDomarks::Run(char* dowhat) {
// ------------------------------------------------------------------
static int gmwm_usehdr = 1;
void do_togglehdr() {
++gmwm_usehdr; gmwm_usehdr %= 3;
gwin.cmenu->citem->str = (gmwm_usehdr == 1 ? LNG->WriteToHdrYES : gmwm_usehdr == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO)+1;
++AA->adat->writeheader; AA->adat->writeheader %= 3;
gwin.cmenu->citem->str = (AA->Writeheader() == 1 ? LNG->WriteToHdrYES : AA->Writeheader() == 2 ? LNG->WriteToHdrONLY : LNG->WriteToHdrNO) + 1;
gwin.cmenu->citem->redisp = true;
}
@ -354,7 +352,7 @@ int GMenuWriteMsg::Run() {
Item(TAG_DISKFILE, LNG->Diskfile);
Item(TAG_PRINTER, LNG->Printer);
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);
SetTag(_prevtag);
End();
@ -362,7 +360,7 @@ int GMenuWriteMsg::Run() {
Start();
_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) {
case TAG_DISKFILE: return WRITE_FILE|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_viewkludge = AA->Viewkludge();
int adat_viewquote = AA->Viewquote();
bool adat_striphtml = AA->StripHTML();
AA->adat->viewhidden = true;
AA->adat->viewkludge = true;
AA->adat->viewquote = true;
AA->adat->striphtml = false;
msg->TextToLines(CFG->dispmargin-1, false); // Ignore any kludge address found
AA->adat->viewhidden = adat_viewhidden;
AA->adat->viewkludge = adat_viewkludge;
AA->adat->viewquote = adat_viewquote;
AA->adat->striphtml = adat_striphtml;
msg->attr.pos0();
InvalidateControlInfo(msg);

View File

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

View File

@ -180,6 +180,8 @@ void Area::InitData() {
adat->viewhidden = CFG->viewhidden;
adat->viewkludge = CFG->viewkludge;
adat->viewquote = CFG->viewquote;
adat->writeheader = CFG->writeheader;
adat->striphtml = CFG->striphtml;
strcpy(adat->nickname, CFG->nickname);
strcpy(adat->netname, CFG->netname);
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_VIEWKLUDGE, adat->viewkludge);
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)))

View File

@ -270,24 +270,28 @@ void Reader() {
if(AA->isreadmark or AA->isreadpm) {
GTag& tag = AA->isreadpm ? AA->PMrk : AA->Mark;
uint mtemp = tag.Find(msg->msgno);
sprintf(buf2, "%s [%s%s%s%s]",
sprintf(buf2, "%s [%s%s%s%s%s%s]",
LNG->ReadMarked,
AA->Viewhidden() ? "H" : "",
AA->Viewkludge() ? "K" : "",
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,
mtemp, tag.Count(), tag.Count()-mtemp
);
}
else {
sprintf(buf2, "%s [%s%s%s%s]",
sprintf(buf2, "%s [%s%s%s%s%s%s]",
LNG->ReadAll,
AA->Viewhidden() ? "H" : "",
AA->Viewkludge() ? "K" : "",
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,
AA->lastread(), AA->Msgn.Count(), AA->Msgn.Count()-AA->lastread()
@ -480,6 +484,29 @@ void Reader() {
IncMargin();
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:
ToggleStyles();
break;
@ -488,14 +515,105 @@ void Reader() {
AA->attr().hexX();
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:
ToggleTwits();
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:
ToggleMarkRead();
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:
ToggleMark();
break;
@ -549,18 +667,82 @@ void Reader() {
GotoPrevUnread();
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:
ToggleHiddKlud();
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:
ToggleKludge();
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:
ToggleHidden();
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:
ToggleQuote();
break;
@ -573,6 +755,20 @@ void Reader() {
TogglePageBar();
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:
ToggleRealMsgno();
break;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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