summaryrefslogtreecommitdiff
path: root/yamn
diff options
context:
space:
mode:
authormataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 15:41:10 +0000
committermataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-11-26 15:41:10 +0000
commitf04d64869f3b1de54fb343f28f955584780001b8 (patch)
tree5453dc10de3d980de79ffe019fa0b5fcb692a27d /yamn
parent7aff1e4cb053394db57c2814d5fe1e6493e0cc75 (diff)
Project folders rename part 3
git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb
Diffstat (limited to 'yamn')
-rw-r--r--yamn/ChangeLog.txt243
-rw-r--r--yamn/YAMN.dsp376
-rw-r--r--yamn/YAMN.dsw65
-rw-r--r--yamn/YAMN.mak1736
-rw-r--r--yamn/YAMN.vcproj1593
-rw-r--r--yamn/YAMN_10.sln25
-rw-r--r--yamn/YAMN_10.vcxproj277
-rw-r--r--yamn/YAMN_10.vcxproj.filters143
-rw-r--r--yamn/YAMN_9.vcproj915
-rw-r--r--yamn/YAMNopts.cpp2
-rw-r--r--yamn/account.cpp1539
-rw-r--r--yamn/browser/badconnect.cpp391
-rw-r--r--yamn/browser/m_browser.h42
-rw-r--r--yamn/browser/mailbrowser.cpp2692
-rw-r--r--yamn/debug.cpp142
-rw-r--r--yamn/debug.h64
-rw-r--r--yamn/docs/InstallScript.xml49
-rw-r--r--yamn/docs/YAMN-License.txt340
-rw-r--r--yamn/docs/YAMN-Readme.developers.txt205
-rw-r--r--yamn/docs/YAMN-Readme.txt79
-rw-r--r--yamn/docs/language.pop3.txt118
-rw-r--r--yamn/docs/language.txt75
-rw-r--r--yamn/filter/Base/AggressiveOptimize.h168
-rw-r--r--yamn/filter/Base/Base.dsp108
-rw-r--r--yamn/filter/Base/Base.mak229
-rw-r--r--yamn/filter/Base/debug.cpp73
-rw-r--r--yamn/filter/Base/docs/base-readme.txt63
-rw-r--r--yamn/filter/Base/maindll.cpp238
-rw-r--r--yamn/filter/Simple/AggressiveOptimize.h168
-rw-r--r--yamn/filter/Simple/docs/simple-readme.txt51
-rw-r--r--yamn/filter/Simple/maindll.cpp132
-rw-r--r--yamn/filter/Simple/simple.dsp105
-rw-r--r--yamn/filter/Simple/simple.mak207
-rw-r--r--yamn/filter/readme.txt1
-rw-r--r--yamn/filterplugin.cpp226
-rw-r--r--yamn/icons/iconttbup.icobin1150 -> 0 bytes
-rw-r--r--yamn/icons/icoyamn1.icobin1150 -> 0 bytes
-rw-r--r--yamn/icons/icoyamn2.icobin1150 -> 0 bytes
-rw-r--r--yamn/icons/proto_YAMN.dsp91
-rw-r--r--yamn/icons/proto_YAMN.mak112
-rw-r--r--yamn/icons/proto_YAMN.rc19
-rw-r--r--yamn/icons/proto_YAMN.vcproj237
-rw-r--r--yamn/icons/proto_YAMN.vcproj.Nout.User.user65
-rw-r--r--yamn/icons/proto_YAMN_10.vcxproj132
-rw-r--r--yamn/icons/proto_YAMN_10.vcxproj.filters37
-rw-r--r--yamn/icons/proto_YAMN_10.vcxproj.user3
-rw-r--r--yamn/icons/resource.h2
-rw-r--r--yamn/include/IcoLib.h26
-rw-r--r--yamn/include/m_icolib.h75
-rw-r--r--yamn/include/m_kbdnotify.h64
-rw-r--r--yamn/include/m_uninstaller.h700
-rw-r--r--yamn/libs/unicows.libbin492376 -> 0 bytes
-rw-r--r--yamn/m_account.h239
-rw-r--r--yamn/m_filterplugin.h139
-rw-r--r--yamn/m_messages.h41
-rw-r--r--yamn/m_protoplugin.h389
-rw-r--r--yamn/m_synchro.h160
-rw-r--r--yamn/m_yamn.h154
-rw-r--r--yamn/mails/decode.cpp558
-rw-r--r--yamn/mails/m_decode.h25
-rw-r--r--yamn/mails/m_mails.h285
-rw-r--r--yamn/mails/mails.cpp499
-rw-r--r--yamn/mails/mime.cpp732
-rw-r--r--yamn/mails/test/header.txt28
-rw-r--r--yamn/mails/test/header2.txt97
-rw-r--r--yamn/mails/test/readme.txt4
-rw-r--r--yamn/mails/test/test.cpp42
-rw-r--r--yamn/mails/test/test.dsp112
-rw-r--r--yamn/mails/test/test.dsw29
-rw-r--r--yamn/main.cpp849
-rw-r--r--yamn/main.h66
-rw-r--r--yamn/mingw/base.dev69
-rw-r--r--yamn/mingw/base.win38
-rw-r--r--yamn/mingw/simple.dev59
-rw-r--r--yamn/mingw/simple.win35
-rw-r--r--yamn/mingw/yamn-2in1.dev469
-rw-r--r--yamn/mingw/yamn-2in1.win92
-rw-r--r--yamn/mingw/yamn-w9x.dev469
-rw-r--r--yamn/mingw/yamn-w9x.win92
-rw-r--r--yamn/mingw/yamn.dev469
-rw-r--r--yamn/mingw/yamn.win92
-rw-r--r--yamn/proto/md5.c260
-rw-r--r--yamn/proto/md5.h27
-rw-r--r--yamn/proto/netclient.h22
-rw-r--r--yamn/proto/netlib.cpp278
-rw-r--r--yamn/proto/netlib.h55
-rw-r--r--yamn/proto/pop3/pop3.cpp374
-rw-r--r--yamn/proto/pop3/pop3.h66
-rw-r--r--yamn/proto/pop3/pop3comm.cpp1636
-rw-r--r--yamn/proto/pop3/pop3comm.h97
-rw-r--r--yamn/proto/pop3/pop3opt.cpp1686
-rw-r--r--yamn/proto/pop3/pop3opt.h38
-rw-r--r--yamn/protoplugin.cpp258
-rw-r--r--yamn/resources/YAMN.rc383
-rw-r--r--yamn/resources/iconeutral.icobin1150 -> 0 bytes
-rw-r--r--yamn/resources/iconttbdown.icobin1150 -> 0 bytes
-rw-r--r--yamn/resources/icooffline.icobin1150 -> 0 bytes
-rw-r--r--yamn/resources/icoyamn3.icobin1150 -> 0 bytes
-rw-r--r--yamn/resources/resource.h130
-rw-r--r--yamn/resources/yamn.bmpbin502 -> 0 bytes
-rw-r--r--yamn/services.cpp541
-rw-r--r--yamn/synchro.cpp378
-rw-r--r--yamn/version.h3
-rw-r--r--yamn/yamn.cpp478
-rw-r--r--yamn/yamn.h180
105 files changed, 0 insertions, 27665 deletions
diff --git a/yamn/ChangeLog.txt b/yamn/ChangeLog.txt
deleted file mode 100644
index 6a85810..0000000
--- a/yamn/ChangeLog.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-0.1.2.5
-=======
-! fix many memory leaks patch by Merlin
-* x64 support by Merlin
-* Resource patch by mataes (for translations)
-
-0.1.2.4
-=======
-* Only show popup tab if popup plugin is present
-! Wrong time displayed in mailbrower (fix by y_b)
-
-0.1.2.3
-=======
-* New design for the options pages (Thanks Eyecue)
-
-0.1.2.2
-=======
-* using, with updater, the correct file id in file listing (yamn 2in1)
-+ added folders plugin support
-+ Support for miranda 0.8
-
-0.1.2.1
-=======
-! Don't close MailBrowser when e-mails are updated if it is manually open
-+ Discard the new Event when message is shown or is deleted from the server
-+ Option to disable the CList events per account
-+ Contact status change also happens when e-mail are being deleted
-
-0.1.2.0
-=======
-! patch by TioDuke for icolib and status and status icons handling. Thanks!
-! code cleaning (properly destroy services and hooks)
-+ Contact status changes accordingly the action (Ready, Working, Error)
-
-0.1.1.0
-=======
-+ Show message is open in new thread
-+ Click on individual new e-mail popups shows the message window
-
-0.1.0.2
-============
-+ Pressing "Space" key will show the selected message
-! Delete message is done by DELETE key, not by '.'
-! removed some repeated code
-! "Ok" and "Select All" buttons in mail browser are translatable
-
-0.1.0.1
-============
-+ Message body shown in separate edit box.
-+ Support for Content-transfer-encoding: Quoted-Printable and base64
-+ Recursive Content-type: multipart/ support
-+ Option to auto retrieve body
-
-0.0.1.11
-============
-+ Option to use yamn as a protocol.
-* Patch by Tioduke (code cleaning)
-! Fixed the crash parsing invalid "Date" header (SPAMs or silly e-mail client) (y_b)
-! ShowMessage dialog follows Content-type header to chose the codepage (y_b)
-+ Only supported codepages are shown in the options (y_b)
-+ Enhance codepages support (y_b)
-
-0.0.1.10
-============
-! Icons are based on single bitmap image (y_b)
-* Show full feaders on double click in mailbrowser (y_b)
-* Dates are shown localized and sorted correctly (y_b)
-* To show long/short date and seconds (y_b)
-! Solved a rare/random crash on unstable connection (y_b)
-! Enabled tabstop on new tabcontrol and reordered tabstop in option pages (y_b)
-* Enable TAB selection in mailbrowser dialog (patch by -pv-)
-+ introducing 2in1 build - can be used both in win9x and NT/XP
-* Options redesign.
-
-0.0.1.9
-============
-* Patch by Perf (visual patch)
-
-0.0.1.8
-============
-+ add ctr-A to select all mails
-+ del key delete selected mail
-+ add a select all button
-
-0.0.1.7
-============
-* Change options dialog (use tabsrmm uxtheme)
-! Invert back and text color for no new mail popup in option page.
-* New default icon reworked by Faith Healer.
-
-0.0.1.6
-============
-* Try to update all icons when changing in icolib.
-! Allow scrolling in list of email account. (Patch by Jazzy)
-! Memory leak in stls fix (y_b)
-
-0.0.1.5
-============
-! Bug fix with help.dll problem. (Patch by Jazzy)
- (http://developer.berlios.de/bugs/?func=detailbug&bug_id=6692&group_id=3292)
-! Remove merge in agressiveoptimize.h
-
-0.0.1.4
-============
-! Option page bug (patch by y_b)
-* Allow to edit the application text
-
-0.0.1.3
-============
-! Bug fix with new icolib
-
-0.0.1.2
-============
-! Bug fix with updater and stable version
-+ Using new m_icolib.h
-+ New context menu entry to launch application
-+ Patch by y_b
-{
- + Start TLS support
- + Better icolib support
- + SSL Logging
-}
-
-0.0.1.1
-============
-! Bug fix on left click popup.
-
-0.0.1.0
-============
-Time for release.
-
-0.0.0.18
-============
-! Visual bug in option page
-! Recompilation for win 9x users.
-
-0.0.0.17
-============
-* Redesign option page to have only one entry in plugins options
-! Bug fix when there is no date set in the header (spam mails) (Thx Egres)
-
-0.0.0.16
-============
-* Right click on error popup close the popup.
-! Missing break; in nonewmail popup in switch.
-+ Add option to rename contact according to new mail.
-! Patch by pescuma on delete accounts
-
-0.0.0.15
-============
-! Fixed dismiss event by right click on new mail popup crash
-* Change string for the status choose button
-! use CallServiceSync() instead of CallService() for adding clistevent (now icon blinks)
-
-0.0.0.14
-============
-! Tooltip on the clist event will now show correct text
-! Remove the messagebox on double clik on mail
-* Change options dialog add dialog for status choose.
-
-0.0.0.13
-============
-+ Use of event count for the keyboard flashing
-
-0.0.0.12
-============
-- Remove message body retrieving due to bug.
-
-0.0.0.11
-============
-+ Add a function to retrieve the whole mail source.
-+ Show the mail source when double clicking on it in mail browser.
-+ Add a version resource.
-
-0.0.0.10
-============
-+ Now able to pass hContact handle to popup so can show avatar if set.
-* Change folder structure in svn SDK\import replace by include
-
-0.0.0.9
-============
-+ Sorting asc and desc of the mail browser listview
-+ Use the format yyyy-mm-dd hh:mm:ss for date comparaison in sorting
-+ Doubleclick on list view to show the mail body but it seems to be empty :(
-
-0.0.0.8
-============
-+ Add date field in mail browser
-* Modify the tooltip text for the clist event (add account name)
-* Rename Contact member of CAccount by hContact since it is an HANDLE
-+ Updater support for BETA
-* Using the right headers (no more the one in SDK)
-
-0.0.0.7
-============
-+ Added changelog txt file.
-+ Check presence of icolib to choose the right icon to show in clist
-+ Status message will show all message pending in mail box (until they get retrieve by your email client)
-
-0.0.0.6
-============
-* Options page redesign.
-+ Right click on popup close the clist event too.
-+ Update status message if no new mail.
-+ Right click on popup^with no new mail close the popup.
-* No more delete of contact (avoid group affectation bug).
-
-0.0.0.5
-============
-+ Add contact context menu entry to check for new mail.
-+ Catch double click event on contact to shown the mail browser.
-
-0.0.0.4
-============
-+ Add per account option to be show as contact or not.
-+ Gestion de la suppression d'un compte
-+ Use of the status message for showing number of emails.
-+ Refresh yamn contact on the click on apply in options dialog.
-* Better condition for the ^contact loop (ouuppsss)
-
-0.0.0.3
-============
-+ Now account are shown as a contact.
-+ Source code modification and use of yamn.h
-+ Wait the event moduleloaded before loading the icons (support icolib).
-
-0.0.0.2
-============
-+ Use of patch by Q (From file listing) (Memory cleaning, empty mail browser even if there are mails, yamn freeze sometime)
-+ Use of thread access function.
-+ Possibility to change toptoolbar icons via icolib.
-+ Icon in main menu entry (Asked by a7)
-+ New Icons set by Manudevil.
-+ Change version number to be compatible with updater plugin
-
-0.01
-============
-
-+ icolib support.
-+ keyboard flash support (just 10 sec) (thx TioDuke) needs Keyboard Notify Ext. 1.5.4.4
-+ list of email can be sorted.
-* left click on popup shows email list.
-* better toptoolbar support. \ No newline at end of file
diff --git a/yamn/YAMN.dsp b/yamn/YAMN.dsp
deleted file mode 100644
index b8dc6f3..0000000
--- a/yamn/YAMN.dsp
+++ /dev/null
@@ -1,376 +0,0 @@
-# Microsoft Developer Studio Project File - Name="YAMN" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=YAMN - Win32 Release Win2in1
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "YAMN.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "YAMN.mak" CFG="YAMN - Win32 Release Win2in1"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "YAMN - Win32 Release Win2in1" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug Win2in1" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Release Win9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug Win9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release\Win2in1"
-# PROP BASE Intermediate_Dir "Release\Win2in1"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\Win2in1"
-# PROP Intermediate_Dir "Release\Win2in1"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN2IN1" /YX /FD /c
-# ADD CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN2IN1" /FR /YX /FD /c
-# ADD BASE RSC /l 0x417 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /machine:I386 /out:"../../bin/release/plugins/YAMN.dll" /filealign:512
-# ADD LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /pdb:"../../bin/release/plugins/yamn.pdb" /debug /machine:I386 /out:"../../bin/release/plugins/yamn.dll" /filealign:512
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug\Win2in1"
-# PROP BASE Intermediate_Dir "Debug\Win2in1"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug\Win2in1"
-# PROP Intermediate_Dir "Debug\Win2in1"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN2IN1" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN2IN1" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x417 /d "_DEBUG"
-# ADD RSC /l 0x417 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN.dll"
-# ADD LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /pdb:"../../bin/Debug/plugins/yamn.pdb" /debug /machine:I386 /out:"../../bin/Debug/plugins/yamn.dll" /pdbtype:sept
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release/WinNT"
-# PROP BASE Intermediate_Dir "Release/WinNT"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release/WinNT"
-# PROP Intermediate_Dir "Release/WinNT"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE RSC /l 0x405 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /machine:I386 /out:"../../bin/release/plugins/YAMN-NT/YAMN.dll" /filealign:512
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/release/plugins/YAMN-NT/yamn.dll" /filealign:512
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug/WinNT"
-# PROP BASE Intermediate_Dir "Debug/WinNT"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug/WinNT"
-# PROP Intermediate_Dir "Debug/WinNT"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x417 /d "_DEBUG"
-# ADD RSC /l 0x417 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-NT/YAMN.dll"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-NT/YAMN.dll" /pdbtype:sept
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release\Win9x"
-# PROP BASE Intermediate_Dir "Release\Win9x"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release\Win9x"
-# PROP Intermediate_Dir "Release\Win9x"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN9X" /YX /FD /c
-# ADD CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN9X" /YX /FD /c
-# ADD BASE RSC /l 0x417 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /machine:I386 /out:"../../bin/Release/plugins/YAMN-9x/YAMN.dll" /filealign:512
-# ADD LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Release/plugins/YAMN-9x/YAMN.dll" /filealign:512
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug\Win9x"
-# PROP BASE Intermediate_Dir "Debug\Win9x"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug\Win9x"
-# PROP Intermediate_Dir "Debug\Win9x"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN9X" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /I "../../include/msapi" /I "../../include_API" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN9X" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x417 /d "_DEBUG"
-# ADD RSC /l 0x417 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-9x/YAMN.dll"
-# ADD LINK32 libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-9x/YAMN.dll" /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "YAMN - Win32 Release Win2in1"
-# Name "YAMN - Win32 Debug Win2in1"
-# Name "YAMN - Win32 Release"
-# Name "YAMN - Win32 Debug"
-# Name "YAMN - Win32 Release Win9x"
-# Name "YAMN - Win32 Debug Win9x"
-# Begin Group "YAMN"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Group "Mail browser, dialogs"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\browser\badconnect.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\browser\mailbrowser.cpp
-# End Source File
-# End Group
-# Begin Group "Mails"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\mails\decode.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\mails\mails.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\mails\mime.cpp
-# End Source File
-# End Group
-# Begin Group "POP3 plugin"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\proto\md5.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\netlib.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3comm.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3opt.cpp
-# End Source File
-# End Group
-# Begin Group "Header"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\debug.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\main.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3comm.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\proto\pop3\pop3opt.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\yamn.h
-# End Source File
-# End Group
-# Begin Group "include"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\include\IcoLib.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\m_kbdnotify.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\m_popup.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\m_toptoolbar.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\m_uninstaller.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\include\m_updater.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\account.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\ChangeLog.txt
-# End Source File
-# Begin Source File
-
-SOURCE=.\debug.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\filterplugin.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\protoplugin.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\services.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\synchro.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\yamn.cpp
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\resources\iconeutral.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\iconttbdown.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\icooffline.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\icoyamn3.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\resource.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\yamn.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=.\resources\YAMN.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/yamn/YAMN.dsw b/yamn/YAMN.dsw
deleted file mode 100644
index ea0dcf1..0000000
--- a/yamn/YAMN.dsw
+++ /dev/null
@@ -1,65 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Base"=".\filter\Base\Base.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "YAMN"=".\YAMN.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "proto_YAMN"=".\icons\proto_YAMN.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "simple"=".\filter\simple\simple.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/yamn/YAMN.mak b/yamn/YAMN.mak
deleted file mode 100644
index 221fe20..0000000
--- a/yamn/YAMN.mak
+++ /dev/null
@@ -1,1736 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on YAMN.dsp
-!IF "$(CFG)" == ""
-CFG=YAMN - Win32 Release Win2in1
-!MESSAGE No configuration specified. Defaulting to YAMN - Win32 Release Win2in1.
-!ENDIF
-
-!IF "$(CFG)" != "YAMN - Win32 Release Win2in1" && "$(CFG)" != "YAMN - Win32 Debug Win2in1" && "$(CFG)" != "YAMN - Win32 Release" && "$(CFG)" != "YAMN - Win32 Debug" && "$(CFG)" != "YAMN - Win32 Release Win9x" && "$(CFG)" != "YAMN - Win32 Debug Win9x"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "YAMN.mak" CFG="YAMN - Win32 Release Win2in1"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "YAMN - Win32 Release Win2in1" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug Win2in1" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Release Win9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "YAMN - Win32 Debug Win9x" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-OUTDIR=.\Release\Win2in1
-INTDIR=.\Release\Win2in1
-# Begin Custom Macros
-OutDir=.\Release\Win2in1
-# End Custom Macros
-
-ALL : "..\..\bin\release\plugins\yamn.dll"
-
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\account.sbr"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\badconnect.sbr"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\debug.sbr"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\decode.sbr"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\filterplugin.sbr"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mailbrowser.sbr"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\mails.sbr"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\main.sbr"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\md5.sbr"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\mime.sbr"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\netlib.sbr"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3.sbr"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3comm.sbr"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\pop3opt.sbr"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\protoplugin.sbr"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\services.sbr"
- -@erase "$(INTDIR)\ssl.obj"
- -@erase "$(INTDIR)\ssl.sbr"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\synchro.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(INTDIR)\yamn.sbr"
- -@erase "$(OUTDIR)\YAMN.bsc"
- -@erase "$(OUTDIR)\yamn.exp"
- -@erase "..\..\bin\release\plugins\yamn.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN2IN1" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "NDEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\badconnect.sbr" \
- "$(INTDIR)\mailbrowser.sbr" \
- "$(INTDIR)\decode.sbr" \
- "$(INTDIR)\mails.sbr" \
- "$(INTDIR)\mime.sbr" \
- "$(INTDIR)\md5.sbr" \
- "$(INTDIR)\netlib.sbr" \
- "$(INTDIR)\pop3.sbr" \
- "$(INTDIR)\pop3comm.sbr" \
- "$(INTDIR)\pop3opt.sbr" \
- "$(INTDIR)\ssl.sbr" \
- "$(INTDIR)\account.sbr" \
- "$(INTDIR)\debug.sbr" \
- "$(INTDIR)\filterplugin.sbr" \
- "$(INTDIR)\main.sbr" \
- "$(INTDIR)\protoplugin.sbr" \
- "$(INTDIR)\services.sbr" \
- "$(INTDIR)\synchro.sbr" \
- "$(INTDIR)\yamn.sbr"
-
-"$(OUTDIR)\YAMN.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\yamn.pdb" /machine:I386 /out:"../../bin/release/plugins/yamn.dll" /implib:"$(OUTDIR)\yamn.lib" /filealign:512
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\release\plugins\yamn.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-OUTDIR=.\Debug\Win2in1
-INTDIR=.\Debug\Win2in1
-# Begin Custom Macros
-OutDir=.\Debug\Win2in1
-# End Custom Macros
-
-ALL : "..\..\bin\Debug\plugins\YAMN.dll" "$(OUTDIR)\YAMN.bsc"
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\account.sbr"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\badconnect.sbr"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\debug.sbr"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\decode.sbr"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\filterplugin.sbr"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mailbrowser.sbr"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\mails.sbr"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\main.sbr"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\md5.sbr"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\mime.sbr"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\netlib.sbr"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3.sbr"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3comm.sbr"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\pop3opt.sbr"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\protoplugin.sbr"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\services.sbr"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\synchro.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\vc60.pdb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(INTDIR)\yamn.sbr"
- -@erase "$(OUTDIR)\YAMN.bsc"
- -@erase "$(OUTDIR)\YAMN.exp"
- -@erase "$(OUTDIR)\YAMN.pdb"
- -@erase "..\..\bin\Debug\plugins\YAMN.dll"
- -@erase "..\..\bin\Debug\plugins\YAMN.ilk"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN2IN1" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "_DEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\badconnect.sbr" \
- "$(INTDIR)\mailbrowser.sbr" \
- "$(INTDIR)\decode.sbr" \
- "$(INTDIR)\mails.sbr" \
- "$(INTDIR)\mime.sbr" \
- "$(INTDIR)\md5.sbr" \
- "$(INTDIR)\netlib.sbr" \
- "$(INTDIR)\pop3.sbr" \
- "$(INTDIR)\pop3comm.sbr" \
- "$(INTDIR)\pop3opt.sbr" \
- "$(INTDIR)\account.sbr" \
- "$(INTDIR)\debug.sbr" \
- "$(INTDIR)\filterplugin.sbr" \
- "$(INTDIR)\main.sbr" \
- "$(INTDIR)\protoplugin.sbr" \
- "$(INTDIR)\services.sbr" \
- "$(INTDIR)\synchro.sbr" \
- "$(INTDIR)\yamn.sbr"
-
-"$(OUTDIR)\YAMN.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\YAMN.pdb" /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN.dll" /implib:"$(OUTDIR)\YAMN.lib"
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\Debug\plugins\YAMN.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-OUTDIR=.\Release/WinNT
-INTDIR=.\Release/WinNT
-
-ALL : "..\..\bin\release\plugins\YAMN-NT\yamn.dll"
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(OUTDIR)\yamn.exp"
- -@erase "..\..\bin\release\plugins\YAMN-NT\yamn.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "NDEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\yamn.pdb" /machine:I386 /out:"../../bin/release/plugins/YAMN-NT/yamn.dll" /implib:"$(OUTDIR)\yamn.lib" /filealign:512
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\release\plugins\YAMN-NT\yamn.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-OUTDIR=.\Debug/WinNT
-INTDIR=.\Debug/WinNT
-# Begin Custom Macros
-OutDir=.\Debug/WinNT
-# End Custom Macros
-
-ALL : "..\..\bin\Debug\plugins\YAMN-NT\YAMN.dll" "$(OUTDIR)\YAMN.bsc"
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\account.sbr"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\badconnect.sbr"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\debug.sbr"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\decode.sbr"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\filterplugin.sbr"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mailbrowser.sbr"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\mails.sbr"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\main.sbr"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\md5.sbr"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\mime.sbr"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\netlib.sbr"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3.sbr"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3comm.sbr"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\pop3opt.sbr"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\protoplugin.sbr"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\services.sbr"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\synchro.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\vc60.pdb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(INTDIR)\yamn.sbr"
- -@erase "$(OUTDIR)\YAMN.bsc"
- -@erase "$(OUTDIR)\YAMN.exp"
- -@erase "$(OUTDIR)\YAMN.pdb"
- -@erase "..\..\bin\Debug\plugins\YAMN-NT\YAMN.dll"
- -@erase "..\..\bin\Debug\plugins\YAMN-NT\YAMN.ilk"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "_DEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\badconnect.sbr" \
- "$(INTDIR)\mailbrowser.sbr" \
- "$(INTDIR)\decode.sbr" \
- "$(INTDIR)\mails.sbr" \
- "$(INTDIR)\mime.sbr" \
- "$(INTDIR)\md5.sbr" \
- "$(INTDIR)\netlib.sbr" \
- "$(INTDIR)\pop3.sbr" \
- "$(INTDIR)\pop3comm.sbr" \
- "$(INTDIR)\pop3opt.sbr" \
- "$(INTDIR)\account.sbr" \
- "$(INTDIR)\debug.sbr" \
- "$(INTDIR)\filterplugin.sbr" \
- "$(INTDIR)\main.sbr" \
- "$(INTDIR)\protoplugin.sbr" \
- "$(INTDIR)\services.sbr" \
- "$(INTDIR)\synchro.sbr" \
- "$(INTDIR)\yamn.sbr"
-
-"$(OUTDIR)\YAMN.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\YAMN.pdb" /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-NT/YAMN.dll" /implib:"$(OUTDIR)\YAMN.lib"
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\Debug\plugins\YAMN-NT\YAMN.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-OUTDIR=.\Release\Win9x
-INTDIR=.\Release\Win9x
-
-ALL : "..\..\bin\Release\plugins\YAMN-9x\YAMN.dll"
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(OUTDIR)\YAMN.exp"
- -@erase "..\..\bin\Release\plugins\YAMN-9x\YAMN.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN9X" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "NDEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\YAMN.pdb" /machine:I386 /out:"../../bin/Release/plugins/YAMN-9x/YAMN.dll" /implib:"$(OUTDIR)\YAMN.lib" /filealign:512
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\Release\plugins\YAMN-9x\YAMN.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-OUTDIR=.\Debug\Win9x
-INTDIR=.\Debug\Win9x
-# Begin Custom Macros
-OutDir=.\Debug\Win9x
-# End Custom Macros
-
-ALL : "..\..\bin\Debug\plugins\YAMN-9x\YAMN.dll" "$(OUTDIR)\YAMN.bsc"
-
-
-CLEAN :
- -@erase "$(INTDIR)\account.obj"
- -@erase "$(INTDIR)\account.sbr"
- -@erase "$(INTDIR)\badconnect.obj"
- -@erase "$(INTDIR)\badconnect.sbr"
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\debug.sbr"
- -@erase "$(INTDIR)\decode.obj"
- -@erase "$(INTDIR)\decode.sbr"
- -@erase "$(INTDIR)\filterplugin.obj"
- -@erase "$(INTDIR)\filterplugin.sbr"
- -@erase "$(INTDIR)\mailbrowser.obj"
- -@erase "$(INTDIR)\mailbrowser.sbr"
- -@erase "$(INTDIR)\mails.obj"
- -@erase "$(INTDIR)\mails.sbr"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\main.sbr"
- -@erase "$(INTDIR)\md5.obj"
- -@erase "$(INTDIR)\md5.sbr"
- -@erase "$(INTDIR)\mime.obj"
- -@erase "$(INTDIR)\mime.sbr"
- -@erase "$(INTDIR)\netlib.obj"
- -@erase "$(INTDIR)\netlib.sbr"
- -@erase "$(INTDIR)\pop3.obj"
- -@erase "$(INTDIR)\pop3.sbr"
- -@erase "$(INTDIR)\pop3comm.obj"
- -@erase "$(INTDIR)\pop3comm.sbr"
- -@erase "$(INTDIR)\pop3opt.obj"
- -@erase "$(INTDIR)\pop3opt.sbr"
- -@erase "$(INTDIR)\protoplugin.obj"
- -@erase "$(INTDIR)\protoplugin.sbr"
- -@erase "$(INTDIR)\services.obj"
- -@erase "$(INTDIR)\services.sbr"
- -@erase "$(INTDIR)\synchro.obj"
- -@erase "$(INTDIR)\synchro.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\vc60.pdb"
- -@erase "$(INTDIR)\yamn.obj"
- -@erase "$(INTDIR)\YAMN.res"
- -@erase "$(INTDIR)\yamn.sbr"
- -@erase "$(OUTDIR)\YAMN.bsc"
- -@erase "$(OUTDIR)\YAMN.exp"
- -@erase "$(OUTDIR)\YAMN.pdb"
- -@erase "..\..\bin\Debug\plugins\YAMN-9x\YAMN.dll"
- -@erase "..\..\bin\Debug\plugins\YAMN-9x\YAMN.ilk"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN9X" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\YAMN.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\YAMN.res" /d "_DEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\YAMN.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\badconnect.sbr" \
- "$(INTDIR)\mailbrowser.sbr" \
- "$(INTDIR)\decode.sbr" \
- "$(INTDIR)\mails.sbr" \
- "$(INTDIR)\mime.sbr" \
- "$(INTDIR)\md5.sbr" \
- "$(INTDIR)\netlib.sbr" \
- "$(INTDIR)\pop3.sbr" \
- "$(INTDIR)\pop3comm.sbr" \
- "$(INTDIR)\pop3opt.sbr" \
- "$(INTDIR)\account.sbr" \
- "$(INTDIR)\debug.sbr" \
- "$(INTDIR)\filterplugin.sbr" \
- "$(INTDIR)\main.sbr" \
- "$(INTDIR)\protoplugin.sbr" \
- "$(INTDIR)\services.sbr" \
- "$(INTDIR)\synchro.sbr" \
- "$(INTDIR)\yamn.sbr"
-
-"$(OUTDIR)\YAMN.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib /nologo /base:"0x60010000" /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\YAMN.pdb" /debug /machine:I386 /out:"../../bin/Debug/plugins/YAMN-9x/YAMN.dll" /implib:"$(OUTDIR)\YAMN.lib"
-LINK32_OBJS= \
- "$(INTDIR)\badconnect.obj" \
- "$(INTDIR)\mailbrowser.obj" \
- "$(INTDIR)\decode.obj" \
- "$(INTDIR)\mails.obj" \
- "$(INTDIR)\mime.obj" \
- "$(INTDIR)\md5.obj" \
- "$(INTDIR)\netlib.obj" \
- "$(INTDIR)\pop3.obj" \
- "$(INTDIR)\pop3comm.obj" \
- "$(INTDIR)\pop3opt.obj" \
- "$(INTDIR)\account.obj" \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\filterplugin.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\protoplugin.obj" \
- "$(INTDIR)\services.obj" \
- "$(INTDIR)\synchro.obj" \
- "$(INTDIR)\yamn.obj" \
- "$(INTDIR)\YAMN.res"
-
-"..\..\bin\Debug\plugins\YAMN-9x\YAMN.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("YAMN.dep")
-!INCLUDE "YAMN.dep"
-!ELSE
-!MESSAGE Warning: cannot find "YAMN.dep"
-!ENDIF
-!ENDIF
-
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1" || "$(CFG)" == "YAMN - Win32 Debug Win2in1" || "$(CFG)" == "YAMN - Win32 Release" || "$(CFG)" == "YAMN - Win32 Debug" || "$(CFG)" == "YAMN - Win32 Release Win9x" || "$(CFG)" == "YAMN - Win32 Debug Win9x"
-SOURCE=.\browser\badconnect.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\badconnect.obj" "$(INTDIR)\badconnect.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\badconnect.obj" "$(INTDIR)\badconnect.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\badconnect.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\badconnect.obj" "$(INTDIR)\badconnect.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\badconnect.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\badconnect.obj" "$(INTDIR)\badconnect.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\browser\mailbrowser.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\mailbrowser.obj" "$(INTDIR)\mailbrowser.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\mailbrowser.obj" "$(INTDIR)\mailbrowser.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\mailbrowser.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\mailbrowser.obj" "$(INTDIR)\mailbrowser.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\mailbrowser.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\mailbrowser.obj" "$(INTDIR)\mailbrowser.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\mails\decode.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\decode.obj" "$(INTDIR)\decode.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\decode.obj" "$(INTDIR)\decode.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\decode.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\decode.obj" "$(INTDIR)\decode.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\decode.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\decode.obj" "$(INTDIR)\decode.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\mails\mails.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\mails.obj" "$(INTDIR)\mails.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\mails.obj" "$(INTDIR)\mails.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\mails.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\mails.obj" "$(INTDIR)\mails.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\mails.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\mails.obj" "$(INTDIR)\mails.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\mails\mime.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\mime.obj" "$(INTDIR)\mime.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\mime.obj" "$(INTDIR)\mime.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\mime.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\mime.obj" "$(INTDIR)\mime.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\mime.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\mime.obj" "$(INTDIR)\mime.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\md5.c
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\md5.obj" "$(INTDIR)\md5.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\md5.obj" "$(INTDIR)\md5.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\md5.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\md5.obj" "$(INTDIR)\md5.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\md5.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\md5.obj" "$(INTDIR)\md5.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\netlib.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\netlib.obj" "$(INTDIR)\netlib.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\netlib.obj" "$(INTDIR)\netlib.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\netlib.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\netlib.obj" "$(INTDIR)\netlib.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\netlib.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\netlib.obj" "$(INTDIR)\netlib.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\pop3\pop3.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\pop3.obj" "$(INTDIR)\pop3.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\pop3.obj" "$(INTDIR)\pop3.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\pop3.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\pop3.obj" "$(INTDIR)\pop3.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\pop3.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\pop3.obj" "$(INTDIR)\pop3.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\pop3\pop3comm.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\pop3comm.obj" "$(INTDIR)\pop3comm.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\pop3comm.obj" "$(INTDIR)\pop3comm.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\pop3comm.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\pop3comm.obj" "$(INTDIR)\pop3comm.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\pop3comm.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\pop3comm.obj" "$(INTDIR)\pop3comm.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\pop3\pop3opt.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\pop3opt.obj" "$(INTDIR)\pop3opt.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\pop3opt.obj" "$(INTDIR)\pop3opt.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\pop3opt.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\pop3opt.obj" "$(INTDIR)\pop3opt.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\pop3opt.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\pop3opt.obj" "$(INTDIR)\pop3opt.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\proto\ssl.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\ssl.obj" "$(INTDIR)\ssl.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\ssl.obj" "$(INTDIR)\ssl.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\ssl.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\ssl.obj" "$(INTDIR)\ssl.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\ssl.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\ssl.obj" "$(INTDIR)\ssl.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=.\account.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\account.obj" "$(INTDIR)\account.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\account.obj" "$(INTDIR)\account.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\account.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\account.obj" "$(INTDIR)\account.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\account.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\account.obj" "$(INTDIR)\account.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\debug.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\debug.obj" "$(INTDIR)\debug.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\debug.obj" "$(INTDIR)\debug.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\debug.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\debug.obj" "$(INTDIR)\debug.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\debug.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\debug.obj" "$(INTDIR)\debug.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\filterplugin.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\filterplugin.obj" "$(INTDIR)\filterplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\filterplugin.obj" "$(INTDIR)\filterplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\filterplugin.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\filterplugin.obj" "$(INTDIR)\filterplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\filterplugin.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\filterplugin.obj" "$(INTDIR)\filterplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\main.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\main.obj" "$(INTDIR)\main.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\protoplugin.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\protoplugin.obj" "$(INTDIR)\protoplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\protoplugin.obj" "$(INTDIR)\protoplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\protoplugin.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\protoplugin.obj" "$(INTDIR)\protoplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\protoplugin.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\protoplugin.obj" "$(INTDIR)\protoplugin.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\services.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\services.obj" "$(INTDIR)\services.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\services.obj" "$(INTDIR)\services.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\services.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\services.obj" "$(INTDIR)\services.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\services.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\services.obj" "$(INTDIR)\services.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\synchro.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\synchro.obj" "$(INTDIR)\synchro.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\synchro.obj" "$(INTDIR)\synchro.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\synchro.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\synchro.obj" "$(INTDIR)\synchro.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\synchro.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\synchro.obj" "$(INTDIR)\synchro.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\yamn.cpp
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\yamn.obj" "$(INTDIR)\yamn.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\yamn.obj" "$(INTDIR)\yamn.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\yamn.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\yamn.obj" "$(INTDIR)\yamn.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\yamn.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\yamn.obj" "$(INTDIR)\yamn.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\resources\YAMN.rc
-
-!IF "$(CFG)" == "YAMN - Win32 Release Win2in1"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "NDEBUG" $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win2in1"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "_DEBUG" $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "NDEBUG" $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "_DEBUG" $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Release Win9x"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "NDEBUG" $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "YAMN - Win32 Debug Win9x"
-
-
-"$(INTDIR)\YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) /l 0x417 /fo"$(INTDIR)\YAMN.res" /i "resources" /d "_DEBUG" $(SOURCE)
-
-
-!ENDIF
-
-
-!ENDIF
-
diff --git a/yamn/YAMN.vcproj b/yamn/YAMN.vcproj
deleted file mode 100644
index 7406854..0000000
--- a/yamn/YAMN.vcproj
+++ /dev/null
@@ -1,1593 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="YAMN"
- ProjectGUID="{8F13F353-8DEC-4E87-AD17-EFA427425B29}"
- RootNamespace="YAMN"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
- IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="1"
- TypeLibraryName=".\Debug/YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../include"
- PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;YAMN_DEBUG"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Debug/YAMN.pch"
- AssemblerListingLocation=".\Debug/"
- ObjectFile=".\Debug/"
- ProgramDataBaseFileName=".\Debug/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- DebugInformationFormat="4"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1029"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="odbc32.lib odbccp32.lib ws2_32.lib msvcrt.lib comctl32.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- IgnoreAllDefaultLibraries="true"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/YAMN.pdb"
- GenerateMapFile="true"
- MapFileName=".\Debug/YAMN.map"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary=".\Debug/YAMN.lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Win9x|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
- IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="1"
- TypeLibraryName=".\Release\Win9x/YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="../../../include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release\Win9x/YAMN.pch"
- AssemblerListingLocation=".\Release\Win9x/"
- ObjectFile=".\Release\Win9x/"
- ProgramDataBaseFileName=".\Release\Win9x/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1029"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/filealign:512"
- AdditionalDependencies="./libs/unicows.lib ws2_32.lib msvcrt.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- IgnoreAllDefaultLibraries="true"
- ProgramDatabaseFile=".\Release\Win9x/YAMN.pdb"
- SubSystem="2"
- BaseAddress="0x60020000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary=".\Release\Win9x/YAMN.lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Unicode|Win32"
- OutputDirectory="../../tweety_bin9/Release Unicode/Plugins"
- IntermediateDirectory="../../tweety_bin9/Release Unicode/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="1"
- TypeLibraryName=".\Release/YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="../../include"
- PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS,WIN2IN1"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/YAMN.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1029"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib msvcrt.lib libs/unicows.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib wsock32.lib "
- OutputFile="$(OutDir)/YAMN.dll"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- IgnoreAllDefaultLibraries="true"
- ProgramDatabaseFile="$(OutDir)/YAMN.pdb"
- SubSystem="2"
- BaseAddress=""
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(OutDir)/YAMN.lib"
- MergeSections=""
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug Win9x|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
- IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="1"
- TypeLibraryName=".\Debug\Win9x/YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Debug\Win9x/YAMN.pch"
- AssemblerListingLocation=".\Debug\Win9x/"
- ObjectFile=".\Debug\Win9x/"
- ProgramDataBaseFileName=".\Debug\Win9x/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="true"
- DebugInformationFormat="4"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1029"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="odbc32.lib odbccp32.lib ws2_32.lib msvcrt.lib"
- OutputFile="$(OutDir)\$(ProjectName).dll"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- IgnoreAllDefaultLibraries="true"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug\Win9x/YAMN.pdb"
- BaseAddress="0x60020000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary=".\Debug\Win9x/YAMN.lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="YAMN"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="account.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="ChangeLog.txt"
- >
- </File>
- <File
- RelativePath="debug.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="filterplugin.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="main.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="protoplugin.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="services.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="synchro.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="yamn.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <Filter
- Name="Mail browser, dialogs"
- >
- <File
- RelativePath="browser\badconnect.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="browser\mailbrowser.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Mails"
- >
- <File
- RelativePath="mails\decode.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="mails\mails.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="mails\mime.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="POP3 plugin"
- >
- <File
- RelativePath="proto\md5.c"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="proto\netlib.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="proto\pop3\pop3.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="proto\pop3\pop3comm.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="proto\pop3\pop3opt.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;$(NoInherit)"
- BasicRuntimeChecks="3"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;YAMN_DEBUG;$(NoInherit)"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Header"
- >
- <File
- RelativePath="debug.h"
- >
- </File>
- <File
- RelativePath="main.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3comm.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3opt.h"
- >
- </File>
- <File
- RelativePath="yamn.h"
- >
- </File>
- </Filter>
- <Filter
- Name="include"
- >
- <File
- RelativePath="include\IcoLib.h"
- >
- </File>
- <File
- RelativePath="include\m_kbdnotify.h"
- >
- </File>
- <File
- RelativePath="include\m_popup.h"
- >
- </File>
- <File
- RelativePath="include\m_toptoolbar.h"
- >
- </File>
- <File
- RelativePath="include\m_uninstaller.h"
- >
- </File>
- <File
- RelativePath="include\m_updater.h"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
- >
- <File
- RelativePath="resources\bmttb.bmp"
- >
- </File>
- <File
- RelativePath="resources\icon1.ico"
- >
- </File>
- <File
- RelativePath="resources\iconeutral.ico"
- >
- </File>
- <File
- RelativePath="resources\iconttb.ico"
- >
- </File>
- <File
- RelativePath="resources\iconttbdown.ico"
- >
- </File>
- <File
- RelativePath="resources\iconttbup.ico"
- >
- </File>
- <File
- RelativePath=".\resources\icooffline.ico"
- >
- </File>
- <File
- RelativePath="resources\icoyamn1.ico"
- >
- </File>
- <File
- RelativePath="resources\icoyamn2.ico"
- >
- </File>
- <File
- RelativePath="resources\icoyamn3.ico"
- >
- </File>
- <File
- RelativePath="resources\ttbcheck.ico"
- >
- </File>
- <File
- RelativePath="resources\ttbfcheck.bmp"
- >
- </File>
- <File
- RelativePath=".\resources\yamn.bmp"
- >
- </File>
- <File
- RelativePath="resources\YAMN.rc"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="resources"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Win9x|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="resources"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release Unicode|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="resources"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug Win9x|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- AdditionalIncludeDirectories="resources"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Documentation"
- >
- <File
- RelativePath="docs\changelog.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="docs\language.pop3.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="docs\language.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="docs\YAMN-License.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="docs\YAMN-Readme.developers.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="docs\YAMN-Readme.txt"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCustomBuildTool"
- />
- </FileConfiguration>
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/yamn/YAMN_10.sln b/yamn/YAMN_10.sln
deleted file mode 100644
index d7fb3b0..0000000
--- a/yamn/YAMN_10.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Yamn", "YAMN_10.vcxproj", "{C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Debug|Win32.ActiveCfg = Debug|Win32
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Debug|Win32.Build.0 = Debug|Win32
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Debug|x64.ActiveCfg = Debug|x64
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Debug|x64.Build.0 = Debug|x64
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Release|Win32.ActiveCfg = Release|Win32
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Release|Win32.Build.0 = Release|Win32
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Release|x64.ActiveCfg = Release|x64
- {C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/yamn/YAMN_10.vcxproj b/yamn/YAMN_10.vcxproj
deleted file mode 100644
index a364f45..0000000
--- a/yamn/YAMN_10.vcxproj
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>Yamn</ProjectName>
- <ProjectGuid>{C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}</ProjectGuid>
- <RootNamespace>yamn</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- <CharacterSet>MultiByte</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Debug/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Release/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)Release64/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)Release64/Obj/$(ProjectName)\</IntDir>
- <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Release|x64'">*.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pch%3b*.pgc%3b*.pgd%3b*.meta%3b$(TargetPath)%3b$(TargetDir)$(ProjectName).*%3b$(TargetDir)$(RootNamespace).*</ExtensionsToDeleteOnClean>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)Debug64/Plugins\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)Debug64/Obj/$(ProjectName)\</IntDir>
- <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">*.obj%3b*.ilk%3b*.tlb%3b*.tli%3b*.tlh%3b*.tmp%3b*.rsp%3b*.pch%3b*.pgc%3b*.pgd%3b*.meta%3b$(TargetPath)%3b$(TargetDir)$(ProjectName).*%3b$(TargetDir)$(RootNamespace).*</ExtensionsToDeleteOnClean>
- <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_WINDOWS;_USRDLL;_DEBUG;YAMN_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <StructMemberAlignment>4Bytes</StructMemberAlignment>
- <AssemblerListingLocation>
- </AssemblerListingLocation>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>./libs/unicows.lib;comctl32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <BaseAddress>0x60010000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <Optimization>Full</Optimization>
- <InlineFunctionExpansion>Default</InlineFunctionExpansion>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN2IN1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <StructMemberAlignment>4Bytes</StructMemberAlignment>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <AssemblerListingLocation>
- </AssemblerListingLocation>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>./libs/unicows.lib;comctl32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OptimizeReferences>true</OptimizeReferences>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
- <BaseAddress>0x60010000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <Optimization>MinSpace</Optimization>
- <InlineFunctionExpansion>Default</InlineFunctionExpansion>
- <AdditionalIncludeDirectories>../../include;../../include_API;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WIN9X;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <StringPooling>true</StringPooling>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <AssemblerListingLocation>
- </AssemblerListingLocation>
- <ObjectFileName>$(IntDir)</ObjectFileName>
- <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalOptions>/filealign:512 %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>comctl32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)$(RootNamespace).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <BaseAddress>0x60010000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- <Bscmake>
- <OutputFile>$(OutDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>../../include;../../include_API;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <MinimalRebuild>true</MinimalRebuild>
- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <AssemblerListingLocation>
- </AssemblerListingLocation>
- <ObjectFileName>$(IntDir)</ObjectFileName>
- <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
- <BrowseInformation>true</BrowseInformation>
- <WarningLevel>Level3</WarningLevel>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
- <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <Culture>0x0409</Culture>
- </ResourceCompile>
- <Link>
- <AdditionalDependencies>comctl32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)$(RootNamespace).dll</OutputFile>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <BaseAddress>0x60010000</BaseAddress>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
- <TargetMachine>MachineX64</TargetMachine>
- </Link>
- <Bscmake>
- <OutputFile>$(OutDir)$(TargetName).bsc</OutputFile>
- </Bscmake>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="account.cpp" />
- <ClCompile Include="debug.cpp" />
- <ClCompile Include="filterplugin.cpp" />
- <ClCompile Include="main.cpp" />
- <ClCompile Include="protoplugin.cpp" />
- <ClCompile Include="services.cpp" />
- <ClCompile Include="synchro.cpp" />
- <ClCompile Include="yamn.cpp" />
- <ClCompile Include="browser\badconnect.cpp" />
- <ClCompile Include="browser\mailbrowser.cpp" />
- <ClCompile Include="mails\decode.cpp" />
- <ClCompile Include="mails\mails.cpp" />
- <ClCompile Include="mails\mime.cpp" />
- <ClCompile Include="proto\md5.c" />
- <ClCompile Include="proto\netlib.cpp" />
- <ClCompile Include="proto\pop3\pop3.cpp" />
- <ClCompile Include="proto\pop3\pop3comm.cpp" />
- <ClCompile Include="proto\pop3\pop3opt.cpp" />
- </ItemGroup>
- <ItemGroup>
- <None Include="resources\iconeutral.ico" />
- <None Include="resources\iconttbdown.ico" />
- <None Include="resources\icooffline.ico" />
- <None Include="resources\icoyamn3.ico" />
- <None Include="resources\yamn.bmp" />
- <None Include="ChangeLog.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="resources\resource.h" />
- <ClInclude Include="debug.h" />
- <ClInclude Include="main.h" />
- <ClInclude Include="proto\pop3\pop3.h" />
- <ClInclude Include="proto\pop3\pop3comm.h" />
- <ClInclude Include="proto\pop3\pop3opt.h" />
- <ClInclude Include="yamn.h" />
- <ClInclude Include="include\m_kbdnotify.h" />
- <ClInclude Include="include\m_toptoolbar.h" />
- <ClInclude Include="include\m_uninstaller.h" />
- <ClInclude Include="include\m_updater.h" />
- <ClInclude Include="version.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="resources\YAMN.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/yamn/YAMN_10.vcxproj.filters b/yamn/YAMN_10.vcxproj.filters
deleted file mode 100644
index b684f9d..0000000
--- a/yamn/YAMN_10.vcxproj.filters
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{30eb0c8d-5383-47ff-8a05-4b9793d26d50}</UniqueIdentifier>
- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
- </Filter>
- <Filter Include="Source Files\Mail browser, dialogs">
- <UniqueIdentifier>{6b01a00c-f1f9-4958-b89a-2721d5bdd229}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\Mails">
- <UniqueIdentifier>{4743640f-ca6b-4518-8ead-525bea367ec0}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\POP3 plugin">
- <UniqueIdentifier>{0189ff00-aae9-40fd-847b-a81dca9496bd}</UniqueIdentifier>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{daef8d66-0947-4a6c-ad55-4e1b2bf26d86}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{c58708cc-53b7-4db2-b19e-4d6291665e8b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\include">
- <UniqueIdentifier>{a5d01df4-9348-4078-ab04-99ee691cd263}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="account.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="debug.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="filterplugin.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="protoplugin.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="services.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="synchro.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="yamn.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="browser\badconnect.cpp">
- <Filter>Source Files\Mail browser, dialogs</Filter>
- </ClCompile>
- <ClCompile Include="browser\mailbrowser.cpp">
- <Filter>Source Files\Mail browser, dialogs</Filter>
- </ClCompile>
- <ClCompile Include="mails\decode.cpp">
- <Filter>Source Files\Mails</Filter>
- </ClCompile>
- <ClCompile Include="mails\mails.cpp">
- <Filter>Source Files\Mails</Filter>
- </ClCompile>
- <ClCompile Include="mails\mime.cpp">
- <Filter>Source Files\Mails</Filter>
- </ClCompile>
- <ClCompile Include="proto\md5.c">
- <Filter>Source Files\POP3 plugin</Filter>
- </ClCompile>
- <ClCompile Include="proto\netlib.cpp">
- <Filter>Source Files\POP3 plugin</Filter>
- </ClCompile>
- <ClCompile Include="proto\pop3\pop3.cpp">
- <Filter>Source Files\POP3 plugin</Filter>
- </ClCompile>
- <ClCompile Include="proto\pop3\pop3comm.cpp">
- <Filter>Source Files\POP3 plugin</Filter>
- </ClCompile>
- <ClCompile Include="proto\pop3\pop3opt.cpp">
- <Filter>Source Files\POP3 plugin</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="resources\iconeutral.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\iconttbdown.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\icooffline.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\icoyamn3.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="resources\yamn.bmp">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="ChangeLog.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="resources\resource.h">
- <Filter>Resource Files</Filter>
- </ClInclude>
- <ClInclude Include="debug.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="main.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="proto\pop3\pop3.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="proto\pop3\pop3comm.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="proto\pop3\pop3opt.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="yamn.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="include\m_kbdnotify.h">
- <Filter>Header Files\include</Filter>
- </ClInclude>
- <ClInclude Include="include\m_toptoolbar.h">
- <Filter>Header Files\include</Filter>
- </ClInclude>
- <ClInclude Include="include\m_uninstaller.h">
- <Filter>Header Files\include</Filter>
- </ClInclude>
- <ClInclude Include="include\m_updater.h">
- <Filter>Header Files\include</Filter>
- </ClInclude>
- <ClInclude Include="version.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="resources\YAMN.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/yamn/YAMN_9.vcproj b/yamn/YAMN_9.vcproj
deleted file mode 100644
index 1178eae..0000000
--- a/yamn/YAMN_9.vcproj
+++ /dev/null
@@ -1,915 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="_YAMN"
- ProjectGUID="{C5A87409-F08C-4A07-A8F9-1F5D52BA6D72}"
- RootNamespace="yamn"
- TargetFrameworkVersion="0"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="x64"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug Unicode|Win32"
- OutputDirectory="$(SolutionDir)Debug 2in1/Plugins"
- IntermediateDirectory="$(SolutionDir)Debug 2in1/Obj/$(ProjectName)/YAMN-2in1"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;_DEBUG;YAMN_DEBUG"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- StructMemberAlignment="3"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- BrowseInformation="1"
- WarningLevel="3"
- DebugInformationFormat="4"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="./libs/unicows.lib comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug Unicode|x64"
- OutputDirectory="$(SolutionDir)Debug Unicode64/Plugins"
- IntermediateDirectory="$(SolutionDir)Debug Unicode64/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;_DEBUG;YAMN_DEBUG"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- BrowseInformation="1"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)Release 2in1/Plugins/YAMN-9x"
- IntermediateDirectory="$(SolutionDir)Release 2in1/Obj/$(ProjectName)/YAMN-9x"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- InlineFunctionExpansion="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN9X"
- StringPooling="true"
- RuntimeLibrary="2"
- StructMemberAlignment="3"
- EnableFunctionLevelLinking="true"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- WarningLevel="3"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/filealign:512"
- AdditionalDependencies="./libs/unicows.lib comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(SolutionDir)Release64/Plugins"
- IntermediateDirectory="$(SolutionDir)Release64/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- InlineFunctionExpansion="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN9X;_USRDLL"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- WarningLevel="3"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/filealign:512"
- AdditionalDependencies="comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Unicode|Win32"
- OutputDirectory="$(SolutionDir)Release 2in1/Plugins"
- IntermediateDirectory="$(SolutionDir)Release 2in1/Obj/$(ProjectName)/YAMN-2in1"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- InlineFunctionExpansion="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN2IN1;_CRT_SECURE_NO_WARNINGS"
- StringPooling="true"
- RuntimeLibrary="2"
- StructMemberAlignment="3"
- EnableFunctionLevelLinking="true"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- WarningLevel="3"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="./libs/unicows.lib comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release Unicode|x64"
- OutputDirectory="$(SolutionDir)Release Unicode64/Plugins"
- IntermediateDirectory="$(SolutionDir)Release Unicode64/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="1"
- InlineFunctionExpansion="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;WIN2IN1;_CRT_SECURE_NO_WARNINGS"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- WarningLevel="3"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)Debug 2in1/Plugins/YAMN-9x"
- IntermediateDirectory="$(SolutionDir)Debug 2in1/Obj/$(ProjectName)/YAMN-9x"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- StructMemberAlignment="3"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- BrowseInformation="1"
- WarningLevel="3"
- DebugInformationFormat="4"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="./libs/unicows.lib comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="$(SolutionDir)Debug64/Plugins"
- IntermediateDirectory="$(SolutionDir)Debug64/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pch;*.pgc;*.pgd;*.meta;$(TargetPath);$(TargetDir)$(ProjectName).*;$(TargetDir)$(RootNamespace).*"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../include;../../include_API"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;YAMN_DEBUG;WIN9X;YAMN_VER_BETA"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- AssemblerListingLocation=""
- ObjectFile="$(IntDir)/"
- ProgramDataBaseFileName="$(IntDir)/"
- BrowseInformation="1"
- WarningLevel="3"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4996"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="comctl32.lib wsock32.lib"
- OutputFile="$(OutDir)\$(RootNamespace).dll"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- BaseAddress="0x60010000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary="$(IntDir)/$(TargetName).lib"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- OutputFile="$(OutDir)/$(TargetName).bsc"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="account.cpp"
- >
- </File>
- <File
- RelativePath="debug.cpp"
- >
- </File>
- <File
- RelativePath="filterplugin.cpp"
- >
- </File>
- <File
- RelativePath="main.cpp"
- >
- </File>
- <File
- RelativePath="protoplugin.cpp"
- >
- </File>
- <File
- RelativePath="services.cpp"
- >
- </File>
- <File
- RelativePath="synchro.cpp"
- >
- </File>
- <File
- RelativePath="yamn.cpp"
- >
- </File>
- <Filter
- Name="Mail browser, dialogs"
- >
- <File
- RelativePath="browser\badconnect.cpp"
- >
- </File>
- <File
- RelativePath="browser\mailbrowser.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Mails"
- >
- <File
- RelativePath="mails\decode.cpp"
- >
- </File>
- <File
- RelativePath="mails\mails.cpp"
- >
- </File>
- <File
- RelativePath="mails\mime.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="POP3 plugin"
- >
- <File
- RelativePath="proto\md5.c"
- >
- </File>
- <File
- RelativePath="proto\netlib.cpp"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3.cpp"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3comm.cpp"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3opt.cpp"
- >
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
- >
- <File
- RelativePath="resources\iconeutral.ico"
- >
- </File>
- <File
- RelativePath="resources\iconttbdown.ico"
- >
- </File>
- <File
- RelativePath="resources\icooffline.ico"
- >
- </File>
- <File
- RelativePath="resources\icoyamn3.ico"
- >
- </File>
- <File
- RelativePath=".\resources\resource.h"
- >
- </File>
- <File
- RelativePath=".\resources\yamn.bmp"
- >
- </File>
- <File
- RelativePath="resources\YAMN.rc"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- >
- <File
- RelativePath="debug.h"
- >
- </File>
- <File
- RelativePath="main.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3comm.h"
- >
- </File>
- <File
- RelativePath="proto\pop3\pop3opt.h"
- >
- </File>
- <File
- RelativePath="yamn.h"
- >
- </File>
- <Filter
- Name="include"
- >
- <File
- RelativePath="include\m_kbdnotify.h"
- >
- </File>
- <File
- RelativePath="include\m_toptoolbar.h"
- >
- </File>
- <File
- RelativePath="include\m_uninstaller.h"
- >
- </File>
- <File
- RelativePath="include\m_updater.h"
- >
- </File>
- </Filter>
- </Filter>
- <File
- RelativePath="ChangeLog.txt"
- >
- </File>
- <File
- RelativePath=".\version.h"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/yamn/YAMNopts.cpp b/yamn/YAMNopts.cpp
deleted file mode 100644
index 99a8091..0000000
--- a/yamn/YAMNopts.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/yamn/account.cpp b/yamn/account.cpp
deleted file mode 100644
index 255f9cf..0000000
--- a/yamn/account.cpp
+++ /dev/null
@@ -1,1539 +0,0 @@
-/*
- * This code implements manipulation with accounts
- * such as reading accounts from file, writing them to file,
- * finding account by name etc.
- *
- * (c) majvan 2002-2004
- */
-
-#include "yamn.h"
-#include "mails/m_mails.h"
-#if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES) || defined(DEBUG_SYNCHRO)
- #include <stdio.h>
-#endif
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern PSWMRG PluginBrowserSO;
-extern TCHAR AccountFileName[];
-extern TCHAR *CurDir;
-extern PLUGININFO pluginInfo;
-extern YAMN_VARIABLES YAMNVar;
-
-extern BOOL WINAPI SWMRGInitialize(PSWMRG pSWMRG,TCHAR *Name);
-extern void WINAPI SWMRGDelete(PSWMRG pSWMRG);
-extern DWORD WINAPI SWMRGWaitToWrite(PSWMRG pSWMRG,DWORD dwTimeout);
-extern void WINAPI SWMRGDoneWriting(PSWMRG pSWMRG);
-extern DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout);
-extern void WINAPI SWMRGDoneReading(PSWMRG pSWMRG);
-extern DWORD WINAPI WaitToReadFcn(PSWMRG SObject);
-extern void WINAPI ReadDoneFcn(PSWMRG SObject);
-extern HYAMNPROTOPLUGIN FindPlugin(DWORD PluginID);
-
-extern void WINAPI DeleteMessagesToEndFcn(HACCOUNT Account,HYAMNMAIL From);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-// SMALL INTRO
-// Accounts are queued in a queue (chained list). Pointer to first account is called "FirstAccount"
-// Account queue is ended with NULL- pointered account (NULL handle)
-// FirstAccount has every plugin in its own YAMN_PLUGIN structure
-
-//Account status CS
-//When we check some account, thread should change status of account to idle, connecting etc.
-//So if we want to read status, we have to successfully write and then read.
-LPCRITICAL_SECTION AccountStatusCS;
-
-//File Writing CS
-//When 2 threads want to write to file...
-LPCRITICAL_SECTION FileWritingCS;
-
-// Creates new account, which has plugin specified structure
-INT_PTR CreatePluginAccountSvc(WPARAM wParam,LPARAM lParam);
-
-// Deletes account from memory
-INT_PTR DeletePluginAccountSvc(WPARAM wParam,LPARAM);
-
-// Initializes standard YAMN account parameters
-int InitAccount(HACCOUNT Which);
-
-// Deinitializes (deletes) standard YAMN account parameters
-void DeInitAccount(HACCOUNT Which);
-
-// Sends signal (sets event) in AccountAccessSO and MessagesAccessSO
-// This event makes that all calls to ...WaitToRead or ...WaitToWrite are returned to WAIT_FAILED
-void StopSignalFcn(HACCOUNT Which);
-
-// Function used to encrypt password (codes / decodes string)
-// There's a problem when a character is going to be encrypted to (TCHAR)0, (end of string)
-// Dest- input and output string (input/output length of string is 1:1)
-// Encrypt- TRUE for encryption, FALSE for decryption
-void CodeDecodeString(TCHAR *Dest,BOOL Encrypt);
-
-// Only do the main work for FileToMemoryX functions. FileToMemoryX only opens file.
-static DWORD PostFileToMemory(HANDLE File,TCHAR **MemFile,TCHAR **End);
-
-// Reads the file and stores the content to allocated memory
-// FileName- name of file
-// MemFile- pointer to the pointer of TCHAR, new allocated memory by this function
-// End- where new allocated memory filled with file contents ends
-DWORD FileToMemoryA(char *FileName,TCHAR **MemFile,TCHAR **End);
-
-// Same as FileToMemoryA, but Unicode filename
-DWORD FileToMemoryW(char *FileName,TCHAR **MemFile,TCHAR **End);
-
-// Reads string that ends with character 0 and copies it to new allocated memory
-// Parser-pointer to memory with string
-// function sets this parameter to point at the next char after read string
-// End-information how long this string can be (in pointer to last possible char)
-// StoreTo-function allocates memory and copies the string, allocated memory returned in StoreTo
-// DebugString-the debug message showed in debug version
-#if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES)
-DWORD ReadStringFromMemory(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo,TCHAR *DebugString);
-#endif
-DWORD ReadStringFromMemory(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo);
-#ifndef UNICODE
- #if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES)
-DWORD ReadStringFromMemoryW(WCHAR **Parser,TCHAR *End,WCHAR **StoreTo,WCHAR *DebugString);
- #endif //if defined(DEBUG...)
-DWORD ReadStringFromMemoryW(WCHAR **Parser,TCHAR *End,WCHAR **StoreTo);
-#endif //ifdef Unicode
-
-// Reads notification parameters from memory
-// Parser-pointer to memory with string
-// function sets this parameter to point at the next char after read string
-// End-information how long this string can be (in pointer to last possible char)
-// Which-pointer to notification structure to fill with read parameters
-static DWORD ReadNotificationFromMemory(TCHAR **Parser,TCHAR *End,YAMN_NOTIFICATION *Which);
-
-// Reads messages from memory
-// Which- address of account that mails (messages) belong to
-// Parser- pointer to data from memory, function changes it to the next char after messages read
-// End- the last possible char of messages
-DWORD ReadMessagesFromMemory(HACCOUNT Which,TCHAR **Parser,TCHAR *End);
-
-// Does all needed operations to read account
-static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin,TCHAR *MemFile,TCHAR *End);
-
-// Read one account from memory
-// Which- address of account
-// Parser- pointer to data from memory, function changes it to the next char after account read
-// End- the last possible char of account
-DWORD ReadAccountFromMemory(HACCOUNT Which,TCHAR **Parser,TCHAR *End);
-
-// Inserts accounts read from file to actual account queue
-INT_PTR AddAccountsFromFileASvc(WPARAM wParam,LPARAM lParam);
-
-// Same as AddAccountsFromFileA, but filename is (WCHAR *) type- Unicode string
-INT_PTR AddAccountsFromFileWSvc(WPARAM,LPARAM);
-
-// Writes simple string to file
-// File- handle of open file for writing
-// Source- string to write, ended with zero character
-DWORD WriteStringToFile(HANDLE File,TCHAR *Source);
-#ifndef UNICODE
-DWORD WriteStringToFileW(HANDLE File,WCHAR *Source);
-#else
-#define ReadStringFromMemoryW ReadStringFromMemory
-#endif
-
-// Writes mails to file
-// File- handle of file
-// Which- address of account that mails belong to
-DWORD WriteMessagesToFile(HANDLE File,HACCOUNT Which);
-
-// Does all needed operations to write account to file
-static INT_PTR PerformAccountWriting(HYAMNPROTOPLUGIN Plugin,HANDLE File);
-
-// Writes accounts to file
-// Accounts are read from plugin's account queue
-// Function writes account data and calls WriteMessagesToFile to store account mails
-INT_PTR WriteAccountsToFileASvc(WPARAM wParam,LPARAM lParam);
-
-// Same as WriteAccountsToFileA, but filename is (WCHAR *) type- Unicode string
-INT_PTR WriteAccountsToFileWSvc(WPARAM wParam,LPARAM lParam);
-
-// Finds account by name and returns a pointer to it, or NULL when not found
-// we do not have to synchronize accounts for read access, because we never change name of account
-// (so if we want to change name of account we have to delete and create the new one)
-INT_PTR FindAccountByNameSvc(WPARAM wParam,LPARAM lParam);
-
-// Allocates a new account, and returns pointer to it
-// calling function should have write access (using AccountBrowserSO)
-// because new account is queues do account queue
-INT_PTR GetNextFreeAccountSvc(WPARAM wParam,LPARAM lParam);
-
-// Finds account for plugin
-//int FindPluginAccount(WPARAM wParam,LPARAM lParam);
-
-// Removes requested account from queue
-// and deletes it in memory calling new thread function, that does it in the background
-// This is very easy and the most secure way for plugins to delete account
-INT_PTR DeleteAccountSvc(WPARAM wParam,LPARAM);
-
-// This function is used as a thread function, that waits to signal for deleting account from memory
-// This signal is signaled in UsingAccount.Event (this signales that no thread will be use account in the future)
-DWORD WINAPI DeleteAccountInBackground(LPVOID Which);
-
-// Sends signal that all works with Plugin accounts should be stopped and accounts should not be used anymore.
-int StopAccounts(HYAMNPROTOPLUGIN Plugin);
-
-// Wait for accounts to finish its work
-int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin,BOOL GetAccountBrowserAccess=FALSE);
-
-// Deletes protocol accounts using protocol defined delete function.
-int DeleteAccounts(HYAMNPROTOPLUGIN Plugin);
-
-// If you want to get directly account status, call this function
-// You don't have to be in read-access to account and you can call this to retrieve status
-void WINAPI GetStatusFcn(HACCOUNT Which,char *Value);
-
-// If you want to set directly account status, call this function
-// You don't have to be in write-access to account and you can call this to retrieve status
-void WINAPI SetStatusFcn(HACCOUNT Which,char *Value);
-
-struct CExportedFunctions AccountExportedFcn[]=
-{
- {YAMN_GETSTATUSID,(void *)GetStatusFcn},
- {YAMN_SETSTATUSID,(void *)SetStatusFcn},
-};
-
-struct CExportedServices AccountExportedSvc[]=
-{
- {MS_YAMN_CREATEPLUGINACCOUNT,CreatePluginAccountSvc},
- {MS_YAMN_DELETEPLUGINACCOUNT,DeletePluginAccountSvc},
- {MS_YAMN_FINDACCOUNTBYNAME,FindAccountByNameSvc},
- {MS_YAMN_GETNEXTFREEACCOUNT,GetNextFreeAccountSvc},
- {MS_YAMN_DELETEACCOUNT,DeletePluginAccountSvc},
- {MS_YAMN_READACCOUNTSA,AddAccountsFromFileASvc},
- {MS_YAMN_READACCOUNTSW,AddAccountsFromFileWSvc},
- {MS_YAMN_WRITEACCOUNTSA,WriteAccountsToFileASvc},
- {MS_YAMN_WRITEACCOUNTSW,WriteAccountsToFileWSvc},
-};
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR CreatePluginAccountSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- DWORD AccountVersion=(DWORD)lParam;
- HACCOUNT NewAccount;
-
-//test if we are going to initialize members of suitable structure (structures of plugin and YAMN must match)
- if(AccountVersion!=YAMN_ACCOUNTVERSION)
- return NULL;
-
- if(Plugin!=NULL)
- {
- if(Plugin->Fcn->NewAccountFcnPtr!=NULL)
- {
-//Let plugin create its own structure, which can be derived from CAccount structure
- NewAccount=Plugin->Fcn->NewAccountFcnPtr(Plugin,YAMN_ACCOUNTVERSION);
- NewAccount->Plugin=Plugin;
- }
- else
- {
-//We suggest plugin uses standard CAccount structure, so we create it
- NewAccount=new struct CAccount;
- NewAccount->Plugin=Plugin;
- }
-//If not created successfully
- if(NewAccount==NULL)
- return NULL;
-//Init every members of structure, used by YAMN
- InitAccount(NewAccount);
-
- return (INT_PTR)NewAccount;
- }
- return NULL;
-}
-
-INT_PTR DeletePluginAccountSvc(WPARAM wParam,LPARAM)
-{
- HACCOUNT OldAccount=(HACCOUNT)wParam;
-
- if(OldAccount->Plugin->Fcn!=NULL)
- {
-//Deinit every members and allocated fields of structure used by YAMN
- DeInitAccount(OldAccount);
- if(OldAccount->Plugin->Fcn->DeleteAccountFcnPtr!=NULL)
- {
-//Let plugin delete its own CAccount derived structure
- OldAccount->Plugin->Fcn->DeleteAccountFcnPtr(OldAccount);
- }
- else
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeletePluginAccountSvc:delete OldAccount\n");
-#endif
- delete OldAccount; //consider account as standard YAMN HACCOUNT and use its own destructor
- }
- return 1;
- }
- delete OldAccount; //consider account as standard YAMN HACCOUNT, not initialized before and use its own destructor
- return 1;
-}
-
-int InitAccount(HACCOUNT Which)
-{
-//initialize synchronizing objects
- Which->AccountAccessSO=new SWMRG;
- SWMRGInitialize(Which->AccountAccessSO,NULL);
- Which->MessagesAccessSO=new SWMRG;
- SWMRGInitialize(Which->MessagesAccessSO,NULL);
- Which->UsingThreads=new SCOUNTER;
- SWMRGInitialize(Which->MessagesAccessSO,NULL);
-
-//zero memory, where timestamps are stored
- ZeroMemory(&Which->LastChecked,sizeof(Which->LastChecked));
- ZeroMemory(&Which->LastSChecked,sizeof(Which->LastSChecked));
- ZeroMemory(&Which->LastSynchronised,sizeof(Which->LastSynchronised));
- ZeroMemory(&Which->LastMail,sizeof(Which->LastMail));
-
- Which->Name=NULL;
- Which->Mails=NULL;
- Which->Interval=0;
- Which->Flags=0;
- Which->StatusFlags=0;
- Which->Next=NULL;
-
- Which->Server=new struct CServer;
- Which->AbleToWork=TRUE;
-
- return 1;
-}
-
-void DeInitAccount(HACCOUNT Which)
-{
-//delete YAMN allocated fields
- if(Which->Name!=NULL)
- delete[] Which->Name;
- if(Which->Server->Name!=NULL)
- delete[] Which->Server->Name;
- if(Which->Server->Login!=NULL)
- delete[] Which->Server->Login;
- if(Which->Server->Passwd!=NULL)
- delete[] Which->Server->Passwd;
- if(Which->Server!=NULL)
- delete[] Which->Server;
-
- SWMRGDelete(Which->AccountAccessSO);
- delete Which->AccountAccessSO;
- SWMRGDelete(Which->MessagesAccessSO);
- delete Which->MessagesAccessSO;
- delete Which->UsingThreads;
- DeleteMessagesToEndFcn(Which,(HYAMNMAIL)Which->Mails);
-}
-
-void StopSignalFcn(HACCOUNT Which)
-//set event that we are going to delete account
-{
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tStopSignalFcn:stop account: %x\n",Which);
-#endif
- Which->AbleToWork=FALSE;
-//do not use synchronizing objects anymore
-//any access to these objects then ends with WAIT_FAILED
- SetEvent(Which->AccountAccessSO->hFinishEV);
- SetEvent(Which->MessagesAccessSO->hFinishEV);
-}
-
-void CodeDecodeString(TCHAR *Dest,BOOL Encrypt)
-{
- TCHAR Code=STARTCODEPSW;
-
- if(Dest==NULL)
- return;
-
- for(;*Dest!=(TCHAR)0;Dest++)
- {
- if(Encrypt)
- *Dest=*Dest+Code;
- else
- *Dest=*Dest-Code;
- Code+=(TCHAR)ADDCODEPSW;
- }
-}
-
-static DWORD PostFileToMemory(HANDLE File,TCHAR **MemFile,TCHAR **End)
-{
- DWORD FileSize,ReadBytes;
-
- if(!(FileSize=GetFileSize(File,NULL)))
- {
- CloseHandle(File);
- return EACC_FILESIZE;
- }
-//allocate space in memory, where we copy the whole file
- if(NULL==(*MemFile=(char *)new char[FileSize]))
- {
- CloseHandle(File);
- return EACC_ALLOC;
- }
-//copy file to memory
- if(!ReadFile(File,(LPVOID)*MemFile,FileSize,&ReadBytes,NULL))
- {
- CloseHandle(File);
- delete[] *MemFile;
- return EACC_SYSTEM;
- }
- CloseHandle(File);
- *End=*MemFile+FileSize/sizeof(TCHAR);
- return 0;
-}
-
-DWORD FileToMemoryA(char *FileName,TCHAR **MemFile,TCHAR **End)
-{
- HANDLE File;
-
- if(INVALID_HANDLE_VALUE==(File=CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)))
- return EACC_SYSTEM;
-
- return PostFileToMemory(File,MemFile,End);
-}
-
-DWORD FileToMemoryW(WCHAR *FileName,TCHAR **MemFile,TCHAR **End)
-{
- HANDLE File;
-
- if(INVALID_HANDLE_VALUE==(File=CreateFileW(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)))
- return EACC_SYSTEM;
-
- return PostFileToMemory(File,MemFile,End);
-}
-
-#if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES)
-DWORD ReadStringFromMemory(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo,TCHAR *DebugString)
-{
-//This is the debug version of ReadStringFromMemory function. This version shows MessageBox where
-//read string is displayed
- TCHAR *Dest,*Finder;
- DWORD Size;
- TCHAR Debug[65536];
-
- Finder=*Parser;
- while((*Finder!=(TCHAR)0) && (Finder<=End)) Finder++;
- _stprintf(Debug,_T("%s: %s,length is %d, remaining %d chars"),DebugString,*Parser,Finder-*Parser,End-Finder);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
- if(Finder>=End)
- return EACC_FILECOMPATIBILITY;
- if(Size=Finder-*Parser)
- {
- if(NULL==(Dest=*StoreTo=new TCHAR[Size+1]))
- return EACC_ALLOC;
- for(;*Parser<=Finder;(*Parser)++,Dest++)
- *Dest=**Parser;
- }
- else
- {
- *StoreTo=NULL;
- (*Parser)++;
- }
- return 0;
-}
-#endif
-
-DWORD ReadStringFromMemory(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo)
-{
- TCHAR *Dest,*Finder;
- DWORD Size;
-
- Finder=*Parser;
- while((*Finder!=(TCHAR)0) && (Finder<=End)) Finder++;
- if(Finder>=End)
- return EACC_FILECOMPATIBILITY;
- if(Size=Finder-*Parser)
- {
- if(NULL==(Dest=*StoreTo=new TCHAR[Size+1]))
- return EACC_ALLOC;
- for(;*Parser<=Finder;(*Parser)++,Dest++)
- *Dest=**Parser;
- }
- else
- {
- *StoreTo=NULL;
- (*Parser)++;
- }
- return 0;
-}
-
-#ifndef UNICODE
- #if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES)
-DWORD ReadStringFromMemoryW(WCHAR **Parser,TCHAR *End,WCHAR **StoreTo,WCHAR *DebugString)
-{
-//This is the debug version of ReadStringFromMemoryW function. This version shows MessageBox where
-//read string is displayed
- WCHAR *Dest,*Finder;
- DWORD Size;
- WCHAR Debug[65536];
-
- Finder=*Parser;
- while((*Finder!=(WCHAR)0) && (Finder<=(WCHAR *)End)) Finder++;
- swprintf(Debug,L"%s: %s,length is %d, remaining %d chars",DebugString,*Parser,Finder-*Parser,(WCHAR *)End-Finder);
- MessageBoxW(NULL,Debug,L"debug",MB_OK);
- if(Finder>=(WCHAR *)End)
- return EACC_FILECOMPATIBILITY;
- if(Size=Finder-*Parser)
- {
- if(NULL==(Dest=*StoreTo=new WCHAR[Size+1]))
- return EACC_ALLOC;
- for(;*Parser<=Finder;(*Parser)++,Dest++)
- *Dest=**Parser;
- }
- else
- {
- *StoreTo=NULL;
- (*Parser)++;
- }
- return 0;
-}
- #endif //if defined(DEBUG...)
-
-DWORD ReadStringFromMemoryW(WCHAR **Parser,TCHAR *End,WCHAR **StoreTo)
-{
- WCHAR *Dest,*Finder;
- DWORD Size;
-
- Finder=*Parser;
- while((*Finder!=(WCHAR)0) && (Finder<=(WCHAR *)End)) Finder++;
- if(Finder>=(WCHAR *)End)
- return EACC_FILECOMPATIBILITY;
- if(Size=Finder-*Parser)
- {
- if(NULL==(Dest=*StoreTo=new WCHAR[Size+1]))
- return EACC_ALLOC;
- for(;*Parser<=Finder;(*Parser)++,Dest++)
- *Dest=**Parser;
- }
- else
- {
- *StoreTo=NULL;
- (*Parser)++;
- }
- return 0;
-}
-#endif //ifdef unicode
-
-static DWORD ReadNotificationFromMemory(TCHAR **Parser,TCHAR *End,YAMN_NOTIFICATION *Which)
-{
- DWORD Stat;
-#ifdef DEBUG_FILEREAD
- TCHAR Debug[65536];
-#endif
-
- Which->Flags=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("NFlags: %04x, remaining %d chars"),Which->Flags,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
-
- Which->PopUpB=*(COLORREF *)(*Parser);
- (*Parser)+=sizeof(COLORREF)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("PopUpB: %04x, remaining %d chars"),Which->PopUpB,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->PopUpT=*(COLORREF *)(*Parser);
- (*Parser)+=sizeof(COLORREF)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("PopUpT: %04x, remaining %d chars"),Which->PopUpT,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->PopUpTime=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("PopUpTime: %04x, remaining %d chars"),Which->PopUpTime,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
-
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemoryW((WCHAR **)Parser,End,&Which->App,L"App"))
-#else
- if(Stat=ReadStringFromMemoryW((WCHAR **)Parser,End,&Which->App))
-#endif
- return Stat;
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemoryW((WCHAR **)Parser,End,&Which->AppParam,L"AppParam"))
-#else
- if(Stat=ReadStringFromMemoryW((WCHAR **)Parser,End,&Which->AppParam))
-#endif
- return Stat;
- return 0;
-}
-
-DWORD ReadMessagesFromMemory(HACCOUNT Which,TCHAR **Parser,TCHAR *End)
-{
- TCHAR *Finder;
- DWORD Size,Stat;
- HYAMNMAIL ActualMail=NULL;
- struct CMimeItem *items;
- char *ReadString;
-
-#ifdef DEBUG_FILEREAD
- MessageBox(NULL,_T("going to read messages, if any..."),_T("debug"),MB_OK);
-#endif
- do
- {
- Finder=*Parser;
- while((*Finder!=(TCHAR)0) && (Finder<=End)) Finder++;
- if(Finder>=End)
- return EACC_FILECOMPATIBILITY;
- if(Size=Finder-*Parser)
- {
- if(Which->Mails==NULL) //First message in queue
- {
- if(NULL==(Which->Mails=ActualMail=CreateAccountMail(Which)))
- return EACC_ALLOC;
- }
- else
- {
- if(NULL==(ActualMail->Next=CreateAccountMail(Which))){
- return EACC_ALLOC;
- }
- ActualMail=ActualMail->Next;
- }
- items=NULL;
-#ifdef DEBUG_FILEREADMESSAGES
- if(Stat=ReadStringFromMemory(Parser,End,&ActualMail->ID,_T("ID")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&ActualMail->ID))
-#endif
- return Stat;
-// ActualMail->MailData=new MAILDATA; !!! mem leake !!! this is alloc by CreateAccountMail, no need for doubble alloc !!!!
-
- ActualMail->MailData->Size=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
- ActualMail->Flags=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
- ActualMail->Number=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-
- if((NULL!=Which->Plugin->MailFcn) && (NULL!=Which->Plugin->MailFcn->ReadMailOptsFcnPtr))
- Which->Plugin->MailFcn->ReadMailOptsFcnPtr(ActualMail,Parser,End); //read plugin mail settings from file
-
- do
- {
-#ifdef DEBUG_FILEREADMESSAGES
- if(Stat=ReadStringFromMemory(Parser,End,&ReadString,_T("Name")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&ReadString))
-#endif
- return Stat;
- if(ReadString==NULL)
- break;
-
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<read name>%s</read name>",ReadString);
-#endif
-
- if(items==NULL)
- items=ActualMail->MailData->TranslatedHeader=new struct CMimeItem;
- else
- {
- items->Next=new struct CMimeItem;
- items=items->Next;
- }
- if(items==NULL)
- return EACC_ALLOC;
- items->name=ReadString;
-
-#ifdef DEBUG_FILEREADMESSAGES
- if(Stat=ReadStringFromMemory(Parser,End,&ReadString,_T("Value")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&ReadString))
-#endif
- return Stat;
- items->value=ReadString;
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<read value>%s</read value>\n",ReadString);
-#endif
- }while(1);
- }
- else
- break; //no next messages, new account!
-
- }while(1);
- (*Parser)++;
- return 0;
-}
-
-DWORD ReadAccountFromMemory(HACCOUNT Which,TCHAR **Parser,TCHAR *End)
-{
- DWORD Stat;
-#ifdef DEBUG_FILEREAD
- TCHAR Debug[65536];
-#endif
-//Read name of account
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Name,_T("Name")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Name))
-#endif
- return Stat;
- if(Which->Name==NULL)
- return EACC_FILECOMPATIBILITY;
-
-//Read server parameters
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Name,_T("Server")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Name))
-#endif
- return Stat;
- Which->Server->Port=*(WORD *)(*Parser);
- (*Parser)+=sizeof(WORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("Port: %d, remaining %d chars"),Which->Server->Port,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Login,_T("Login")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Login))
-#endif
- return Stat;
-#ifdef DEBUG_FILEREAD
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Passwd,_T("Password")))
-#else
- if(Stat=ReadStringFromMemory(Parser,End,&Which->Server->Passwd))
-#endif
- return Stat;
- CodeDecodeString(Which->Server->Passwd,FALSE);
-
-//Read account flags
- Which->Flags=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("Flags: %04x, remaining %d chars"),Which->Flags,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->StatusFlags=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("STFlags: %04x, remaining %d chars"),Which->StatusFlags,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->PluginFlags=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("PFlags: %04x, remaining %d chars"),Which->PluginFlags,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
-
-//Read account miscellaneous parameters
- Which->Interval=*(WORD *)(*Parser);
- Which->TimeLeft=Which->Interval; //check on loading
- (*Parser)+=sizeof(WORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("Interval: %d, remaining %d chars"),Which->Interval,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
-
-//Read notification parameters
- if(Stat=ReadNotificationFromMemory(Parser,End,&Which->NewMailN))
- return Stat;
- if(Stat=ReadNotificationFromMemory(Parser,End,&Which->NoNewMailN))
- return Stat;
- if(Stat=ReadNotificationFromMemory(Parser,End,&Which->BadConnectN))
- return Stat;
-
-//Let plugin read its own data stored in file
- if(Which->Plugin->Fcn!=NULL && Which->Plugin->Fcn->ReadPluginOptsFcnPtr!=NULL)
- if(Stat=Which->Plugin->Fcn->ReadPluginOptsFcnPtr(Which,Parser,End))
- return Stat;
-//Read mails
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ReadAccountFromMemory:ActualAccountMsgsSO-write wait\n");
-#endif
- WaitToWriteFcn(Which->MessagesAccessSO);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ReadAccountFromMemory:ActualAccountMsgsSO-write enter\n");
-#endif
- if(Stat=ReadMessagesFromMemory(Which,Parser,End))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ReadAccountFromMemory:ActualAccountMsgsSO-write done\n");
-#endif
- WriteDoneFcn(Which->MessagesAccessSO);
- return Stat;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ReadAccountFromMemory:ActualAccountMsgsSO-write done\n");
-#endif
- WriteDoneFcn(Which->MessagesAccessSO);
-
-//Read timestamps
- Which->LastChecked=*(SYSTEMTIME *)(*Parser);
- (*Parser)+=sizeof(SYSTEMTIME)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("LastChecked: %04x, remaining %d chars"),Which->LastChecked,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->LastSChecked=*(SYSTEMTIME *)(*Parser);
- (*Parser)+=sizeof(SYSTEMTIME)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("LastSChecked: %04x, remaining %d chars"),Which->LastSChecked,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->LastSynchronised=*(SYSTEMTIME *)(*Parser);
- (*Parser)+=sizeof(SYSTEMTIME)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("LastSynchronised: %04x, remaining %d chars"),Which->LastSynchronised,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- Which->LastMail=*(SYSTEMTIME *)(*Parser);
- (*Parser)+=sizeof(SYSTEMTIME)/sizeof(TCHAR);
- if(*Parser>End) //WARNING! There's only > at the end of testing
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("LastMail: %04x, remaining %d chars"),Which->LastMail,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- if(*Parser==End)
- return EACC_ENDOFFILE;
- return 0;
-
-}
-
-static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin,TCHAR *MemFile,TCHAR *End)
-{
-//Retrieve info for account from memory
- TCHAR *Parser;
- DWORD Ver,Stat;
-
- HACCOUNT ActualAccount,FirstAllocatedAccount;
-
- Ver=*(DWORD *)MemFile;
- if(Ver>YAMN_ACCOUNTFILEVERSION)
- {
- delete[] MemFile;
- return EACC_FILEVERSION;
- }
- Parser=MemFile+sizeof(Ver)/sizeof(TCHAR);
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write wait\n");
-#endif
- SWMRGWaitToWrite(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write enter\n");
-#endif
- if(NULL==(ActualAccount=(HACCOUNT)CallService(MS_YAMN_GETNEXTFREEACCOUNT,(WPARAM)Plugin,(LPARAM)YAMN_ACCOUNTVERSION)))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- delete[] MemFile;
- return EACC_ALLOC;
- }
- FirstAllocatedAccount=ActualAccount;
-
- do
- {
- HACCOUNT Temp;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:ActualAccountSO-write wait\n");
-#endif
- WaitToWriteFcn(ActualAccount->AccountAccessSO);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:ActualAccountSO-write enter\n");
-#endif
- Stat=ReadAccountFromMemory(ActualAccount,&Parser,End);
-
- if(ActualAccount->StatusFlags & (YAMN_ACC_STARTA | YAMN_ACC_STARTS))
- ActualAccount->TimeLeft=1; //check on loading
-
- if(Stat && (Stat!=EACC_ENDOFFILE))
- {
- for(ActualAccount=FirstAllocatedAccount;ActualAccount!=NULL;ActualAccount=Temp)
- {
- Temp=ActualAccount->Next;
- delete ActualAccount;
- }
- delete[] MemFile;
- if(Plugin->FirstAccount==FirstAllocatedAccount)
- Plugin->FirstAccount=NULL;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:ActualAccountSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- return (INT_PTR)Stat;
- }
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:ActualAccountSO-write done\n");
-#endif
- WriteDoneFcn(ActualAccount->AccountAccessSO);
-
- if((Stat!=EACC_ENDOFFILE) && (NULL==(ActualAccount=(HACCOUNT)CallService(MS_YAMN_GETNEXTFREEACCOUNT,(WPARAM)Plugin,(LPARAM)YAMN_ACCOUNTVERSION))))
- {
- for(ActualAccount=FirstAllocatedAccount;ActualAccount!=NULL;ActualAccount=Temp)
- {
- Temp=ActualAccount->Next;
- delete ActualAccount;
- }
- delete[] MemFile;
- if(Plugin->FirstAccount==FirstAllocatedAccount)
- Plugin->FirstAccount=NULL;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- return EACC_ALLOC;
- }
- }while(Stat!=EACC_ENDOFFILE);
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- delete[] MemFile;
-
- return 0;
-}
-
-INT_PTR AddAccountsFromFileASvc(WPARAM wParam,LPARAM lParam)
-//Add accounts from file to memory
-{
- DWORD Stat;
- TCHAR *MemFile,*End;
-
- if(Stat=FileToMemoryA((char *)lParam,&MemFile,&End))
- return (INT_PTR)Stat;
-
- return PerformAccountReading((HYAMNPROTOPLUGIN)wParam,MemFile,End);
-
-}
-
-INT_PTR AddAccountsFromFileWSvc(WPARAM wParam,LPARAM lParam)
-//Add accounts from file to memory
-{
- DWORD Stat;
- TCHAR *MemFile,*End;
-
- if(Stat=FileToMemoryW((WCHAR *)lParam,&MemFile,&End))
- return (INT_PTR)Stat;
-
- return PerformAccountReading((HYAMNPROTOPLUGIN)wParam,MemFile,End);
-
-}
-
-DWORD WriteStringToFile(HANDLE File,TCHAR *Source)
-{
- DWORD Length,WrittenBytes;
- TCHAR null=(TCHAR)0;
-
- if((Source==NULL) || !(Length=(DWORD)_tcslen(Source)))
- {
- if(!WriteFile(File,&null,sizeof(TCHAR),&WrittenBytes,NULL))
- {
- CloseHandle(File);
- return EACC_SYSTEM;
- }
- }
- else if(!WriteFile(File,Source,(Length+1)*sizeof(TCHAR),&WrittenBytes,NULL))
- {
- CloseHandle(File);
- return EACC_SYSTEM;
- }
- return 0;
-}
-
-#ifndef UNICODE
-DWORD WriteStringToFileW(HANDLE File,WCHAR *Source)
-{
- DWORD Length,WrittenBytes;
- WCHAR null=(WCHAR)0;
-
- if((Source==NULL) || !(Length=(DWORD)wcslen(Source)))
- {
- if(!WriteFile(File,&null,sizeof(WCHAR),&WrittenBytes,NULL))
- {
- CloseHandle(File);
- return EACC_SYSTEM;
- }
- }
- else if(!WriteFile(File,Source,(Length+1)*sizeof(WCHAR),&WrittenBytes,NULL))
- return EACC_SYSTEM;
- return 0;
-}
-#endif
-
-DWORD WriteMessagesToFile(HANDLE File,HACCOUNT Which)
-{
- DWORD WrittenBytes,Stat;
- HYAMNMAIL ActualMail=(HYAMNMAIL)Which->Mails;
- struct CMimeItem *items;
-
- while(ActualMail!=NULL)
- {
- if(Stat=WriteStringToFile(File,ActualMail->ID))
- return Stat;
- if(!WriteFile(File,(char *)&ActualMail->MailData->Size,sizeof(ActualMail->MailData->Size),&WrittenBytes,NULL) ||
- !WriteFile(File,(char *)&ActualMail->Flags,sizeof(ActualMail->Flags),&WrittenBytes,NULL) ||
- !WriteFile(File,(char *)&ActualMail->Number,sizeof(ActualMail->Number),&WrittenBytes,NULL))
- return EACC_SYSTEM;
- if((NULL!=Which->Plugin->MailFcn) && (NULL!=Which->Plugin->MailFcn->WriteMailOptsFcnPtr))
- Which->Plugin->MailFcn->WriteMailOptsFcnPtr(File,ActualMail); //write plugin mail options to file
- for(items=ActualMail->MailData->TranslatedHeader;items!=NULL;items=items->Next)
- {
- if(Stat=WriteStringToFile(File,items->name))
- return Stat;
- if(Stat=WriteStringToFile(File,items->value))
- return Stat;
- }
- if(Stat=WriteStringToFile(File,_T("")))
- return Stat;
- ActualMail=ActualMail->Next;
- }
- if(Stat=WriteStringToFile(File,_T("")))
- return Stat;
- return 0;
-}
-
-static INT_PTR PerformAccountWriting(HYAMNPROTOPLUGIN Plugin,HANDLE File)
-{
- DWORD WrittenBytes,Stat;
- HACCOUNT ActualAccount;
- DWORD Ver=YAMN_ACCOUNTFILEVERSION;
- BOOL Writed=FALSE;
- DWORD ReturnValue=0,EnterCode;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:AccountBrowserSO-read wait\n");
-#endif
- SWMRGWaitToRead(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:AccountBrowserSO-read enter\n");
-#endif
- try
- {
- for(ActualAccount=Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=ActualAccount->Next)
- {
-/* TCHAR DEBUG[100];
- Beep(3000,100);Sleep(200);
- _stprintf(DEBUG,_T("Browsing account %s"),ActualAccount->Name==NULL ? _T("(null)") : ActualAccount->Name);
- MessageBox(NULL,DEBUG,_T("debug- WriteAccount..."),MB_OK);
-*/
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read wait\n");
-#endif
- EnterCode=WaitToReadFcn(ActualAccount->AccountAccessSO);
- if(EnterCode==WAIT_FINISH) //account is about to delete
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read wait failed\n");
-#endif
- ActualAccount=ActualAccount->Next;
- continue;
- }
- if(EnterCode==WAIT_FAILED) //account is deleted
- break;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read enter\n");
-#endif
- if((ActualAccount->Name==NULL) || (*ActualAccount->Name==(TCHAR)0))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- continue;
- }
-
- if(!Writed && !WriteFile(File,&Ver,sizeof(Ver),&WrittenBytes,NULL))
- throw (DWORD)EACC_SYSTEM;
- Writed=TRUE;
-
- if(Stat=WriteStringToFile(File,ActualAccount->Name))
- throw (DWORD)Stat;
-
- if(Stat=WriteStringToFile(File,ActualAccount->Server->Name))
- throw (DWORD)Stat;
-
- if(!WriteFile(File,(char *)&ActualAccount->Server->Port,2,&WrittenBytes,NULL))
- throw (DWORD)EACC_SYSTEM;
-
- if((Stat=WriteStringToFile(File,ActualAccount->Server->Login)))
- throw (DWORD)Stat;
-
- CodeDecodeString(ActualAccount->Server->Passwd,TRUE);
-
- if(Stat=WriteStringToFile(File,ActualAccount->Server->Passwd))
- {
- CodeDecodeString(ActualAccount->Server->Passwd,FALSE);
- throw (DWORD)Stat;
- }
- CodeDecodeString(ActualAccount->Server->Passwd,FALSE);
-
- if((!WriteFile(File,(char *)&ActualAccount->Flags,sizeof(DWORD),&WrittenBytes,NULL) ||
- (!WriteFile(File,(char *)&ActualAccount->StatusFlags,sizeof(DWORD),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->PluginFlags,sizeof(DWORD),&WrittenBytes,NULL))))
- throw (DWORD)EACC_SYSTEM;
-
- if(!WriteFile(File,(char *)&ActualAccount->Interval,sizeof(WORD),&WrittenBytes,NULL))
- throw (DWORD)EACC_SYSTEM;
-
- if((!WriteFile(File,(char *)&ActualAccount->NewMailN.Flags,sizeof(DWORD),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NewMailN.PopUpB,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NewMailN.PopUpT,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NewMailN.PopUpTime,sizeof(DWORD),&WrittenBytes,NULL)))
- throw (DWORD)EACC_SYSTEM;
-
- if((Stat=WriteStringToFileW(File,ActualAccount->NewMailN.App)) ||
- (Stat=WriteStringToFileW(File,ActualAccount->NewMailN.AppParam)))
- throw (DWORD)Stat;
-
- if((!WriteFile(File,(char *)&ActualAccount->NoNewMailN.Flags,sizeof(DWORD),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NoNewMailN.PopUpB,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NoNewMailN.PopUpT,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->NoNewMailN.PopUpTime,sizeof(DWORD),&WrittenBytes,NULL)))
- throw (DWORD)EACC_SYSTEM;
-
- if((Stat=WriteStringToFileW(File,ActualAccount->NoNewMailN.App)) ||
- (Stat=WriteStringToFileW(File,ActualAccount->NoNewMailN.AppParam)))
- throw (DWORD)Stat;
-
- if((!WriteFile(File,(char *)&ActualAccount->BadConnectN.Flags,sizeof(DWORD),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->BadConnectN.PopUpB,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->BadConnectN.PopUpT,sizeof(COLORREF),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->BadConnectN.PopUpTime,sizeof(DWORD),&WrittenBytes,NULL)))
- throw (DWORD)EACC_SYSTEM;
-
- if((Stat=WriteStringToFileW(File,ActualAccount->BadConnectN.App)) ||
- (Stat=WriteStringToFileW(File,ActualAccount->BadConnectN.AppParam)))
- throw (DWORD)Stat;
-
-//Let plugin write its own values into file
- if(ActualAccount->Plugin->Fcn!=NULL && ActualAccount->Plugin->Fcn->WritePluginOptsFcnPtr!=NULL)
- if(Stat=ActualAccount->Plugin->Fcn->WritePluginOptsFcnPtr(File,ActualAccount))
- throw (DWORD)Stat;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountMsgsSO-read wait\n");
-#endif
- WaitToReadFcn(ActualAccount->MessagesAccessSO);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountMsgsSO-read enter\n");
-#endif
- if(Stat=WriteMessagesToFile(File,ActualAccount))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountMsgsSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->MessagesAccessSO);
- throw (DWORD)Stat;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountMsgsSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->MessagesAccessSO);
-
- if((!WriteFile(File,(char *)&ActualAccount->LastChecked,sizeof(SYSTEMTIME),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->LastSChecked,sizeof(SYSTEMTIME),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->LastSynchronised,sizeof(SYSTEMTIME),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&ActualAccount->LastMail,sizeof(SYSTEMTIME),&WrittenBytes,NULL)))
- throw (DWORD)Stat;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- }
- catch(DWORD ErrorCode)
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- ReturnValue=ErrorCode;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WriteAccountsToFile:AccountBrowserSO-read done\n");
-#endif
- SWMRGDoneReading(Plugin->AccountBrowserSO);
- CloseHandle(File);
- return 0;
-}
-
-INT_PTR WriteAccountsToFileASvc(WPARAM wParam,LPARAM lParam)
-//Writes accounts to file
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- char *FileName=(char *)lParam;
-
- HANDLE File;
-
- EnterCriticalSection(FileWritingCS);
- if(INVALID_HANDLE_VALUE==(File=CreateFileA(FileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)))
- {
- LeaveCriticalSection(FileWritingCS);
- return EACC_SYSTEM;
- }
- LeaveCriticalSection(FileWritingCS);
-
- return PerformAccountWriting(Plugin,File);
-}
-
-INT_PTR WriteAccountsToFileWSvc(WPARAM wParam,LPARAM lParam)
-//Writes accounts to file
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- WCHAR *FileName=(WCHAR *)lParam;
- INT_PTR rv;
-
- HANDLE File;
-
- EnterCriticalSection(FileWritingCS);
- if(INVALID_HANDLE_VALUE==(File=CreateFileW(FileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)))
- {
- LeaveCriticalSection(FileWritingCS);
- return EACC_SYSTEM;
- }
-
- rv=PerformAccountWriting(Plugin,File);
-
- LeaveCriticalSection(FileWritingCS);
-
- return rv;
-}
-
-INT_PTR FindAccountByNameSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- TCHAR *SearchedAccount=(TCHAR *)lParam;
- HACCOUNT Finder;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FindAccountByName:AccountBrowserSO-read wait\n");
-#endif
- SWMRGWaitToRead(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FindAccountByName:AccountBrowserSO-read enter\n");
-#endif
- for(Finder=Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next)
- if((Finder->Name!=NULL) && (0==_tcscmp(SearchedAccount,Finder->Name)))
- break;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FindAccountByName:AccountBrowserSO-read done\n");
-#endif
- SWMRGDoneReading(Plugin->AccountBrowserSO);
- return (INT_PTR)Finder;
-}
-
-INT_PTR GetNextFreeAccountSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- HACCOUNT Finder;
-
- if(Plugin->FirstAccount==NULL)
- {
- Plugin->FirstAccount=(HACCOUNT)CallService(MS_YAMN_CREATEPLUGINACCOUNT,wParam,lParam);
- return (INT_PTR)Plugin->FirstAccount;
- }
- for(Finder=Plugin->FirstAccount;Finder->Next!=NULL;Finder=Finder->Next);
- Finder->Next=(HACCOUNT)CallService(MS_YAMN_CREATEPLUGINACCOUNT,wParam,lParam);
- return (INT_PTR)Finder->Next;
-}
-
-/*
-int FindPluginAccount(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- HACCOUNT Finder=(HACCOUNT)lParam;
-
- if(Finder=NULL) Finder=Plugin->FirstAccount;
-
-// for(;Finder!=NULL && Finder->PluginID!=Plugin->PluginInfo->PluginID;Finder=(HACCOUNT)Finder->Next);
- return (int)Finder;
-}
-*/
-INT_PTR DeleteAccountSvc(WPARAM wParam,LPARAM lParam)
-{
-//Deleting account works on these steps:
-//1. set signal that account should stop activity (set event)
-// setting this event we achieve, that any access to account is failed,
-// so threads do not start any work with accounts (better saying threads of plugins should not start)
-//2. wait to get write access to chained list of accounts
-//3. we can write to chained list, so we change chain not to show to actual account
-// now, any thread browsing list of accounts does not browse through actual account
-// actual account seems to be hidden (it exists, but it is not in accounts chained list (chained list=queue))
-//Now, we should delete account from memory, BUT!!!
-// Any thread can still be waked up and start asking account synchronizing object
-// If account is deleted, asking about access to read account can throw memory exception (reading for
-// a synchronizing object from memory, that was deleted)
-//So, we cannot now delete account. We have to wait until we are sure no thread will be using account anymore
-// (or to the end of Miranda, but problem is in allocated memory- it is allocated and Miranda is SMALLER, faster, easier, isn't it?)
-// This deleting is achieved in 2 ways:
-// We have event in UsingThreads synchronization objects. This event signals that no thread will use actual account
-// 1. Any thread using account first increment UsingThread, so we know that account is used
-// 2. If thread is about to close, it should decrement UsingThread
-// 3. If thread creates another thread, that will use account, caller has to wait until the new thread does not
-// increment UsingThreads (imagine that caller ends before the new thread set it: if no other thread is using
-// account, account is automaticaly (decreasing UsingThreads) signaled as "not used" and we delete it. But then
-// new thread is going to read account...).
-//4. wait until UsingThread Event is signaled
-//5. delete account from memory
-
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- HACCOUNT Which=(HACCOUNT)lParam;
- HACCOUNT Finder;
- DWORD tid;
-
-//1. set stop signal
- StopSignalFcn(Which);
- WindowList_BroadcastAsync(YAMNVar.MessageWnds,WM_YAMN_STOPACCOUNT,(WPARAM)Which,(LPARAM)0);
- if(Plugin->Fcn->StopAccountFcnPtr!=NULL)
- Plugin->Fcn->StopAccountFcnPtr(Which);
-
-//2. wait to get write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccount:AccountBrowserSO-write wait\n");
-#endif
- SWMRGWaitToWrite(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccount:AccountBrowserSO-write enter\n");
-#endif
-
-//3. remove from queue (chained list)
- if(Plugin->FirstAccount==NULL)
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccount:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- return 0;
- }
- if(Plugin->FirstAccount==Which)
- {
- Finder=Plugin->FirstAccount->Next;
- Plugin->FirstAccount=Finder;
- }
- else
- {
- for(Finder=Plugin->FirstAccount;Which!=Finder->Next;Finder=Finder->Next);
- Finder->Next=Finder->Next->Next;
- }
-//leave write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccount:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
-
-//4. wait while event "UsingThread" is not signaled
-// And what to do, if this event will be signaled in 1 hour? (Although it's paranoia, because we have sent "delete signal", so
-// other threads do not start any new work with actual account) We will wait in blocked state?
-// No, of course not. We will create new thread, that will wait and additionally remove our thread in background.
-//5. So, the last point (deleting from memory) is performed in new DeleteAccountInBackground thread
-
- if((Plugin->Fcn!=NULL) && (Plugin->Fcn->WriteAccountsFcnPtr!=NULL))
- Plugin->Fcn->WriteAccountsFcnPtr();
- CloseHandle(CreateThread(NULL,0,DeleteAccountInBackground,(LPVOID)Which,0,&tid));
-
-//Now, plugin can consider account as deleted, but plugin really can achieve deleting this account from memory when using
-//event UsingThreads.
- return 1;
-}
-
-DWORD WINAPI DeleteAccountInBackground(LPVOID Value)
-{
- HACCOUNT Which=(HACCOUNT)Value;
- WaitForSingleObject(Which->UsingThreads->Event,INFINITE);
- CallService(MS_YAMN_DELETEPLUGINACCOUNT,(WPARAM)Which,(LPARAM)0);
- return 0;
-}
-
-int StopAccounts(HYAMNPROTOPLUGIN Plugin)
-{
- HACCOUNT Finder;
-
-//1. wait to get write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"StopAccounts:AccountBrowserSO-write wait\n");
-#endif
- SWMRGWaitToWrite(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"StopAccounts:AccountBrowserSO-write enter\n");
-#endif
- for(Finder=Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next)
- {
-//2. set stop signal
- StopSignalFcn(Finder);
- WindowList_BroadcastAsync(YAMNVar.MessageWnds,WM_YAMN_STOPACCOUNT,(WPARAM)Finder,(LPARAM)0);
- if(Plugin->Fcn->StopAccountFcnPtr!=NULL)
- Plugin->Fcn->StopAccountFcnPtr(Finder);
- }
-
-//leave write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"StopAccounts:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
-
-//Now, account is stopped. It can be removed from memory...
- return 1;
-}
-
-int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin,BOOL GetAccountBrowserAccess)
-{
- HACCOUNT Finder;
-
- if(GetAccountBrowserAccess)
- {
-//1. wait to get write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WaitForAllAccounts:AccountBrowserSO-write wait\n");
-#endif
- SWMRGWaitToWrite(Plugin->AccountBrowserSO,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WaitForAllAccounts:AccountBrowserSO-write enter\n");
-#endif
- }
- for(Finder=Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next)
- {
-//2. wait for signal that account is not in use
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WaitForAllAccounts:waiting for UsingThreadEV %x (account %x)\n",Finder->UsingThreads,Finder);
-#endif
- WaitForSingleObject(Finder->UsingThreads->Event,INFINITE);
- SetEvent(Finder->UsingThreads->Event);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WaitForAllAccounts:UsingThreadEV signaled\n");
-#endif
- }
- if(GetAccountBrowserAccess)
- {
-//leave write access
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"WaitForAllAccounts:AccountBrowserSO-write done\n");
-#endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
- }
-
- return 1;
-}
-
-int DeleteAccounts(HYAMNPROTOPLUGIN Plugin)
-{
- HACCOUNT Finder;
-
- //1. wait to get write access
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccounts:AccountBrowserSO-write wait\n");
- #endif
- SWMRGWaitToWrite(Plugin->AccountBrowserSO,INFINITE);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccounts:AccountBrowserSO-write enter\n");
- #endif
-
- WaitForAllAccounts(Plugin,FALSE);
-
- for(Finder=Plugin->FirstAccount;Finder!=NULL;)
- {
- HACCOUNT Next = Finder->Next;
- DeletePluginAccountSvc((WPARAM)Finder,(LPARAM)0);
- Finder = Next;
- }
-
- //leave write access
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteAccounts:AccountBrowserSO-write done\n");
- #endif
- SWMRGDoneWriting(Plugin->AccountBrowserSO);
-
- return 1;
-}
-
-void WINAPI GetStatusFcn(HACCOUNT Which,char *Value)
-{
- if(Which==NULL)
- return;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tGetStatus:AccountStatusCS-cs wait\n");
-#endif
- EnterCriticalSection(AccountStatusCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tGetStatus:AccountStatusCS-cs enter\n");
-#endif
- lstrcpy(Value,Which->Status);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tGetStatus:AccountStatusCS-cs done\n");
-#endif
- LeaveCriticalSection(AccountStatusCS);
- return;
-}
-
-void WINAPI SetStatusFcn(HACCOUNT Which,char *Value)
-{
- if(Which==NULL)
- return;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSetStatus:AccountStatusCS-cs wait\n");
-#endif
- EnterCriticalSection(AccountStatusCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSetStatus:AccountStatusCS-cs enter\n");
-#endif
- lstrcpy(Which->Status,Value);
- WindowList_BroadcastAsync(YAMNVar.MessageWnds,WM_YAMN_CHANGESTATUS,(WPARAM)Which,(LPARAM)0);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSetStatus:AccountStatusCS-cs done\n");
-#endif
- LeaveCriticalSection(AccountStatusCS);
-}
-
-/*
-#ifdef DEBUG_ACCOUNTS
-int GetAccounts()
-{
- HACCOUNT Finder;
- int cnt=0;
-
- for(Finder=Account;Finder!=NULL;Finder=Finder->Next)
- cnt++;
- return cnt;
-}
-
-void WriteAccounts()
-{
- HACCOUNT Finder;
-
- for(Finder=Account;Finder!=NULL;Finder=Finder->Next)
- MessageBoxA(NULL,Finder->Name,"Browsing account",MB_OK);
-}
-#endif
-*/
diff --git a/yamn/browser/badconnect.cpp b/yamn/browser/badconnect.cpp
deleted file mode 100644
index 0da087d..0000000
--- a/yamn/browser/badconnect.cpp
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * This code implements window handling (connection error)
- *
- * (c) majvan 2002,2004
- */
-#include <windows.h>
-#include <stdio.h>
-#include <newpluginapi.h>
-#include <m_utils.h>
-#include <m_skin.h>
-#include <m_langpack.h>
-#include <m_database.h>
-#include <m_popup.h>
-#include "../main.h"
-#include "../m_protoplugin.h"
-#include "../m_account.h"
-#include "../debug.h"
-#include "../m_messages.h"
-#include "../mails/m_mails.h"
-#include "../m_yamn.h"
-#include "../resources/resource.h"
-#include "m_browser.h"
-#include <win2k.h>
-
-#define BADCONNECTTITLE "%s - connection error"
-#define BADCONNECTMSG "An error occured. Error code: %d"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern YAMN_VARIABLES YAMNVar;
-
-//From synchro.cpp
-extern DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern DWORD WINAPI WaitToReadFcn(PSWMRG SObject);
-extern void WINAPI ReadDoneFcn(PSWMRG SObject);
-extern DWORD WINAPI SCIncFcn(PSCOUNTER SCounter);
-extern DWORD WINAPI SCDecFcn(PSCOUNTER SCounter);
-
-
-extern HICON hYamnIcons[];
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//Window callback procedure for popup window (created by popup plugin)
-LRESULT CALLBACK BadConnectPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) ;
-
-//Dialog callback procedure for bad connection message
-LRESULT CALLBACK DlgProcYAMNBadConnection(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam);
-
-//BadConnection thread function creates window for BadConnection message
-DWORD WINAPI BadConnection(LPVOID Param);
-
-INT_PTR RunBadConnectionSvc(WPARAM wParam,LPARAM lParam);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-LRESULT CALLBACK BadConnectPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- DWORD PluginParam;
- switch(msg)
- {
- case WM_COMMAND:
- if((HIWORD(wParam)==STN_CLICKED) && (CallService(MS_POPUP_GETPLUGINDATA,(WPARAM)hWnd,(LPARAM)&PluginParam))) //if clicked and it's new mail popup window
- {
- PROCESS_INFORMATION pi;
- STARTUPINFOW si;
- HACCOUNT ActualAccount;
-
- ZeroMemory(&si,sizeof(si));
- si.cb=sizeof(si);
- ActualAccount=(HACCOUNT)CallService(MS_POPUP_GETCONTACT,(WPARAM)hWnd,(LPARAM)0);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter\n");
-#endif
- if(ActualAccount->BadConnectN.App!=NULL)
- {
- WCHAR *Command;
- if(ActualAccount->BadConnectN.AppParam!=NULL)
- Command=new WCHAR[wcslen(ActualAccount->BadConnectN.App)+wcslen(ActualAccount->BadConnectN.AppParam)+6];
- else
- Command=new WCHAR[wcslen(ActualAccount->BadConnectN.App)+6];
-
- if(Command!=NULL)
- {
- lstrcpyW(Command,L"\"");
- lstrcatW(Command,ActualAccount->BadConnectN.App);
- lstrcatW(Command,L"\" ");
- if(ActualAccount->BadConnectN.AppParam!=NULL)
- lstrcatW(Command,ActualAccount->BadConnectN.AppParam);
- CreateProcessW(NULL,Command,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
- delete[] Command;
- }
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
-#ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter failed\n");
-#endif
- SendMessage(hWnd,UM_DESTROYPOPUP,0,0);
- }
- break;
- case UM_FREEPLUGINDATA:
- //Here we'd free our own data, if we had it.
- return FALSE;
- case UM_INITPOPUP:
- //This is the equivalent to WM_INITDIALOG you'd get if you were the maker of dialog popups.
- break;
- case WM_CONTEXTMENU:
- SendMessage(hWnd,UM_DESTROYPOPUP,0,0);
- break;
- case WM_NOTIFY:
-/* switch(((LPNMHDR)lParam)->code)
- {
- case NM_CLICK:
- {
- }
- }
- break;
-*/ default:
- break;
- }
- return DefWindowProc(hWnd,msg,wParam,lParam);
-}
-
-LRESULT CALLBACK DlgProcYAMNBadConnection(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- BOOL ShowPopUp,ShowMsg,ShowIco;
- HACCOUNT ActualAccount;
- DWORD ErrorCode;
- char *TitleStrA;
- char *Message1A=NULL;
- WCHAR *Message1W=NULL;
- POPUPDATAEX BadConnectPopUp;
-
- ActualAccount=((struct BadConnectionParam *)lParam)->account;
- ErrorCode=((struct BadConnectionParam *)lParam)->errcode;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read wait failed\n");
-#endif
- return FALSE;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read enter\n");
-#endif
- TitleStrA=new char[strlen(ActualAccount->Name)+strlen(Translate(BADCONNECTTITLE))];
- sprintf(TitleStrA,Translate(BADCONNECTTITLE),ActualAccount->Name);
-
- ShowPopUp=ActualAccount->BadConnectN.Flags & YAMN_ACC_POP;
- ShowMsg=ActualAccount->BadConnectN.Flags & YAMN_ACC_MSG;
- ShowIco=ActualAccount->BadConnectN.Flags & YAMN_ACC_ICO;
-
- if(ShowPopUp)
- {
- BadConnectPopUp.lchContact=ActualAccount;
- BadConnectPopUp.lchIcon=hYamnIcons[3];
- BadConnectPopUp.colorBack=ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC ? ActualAccount->BadConnectN.PopUpB : GetSysColor(COLOR_BTNFACE);
- BadConnectPopUp.colorText=ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC ? ActualAccount->BadConnectN.PopUpT : GetSysColor(COLOR_WINDOWTEXT);
- BadConnectPopUp.iSeconds=ActualAccount->BadConnectN.PopUpTime;
-
- BadConnectPopUp.PluginWindowProc=(WNDPROC)BadConnectPopUpProc;
- BadConnectPopUp.PluginData=0; //it's bad connect popup
- lstrcpyn(BadConnectPopUp.lpzContactName,ActualAccount->Name,sizeof(BadConnectPopUp.lpzContactName));
- }
-
- if(ActualAccount->Plugin->Fcn!=NULL && ActualAccount->Plugin->Fcn->GetErrorStringWFcnPtr!=NULL)
- {
- Message1W=ActualAccount->Plugin->Fcn->GetErrorStringWFcnPtr(ErrorCode);
- SendMessageW(GetDlgItem(hDlg,IDC_STATICMSG),WM_SETTEXT,(WPARAM)0,(LPARAM)Message1W);
- WideCharToMultiByte(CP_ACP,0,Message1W,-1,(char *)BadConnectPopUp.lpzText,sizeof(BadConnectPopUp.lpzText),NULL,NULL);
- if(ShowPopUp)
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&BadConnectPopUp,0);
- }
- else if(ActualAccount->Plugin->Fcn!=NULL && ActualAccount->Plugin->Fcn->GetErrorStringAFcnPtr!=NULL)
- {
- Message1A=ActualAccount->Plugin->Fcn->GetErrorStringAFcnPtr(ErrorCode);
- SendMessageA(GetDlgItem(hDlg,IDC_STATICMSG),WM_SETTEXT,(WPARAM)0,(LPARAM)Message1A);
- lstrcpyn(BadConnectPopUp.lpzText,Message1A,sizeof(BadConnectPopUp.lpzText));
- if(ShowPopUp)
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&BadConnectPopUp,0);
- }
- else
- {
- Message1A=Translate("Unknown error");
- SendMessageA(GetDlgItem(hDlg,IDC_STATICMSG),WM_SETTEXT,(WPARAM)0,(LPARAM)Message1A);
- lstrcpyn(BadConnectPopUp.lpzText,Message1A,sizeof(BadConnectPopUp.lpzText));
- if(ShowPopUp)
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&BadConnectPopUp,0);
- }
-
- if(!ShowMsg && !ShowIco)
- DestroyWindow(hDlg);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- SendMessage(hDlg,WM_SETTEXT,(WPARAM)0,(LPARAM)TitleStrA);
- delete[] TitleStrA;
- if(Message1A!=NULL)
- delete[] Message1A;
- if(ActualAccount->Plugin->Fcn!=NULL && ActualAccount->Plugin->Fcn->DeleteErrorStringFcnPtr!=NULL && Message1A!=NULL)
- ActualAccount->Plugin->Fcn->DeleteErrorStringFcnPtr(Message1A);
- if(ActualAccount->Plugin->Fcn!=NULL && ActualAccount->Plugin->Fcn->DeleteErrorStringFcnPtr!=NULL && Message1W!=NULL)
- ActualAccount->Plugin->Fcn->DeleteErrorStringFcnPtr(Message1W);
- return 0;
- }
- case WM_DESTROY:
- {
- NOTIFYICONDATA nid;
-
- ZeroMemory(&nid,sizeof(NOTIFYICONDATA));
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.hWnd=hDlg;
- nid.uID=0;
- Shell_NotifyIcon(NIM_DELETE,&nid);
- PostQuitMessage(0);
- break;
- }
- case WM_YAMN_NOTIFYICON:
- switch (lParam)
- {
- case WM_LBUTTONDBLCLK:
- ShowWindow(hDlg,SW_SHOWNORMAL);
- SetForegroundWindow(hDlg);
- break;
- }
- return 0;
- case WM_CHAR:
- switch((TCHAR)wParam)
- {
- case 27:
- case 13:
- DestroyWindow(hDlg);
- break;
- }
- break;
- case WM_SYSCOMMAND:
- switch(wParam)
- {
- case SC_CLOSE:
- DestroyWindow(hDlg);
- break;
- }
- case WM_COMMAND:
- {
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- case IDC_BTNOK:
- DestroyWindow(hDlg);
- break;
- }
- break;
- }
- }
- return 0;
-}
-
-DWORD WINAPI BadConnection(LPVOID Param)
-{
- MSG msg;
- HWND hBadConnect;
- HACCOUNT ActualAccount;
- struct BadConnectionParam MyParam;
- NOTIFYICONDATA nid;
- TCHAR *NotIconText=Translate(" - connection error");
- TCHAR *src,*dest;
- int i;
-
- MyParam=*(struct BadConnectionParam *)Param;
- ActualAccount=MyParam.account;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:Incrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCIncFcn(ActualAccount->UsingThreads);
-
-// we will not use params in stack anymore
- SetEvent(MyParam.ThreadRunningEV);
-
- __try
- {
- hBadConnect=CreateDialogParam(YAMNVar.hInst,MAKEINTRESOURCE(IDD_DLGBADCONNECT),NULL,(DLGPROC)DlgProcYAMNBadConnection,(LPARAM)&MyParam);
- SendMessage(hBadConnect,WM_SETICON,ICON_BIG,(LPARAM)hYamnIcons[3]);
- SendMessage(hBadConnect,WM_SETICON,ICON_SMALL,(LPARAM)hYamnIcons[3]);
-
- ZeroMemory(&nid,sizeof(nid));
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.hWnd=hBadConnect;
- nid.hIcon=hYamnIcons[3];
- nid.uID=0;
- nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
- nid.uCallbackMessage=WM_YAMN_NOTIFYICON;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read wait failed\n");
-#endif
- return 0;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read enter\n");
-#endif
- for(src=ActualAccount->Name,dest=nid.szTip,i=0;(*src!=(TCHAR)0) && (i+1<sizeof(nid.szTip));*dest++=*src++);
- for(src=NotIconText;(*src!=(TCHAR)0) && (i+1<sizeof(nid.szTip));*dest++=*src++);
- *dest=(TCHAR)0;
-
- if(ActualAccount->BadConnectN.Flags & YAMN_ACC_SND)
- CallService(MS_SKIN_PLAYSOUND,0,(LPARAM)YAMN_CONNECTFAILSOUND);
- if(ActualAccount->BadConnectN.Flags & YAMN_ACC_MSG)
- ShowWindow(hBadConnect,SW_SHOWNORMAL);
- if(ActualAccount->BadConnectN.Flags & YAMN_ACC_ICO)
- Shell_NotifyIcon(NIM_ADD,&nid);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- UpdateWindow(hBadConnect);
- while(GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
-// now, write to file. Why? Because we want to write when was new mail last checked
- if((ActualAccount->Plugin->Fcn!=NULL) && (ActualAccount->Plugin->Fcn->WriteAccountsFcnPtr!=NULL) && ActualAccount->AbleToWork)
- ActualAccount->Plugin->Fcn->WriteAccountsFcnPtr();
- }
- __finally
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"BadConnect:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCDecFcn(ActualAccount->UsingThreads);
- }
- return 0;
-}
-
-
-INT_PTR RunBadConnectionSvc(WPARAM wParam,LPARAM lParam)
-{
- DWORD tid;
-//an event for successfull copy parameters to which point a pointer in stack for new thread
- HANDLE ThreadRunningEV;
- PYAMN_BADCONNECTIONPARAM Param=(PYAMN_BADCONNECTIONPARAM)wParam;
-
- if((DWORD)lParam!=YAMN_BADCONNECTIONVERSION)
- return 0;
-
- if(NULL!=(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- {
- HANDLE NewThread;
-
- Param->ThreadRunningEV=ThreadRunningEV;
- if(NULL!=(NewThread=CreateThread(NULL,0,BadConnection,Param,0,&tid)))
- {
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- CloseHandle(ThreadRunningEV);
-
- return 1;
- }
- return 0;
-}
diff --git a/yamn/browser/m_browser.h b/yamn/browser/m_browser.h
deleted file mode 100644
index d4c5191..0000000
--- a/yamn/browser/m_browser.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef __MAILBROWSER_H
-#define __MAILBROWSER_H
-
-#include "../m_account.h"
-#include "../debug.h"
-
-typedef struct MailBrowserWinParam
-{
-#define YAMN_MAILBROWSERVERSION 1
- HANDLE ThreadRunningEV;
- HACCOUNT account;
- DWORD nflags; //flags YAMN_ACC_??? when new mails
- DWORD nnflags; //flags YAMN_ACC_??? when no new mails
- void *Param;
-} YAMN_MAILBROWSERPARAM,*PYAMN_MAILBROWSERPARAM;
-
-typedef struct MailShowMsgWinParam
-{
- HANDLE ThreadRunningEV;
- HACCOUNT account;
- HYAMNMAIL mail;
-} YAMN_MAILSHOWPARAM, *PYAMN_MAILSHOWPARAM;
-
-typedef struct NoNewMailParam
-{
-#define YAMN_NONEWMAILVERSION 1
- HANDLE ThreadRunningEV;
- HACCOUNT account;
- DWORD flags;
- void *Param;
-} YAMN_NONEWMAILPARAM,*PYAMN_NONEWMAILPARAM;
-
-typedef struct BadConnectionParam
-{
-#define YAMN_BADCONNECTIONVERSION 1
- HANDLE ThreadRunningEV;
- HACCOUNT account;
- UINT_PTR errcode;
- void *Param;
-} YAMN_BADCONNECTIONPARAM,*PYAMN_BADCONNECTIONPARAM;
-
-#endif
diff --git a/yamn/browser/mailbrowser.cpp b/yamn/browser/mailbrowser.cpp
deleted file mode 100644
index aaa1fbb..0000000
--- a/yamn/browser/mailbrowser.cpp
+++ /dev/null
@@ -1,2692 +0,0 @@
-/*
- * This code implements window handling (new mail)
- *
- * (c) majvan 2002-2004
- */
-/* There can be problems when compiling this file, because in this file
- * we are using both unicode and no-unicode functions and compiler does not
- * like it in one file
- * When you got errors, try to comment the #define <stdio.h> and compile, then
- * put it back to uncommented and compile again :)
- */
-#ifndef _WIN32_IE
- #define _WIN32_IE 0x0400
-#endif
-#ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x0501
-#endif
-
-
-#include <windows.h>
-#include <stdio.h>
-#include <stddef.h>
-#undef UNICODE
-#include <newpluginapi.h>
-#include <m_utils.h>
-#include <m_skin.h>
-#include <m_langpack.h>
-#include <m_database.h>
-#include <m_clist.h>
-#include <m_popup.h>
-#include "../include/m_kbdnotify.h"
-#include "../main.h"
-#include "../m_protoplugin.h"
-#include "../m_account.h"
-#include "../debug.h"
-#include "../m_messages.h"
-#include "../mails/m_mails.h"
-#include "../m_yamn.h"
-#include "../resources/resource.h"
-#include <win2k.h>
-
-#undef UNICODE
-#include "m_browser.h"
-
-#ifndef UNICODE
- #define UNICODE
- #define _UNICODE
- #include <commctrl.h> //we need to have unicode commctrl.h
- #include <stdio.h>
- #undef _UNICODE
- #undef UNICODE
-#else
- #include <commctrl.h>
- #undef _UNICODE
- #undef UNICODE
-#endif
-
-
-#ifndef SIZEOF
- #ifdef UNICODE
- #define SIZEOF(x) (sizeof(x)/sizeof(WCHAR))
- #else
- #define SIZEOF(x) sizeof(x)
- #endif
-#endif
-
-#define TIMER_FLASHING 0x09061979
-#define MAILBROWSER_MINXSIZE 200 //min size of mail browser window
-#define MAILBROWSER_MINYSIZE 130
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-extern char *ProtoName;
-extern HYAMNPROTOPLUGIN POP3Plugin;
-
-extern HANDLE hNewMailHook;
-extern HANDLE WriteToFileEV;
-extern YAMN_VARIABLES YAMNVar;
-extern HICON hYamnIcons[];
-//From synchro.cpp
-extern DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern DWORD WINAPI WaitToReadFcn(PSWMRG SObject);
-extern void WINAPI ReadDoneFcn(PSWMRG SObject);
-extern DWORD WINAPI SCIncFcn(PSCOUNTER SCounter);
-extern DWORD WINAPI SCDecFcn(PSCOUNTER SCounter);
-//From mails.cpp
-extern void WINAPI DeleteMessageFromQueueFcn(HYAMNMAIL *From,HYAMNMAIL Which,int mode);
-extern void WINAPI SetRemoveFlagsInQueueFcn(HYAMNMAIL From,DWORD FlagsSet,DWORD FlagsNotSet,DWORD FlagsToSet,int mode);
-//From mime.cpp
-void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head);
-void ExtractShortHeader(struct CMimeItem *items,struct CShortHeader *head);
-void DeleteHeaderContent(struct CHeader *head);
-void DeleteShortHeaderContent(struct CShortHeader *head);
-char *ExtractFromContentType(char *ContentType,char *value);
-WCHAR *ParseMultipartBody(char *src, char *bond);
-//From account.cpp
-void WINAPI GetStatusFcn(HACCOUNT Which,char *Value);
-//from decode.cpp
-int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ);
-int DecodeBase64(char *Src,char *Dst,int DstLen);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-char* s_MonthNames[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-bool bDate = false,bSub=false,bSize=false,bFrom=false;
-int PosX=0,PosY=0,SizeX=460,SizeY=100;
-int HeadSizeX = 0x2b2, HeadSizeY = 0x0b5, HeadPosX = 100, HeadPosY = 100;
-int HeadSplitPos=250; // per-mils of the size
-static int FromWidth=250,SubjectWidth=280,SizeWidth=50,SizeDate=205;
-unsigned char optDateTime = (SHOWDATELONG | SHOWDATENOTODAY);
-
-static WNDPROC OldListViewSubclassProc;
-
-struct CMailNumbersSub
-{
- int Total; //any mail
- int New; //uses YAMN_MSG_NEW flag
- int UnSeen; //uses YAMN_MSG_UNSEEN flag
-// int Browser; //uses YAMN_MSG_BROWSER flag
- int BrowserUC; //uses YAMN_MSG_BROWSER flag and YAMN_MSG_UNSEEN flag
- int Display; //uses YAMN_MSG_DISPLAY flag
- int DisplayTC; //uses YAMN_MSG_DISPLAY flag and YAMN_MSG_DISPLAYC flag
- int DisplayUC; //uses YAMN_MSG_DISPLAY flag and YAMN_MSG_DISPLAYC flag and YAMN_MSG_UNSEEN flag
- int PopUp; //uses YAMN_MSG_POPUP flag
- int PopUpTC; //uses YAMN_MSG_POPUPC flag
- int PopUpNC; //uses YAMN_MSG_POPUPC flag and YAMN_MSG_NEW flag
- int PopUpRun; //uses YAMN_MSG_POPUP flag and YAMN_MSG_NEW flag
- int PopUpSL2NC; //uses YAMN_MSG_SPAML2 flag and YAMN_MSG_NEW flag
- int PopUpSL3NC; //uses YAMN_MSG_SPAML3 flag and YAMN_MSG_NEW flag
-// int SysTray; //uses YAMN_MSG_SYSTRAY flag
- int SysTrayUC; //uses YAMN_MSG_SYSTRAY flag and YAMN_MSG_UNSEEN flag
-// int Sound; //uses YAMN_MSG_SOUND flag
- int SoundNC; //uses YAMN_MSG_SOUND flag and YAMN_MSG_NEW flag
-// int App; //uses YAMN_MSG_APP flag
- int AppNC; //uses YAMN_MSG_APP flag and YAMN_MSG_NEW flag
- int EventNC; //uses YAMN_MSG_NEVENT flag and YAMN_MSG_NEW flag
-};
-
-struct CMailNumbers
-{
- struct CMailNumbersSub Real;
- struct CMailNumbersSub Virtual;
-};
-
-struct CMailWinUserInfo
-{
- HACCOUNT Account;
- int TrayIconState;
- BOOL UpdateMailsMessagesAccess;
- BOOL Seen;
- BOOL RunFirstTime;
-};
-
-struct CChangeContent
-{
- DWORD nflags;
- DWORD nnflags;
-};
-
-struct CUpdateMails
-{
- struct CChangeContent *Flags;
- BOOL Waiting;
- HANDLE Copied;
-};
-struct CSortList
-{
- HWND hDlg;
- int iSubItem;
-};
-
-//Retrieves HACCOUNT, whose mails are displayed in ListMails
-// hLM- handle of dialog window
-// returns handle of account
-inline HACCOUNT GetWindowAccount(HWND hDialog);
-
-//Looks to mail flags and increment mail counter (e.g. if mail is new, increments the new mail counter
-// msgq- mail, which increments the counters
-// MN- counnters structure
-void IncrementMailCounters(HYAMNMAIL msgq,struct CMailNumbers *MN);
-
-enum
-{
- UPDATE_FAIL=0, //function failed
- UPDATE_NONE, //none update has been performed
- UPDATE_OK, //some changes occured, update performed
-};
-//Just looks for mail changes in account and update the mail browser window
-// hDlg- dialog handle
-// ActualAccount- account handle
-// nflags- flags what to do when new mail arrives
-// nnflags- flags what to do when no new mail arrives
-// returns one of UPDATE_XXX value(not implemented yet)
-int UpdateMails(HWND hDlg,HACCOUNT ActualAccount,DWORD nflags,DWORD nnflags);
-
-//When new mail occurs, shows window, plays sound, runs application...
-// hDlg- dialog handle. Dialog of mailbrowser is already created and actions are performed over this window
-// ActualAccount- handle of account, whose mails are to be notified
-// MN- statistics of mails in account
-// nflags- what to do or not to do (e.g. to show mailbrowser window or prohibit to show)
-// nflags- flags what to do when new mail arrives
-// nnflags- flags what to do when no new mail arrives
-void DoMailActions(HWND hDlg,HACCOUNT ActualAccount,struct CMailNumbers *MN,DWORD nflags,DWORD nnflags);
-
-//Looks for items in mailbrowser and if they were deleted, delete them from browser window
-// hListView- handle of listview window
-// ActualAccount- handle of account, whose mails are show
-// MailNumbers- pointer to structure, in which function stores numbers of mails with some property
-// returns one of UPDATE_XXX value (not implemented yet)
-int ChangeExistingMailStatus(HWND hListView,HACCOUNT ActualAccount,struct CMailNumbers *MN);
-
-//Adds new mails to ListView and if any new, shows multi popup (every new message is new popup window created by popup plugin)
-// hListView- handle of listview window
-// ActualAccount- handle of account, whose mails are show
-// NewMailPopUp- pointer to prepared structure for popup plugin, can be NULL if no popup show
-// MailNumbers- pointer to structure, in which function stores numbers of mails with some property
-// nflags- flags what to do when new mail arrives
-// returns one of UPDATE_XXX value (not implemented yet)
-int AddNewMailsToListView(HWND hListView,HACCOUNT ActualAccount,struct CMailNumbers *MailNumbers,DWORD nflags);
-
-//Window callback procedure for popup window (created by popup plugin)
-LRESULT CALLBACK NewMailPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
-
-//Window callback procedure for popup window (created by popup plugin)
-LRESULT CALLBACK NoNewMailPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
-
-//Dialog callback procedure for mail browser
-BOOL CALLBACK DlgProcYAMNMailBrowser(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam);
-
-//MailBrowser thread function creates window if needed, tray icon and plays sound
-DWORD WINAPI MailBrowser(LPVOID Param);
-
-LRESULT CALLBACK ListViewSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
-//Runs mail browser in new thread
-INT_PTR RunMailBrowserSvc(WPARAM,LPARAM);
-
-#define YAMN_BROWSER_SHOWPOPUP 0x01
-
- // list view items' order criteria
- #define LVORDER_NOORDER -1
- #define LVORDER_STRING 0
- #define LVORDER_NUMERIC 1
- #define LVORDER_DATETIME 2
-
- // list view order direction
- #define LVORDER_ASCENDING 1
- #define LVORDER_NONE 0
- #define LVORDER_DESCENDING -1
-
- // list view sort type
- #define LVSORTPRIORITY_NONE -1
-
- // List view column info.
- typedef struct _SAMPLELISTVIEWCOLUMN
- {
- UINT uCXCol; // index
- int nSortType; // sorting type (STRING = 0, NUMERIC, DATE, DATETIME)
- int nSortOrder; // sorting order (ASCENDING = -1, NONE, DESCENDING)
- int nPriority; // sort priority (-1 for none, 0, 1, ..., nColumns - 1 maximum)
- TCHAR lpszName[128]; // column name
- } SAMPLELISTVIEWCOLUMN;
-
- // Compare priority
- typedef struct _LVCOMPAREINFO
- {
- int iIdx; // Index
- int iPriority; // Priority
- } LVCOMPAREINFO, *LPLVCOMPAREINFO;
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-LPARAM readItemLParam(HWND hwnd,DWORD iItem)
-{
- LVITEM item;
-
- item.mask = LVIF_PARAM;
- item.iItem = iItem;
- item.iSubItem = 0;
- SendMessage(hwnd,LVM_GETITEM,0,(LPARAM)&item);
- return item.lParam;
-}
-
-inline HACCOUNT GetWindowAccount(HWND hDlg)
-{
- struct CMailWinUserInfo *mwui;
-
- if(NULL==(mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER)))
- return NULL;
- return mwui->Account;
-}
-
-void IncrementMailCounters(HYAMNMAIL msgq,struct CMailNumbers *MN)
-{
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.Total++;
- else
- MN->Real.Total++;
-
- if(msgq->Flags & YAMN_MSG_NEW)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.New++;
- else
- MN->Real.New++;
- if(msgq->Flags & YAMN_MSG_UNSEEN)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.UnSeen++;
- else
- MN->Real.UnSeen++;
- if((msgq->Flags & (YAMN_MSG_UNSEEN | YAMN_MSG_BROWSER)) == (YAMN_MSG_UNSEEN | YAMN_MSG_BROWSER))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.BrowserUC++;
- else
- MN->Real.BrowserUC++;
- if(msgq->Flags & YAMN_MSG_DISPLAY)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.Display++;
- else
- MN->Real.Display++;
- if((msgq->Flags & (YAMN_MSG_DISPLAYC | YAMN_MSG_DISPLAY)) == (YAMN_MSG_DISPLAYC | YAMN_MSG_DISPLAY))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.DisplayTC++;
- else
- MN->Real.DisplayTC++;
- if((msgq->Flags & (YAMN_MSG_UNSEEN | YAMN_MSG_DISPLAYC | YAMN_MSG_DISPLAY)) == (YAMN_MSG_UNSEEN | YAMN_MSG_DISPLAYC | YAMN_MSG_DISPLAY))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.DisplayUC++;
- else
- MN->Real.DisplayUC++;
- if(msgq->Flags & YAMN_MSG_POPUP)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUp++;
- else
- MN->Real.PopUp++;
- if((msgq->Flags & YAMN_MSG_POPUPC) == YAMN_MSG_POPUPC)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUpTC++;
- else
- MN->Real.PopUpTC++;
- if((msgq->Flags & (YAMN_MSG_NEW | YAMN_MSG_POPUPC)) == (YAMN_MSG_NEW | YAMN_MSG_POPUPC))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUpNC++;
- else
- MN->Real.PopUpNC++;
- if((msgq->Flags & (YAMN_MSG_NEW | YAMN_MSG_POPUP)) == (YAMN_MSG_NEW | YAMN_MSG_POPUP))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUpRun++;
- else
- MN->Real.PopUpRun++;
- if((msgq->Flags & YAMN_MSG_NEW) && YAMN_MSG_SPAML(msgq->Flags,YAMN_MSG_SPAML2))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUpSL2NC++;
- else
- MN->Real.PopUpSL2NC++;
- if((msgq->Flags & YAMN_MSG_NEW) && YAMN_MSG_SPAML(msgq->Flags,YAMN_MSG_SPAML3))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.PopUpSL3NC++;
- else
- MN->Real.PopUpSL3NC++;
-/* if(msgq->MailData->Flags & YAMN_MSG_SYSTRAY)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.SysTray++;
- else
- MN->Real.SysTray++;
-*/ if((msgq->Flags & (YAMN_MSG_UNSEEN | YAMN_MSG_SYSTRAY)) == (YAMN_MSG_UNSEEN|YAMN_MSG_SYSTRAY))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.SysTrayUC++;
- else
- MN->Real.SysTrayUC++;
-/* if(msgq->MailData->Flags & YAMN_MSG_SOUND)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.Sound++;
- else
- MN->Real.Sound++;
-*/ if((msgq->Flags & (YAMN_MSG_NEW|YAMN_MSG_SOUND)) == (YAMN_MSG_NEW|YAMN_MSG_SOUND))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.SoundNC++;
- else
- MN->Real.SoundNC++;
-/* if(msgq->MailData->Flags & YAMN_MSG_APP)
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.App++;
- else
- MN->Real.App++;
-*/ if((msgq->Flags & (YAMN_MSG_NEW|YAMN_MSG_APP)) == (YAMN_MSG_NEW|YAMN_MSG_APP))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.AppNC++;
- else
- MN->Real.AppNC++;
- if((msgq->Flags & (YAMN_MSG_NEW|YAMN_MSG_NEVENT)) == (YAMN_MSG_NEW|YAMN_MSG_NEVENT))
- if(msgq->Flags & YAMN_MSG_VIRTUAL)
- MN->Virtual.EventNC++;
- else
- MN->Real.EventNC++;
-}
-
-int UpdateMails(HWND hDlg,HACCOUNT ActualAccount,DWORD nflags,DWORD nnflags)
-{
-#define MAILBROWSERTITLE "%s - %d new mail messages, %d total"
-
- struct CMailWinUserInfo *mwui;
- struct CMailNumbers MN;
-
- HYAMNMAIL msgq;
- BOOL Loaded;
- BOOL RunMailBrowser,RunPopUps;
-
- mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER);
- //now we ensure read access for account and write access for its mails
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountSO-read wait failed\n");
- #endif
- PostMessage(hDlg,WM_DESTROY,(WPARAM)0,(LPARAM)0);
-
- return UPDATE_FAIL;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountSO-read enter\n");
- #endif
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToWriteFcn(ActualAccount->MessagesAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountMsgsSO-write wait failed\n");
- DebugLog(SynchroFile,"UpdateMails:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- PostMessage(hDlg,WM_DESTROY,(WPARAM)0,(LPARAM)0);
- return UPDATE_FAIL;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountMsgsSO-write enter\n");
- #endif
-
- ZeroMemory(&MN,sizeof(MN));
-
- for(msgq=(HYAMNMAIL)ActualAccount->Mails;msgq!=NULL;msgq=msgq->Next)
- {
- if(!LoadedMailData(msgq)) //check if mail is already in memory
- {
- Loaded=false;
- if(NULL==LoadMailData(msgq)) //if we could not load mail to memory, consider this mail deleted and do not display it
- continue;
- }
- else
- Loaded=true;
-
- IncrementMailCounters(msgq,&MN);
-
- if(!Loaded)
- UnloadMailData(msgq); //do not keep data for mail in memory
- }
-
- if(mwui!=NULL)
- mwui->UpdateMailsMessagesAccess=TRUE;
-
- //Now we are going to check if extracting data from mail headers are needed.
- //If popups will be displayed or mailbrowser window
- if ((((mwui!=NULL) && !(mwui->RunFirstTime)) &&
- (
- ((nnflags & YAMN_ACC_MSGP) && !(MN.Real.BrowserUC+MN.Virtual.BrowserUC)) ||
- ((nflags & YAMN_ACC_MSGP) && (MN.Real.BrowserUC+MN.Virtual.BrowserUC))
- )
- ) || //if mail window was displayed before and flag YAMN_ACC_MSGP is set
- ((nnflags & YAMN_ACC_MSG) && !(MN.Real.BrowserUC+MN.Virtual.BrowserUC)) || //if needed to run mailbrowser when no unseen and no unseen mail found
- ((nflags & YAMN_ACC_MSG) && (MN.Real.BrowserUC+MN.Virtual.BrowserUC)) || //if unseen mails found, we sure run mailbrowser
- ((nflags & YAMN_ACC_ICO) && (MN.Real.SysTrayUC+MN.Virtual.SysTrayUC))
- ) //if needed to run systray
- RunMailBrowser=TRUE;
- else RunMailBrowser=FALSE;
-
- if( (nflags & YAMN_ACC_POP) &&
- (ActualAccount->Flags & YAMN_ACC_POPN) &&
- (MN.Real.PopUpNC+MN.Virtual.PopUpNC) ) //if some popups with mails are needed to show
- RunPopUps=TRUE;
- else RunPopUps=FALSE;
-
- if(RunMailBrowser)
- ChangeExistingMailStatus(GetDlgItem(hDlg,IDC_LISTMAILS),ActualAccount,&MN);
- if(RunMailBrowser || RunPopUps)
- AddNewMailsToListView(hDlg==NULL ? NULL : GetDlgItem(hDlg,IDC_LISTMAILS),ActualAccount,&MN,nflags);
-
- if(RunMailBrowser)
- {
- WCHAR *TitleStrW;
- char *TitleStrA;
- size_t len = strlen(ActualAccount->Name)+strlen(Translate(MAILBROWSERTITLE))+10; //+10 chars for numbers
- TitleStrA=new char[len];
- TitleStrW=new WCHAR[len];
-
- sprintf(TitleStrA,Translate(MAILBROWSERTITLE),ActualAccount->Name,MN.Real.DisplayUC+MN.Virtual.DisplayUC,MN.Real.Display+MN.Virtual.Display);
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,TitleStrA,-1,TitleStrW,(int)strlen(TitleStrA)+1);
- SendMessageW(hDlg,WM_SETTEXT,(WPARAM)0,(LPARAM)TitleStrW);
- delete[] TitleStrA;
- delete[] TitleStrW;
- }
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:Do mail actions\n");
- #endif
-
- DoMailActions(hDlg,ActualAccount,&MN,nflags,nnflags);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:Do mail actions done\n");
- #endif
-
- SetRemoveFlagsInQueueFcn((HYAMNMAIL)ActualAccount->Mails,YAMN_MSG_NEW,0,YAMN_MSG_NEW,YAMN_FLAG_REMOVE); //rempve the new flag
- if(!RunMailBrowser)
- SetRemoveFlagsInQueueFcn((HYAMNMAIL)ActualAccount->Mails,YAMN_MSG_UNSEEN,YAMN_MSG_STAYUNSEEN,YAMN_MSG_UNSEEN,YAMN_FLAG_REMOVE); //remove the unseen flag when it was not displayed and it has not "stay unseen" flag set
-
- if(mwui!=NULL)
- {
- mwui->UpdateMailsMessagesAccess=FALSE;
- mwui->RunFirstTime=FALSE;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UpdateMails:ActualAccountMsgsSO-write done\n");
- DebugLog(SynchroFile,"UpdateMails:ActualAccountSO-read done\n");
- #endif
- WriteDoneFcn(ActualAccount->MessagesAccessSO);
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- if(RunMailBrowser)
- UpdateWindow(GetDlgItem(hDlg,IDC_LISTMAILS));
- else if(hDlg!=NULL)
- DestroyWindow(hDlg);
-
- return 1;
-}
-
-int ChangeExistingMailStatus(HWND hListView,HACCOUNT ActualAccount,struct CMailNumbers *MN)
-{
- int i,in;
- LVITEMW item;
- HYAMNMAIL mail,msgq;
-
- in=ListView_GetItemCount(hListView);
- item.mask=LVIF_PARAM;
-
- for(i=0;i<in;i++)
- {
- item.iItem=i;
- item.iSubItem=0;
- if(TRUE==ListView_GetItem(hListView,&item))
- mail=(HYAMNMAIL)item.lParam;
- else
- continue;
- for(msgq=(HYAMNMAIL)ActualAccount->Mails;(msgq!=NULL)&&(msgq!=mail);msgq=msgq->Next); //found the same mail in account queue
- if(msgq==NULL) //if mail was not found
- if(TRUE==ListView_DeleteItem(hListView,i))
- {
- in--;i--;
- continue;
- }
- }
-
- return TRUE;
-}
-
-void MimeDateToLocalizedDateTime(char *datein, WCHAR *dateout, int lendateout);
-int AddNewMailsToListView(HWND hListView,HACCOUNT ActualAccount,struct CMailNumbers *MN,DWORD nflags)
-{
- HYAMNMAIL msgq;
- POPUPDATAEX NewMailPopUp = {0};
-
- WCHAR *FromStr;
- WCHAR SizeStr[20];
- WCHAR LocalDateStr[128];
-
- LVITEMW item;
- LVFINDINFO fi;
-
- int foundi,lfoundi;
- struct CHeader UnicodeHeader;
- BOOL Loaded,Extracted,FromStrNew=FALSE;
-
- ZeroMemory(&item,sizeof(item));
- ZeroMemory(&UnicodeHeader,sizeof(UnicodeHeader));
-
- if(hListView!=NULL)
- {
- item.mask=LVIF_TEXT | LVIF_PARAM;
- item.iItem=0;
- ZeroMemory(&fi,sizeof(fi));
- fi.flags=LVFI_PARAM; //let's go search item by lParam number
- lfoundi=0;
- }
-
- NewMailPopUp.lchContact=(ActualAccount->hContact != NULL) ? ActualAccount->hContact : ActualAccount;
- NewMailPopUp.lchIcon=hYamnIcons[2];
- NewMailPopUp.colorBack=nflags & YAMN_ACC_POPC ? ActualAccount->NewMailN.PopUpB : GetSysColor(COLOR_BTNFACE);
- NewMailPopUp.colorText=nflags & YAMN_ACC_POPC ? ActualAccount->NewMailN.PopUpT : GetSysColor(COLOR_WINDOWTEXT);
- NewMailPopUp.iSeconds=ActualAccount->NewMailN.PopUpTime;
-
- NewMailPopUp.PluginWindowProc=(WNDPROC)NewMailPopUpProc;
- NewMailPopUp.PluginData=(void *)0; //it's new mail popup
-
- for(msgq=(HYAMNMAIL)ActualAccount->Mails;msgq!=NULL;msgq=msgq->Next,lfoundi++)
- {
-// now we hide mail pointer to item's lParam member. We can later use it to retrieve mail datas
-
- Extracted=FALSE;FromStr=NULL;FromStrNew=FALSE;
-
- if(hListView!=NULL)
- {
- fi.lParam=(LPARAM)msgq;
- if(-1!=(foundi=ListView_FindItem(hListView,-1,&fi))) //if mail is already in window
- {
- lfoundi=foundi;
- continue; //do not insert any item
- }
-
- item.iItem=lfoundi; //insert after last found item
- item.lParam=(LPARAM)msgq;
- }
-
- if(!LoadedMailData(msgq)) //check if mail is already in memory
- {
- Loaded=false;
- if(NULL==LoadMailData(msgq)) //if we could not load mail to memory, consider this mail deleted and do not display it
- continue;
- }
- else
- Loaded=true;
-
- if(((hListView!=NULL) && (msgq->Flags & YAMN_MSG_DISPLAY)) ||
- ((nflags & YAMN_ACC_POP) && (ActualAccount->Flags & YAMN_ACC_POPN) && (msgq->Flags & YAMN_MSG_POPUP) && (msgq->Flags & YAMN_MSG_NEW)))
- {
-
- if(!Extracted) ExtractHeader(msgq->MailData->TranslatedHeader,msgq->MailData->CP,&UnicodeHeader);
- Extracted=TRUE;
-
- if((UnicodeHeader.From!=NULL) && (UnicodeHeader.FromNick!=NULL))
- {
- FromStr=new WCHAR[wcslen(UnicodeHeader.From)+wcslen(UnicodeHeader.FromNick)+4];
- swprintf(FromStr,L"%s <%s>",UnicodeHeader.FromNick,UnicodeHeader.From);
- FromStrNew=TRUE;
- }
- else if(UnicodeHeader.From!=NULL)
- FromStr=UnicodeHeader.From;
- else if(UnicodeHeader.FromNick!=NULL)
- FromStr=UnicodeHeader.FromNick;
- else if(UnicodeHeader.ReturnPath!=NULL)
- FromStr=UnicodeHeader.ReturnPath;
-
- if(NULL==FromStr)
- {
- FromStr=L"";
- FromStrNew=FALSE;
- }
- }
-
-
- if((hListView!=NULL) && (msgq->Flags & YAMN_MSG_DISPLAY))
- {
- item.iSubItem=0;
- item.pszText=FromStr;
- item.iItem=SendMessageW(hListView,LVM_INSERTITEMW,(WPARAM)0,(LPARAM)&item);
-
- item.iSubItem=1;
- item.pszText=(NULL!=UnicodeHeader.Subject ? UnicodeHeader.Subject : (WCHAR*)L"");
- SendMessageW(hListView,LVM_SETITEMTEXTW,(WPARAM)item.iItem,(LPARAM)&item);
-
- item.iSubItem=2;
- swprintf(SizeStr,L"%d kB",msgq->MailData->Size/1024);
- item.pszText=SizeStr;
- SendMessageW(hListView,LVM_SETITEMTEXTW,(WPARAM)item.iItem,(LPARAM)&item);
-
- item.iSubItem=3;
- item.pszText=L"";
- { CMimeItem *heads;
- for(heads=msgq->MailData->TranslatedHeader;heads!=NULL;heads=heads->Next) {
- if (!_stricmp(heads->name,"Date")){
- MimeDateToLocalizedDateTime(heads->value,LocalDateStr,128);
- item.pszText=LocalDateStr;
- break;
- } } }
- SendMessageW(hListView,LVM_SETITEMTEXTW,(WPARAM)item.iItem,(LPARAM)&item);
- }
-
- if((nflags & YAMN_ACC_POP) && (ActualAccount->Flags & YAMN_ACC_POPN) && (msgq->Flags & YAMN_MSG_POPUP) && (msgq->Flags & YAMN_MSG_NEW))
- {
- WideCharToMultiByte(CP_ACP,0,FromStr,-1,(char *)NewMailPopUp.lpzContactName,sizeof(NewMailPopUp.lpzContactName),NULL,NULL);
- if(!WideCharToMultiByte(CP_ACP,0,UnicodeHeader.Subject,-1,(char *)NewMailPopUp.lpzText,sizeof(NewMailPopUp.lpzText),NULL,NULL))
- NewMailPopUp.lpzText[0]=0;
- PYAMN_MAILSHOWPARAM MailParam = (PYAMN_MAILSHOWPARAM)malloc(sizeof(YAMN_MAILSHOWPARAM));
- if(MailParam) {
- MailParam->account = ActualAccount;
- MailParam->mail = msgq;
- MailParam->ThreadRunningEV = 0;
- NewMailPopUp.PluginData=MailParam;
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&NewMailPopUp,0);
- }
- }
-
- if((msgq->Flags & YAMN_MSG_UNSEEN) && (ActualAccount->NewMailN.Flags & YAMN_ACC_KBN))
- CallService(MS_KBDNOTIFY_EVENTSOPENED,(WPARAM)1,NULL);
-
- if(FromStrNew)
- delete[] FromStr;
-
- if(Extracted)
- {
- DeleteHeaderContent(&UnicodeHeader);
- ZeroMemory(&UnicodeHeader,sizeof(UnicodeHeader));
- }
-
- if(!Loaded)
- {
- SaveMailData(msgq);
- UnloadMailData(msgq); //do not keep data for mail in memory
- }
- }
-
- return TRUE;
-}
-
-void DoMailActions(HWND hDlg,HACCOUNT ActualAccount,struct CMailNumbers *MN,DWORD nflags,DWORD nnflags)
-{
- TCHAR *NotIconText=Translate("- new mail message(s)");
- NOTIFYICONDATA nid;
-
- ZeroMemory(&nid,sizeof(nid));
-
- if(MN->Real.EventNC+MN->Virtual.EventNC)
- NotifyEventHooks(hNewMailHook,0,0);
-
- if((nflags & YAMN_ACC_KBN) && (MN->Real.PopUpRun+MN->Virtual.PopUpRun))
- {
- CallService(MS_KBDNOTIFY_STARTBLINK,(WPARAM)MN->Real.PopUpNC+MN->Virtual.PopUpNC,NULL);
- }
-
- if((nflags & YAMN_ACC_CONT) && (MN->Real.PopUpRun+MN->Virtual.PopUpRun))
- {
- char sMsg[250];
- _snprintf(sMsg,249,Translate("%s : %d new mail message(s), %d total"),ActualAccount->Name,MN->Real.PopUpNC+MN->Virtual.PopUpNC,MN->Real.PopUpTC+MN->Virtual.PopUpTC);
- if (!(nflags & YAMN_ACC_CONTNOEVENT)){
- CLISTEVENT cEvent;
- cEvent.cbSize = sizeof(CLISTEVENT);
- cEvent.hContact = ActualAccount->hContact;
- cEvent.hIcon = hYamnIcons[2];
- cEvent.hDbEvent = (HANDLE)ActualAccount->hContact;
- cEvent.lParam = (LPARAM) ActualAccount->hContact;
- cEvent.pszService = MS_YAMN_CLISTDBLCLICK;
- cEvent.pszTooltip = sMsg;
- cEvent.flags = 0;
- CallServiceSync(MS_CLIST_ADDEVENT, 0,(LPARAM)&cEvent);
- }
- DBWriteContactSettingString(ActualAccount->hContact, "CList", "StatusMsg", sMsg);
-
- if(nflags & YAMN_ACC_CONTNICK)
- {
- DBWriteContactSettingString(ActualAccount->hContact, ProtoName, "Nick",sMsg);
- }
- }
-
- if((nflags & YAMN_ACC_POP) &&
- !(ActualAccount->Flags & YAMN_ACC_POPN) &&
- (MN->Real.PopUpRun+MN->Virtual.PopUpRun))
- {
- POPUPDATAEX NewMailPopUp ={0};
-
- NewMailPopUp.lchContact=(ActualAccount->hContact != NULL) ? ActualAccount->hContact : ActualAccount;
- NewMailPopUp.lchIcon=hYamnIcons[2];
- NewMailPopUp.colorBack=nflags & YAMN_ACC_POPC ? ActualAccount->NewMailN.PopUpB : GetSysColor(COLOR_BTNFACE);
- NewMailPopUp.colorText=nflags & YAMN_ACC_POPC ? ActualAccount->NewMailN.PopUpT : GetSysColor(COLOR_WINDOWTEXT);
- NewMailPopUp.iSeconds=ActualAccount->NewMailN.PopUpTime;
-
- NewMailPopUp.PluginWindowProc=(WNDPROC)NewMailPopUpProc;
- NewMailPopUp.PluginData=(void *)0; //multiple popups
-
- lstrcpyn(NewMailPopUp.lpzContactName,ActualAccount->Name,sizeof(NewMailPopUp.lpzContactName));
- sprintf(NewMailPopUp.lpzText,Translate("%d new mail message(s), %d total"),MN->Real.PopUpNC+MN->Virtual.PopUpNC,MN->Real.PopUpTC+MN->Virtual.PopUpTC);
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&NewMailPopUp,0);
- }
-
- //destroy tray icon if no new mail
- if((MN->Real.SysTrayUC+MN->Virtual.SysTrayUC==0) && (hDlg!=NULL))
- {
- nid.hWnd=hDlg;
- nid.uID=0;
- Shell_NotifyIcon(NIM_DELETE,&nid);
- }
-
- //and remove the event
- if((nflags & YAMN_ACC_CONT) && (!(nflags & YAMN_ACC_CONTNOEVENT)) && (MN->Real.UnSeen + MN->Virtual.UnSeen==0)) {
- CallService(MS_CLIST_REMOVEEVENT,(WPARAM)ActualAccount->hContact,(LPARAM)ActualAccount->hContact);
- }
-
- if((MN->Real.BrowserUC+MN->Virtual.BrowserUC==0) && (hDlg!=NULL))
- {
- if(!IsWindowVisible(hDlg) && !(nflags & YAMN_ACC_MSG))
- PostMessage(hDlg,WM_DESTROY,(WPARAM)0,(LPARAM)0); //destroy window if no new mail and window is not visible
- if(nnflags & YAMN_ACC_MSG) //if no new mail and msg should be executed
- {
- SetForegroundWindow(hDlg);
- ShowWindow(hDlg,SW_SHOWNORMAL);
- }
- }
- else
- if(hDlg!=NULL) //else insert icon and set window if new mails
- {
- SendMessageW(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_SCROLL,(WPARAM)0,(LPARAM)0x7ffffff);
-
- if((nflags & YAMN_ACC_ICO) && (MN->Real.SysTrayUC+MN->Virtual.SysTrayUC))
- {
- TCHAR *src,*dest;
- int i;
-
- for(src=ActualAccount->Name,dest=nid.szTip,i=0;(*src!=(TCHAR)0) && (i+1<sizeof(nid.szTip));*dest++=*src++);
- for(src=NotIconText;(*src!=(TCHAR)0) && (i+1<sizeof(nid.szTip));*dest++=*src++);
- *dest=(TCHAR)0;
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.hWnd=hDlg;
- nid.hIcon=hYamnIcons[2];
- nid.uID=0;
- nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
- nid.uCallbackMessage=WM_YAMN_NOTIFYICON;
- Shell_NotifyIcon(NIM_ADD,&nid);
- SetTimer(hDlg,TIMER_FLASHING,500,NULL);
- }
- if(nflags & YAMN_ACC_MSG) //if no new mail and msg should be executed
- ShowWindow(hDlg,SW_SHOWNORMAL);
- }
-
- if(MN->Real.AppNC+MN->Virtual.AppNC!=0)
- {
- if(nflags & YAMN_ACC_APP)
- {
- PROCESS_INFORMATION pi;
- STARTUPINFOW si;
- ZeroMemory(&si,sizeof(si));
- si.cb=sizeof(si);
-
- if(ActualAccount->NewMailN.App!=NULL)
- {
- WCHAR *Command;
- if(ActualAccount->NewMailN.AppParam!=NULL)
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+wcslen(ActualAccount->NewMailN.AppParam)+6];
- else
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+6];
-
- if(Command!=NULL)
- {
- lstrcpyW(Command,L"\"");
- lstrcatW(Command,ActualAccount->NewMailN.App);
- lstrcatW(Command,L"\" ");
- if(ActualAccount->NewMailN.AppParam!=NULL)
- lstrcatW(Command,ActualAccount->NewMailN.AppParam);
- CreateProcessW(NULL,Command,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
- delete[] Command;
- }
- }
- }
- }
-
- if(MN->Real.SoundNC+MN->Virtual.SoundNC!=0)
- if(nflags & YAMN_ACC_SND)
- CallService(MS_SKIN_PLAYSOUND,0,(LPARAM)YAMN_NEWMAILSOUND);
-
- if((nnflags & YAMN_ACC_POP) && (MN->Real.PopUpRun+MN->Virtual.PopUpRun==0))
- {
- POPUPDATAEX NoNewMailPopUp;
-
- NoNewMailPopUp.lchContact=(ActualAccount->hContact != NULL) ? ActualAccount->hContact : ActualAccount;
- NoNewMailPopUp.lchIcon=hYamnIcons[1];
- NoNewMailPopUp.colorBack=ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC ? ActualAccount->NoNewMailN.PopUpB : GetSysColor(COLOR_BTNFACE);
- NoNewMailPopUp.colorText=ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC ? ActualAccount->NoNewMailN.PopUpT : GetSysColor(COLOR_WINDOWTEXT);
- NoNewMailPopUp.iSeconds=ActualAccount->NoNewMailN.PopUpTime;
-
- NoNewMailPopUp.PluginWindowProc=(WNDPROC)NoNewMailPopUpProc;
- NoNewMailPopUp.PluginData=(void *)0; //it's not new mail popup
-
- lstrcpyn(NoNewMailPopUp.lpzContactName,ActualAccount->Name,sizeof(NoNewMailPopUp.lpzContactName));
- if(MN->Real.PopUpSL2NC+MN->Virtual.PopUpSL2NC)
- sprintf(NoNewMailPopUp.lpzText,Translate("No new mail message, %d spam(s)"),MN->Real.PopUpSL2NC+MN->Virtual.PopUpSL2NC);
- else
- lstrcpyn(NoNewMailPopUp.lpzText,Translate("No new mail message"),sizeof(NoNewMailPopUp.lpzText));
- CallService(MS_POPUP_ADDPOPUPEX,(WPARAM)&NoNewMailPopUp,0);
- }
-
- if((nflags & YAMN_ACC_CONT) && (MN->Real.PopUpRun+MN->Virtual.PopUpRun==0))
- {
- if(ActualAccount->hContact != NULL)
- {
- if(MN->Real.PopUpTC+MN->Virtual.PopUpTC)
- {
- char tmp[255];
- sprintf(tmp,Translate("%d new mail message(s), %d total"),MN->Real.PopUpNC+MN->Virtual.PopUpNC,MN->Real.PopUpTC+MN->Virtual.PopUpTC);
- DBWriteContactSettingString(ActualAccount->hContact, "CList", "StatusMsg", tmp);
- }
- else
- DBWriteContactSettingString(ActualAccount->hContact, "CList", "StatusMsg", Translate("No new mail message"));
-
- if(nflags & YAMN_ACC_CONTNICK)
- {
- DBWriteContactSettingString(ActualAccount->hContact, ProtoName, "Nick", ActualAccount->Name);
- }
- }
- }
- return;
-}
-
-DWORD WINAPI ShowEmailThread(LPVOID Param);
-LRESULT CALLBACK NewMailPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- INT_PTR PluginParam=0;
- switch(msg)
- {
- case WM_COMMAND:
- //if clicked and it's new mail popup window
- if((HIWORD(wParam)==STN_CLICKED) && (-1!=(PluginParam=CallService(MS_POPUP_GETPLUGINDATA,(WPARAM)hWnd,(LPARAM)&PluginParam))))
- {
- HANDLE hContact = 0;
- HACCOUNT Account;
- if (PluginParam){
- PYAMN_MAILSHOWPARAM MailParam = new YAMN_MAILSHOWPARAM;
- memcpy(MailParam,(PINT_PTR)PluginParam,sizeof(YAMN_MAILSHOWPARAM));
- hContact = MailParam->account->hContact;
- Account = MailParam->account;
- if(NULL!=(MailParam->ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL))){
- HANDLE NewThread;
- if(NULL!=(NewThread=CreateThread(NULL,0,ShowEmailThread,(LPVOID)MailParam,0,NULL)))
- {
- CloseHandle(NewThread);
- }
- CloseHandle(MailParam->ThreadRunningEV);
- }
- //delete MailParam;
- } else {
- DBVARIANT dbv;
-
- hContact=(HANDLE)CallService(MS_POPUP_GETCONTACT,(WPARAM)hWnd,(LPARAM)0);
-
- if(!DBGetContactSetting((HANDLE) hContact,ProtoName,"Id",&dbv))
- {
- Account=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- DBFreeVariant(&dbv);
- }
- else
- Account = (HACCOUNT) hContact; //????
-
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToReadFcn(Account->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter\n");
- #endif
- switch(msg)
- {
- case WM_COMMAND:
- {
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,Account,
- (Account->NewMailN.Flags & ~YAMN_ACC_POP) | YAMN_ACC_MSGP | YAMN_ACC_MSG,
- (Account->NoNewMailN.Flags & ~YAMN_ACC_POP) | YAMN_ACC_MSGP | YAMN_ACC_MSG};
-
- RunMailBrowserSvc((WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
- }
- break;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(Account->AccountAccessSO);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter failed\n");
- #endif
- }
- if ((Account->NewMailN.Flags & YAMN_ACC_CONT) && !(Account->NewMailN.Flags & YAMN_ACC_CONTNOEVENT)){
- CallService(MS_CLIST_REMOVEEVENT,(WPARAM)hContact,(LPARAM)hContact);
- }
- }
- // fall through
- case WM_CONTEXTMENU:
- SendMessageW(hWnd,UM_DESTROYPOPUP,0,0);
- break;
- case UM_FREEPLUGINDATA:{
- PYAMN_MAILSHOWPARAM mpd = (PYAMN_MAILSHOWPARAM)PUGetPluginData(hWnd);
- HANDLE hContact = 0;
- if ((mpd) && (INT_PTR)mpd!=-1)free(mpd);
- return FALSE;
- }
- case UM_INITPOPUP:
- //This is the equivalent to WM_INITDIALOG you'd get if you were the maker of dialog popups.
- WindowList_Add(YAMNVar.MessageWnds,hWnd,NULL);
- break;
- case UM_DESTROYPOPUP:
- WindowList_Remove(YAMNVar.MessageWnds,hWnd);
- break;
- case WM_YAMN_STOPACCOUNT:
- {
- HACCOUNT ActualAccount;
- HANDLE hContact;
- DBVARIANT dbv;
-
- hContact=(HANDLE)CallService(MS_POPUP_GETCONTACT,(WPARAM)hWnd,(LPARAM)0);
-
- if(!DBGetContactSetting((HANDLE) hContact,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- DBFreeVariant(&dbv);
- }
- else
- ActualAccount = (HACCOUNT) hContact;
-
- if((HACCOUNT)wParam!=ActualAccount)
- break;
- DestroyWindow(hWnd);
- return 0;
- }
- case WM_NOTIFY:
- default:
- break;
- }
- return DefWindowProc(hWnd,msg,wParam,lParam);
-}
-
-LRESULT CALLBACK NoNewMailPopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_COMMAND:
- if((HIWORD(wParam)==STN_CLICKED) && (msg==WM_COMMAND))
- {
- HACCOUNT ActualAccount;
- HANDLE hContact;
- DBVARIANT dbv;
-
- hContact=(HANDLE)CallService(MS_POPUP_GETCONTACT,(WPARAM)hWnd,(LPARAM)0);
-
- if(!DBGetContactSetting((HANDLE) hContact,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- DBFreeVariant(&dbv);
- }
- else
- ActualAccount = (HACCOUNT) hContact;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter\n");
- #endif
- switch(msg)
- {
- case WM_COMMAND:
- {
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,ActualAccount->NewMailN.Flags,ActualAccount->NoNewMailN.Flags,0};
-
- Param.nnflags=Param.nnflags | YAMN_ACC_MSG; //show mails in account even no new mail in account
- Param.nnflags=Param.nnflags & ~YAMN_ACC_POP;
-
- Param.nflags=Param.nflags | YAMN_ACC_MSG; //show mails in account even no new mail in account
- Param.nflags=Param.nflags & ~YAMN_ACC_POP;
-
- RunMailBrowserSvc((WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
- }
- break;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"PopUpProc:LEFTCLICK:ActualAccountSO-read enter failed\n");
- #endif
- SendMessageW(hWnd,UM_DESTROYPOPUP,0,0);
- }
- break;
-
- case WM_CONTEXTMENU:
- SendMessageW(hWnd,UM_DESTROYPOPUP,0,0);
- break;
-
- case UM_FREEPLUGINDATA:
- //Here we'd free our own data, if we had it.
- return FALSE;
- case UM_INITPOPUP:
- //This is the equivalent to WM_INITDIALOG you'd get if you were the maker of dialog popups.
- WindowList_Add(YAMNVar.MessageWnds,hWnd,NULL);
- break;
- case UM_DESTROYPOPUP:
- WindowList_Remove(YAMNVar.MessageWnds,hWnd);
- break;
- case WM_YAMN_STOPACCOUNT:
- {
- HACCOUNT ActualAccount;
- HANDLE hContact;
- DBVARIANT dbv;
-
- hContact=(HANDLE)CallService(MS_POPUP_GETCONTACT,(WPARAM)hWnd,(LPARAM)0);
-
- if(!DBGetContactSetting((HANDLE) hContact,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- DBFreeVariant(&dbv);
- }
- else
- ActualAccount = (HACCOUNT) hContact;
-
- if((HACCOUNT)wParam!=ActualAccount)
- break;
-
- DestroyWindow(hWnd);
- return 0;
- }
- case WM_NOTIFY:
-/* switch(((LPNMHDR)lParam)->code)
- {
- case NM_CLICK:
- {
- }
- }
- break;
-*/ default:
- break;
- }
- return DefWindowProc(hWnd,msg,wParam,lParam);
-}
-
-#ifdef __GNUC__
-//number of 100 ns periods between FILETIME 0 (1601/01/01 00:00:00.0000000) and TIMESTAMP 0 (1970/01/01 00:00:00)
-#define NUM100NANOSEC 116444736000000000ULL
-//The biggest time Get[Date|Time]Format can handle (Fri, 31 Dec 30827 23:59:59.9999999)
-#define MAXFILETIME 0x7FFF35F4F06C7FFFULL
-#else
-#define NUM100NANOSEC 116444736000000000
-#define MAXFILETIME 0x7FFF35F4F06C7FFF
-#endif
-ULONGLONG MimeDateToFileTime(char *datein){
- char *day=0, *month=0, *year=0, *time=0, *shift=0;
- SYSTEMTIME st;
- ULONGLONG res=0;
- int wShiftSeconds = CallService(MS_DB_TIME_TIMESTAMPTOLOCAL,0,0);
- GetLocalTime(&st);
- //datein = "Xxx, 1 Jan 2060 5:29:1 +0530 XXX";
- //datein = "Xxx, 1 Jan 2060 05:29:10 ";
- //datein = " ManySpaces 1.5 Jan 2060 05::";
- //datein = "Xxx, 35 February 20 :29:10 ";
- //datein = "01.12.2007 (22:38:17)"; //
- if (datein){
- char tmp [64];
- while ( datein[0]==' ') datein++; // eat leading spaces
- strncpy(tmp,datein,63); tmp [63]=0;
- if (atoi(tmp)) { // Parseable integer on DayOfWeek field? Buggy mime date.
- day = tmp;
- } else {
- int i = 0;
- while (tmp[i]==' ')i++; if (day = strchr(&tmp[i],' ')){day[0]=0; day++;}
- }
- if (day) {while ( day[0]==' ') day++;if (month= strchr(day, ' ')){month[0]=0; month++;}}
- if (month) {while (month[0]==' ')month++;if (year = strchr(month,' ')){ year[0]=0; year++;}}
- if (year) {while ( year[0]==' ') year++;if (time = strchr(year, ' ')){ time[0]=0; time++;}}
- if (time) {while ( time[0]==' ') time++;if (shift= strchr(time, ' ')){shift[0]=0; shift++;shift[5]=0;}}
-
- if (year){
- st.wYear = atoi(year);
- if (strlen(year)<4) if (st.wYear<70)st.wYear += 2000; else st.wYear += 1900;
- };
- if (month) for(int i=0;i<12;i++) if(strncmp(month,s_MonthNames[i],3)==0) {st.wMonth = i + 1; break;}
- if (day) st.wDay = atoi(day);
- if (time) {
- char *h, *m, *s;
- h = time;
- if (m = strchr(h,':')){
- m[0]=0; m++;
- if (s = strchr(m,':')){s[0] = 0; s++;}
- } else s=0;
- st.wHour = atoi(h);
- st.wMinute = m?atoi(m):0;
- st.wSecond = s?atoi(s):0;
- } else {st.wHour=st.wMinute=st.wSecond=0;}
-
- if (shift){
- if (strlen(shift)<4) {
- //has only hour
- wShiftSeconds = (atoi(shift))*3600;
- } else {
- char *smin = shift + strlen(shift)-2;
- int ismin = atoi(smin);
- smin[0] = 0;
- int ishour = atoi(shift);
- wShiftSeconds = (ishour*60+(ishour<0?-1:1)*ismin)*60;
- }
- }
- } // if (datein)
- FILETIME ft;
- if (SystemTimeToFileTime(&st,&ft)){
- res = ((ULONGLONG)ft.dwHighDateTime<<32)|((ULONGLONG)ft.dwLowDateTime);
- LONGLONG w100nano = Int32x32To64((DWORD)wShiftSeconds,10000000);
- res -= w100nano;
- }else{
- res=0;
- }
- return res;
-}
-void FileTimeToLocalizedDateTime(LONGLONG filetime, WCHAR *dateout, int lendateout){
- int localeID = CallService(MS_LANGPACK_GETLOCALE,0,0);
- //int localeID = MAKELCID(LANG_URDU, SORT_DEFAULT);
- if (localeID==CALLSERVICE_NOTFOUND) localeID=LOCALE_USER_DEFAULT;
- if (filetime>MAXFILETIME) filetime = MAXFILETIME;
- else if (filetime<=0) {
- wcsncpy(dateout,TranslateW(L"Invalid"),lendateout);
- return;
- }
- SYSTEMTIME st;
- WORD wTodayYear, wTodayMonth, wTodayDay;
- FILETIME ft;
- BOOL willShowDate = !(optDateTime&SHOWDATENOTODAY);
- if (!willShowDate){
- GetLocalTime(&st);
- wTodayYear = st.wYear;
- wTodayMonth = st.wMonth;
- wTodayDay = st.wDay;
- }
- ft.dwLowDateTime = (DWORD)filetime;
- ft.dwHighDateTime = (DWORD)(filetime >> 32);
- FILETIME localft;
- if (!FileTimeToLocalFileTime(&ft,&localft)){
- // this should never happen
- wcsncpy(dateout,L"Incorrect FileTime",lendateout);
- } else {
- if (!FileTimeToSystemTime(&localft,&st)){
- // this should never happen
- wcsncpy(dateout,L"Incorrect LocalFileTime",lendateout);
- } else {
- dateout[lendateout-1]=0;
- int templen = 0;
- if (!willShowDate) willShowDate = (wTodayYear!=st.wYear)||(wTodayMonth!=st.wMonth)||(wTodayDay!=st.wDay);
- if (willShowDate){
- templen = GetDateFormatW(localeID,(optDateTime&SHOWDATELONG)?DATE_LONGDATE:DATE_SHORTDATE,&st,NULL,dateout,lendateout-2);
- dateout[templen-1] = ' ';
- }
- if (templen<(lendateout-1)){
- GetTimeFormatW(localeID,(optDateTime&SHOWDATENOSECONDS)?TIME_NOSECONDS:0,&st,NULL,&dateout[templen],lendateout-templen-1);
- }
- }
- }
-}
-void MimeDateToLocalizedDateTime(char *datein, WCHAR *dateout, int lendateout){
- ULONGLONG ft = MimeDateToFileTime(datein);
- FileTimeToLocalizedDateTime(ft,dateout,lendateout);
-}
-
-int CALLBACK ListViewCompareProc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort ) {
- if(lParam1 == NULL || lParam2 == NULL)
- return 0;
-
- int nResult = 0;
- char *str1;
- char *str2;
- HYAMNMAIL email1 = (HYAMNMAIL)lParam1;
- HYAMNMAIL email2 = (HYAMNMAIL)lParam2;
- struct CShortHeader Header1;
- struct CShortHeader Header2;
- ZeroMemory(&Header1,sizeof(Header1));
- ZeroMemory(&Header2,sizeof(Header2));
-
- try {
- ExtractShortHeader(email1->MailData->TranslatedHeader,&Header1);
- ExtractShortHeader(email2->MailData->TranslatedHeader,&Header2);
-
- switch((int)lParamSort)
- {
- case 0: //From
- if(Header1.FromNick == NULL)
- str1 = Header1.From;
- else str1 = Header1.FromNick;
-
- if(Header2.FromNick == NULL)
- str2 = Header2.From;
- else str2 = Header2.FromNick;
-
- nResult = strcmp(str1, str2);
-
- if(bFrom) nResult = -nResult;
- break;
- case 1: //Subject
- if(Header1.Subject == NULL)
- str1 = " ";
- else str1 = Header1.Subject;
-
- if(Header2.Subject == NULL)
- str2 = " ";
- else str2 = Header2.Subject;
-
- nResult = strcmp(str1, str2);
-
- if(bSub) nResult = -nResult;
- break;
- case 2: //Size
- if(email1->MailData->Size == email2->MailData->Size) nResult = 0;
- if(email1->MailData->Size > email2->MailData->Size) nResult = 1;
- if(email1->MailData->Size < email2->MailData->Size) nResult = -1;
-
- if(bSize) nResult = -nResult;
- break;
-
- case 3: //Date
- {
- ULONGLONG ts1 = 0, ts2 = 0;
- ts1 = MimeDateToFileTime(Header1.Date);
- ts2 = MimeDateToFileTime(Header2.Date);
- if(ts1 > ts2) nResult = 1;
- else if (ts1 < ts2) nResult = -1;
- else nResult = 0;
- }
- if(bDate) nResult = -nResult;
- break;
-
- default:
- if(Header1.Subject == NULL) str1 = " ";
- else str1 = Header1.Subject;
-
- if(Header2.Subject == NULL) str2 = " ";
- else str2 = Header2.Subject;
-
- nResult = strcmp(str1, str2);
- break;
- }
- //MessageBox(NULL,str1,str2,0);
- }
- catch( ... )
- {
- }
-
- //free mem
- DeleteShortHeaderContent(&Header1);
- DeleteShortHeaderContent(&Header2);
- return nResult;
-
-}
-
-HCURSOR hCurSplitNS, hCurSplitWE;
-static WNDPROC OldSplitterProc;
-#define DM_SPLITTERMOVED (WM_USER+15)
-static LRESULT CALLBACK SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg) {
- case WM_NCHITTEST:
- return HTCLIENT;
- case WM_SETCURSOR:
- {
- SetCursor(hCurSplitNS);
- return TRUE;
- }
- case WM_LBUTTONDOWN:
- SetCapture(hwnd);
- return 0;
- case WM_MOUSEMOVE:
- if (GetCapture() == hwnd) {
- RECT rc;
- GetClientRect(hwnd, &rc);
- SendMessage(GetParent(hwnd), DM_SPLITTERMOVED, (short) HIWORD(GetMessagePos()) + rc.bottom / 2, (LPARAM) hwnd);
- }
- return 0;
- case WM_LBUTTONUP:
- ReleaseCapture();
- return 0;
- }
- return CallWindowProc(OldSplitterProc, hwnd, msg, wParam, lParam);
-}
-
-
-void ConvertCodedStringToUnicode(char *stream,WCHAR **storeto,DWORD cp,int mode);
-int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out);
-INT_PTR CALLBACK DlgProcYAMNShowMessage(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_INITDIALOG:
- {
-// HIMAGELIST hIcons;
- PYAMN_MAILSHOWPARAM MailParam = (PYAMN_MAILSHOWPARAM)lParam;
- WCHAR *iHeaderW=NULL;
- WCHAR *iValueW=NULL;
- int StrLen;
- HWND hListView = GetDlgItem(hDlg,IDC_LISTHEADERS);
- OldSplitterProc = (WNDPROC) SetWindowLongPtr(GetDlgItem(hDlg, IDC_SPLITTER), GWLP_WNDPROC, (LONG_PTR) SplitterSubclassProc);
- SetWindowLongPtr(hDlg,DWLP_USER,(LONG_PTR)MailParam);
- SendMessageW(hDlg,WM_SETICON,(WPARAM)ICON_BIG,(LPARAM)hYamnIcons[2]);
- SendMessageW(hDlg,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)hYamnIcons[2]);
-
- ListView_SetUnicodeFormat(hListView,TRUE);
- ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT);
-
- StrLen=MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,Translate("Header"),-1,NULL,0);
- iHeaderW=new WCHAR[StrLen+1];
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,Translate("Header"),-1,iHeaderW,StrLen);
-
- StrLen=MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,Translate("Value"),-1,NULL,0);
- iValueW=new WCHAR[StrLen+1];
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,Translate("Value"),-1,iValueW,StrLen);
-
- LVCOLUMNW lvc0={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,130,iHeaderW,0,0};
- LVCOLUMNW lvc1={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,400,iValueW,0,0};
- SendMessageW(hListView,LVM_INSERTCOLUMNW,(WPARAM)0,(LPARAM)&lvc0);
- SendMessageW(hListView,LVM_INSERTCOLUMNW,(WPARAM)1,(LPARAM)&lvc1);
- if(NULL!=iHeaderW)
- delete[] iHeaderW;
- if(NULL!=iValueW)
- delete[] iValueW;
-
- //WindowList_Add(YAMNVar.MessageWnds,hDlg,NULL);
- //WindowList_Add(YAMNVar.NewMailAccountWnd,hDlg,ActualAccount);
- SendMessage(hDlg,WM_YAMN_CHANGECONTENT,0,(LPARAM)MailParam);
- MoveWindow(hDlg,HeadPosX,HeadPosY,HeadSizeX,HeadSizeY,0);
- ShowWindow(hDlg,SW_SHOWNORMAL);
- break;
- }
- case WM_YAMN_CHANGECONTENT:
- {
- PYAMN_MAILSHOWPARAM MailParam = (PYAMN_MAILSHOWPARAM)
- (lParam?lParam:GetWindowLongPtr(hDlg,DWLP_USER));
- HWND hListView = GetDlgItem(hDlg,IDC_LISTHEADERS);
- HWND hEdit = GetDlgItem(hDlg,IDC_EDITBODY);
- //do not redraw
- SendMessage(hListView, WM_SETREDRAW, 0, 0);
- ListView_DeleteAllItems(hListView);
- struct CMimeItem *Header;
- LVITEM item;
- item.mask=LVIF_TEXT | LVIF_PARAM;
- WCHAR *From=0,*Subj=0;
- char *contentType=0, *transEncoding=0, *body=0; //should not be delete[]-ed
- for(Header=MailParam->mail->MailData->TranslatedHeader;Header!=NULL;Header=Header->Next)
- {
- WCHAR *str1 = 0;
- WCHAR *str2 = 0;
- if (!body) if (!_stricmp(Header->name,"Body")) {body = Header->value; continue;}
- if (!contentType) if (!_stricmp(Header->name,"Content-Type")) contentType = Header->value;
- if (!transEncoding) if (!_stricmp(Header->name,"Content-Transfer-Encoding")) transEncoding = Header->value;
- //ConvertCodedStringToUnicode(Header->name,&str1,MailParam->mail->MailData->CP,1);
- {
- int streamsize = MultiByteToWideChar(20127,0,Header->name,-1,NULL,0);
- str1 = new WCHAR[streamsize+1];
- MultiByteToWideChar(20127,0,Header->name,-1,str1,streamsize);//US-ASCII
- }
- ConvertCodedStringToUnicode(Header->value,&str2,MailParam->mail->MailData->CP,1);
- if (!str2) { str2 = (WCHAR *)malloc(2); str2[0] = 0; }// the header value may be NULL
- if (!From) if (!_stricmp(Header->name,"From")) {
- From =new WCHAR[wcslen(str2)+1];
- wcscpy(From,str2);
- }
- if (!Subj) if (!_stricmp(Header->name,"Subject")) {
- Subj =new WCHAR[wcslen(str2)+1];
- wcscpy(Subj,str2);
- }
- //if (!hasBody) if (!strcmp(Header->name,"Body")) hasBody = true;
- int count = 0; WCHAR **split=0;
- if (str2){
- int ofs = 0;
- while (str2[ofs]) {
- if ((str2[ofs]==0x266A)||(str2[ofs]==0x25D9)||(str2[ofs]==0x25CB)||
- (str2[ofs]==0x09)||(str2[ofs]==0x0A)||(str2[ofs]==0x0D))count++;
- ofs++;
- }
- split=new WCHAR*[count+1];
- count=0; ofs=0;
- split[0]=str2;
- while (str2[ofs]){
- if ((str2[ofs]==0x266A)||(str2[ofs]==0x25D9)||(str2[ofs]==0x25CB)||
- (str2[ofs]==0x09)||(str2[ofs]==0x0A)||(str2[ofs]==0x0D)) {
- if (str2[ofs-1]){
- count++;
- }
- split[count]=(WCHAR *)(str2+ofs+1);
- str2[ofs]=0;
- }
- ofs++;
- };
- }
- if (!_stricmp(Header->name,"From")||!_stricmp(Header->name,"To")||!_stricmp(Header->name,"Date")||!_stricmp(Header->name,"Subject"))
- item.iItem = 0;
- else
- item.iItem = 999;
- for (int i=0;i<=count;i++){
- item.iSubItem=0;
- if (i==0){
- item.pszText=str1;
- } else {
- item.iItem++;
- item.pszText=0;
- }
- item.iItem=SendMessageW(hListView,LVM_INSERTITEMW,(WPARAM)0,(LPARAM)&item);
- item.iSubItem=1;
- item.pszText=str2?split[i]:0;
- SendMessageW(hListView,LVM_SETITEMTEXTW,(WPARAM)item.iItem,(LPARAM)&item);
- }
- if (split)delete[] split;
-
- if (str1) free(str1);
- if (str2) free(str2);
- }
- if (body){
- WCHAR *bodyDecoded = 0;
- char *localBody=0;
- if (contentType) {
- if (!_strnicmp(contentType,"text",4)) {
- if (transEncoding){
- if (!_stricmp(transEncoding,"base64")){
- int size = (int)strlen(body)*3/4+5;
- localBody = new char[size+1];
- DecodeBase64(body,localBody,size);
- } else if (!_stricmp(transEncoding,"quoted-printable")){
- int size = (int)strlen(body)+2;
- localBody = new char[size+1];
- DecodeQuotedPrintable(body,localBody,size,FALSE);
- }
- }
- } else if (!_strnicmp(contentType,"multipart/",10)) {
- char *bondary=NULL;
- if(NULL!=(bondary=ExtractFromContentType(contentType,"boundary=")))
- {
- bodyDecoded = ParseMultipartBody(body,bondary);
- delete[] bondary;
- }
- }
- }
- if (!bodyDecoded)ConvertStringToUnicode(localBody?localBody:body,MailParam->mail->MailData->CP,&bodyDecoded);
- SendMessageW(hEdit,WM_SETTEXT,(WPARAM)0,(LPARAM)bodyDecoded);
- delete[] bodyDecoded;
- if (localBody) delete[] localBody;
- SetFocus(hEdit);
- }
- if (!(MailParam->mail->Flags & YAMN_MSG_BODYRECEIVED)) {
- MailParam->mail->Flags |= YAMN_MSG_BODYREQUESTED;
- CallService(MS_YAMN_ACCOUNTCHECK,(WPARAM)MailParam->account,0);
- } else {
- if (MailParam->mail->Flags & YAMN_MSG_UNSEEN){
- MailParam->mail->Flags&=~YAMN_MSG_UNSEEN; //mark the message as seen
- HWND hMailBrowser;
- if (hMailBrowser=WindowList_Find(YAMNVar.NewMailAccountWnd,MailParam->account)){
- struct CChangeContent Params={MailParam->account->NewMailN.Flags|YAMN_ACC_MSGP,MailParam->account->NoNewMailN.Flags|YAMN_ACC_MSGP};
- SendMessageW(hMailBrowser,WM_YAMN_CHANGECONTENT,(WPARAM)MailParam->account,(LPARAM)&Params);
- } else {
- UpdateMails(NULL,MailParam->account,MailParam->account->NewMailN.Flags,MailParam->account->NoNewMailN.Flags);
- }
- }
- }
- ShowWindow(GetDlgItem(hDlg, IDC_SPLITTER),(MailParam->mail->Flags & YAMN_MSG_BODYRECEIVED)?SW_SHOW:SW_HIDE);
- ShowWindow(hEdit,(MailParam->mail->Flags & YAMN_MSG_BODYRECEIVED)?SW_SHOW:SW_HIDE);
- WCHAR *title=0;
- title = new WCHAR[(From?wcslen(From):0)+(Subj?wcslen(Subj):0)+4];
- if (From&&Subj) wsprintfW(title,L"%s (%s)",Subj,From);
- else if (From)wsprintfW(title,L"%s",From);
- else if (Subj)wsprintfW(title,L"%s",Subj);
- else wsprintfW(title,L"none");
- if (Subj) delete[] Subj;
- if (From) delete[] From;
- SendMessageW(hDlg,WM_SETTEXT,(WPARAM)0,(LPARAM)title);
- delete[] title;
- // turn on redrawing
- SendMessage(hListView, WM_SETREDRAW, 1, 0);
- SendMessage(hDlg, WM_SIZE, 0, HeadSizeY<<16|HeadSizeX);
- } break;
- case WM_YAMN_STOPACCOUNT:
- {
- PYAMN_MAILSHOWPARAM MailParam = (PYAMN_MAILSHOWPARAM)
- (lParam?lParam:GetWindowLongPtr(hDlg,DWLP_USER));
-
- if(NULL==MailParam)
- break;
- if((HACCOUNT)wParam!=MailParam->account)
- break;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ShowMessage:STOPACCOUNT:sending destroy msg\n");
- #endif
- DestroyWindow(hDlg);
- }
- return 1;
- case WM_CTLCOLORSTATIC:
- //here should be check if this is our edittext control.
- //but we have only one static control (for now);
- SetBkColor((HDC)wParam, GetSysColor(COLOR_WINDOW));
- SetTextColor((HDC)wParam, GetSysColor(COLOR_WINDOWTEXT));
- return (INT_PTR)GetSysColorBrush(COLOR_WINDOW);;
- case WM_DESTROY:
- {
- RECT coord;
- if(GetWindowRect(hDlg,&coord))
- {
- HeadPosX=coord.left;
- HeadSizeX=coord.right-coord.left;
- HeadPosY=coord.top;
- HeadSizeY=coord.bottom-coord.top;
- }
-
- //if(!YAMNVar.Shutdown && GetWindowRect(hDlg,&coord)) //the YAMNVar.Shutdown testing is because M<iranda strange functionality at shutdown phase, when call to DBWriteContactSetting freezes calling thread
- //{
- // //HeadPosX=coord.left;
- // //HeadSizeX=coord.right-coord.left;
- // //HeadPosY=coord.top;
- // //HeadSizeY=coord.bottom-coord.top;
- // DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSX,HeadPosX);
- // DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSY,HeadPosY);
- // DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEX,HeadSizeX);
- // DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEY,HeadSizeY);
- // DBWriteContactSettingWord(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSSPLIT,HeadSplitPos);
- //}
- //PYAMN_MAILSHOWPARAM MailParam = (PYAMN_MAILSHOWPARAM)(GetWindowLongPtr(hDlg,DWLP_USER));
- //MailParam->mail->MsgWindow = NULL;
- PostQuitMessage(1);
- }
- break;
- case WM_SYSCOMMAND:
- {
- switch(wParam)
- {
- case SC_CLOSE:
- DestroyWindow(hDlg);
- break;
- }
- }
- break;
- case WM_MOVE:
- HeadPosX=LOWORD(lParam); //((LPRECT)lParam)->right-((LPRECT)lParam)->left;
- HeadPosY=HIWORD(lParam); //((LPRECT)lParam)->bottom-((LPRECT)lParam)->top;
- return 0;
- case DM_SPLITTERMOVED:
- {
- if ((HWND) lParam == GetDlgItem(hDlg, IDC_SPLITTER)) {
- POINT pt;
- pt.x = 0;
- pt.y = wParam;
- ScreenToClient(hDlg, &pt);
- HeadSplitPos = (pt.y*1000)/HeadSizeY;//+rc.bottom-rc.top;
- if (HeadSplitPos>=1000) HeadSplitPos = 999;
- else if (HeadSplitPos<=0) HeadSplitPos = 1;
- else SendMessage(hDlg, WM_SIZE, 0, HeadSizeY<<16|HeadSizeX);
- }
- return 0;
- }
- case WM_SIZE:
- if(wParam==SIZE_RESTORED)
- {
- HWND hList = GetDlgItem(hDlg,IDC_LISTHEADERS);
- HWND hEdit = GetDlgItem(hDlg,IDC_EDITBODY);
- BOOL changeX = LOWORD(lParam)!=HeadSizeX;
- BOOL isBodyShown = ((PYAMN_MAILSHOWPARAM)(GetWindowLongPtr(hDlg,DWLP_USER)))->mail->Flags & YAMN_MSG_BODYRECEIVED;
- HeadSizeX=LOWORD(lParam); //((LPRECT)lParam)->right-((LPRECT)lParam)->left;
- HeadSizeY=HIWORD(lParam); //((LPRECT)lParam)->bottom-((LPRECT)lParam)->top;
- int localSplitPos = (HeadSplitPos*HeadSizeY)/1000;
- int localSizeX;
- RECT coord;
- MoveWindow(GetDlgItem(hDlg,IDC_SPLITTER),5,localSplitPos,HeadSizeX-10,2,TRUE);
- MoveWindow(hEdit,5,localSplitPos+6,HeadSizeX-10,HeadSizeY-localSplitPos-11,TRUE); //where to put text window while resizing
- MoveWindow(hList, 5 ,5 ,HeadSizeX-10 ,(isBodyShown?localSplitPos:HeadSizeY)-10,TRUE); //where to put headers list window while resizing
- //if (changeX){
- if (GetClientRect(hList,&coord)){
- localSizeX=coord.right-coord.left;
- } else localSizeX=HeadSizeX;
- LONG iNameWidth = ListView_GetColumnWidth(hList,0);
- ListView_SetColumnWidth(hList,1,(localSizeX<=iNameWidth)?0:(localSizeX-iNameWidth));
- //}
- }
-// break;
- return 0;
- case WM_CONTEXTMENU:
- {
- if ( GetWindowLongPtr(( HWND )wParam, GWLP_ID ) == IDC_LISTHEADERS) {
- //MessageBox(0,"LISTHEADERS","Debug",0);
- HWND hList = GetDlgItem( hDlg, IDC_LISTHEADERS );
- POINT pt = { (signed short)LOWORD( lParam ), (signed short)HIWORD( lParam ) };
- HTREEITEM hItem = 0;
- if (pt.x==-1) pt.x = 0;
- if (pt.y==-1) pt.y = 0;
- if (int numRows = ListView_GetItemCount(hList)){
- HMENU hMenu = CreatePopupMenu();
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)1, TranslateT("Copy Selected"));
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)2, TranslateT("Copy All"));
- AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)0, TranslateT("Cancel"));
- int nReturnCmd = TrackPopupMenu( hMenu, TPM_RETURNCMD, pt.x, pt.y, 0, hDlg, NULL );
- DestroyMenu( hMenu );
- if (nReturnCmd>0){
- int courRow=0;
- size_t sizeNeeded = 0;
- WCHAR headname[64]={0}, headvalue[256]={0};
- for (courRow=0;courRow<numRows;courRow++){
- if ((nReturnCmd==1) && (ListView_GetItemState(hList, courRow, LVIS_SELECTED)==0)) continue;
- ListView_GetItemText(hList, courRow, 0, headname, SIZEOF(headname));
- ListView_GetItemText(hList, courRow, 1, headvalue, SIZEOF(headvalue));
- size_t headnamelen=wcslen(headname);
- if (headnamelen) sizeNeeded += 1 + headnamelen;
- sizeNeeded += 3+wcslen(headvalue);
- }
- if (!sizeNeeded) {
-#ifdef _DEBUG
- MessageBox(hDlg,"Nothing To Copy","Debug ShowHeaders",0);
-#endif
- } else if(OpenClipboard(hDlg)){
- EmptyClipboard();
- HGLOBAL hData=GlobalAlloc(GMEM_MOVEABLE,(sizeNeeded+1)*sizeof(WCHAR));
- WCHAR *buff = (WCHAR *)GlobalLock(hData);
- int courPos = 0;
- for (courRow=0;courRow<numRows;courRow++){
- if ((nReturnCmd==1) && (ListView_GetItemState(hList, courRow, LVIS_SELECTED)==0)) continue;
- ListView_GetItemText(hList, courRow, 0, headname, SIZEOF(headname));
- ListView_GetItemText(hList, courRow, 1, headvalue, SIZEOF(headvalue));
- if (wcslen(headname)) courPos += swprintf(&buff[courPos],L"%s:\t%s\r\n",headname,headvalue);
- else courPos += swprintf(&buff[courPos],L"\t%s\r\n",headvalue);
- }
- GlobalUnlock(hData);
- SetClipboardData(CF_UNICODETEXT,hData);
- CloseClipboard();
- }
- }
- }
- } }
- break; // just in case
- }
- return 0;
-}
-
-DWORD WINAPI ShowEmailThread(LPVOID Param){
- struct MailShowMsgWinParam MyParam;
- MyParam=*(struct MailShowMsgWinParam *)Param;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ShowMessage:Incrementing \"using threads\" %x (account %x)\n",MyParam.account->UsingThreads,MyParam.account);
- #endif
- SCIncFcn(MyParam.account->UsingThreads);
- SetEvent(MyParam.ThreadRunningEV);
- if (MyParam.mail->MsgWindow){
- //if (!BringWindowToTop(MyParam.mail->MsgWindow)) {
- if (!SetForegroundWindow(MyParam.mail->MsgWindow)) {
- SendMessage(MyParam.mail->MsgWindow,WM_DESTROY,0,0);
- MyParam.mail->MsgWindow = 0;
- goto CREADTEVIEWMESSAGEWINDOW;
- }else{
- if (IsIconic(MyParam.mail->MsgWindow)){
- OpenIcon(MyParam.mail->MsgWindow);
- }
- }
- } else {
-CREADTEVIEWMESSAGEWINDOW:
- MyParam.mail->MsgWindow = CreateDialogParamW(YAMNVar.hInst,MAKEINTRESOURCEW(IDD_DLGSHOWMESSAGE),NULL,(DLGPROC)DlgProcYAMNShowMessage,(LPARAM)&MyParam);
- WindowList_Add(YAMNVar.MessageWnds,MyParam.mail->MsgWindow,NULL);
- MSG msg;
- while(GetMessage(&msg,NULL,0,0)){
- if(!IsDialogMessage(MyParam.mail->MsgWindow, &msg)){
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- } }
- WindowList_Remove(YAMNVar.MessageWnds,MyParam.mail->MsgWindow);
- MyParam.mail->MsgWindow = NULL;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ShowMessage:Decrementing \"using threads\" %x (account %x)\n",MyParam.account->UsingThreads,MyParam.account);
- #endif
- SCDecFcn(MyParam.account->UsingThreads);
- delete Param;
- return 1;
-}
-
-BOOL CALLBACK DlgProcYAMNMailBrowser(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- HACCOUNT ActualAccount;
- struct MailBrowserWinParam *MyParam=(struct MailBrowserWinParam *)lParam;
- struct CMailWinUserInfo *mwui;
-
- ListView_SetUnicodeFormat(GetDlgItem(hDlg,IDC_LISTMAILS),TRUE);
- ListView_SetExtendedListViewStyle(GetDlgItem(hDlg,IDC_LISTMAILS),LVS_EX_FULLROWSELECT);
-
- ActualAccount=MyParam->account;
- mwui=new struct CMailWinUserInfo;
- mwui->Account=ActualAccount;
- mwui->TrayIconState=0;
- mwui->UpdateMailsMessagesAccess=FALSE;
- mwui->Seen=FALSE;
- mwui->RunFirstTime=TRUE;
-
- SetWindowLongPtr(hDlg,DWLP_USER,(LONG_PTR)mwui);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:INIT:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:INIT:ActualAccountSO-read enter failed\n");
- #endif
- DestroyWindow(hDlg);
- return FALSE;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:INIT:ActualAccountSO-read enter\n");
- #endif
-
- SendMessageW(GetDlgItem(hDlg,IDC_BTNAPP),WM_SETTEXT,(WPARAM)0,(LPARAM)TranslateW(L"Run application"));
- SendMessageW(GetDlgItem(hDlg,IDC_BTNDEL),WM_SETTEXT,(WPARAM)0,(LPARAM)TranslateW(L"Delete selected"));
- SendMessageW(GetDlgItem(hDlg,IDC_BTNCHECKALL),WM_SETTEXT,(WPARAM)0,(LPARAM)TranslateW(L"Select All"));
- SendMessageW(GetDlgItem(hDlg,IDC_BTNOK),WM_SETTEXT,(WPARAM)0,(LPARAM)TranslateW(L"OK"));
-
- LVCOLUMNW lvc0={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,FromWidth,TranslateW(L"From"),0,0};
- LVCOLUMNW lvc1={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,SubjectWidth,TranslateW(L"Subject"),0,0};
- LVCOLUMNW lvc2={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,SizeWidth,TranslateW(L"Size"),0,0};
- LVCOLUMNW lvc3={LVCF_FMT | LVCF_TEXT | LVCF_WIDTH,LVCFMT_LEFT,SizeDate,TranslateW(L"Date"),0,0};
- SendMessageW(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_INSERTCOLUMNW,(WPARAM)0,(LPARAM)&lvc0);
- SendMessageW(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_INSERTCOLUMNW,(WPARAM)1,(LPARAM)&lvc1);
- SendMessageW(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_INSERTCOLUMNW,(WPARAM)2,(LPARAM)&lvc2);
- SendMessageW(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_INSERTCOLUMNW,(WPARAM)3,(LPARAM)&lvc3);
-
- if((ActualAccount->NewMailN.App!=NULL) && (wcslen(ActualAccount->NewMailN.App)))
- EnableWindow(GetDlgItem(hDlg,IDC_BTNAPP),(WPARAM)TRUE);
- else
- EnableWindow(GetDlgItem(hDlg,IDC_BTNAPP),(WPARAM)FALSE);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:INIT:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- WindowList_Add(YAMNVar.MessageWnds,hDlg,NULL);
- WindowList_Add(YAMNVar.NewMailAccountWnd,hDlg,ActualAccount);
-
- {
- char accstatus[512];
-
- GetStatusFcn(ActualAccount,accstatus);
- SetDlgItemTextA(hDlg,IDC_STSTATUS,accstatus);
- }
- SetTimer(hDlg,TIMER_FLASHING,500,NULL);
-
- if(ActualAccount->hContact != NULL)
- {
- CallService(MS_CLIST_REMOVEEVENT,(WPARAM)ActualAccount->hContact,(LPARAM)"yamn new mail message");
- }
-
- OldListViewSubclassProc = (WNDPROC) SetWindowLongPtr(GetDlgItem(hDlg, IDC_LISTMAILS), GWLP_WNDPROC, (LONG_PTR) ListViewSubclassProc);
-
- break;
- }
- case WM_DESTROY:
- {
- HACCOUNT ActualAccount;
- RECT coord;
- LVCOLUMNW ColInfo;
- NOTIFYICONDATA nid;
- HYAMNMAIL Parser;
- struct CMailWinUserInfo *mwui;
-
- mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER);
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
- ColInfo.mask=LVCF_WIDTH;
- if(ListView_GetColumn(GetDlgItem(hDlg,IDC_LISTMAILS),0,&ColInfo))
- FromWidth=ColInfo.cx;
- if(ListView_GetColumn(GetDlgItem(hDlg,IDC_LISTMAILS),1,&ColInfo))
- SubjectWidth=ColInfo.cx;
- if(ListView_GetColumn(GetDlgItem(hDlg,IDC_LISTMAILS),2,&ColInfo))
- SizeWidth=ColInfo.cx;
- if(ListView_GetColumn(GetDlgItem(hDlg,IDC_LISTMAILS),3,&ColInfo))
- SizeDate=ColInfo.cx;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:save window position\n");
- #endif
- if(!YAMNVar.Shutdown && GetWindowRect(hDlg,&coord)) //the YAMNVar.Shutdown testing is because M<iranda strange functionality at shutdown phase, when call to DBWriteContactSetting freezes calling thread
- {
- PosX=coord.left;
- SizeX=coord.right-coord.left;
- PosY=coord.top;
- SizeY=coord.bottom-coord.top;
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBPOSX,PosX);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBPOSY,PosY);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBSIZEX,SizeX);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBSIZEY,SizeY);
- }
- KillTimer(hDlg,TIMER_FLASHING);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:remove window from list\n");
- #endif
- WindowList_Remove(YAMNVar.NewMailAccountWnd,hDlg);
- WindowList_Remove(YAMNVar.MessageWnds,hDlg);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToWriteFcn(ActualAccount->MessagesAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:ActualAccountMsgsSO-write wait failed\n");
- #endif
- break;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:ActualAccountMsgsSO-write enter\n");
- #endif
- //delete mails from queue, which are deleted from server (spam level 3 mails e.g.)
- for(Parser=(HYAMNMAIL)ActualAccount->Mails;Parser!=NULL;Parser=Parser->Next)
- {
- if((Parser->Flags & YAMN_MSG_DELETED) && YAMN_MSG_SPAML(Parser->Flags,YAMN_MSG_SPAML3) && mwui->Seen) //if spaml3 was already deleted and user knows about it
- {
- DeleteMessageFromQueueFcn((HYAMNMAIL *)&ActualAccount->Mails,Parser,1);
- CallService(MS_YAMN_DELETEACCOUNTMAIL,(WPARAM)ActualAccount->Plugin,(LPARAM)Parser);
- }
- }
-
- //mark mails as read (remove "new" and "unseen" flags)
- if(mwui->Seen)
- SetRemoveFlagsInQueueFcn((HYAMNMAIL)ActualAccount->Mails,YAMN_MSG_DISPLAY,0,YAMN_MSG_NEW | YAMN_MSG_UNSEEN,0);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DESTROY:ActualAccountMsgsSO-write done\n");
- #endif
- WriteDoneFcn(ActualAccount->MessagesAccessSO);
-
- ZeroMemory(&nid,sizeof(NOTIFYICONDATA));
-
- delete mwui;
- SetWindowLongPtr(hDlg,DWLP_USER,(LONG_PTR)NULL);
-
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.hWnd=hDlg;
- nid.uID=0;
- Shell_NotifyIcon(NIM_DELETE,&nid);
- PostQuitMessage(0);
- }
- break;
- case WM_SHOWWINDOW:
- {
- struct CMailWinUserInfo *mwui;
-
- if(NULL==(mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER)))
- return 0;
- mwui->Seen=TRUE;
- }
- case WM_YAMN_CHANGESTATUS:
- {
- HACCOUNT ActualAccount;
- char accstatus[512];
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
- if((HACCOUNT)wParam!=ActualAccount)
- break;
- GetStatusFcn(ActualAccount,accstatus);
- SetDlgItemTextA(hDlg,IDC_STSTATUS,accstatus);
- }
- return 1;
- case WM_YAMN_CHANGECONTENT:
- {
- struct CUpdateMails UpdateParams;
- BOOL ThisThreadWindow=(GetCurrentThreadId()==GetWindowThreadProcessId(hDlg,NULL));
-
- if(NULL==(UpdateParams.Copied=CreateEvent(NULL,FALSE,FALSE,NULL)))
- {
- DestroyWindow(hDlg);
- return 0;
- }
- UpdateParams.Flags=(struct CChangeContent *)lParam;
- UpdateParams.Waiting=!ThisThreadWindow;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:CHANGECONTENT:posting UPDATEMAILS\n");
- #endif
- if(ThisThreadWindow)
- {
- if(!UpdateMails(hDlg,(HACCOUNT)wParam,UpdateParams.Flags->nflags,UpdateParams.Flags->nnflags))
- DestroyWindow(hDlg);
- }
- else if(PostMessage(hDlg,WM_YAMN_UPDATEMAILS,wParam,(LPARAM)&UpdateParams)) //this ensures UpdateMails will execute the thread who created the browser window
- {
- if(!ThisThreadWindow)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:CHANGECONTENT:waiting for event\n");
- #endif
- WaitForSingleObject(UpdateParams.Copied,INFINITE);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:CHANGECONTENT:event signaled\n");
- #endif
- }
- }
-
- CloseHandle(UpdateParams.Copied);
- }
- return 1;
- case WM_YAMN_UPDATEMAILS:
- {
- HACCOUNT ActualAccount;
-
- struct CUpdateMails *um=(struct CUpdateMails *)lParam;
- DWORD nflags,nnflags;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:UPDATEMAILS\n");
- #endif
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- return 0;
- if((HACCOUNT)wParam!=ActualAccount)
- return 0;
-
- nflags=um->Flags->nflags;
- nnflags=um->Flags->nnflags;
-
- if(um->Waiting)
- SetEvent(um->Copied);
-
- if(!UpdateMails(hDlg,ActualAccount,nflags,nnflags))
- DestroyWindow(hDlg);
- }
- return 1;
- case WM_YAMN_STOPACCOUNT:
- {
- HACCOUNT ActualAccount;
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
- if((HACCOUNT)wParam!=ActualAccount)
- break;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:STOPACCOUNT:sending destroy msg\n");
- #endif
- PostQuitMessage(0);
- }
- return 1;
- case WM_YAMN_NOTIFYICON:
- {
- HACCOUNT ActualAccount;
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
-
- switch(lParam)
- {
- case WM_LBUTTONDBLCLK:
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DBLCLICKICON:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DBLCLICKICON:ActualAccountSO-read wait failed\n");
- #endif
- return 0;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DBLCLICKICON:ActualAccountSO-read enter\n");
- #endif
- if(ActualAccount->AbilityFlags & YAMN_ACC_BROWSE)
- {
- ShowWindow(hDlg,SW_SHOWNORMAL);
- SetForegroundWindow(hDlg);
- }
- else
- DestroyWindow(hDlg);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DBLCLICKICON:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- break;
- }
- break;
- }
- case WM_YAMN_SHOWSELECTED:
- {
- int iSelect;
- iSelect=SendMessage(GetDlgItem(hDlg,IDC_LISTMAILS),LVM_GETNEXTITEM,-1,MAKELPARAM((UINT)LVNI_FOCUSED,0)); // return item selected
-
- if(iSelect!=-1)
- {
- LV_ITEMW item;
- HYAMNMAIL ActualMail;
-
- item.iItem=iSelect;
- item.iSubItem=0;
- item.mask=LVIF_PARAM | LVIF_STATE;
- item.stateMask=0xFFFFFFFF;
- ListView_GetItem(GetDlgItem(hDlg,IDC_LISTMAILS),&item);
- ActualMail=(HYAMNMAIL)item.lParam;
- if(NULL!=ActualMail)
- {
- //ShowEmailThread
- PYAMN_MAILSHOWPARAM MailParam = new YAMN_MAILSHOWPARAM;
- MailParam->account = GetWindowAccount(hDlg);
- MailParam->mail = ActualMail;
- if(NULL!=(MailParam->ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL))){
- HANDLE NewThread;
- if(NULL!=(NewThread=CreateThread(NULL,0,ShowEmailThread,MailParam,0,NULL)))
- {
- //WaitForSingleObject(MailParam->ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- CloseHandle(MailParam->ThreadRunningEV);
- }
- //delete MailParam;
- }
- }
- } break;
- case WM_SYSCOMMAND:
- {
- HACCOUNT ActualAccount;
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
- switch(wParam)
- {
- case SC_CLOSE:
- DestroyWindow(hDlg);
- break;
- }
- }
- break;
-
- case WM_COMMAND:
- {
- HACCOUNT ActualAccount;
- int Items;
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
-
- switch(LOWORD(wParam))
- {
- case IDC_BTNCHECKALL:
- ListView_SetItemState(GetDlgItem(hDlg,IDC_LISTMAILS), -1, 0, LVIS_SELECTED); // deselect all items
- ListView_SetItemState(GetDlgItem(hDlg,IDC_LISTMAILS),-1, LVIS_SELECTED ,LVIS_SELECTED);
- Items = ListView_GetItemCount(GetDlgItem(hDlg,IDC_LISTMAILS));
- ListView_RedrawItems(GetDlgItem(hDlg,IDC_LISTMAILS), 0, Items);
- UpdateWindow(GetDlgItem(hDlg,IDC_LISTMAILS));
- SetFocus(GetDlgItem(hDlg,IDC_LISTMAILS));
- break;
-
- case IDC_BTNOK:
- DestroyWindow(hDlg);
- break;
-
- case IDC_BTNAPP:
- {
- PROCESS_INFORMATION pi;
- STARTUPINFOW si;
-
- ZeroMemory(&si,sizeof(si));
- si.cb=sizeof(si);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNAPP:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNAPP:ActualAccountSO-read enter\n");
- #endif
- if(ActualAccount->NewMailN.App!=NULL)
- {
- WCHAR *Command;
- if(ActualAccount->NewMailN.AppParam!=NULL)
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+wcslen(ActualAccount->NewMailN.AppParam)+6];
- else
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+6];
-
- if(Command!=NULL)
- {
- lstrcpyW(Command,L"\"");
- lstrcatW(Command,ActualAccount->NewMailN.App);
- lstrcatW(Command,L"\" ");
- if(ActualAccount->NewMailN.AppParam!=NULL)
- lstrcatW(Command,ActualAccount->NewMailN.AppParam);
- CreateProcessW(NULL,Command,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
- delete[] Command;
- }
- }
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNAPP:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"MailBrowser:BTNAPP:ActualAccountSO-read enter failed\n");
- #endif
- if(!(GetKeyState(VK_SHIFT) & 0x8000) && !(GetKeyState(VK_CONTROL) & 0x8000))
- DestroyWindow(hDlg);
-
- }
- break;
- case IDC_BTNDEL:
- {
- LVITEMW item;
- HYAMNMAIL FirstMail=NULL,ActualMail;
- HANDLE ThreadRunningEV;
- DWORD tid,Total=0;
-
- // we use event to signal, that running thread has all needed stack parameters copied
- if(NULL==(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- break;
- int Items=ListView_GetItemCount(GetDlgItem(hDlg,IDC_LISTMAILS));
-
- item.stateMask=0xFFFFFFFF;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToWriteFcn(ActualAccount->MessagesAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write enter\n");
- #endif
- for(int i=0;i<Items;i++)
- {
- item.iItem=i;
- item.iSubItem=0;
- item.mask=LVIF_PARAM | LVIF_STATE;
- item.stateMask=0xFFFFFFFF;
- ListView_GetItem(GetDlgItem(hDlg,IDC_LISTMAILS),&item);
- ActualMail=(HYAMNMAIL)item.lParam;
- if(NULL==ActualMail)
- break;
- if(item.state & LVIS_SELECTED)
- {
- ActualMail->Flags|=YAMN_MSG_USERDELETE; //set to mail we are going to delete it
- Total++;
- }
- }
-
- // Enable write-access to mails
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write done\n");
- #endif
- WriteDoneFcn(ActualAccount->MessagesAccessSO);
-
- if(Total)
- {
- char DeleteMsg[1024];
-
- sprintf(DeleteMsg,Translate("Do you really want to delete %d selected mails?"),Total);
- if(IDOK==MessageBox(hDlg,DeleteMsg,Translate("Delete confirmation"),MB_OKCANCEL | MB_ICONWARNING))
- {
- struct DeleteParam ParamToDeleteMails={YAMN_DELETEVERSION,ThreadRunningEV,ActualAccount,NULL};
-
- // Find if there's mail marked to delete, which was deleted before
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToWriteFcn(ActualAccount->MessagesAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write enter\n");
- #endif
- for(ActualMail=(HYAMNMAIL)ActualAccount->Mails;ActualMail!=NULL;ActualMail=ActualMail->Next)
- {
- if((ActualMail->Flags & YAMN_MSG_DELETED) && ((ActualMail->Flags & YAMN_MSG_USERDELETE))) //if selected mail was already deleted
- {
- DeleteMessageFromQueueFcn((HYAMNMAIL *)&ActualAccount->Mails,ActualMail,1);
- CallService(MS_YAMN_DELETEACCOUNTMAIL,(WPARAM)ActualAccount->Plugin,(LPARAM)ActualMail); //delete it from memory
- continue;
- }
- }
- // Set flag to marked mails that they can be deleted
- SetRemoveFlagsInQueueFcn((HYAMNMAIL)ActualAccount->Mails,YAMN_MSG_DISPLAY | YAMN_MSG_USERDELETE,0,YAMN_MSG_DELETEOK,1);
- // Create new thread which deletes marked mails.
- HANDLE NewThread;
-
- if(NULL!=(NewThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ActualAccount->Plugin->Fcn->DeleteMailsFcnPtr,(LPVOID)&ParamToDeleteMails,0,&tid)))
- {
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- // Enable write-access to mails
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNDEL:ActualAccountMsgsSO-write done\n");
- #endif
- WriteDoneFcn(ActualAccount->MessagesAccessSO);
- }
- }
- else
- //else mark messages that they are not to be deleted
- SetRemoveFlagsInQueueFcn((HYAMNMAIL)ActualAccount->Mails,YAMN_MSG_DISPLAY | YAMN_MSG_USERDELETE,0,YAMN_MSG_USERDELETE,0);
- }
- }
- CloseHandle(ThreadRunningEV);
- if(DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_CLOSEDELETE, 0))
- DestroyWindow(hDlg);
-
- }
- break;
- }
- }
- break;
- case WM_SIZE:
- if(wParam==SIZE_RESTORED)
- {
- LONG x=LOWORD(lParam); //((LPRECT)lParam)->right-((LPRECT)lParam)->left;
- LONG y=HIWORD(lParam); //((LPRECT)lParam)->bottom-((LPRECT)lParam)->top;
- MoveWindow(GetDlgItem(hDlg,IDC_BTNDEL), 5 ,y-5-25,(x-20)/3,25,TRUE); //where to put DELETE button while resizing
- MoveWindow(GetDlgItem(hDlg,IDC_BTNCHECKALL),10+ (x-20)/3,y-5-25,(x-20)/6,25,TRUE); //where to put CHECK ALL button while resizing
- MoveWindow(GetDlgItem(hDlg,IDC_BTNAPP), 15+ (x-20)/3 + (x-20)/6,y-5-25,(x-20)/3,25,TRUE); //where to put RUN APP button while resizing
- MoveWindow(GetDlgItem(hDlg,IDC_BTNOK), 20+2*(x-20)/3 + (x-20)/6 ,y-5-25,(x-20)/6,25,TRUE); //where to put OK button while resizing
- MoveWindow(GetDlgItem(hDlg,IDC_LISTMAILS), 5 ,5 ,x-10 ,y-55,TRUE); //where to put list mail window while resizing
- MoveWindow(GetDlgItem(hDlg,IDC_STSTATUS), 5 ,y-5-45 ,x-10 ,15,TRUE); //where to put account status text while resizing
- }
-// break;
- return 0;
- case WM_GETMINMAXINFO:
- ((LPMINMAXINFO)lParam)->ptMinTrackSize.x=MAILBROWSER_MINXSIZE;
- ((LPMINMAXINFO)lParam)->ptMinTrackSize.y=MAILBROWSER_MINYSIZE;
- return 0;
- case WM_TIMER:
- {
- NOTIFYICONDATA nid;
- struct CMailWinUserInfo *mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER);
-
- ZeroMemory(&nid,sizeof(nid));
- nid.cbSize=sizeof(NOTIFYICONDATA);
- nid.hWnd=hDlg;
- nid.uID=0;
- nid.uFlags=NIF_ICON;
- if(mwui->TrayIconState==0)
- nid.hIcon=hYamnIcons[0];
- else
- nid.hIcon=hYamnIcons[2];
- Shell_NotifyIcon(NIM_MODIFY,&nid);
- mwui->TrayIconState=!mwui->TrayIconState;
-// UpdateWindow(hDlg);
- }
- break;
- case WM_NOTIFY:
- switch(((LPNMHDR)lParam)->idFrom)
- {
-
- case IDC_LISTMAILS:
- {
-
- switch(((LPNMHDR)lParam)->code)
- {
- case NM_DBLCLK:
- SendMessage(hDlg,WM_YAMN_SHOWSELECTED,0,0);
- break;
- case LVN_COLUMNCLICK:
- HACCOUNT ActualAccount;
- if(NULL!=(ActualAccount=GetWindowAccount(hDlg))){
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)lParam;
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:COLUMNCLICK:ActualAccountSO-read enter\n");
- #endif
- switch((int)pNMListView->iSubItem)
- {
- case 0:
- bFrom = !bFrom;
- break;
- case 1:
- bSub = !bSub;
- break;
- case 2:
- bSize = !bSize;
- break;
- case 3:
- bDate = !bDate;
- break;
- default:
- break;
- }
- ListView_SortItems(pNMListView->hdr.hwndFrom,ListViewCompareProc,pNMListView->iSubItem);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:BTNAPP:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- } }
- break;
-
- case NM_CUSTOMDRAW:
- {
- HACCOUNT ActualAccount;
- LPNMLVCUSTOMDRAW cd=(LPNMLVCUSTOMDRAW)lParam;
- LONG_PTR PaintCode;
-
- if(NULL==(ActualAccount=GetWindowAccount(hDlg)))
- break;
-
- switch(cd->nmcd.dwDrawStage)
- {
- case CDDS_PREPAINT:
- PaintCode=CDRF_NOTIFYITEMDRAW;
- break;
- case CDDS_ITEMPREPAINT:
- PaintCode=CDRF_NOTIFYSUBITEMDRAW;
- break;
- case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
- {
-// COLORREF crText, crBkgnd;
-// crText= RGB(128,128,255);
- HYAMNMAIL ActualMail;
- BOOL umma;
-
- {
- struct CMailWinUserInfo *mwui;
- mwui=(struct CMailWinUserInfo *)GetWindowLongPtr(hDlg,DWLP_USER);
- umma= mwui->UpdateMailsMessagesAccess;
- }
- ActualMail=(HYAMNMAIL)cd->nmcd.lItemlParam;
- if(!ActualMail)
- ActualMail=(HYAMNMAIL)readItemLParam(cd->nmcd.hdr.hwndFrom,cd->nmcd.dwItemSpec);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DRAWITEM:ActualAccountMsgsSO-read wait\n");
- #endif
- if(!umma)
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->MessagesAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DRAWITEM:ActualAccountMsgsSO-read wait failed\n");
- #endif
- return 0;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DRAWITEM:ActualAccountMsgsSO-read enter\n");
- #endif
- switch(ActualMail->Flags & YAMN_MSG_SPAMMASK)
- {
- case YAMN_MSG_SPAML1:
- case YAMN_MSG_SPAML2:
- cd->clrText=RGB(150,150,150);
- break;
- case YAMN_MSG_SPAML3:
- cd->clrText=RGB(200,200,200);
- cd->clrTextBk=RGB(160,160,160);
- break;
- case 0:
- if(cd->nmcd.dwItemSpec & 1)
- cd->clrTextBk=RGB(230,230,230);
- break;
- default:
- break;
- }
- if(ActualMail->Flags & YAMN_MSG_UNSEEN)
- cd->clrTextBk=RGB(220,235,250);
- PaintCode=CDRF_DODEFAULT;
-
- if(!umma)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:DRAWITEM:ActualAccountMsgsSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->MessagesAccessSO);
- }
-
- break;
- }
- }
- SetWindowLongPtr(hDlg,DWLP_MSGRESULT,PaintCode);
- return 1;
- }
- }
- }
- }
- break;
- case WM_CONTEXTMENU:
- {
- if ( GetWindowLongPtr(( HWND )wParam, GWLP_ID ) == IDC_LISTMAILS) {
- //MessageBox(0,"LISTHEADERS","Debug",0);
- HWND hList = GetDlgItem( hDlg, IDC_LISTMAILS );
- POINT pt = { (signed short)LOWORD( lParam ), (signed short)HIWORD( lParam ) };
- HTREEITEM hItem = 0;
- if (pt.x==-1) pt.x = 0;
- if (pt.y==-1) pt.y = 0;
- if (int numRows = ListView_GetItemCount(hList)){
- HMENU hMenu = CreatePopupMenu();
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)1, TranslateT("Copy Selected"));
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)2, TranslateT("Copy All"));
- AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
- AppendMenu(hMenu, MF_STRING, (UINT_PTR)0, TranslateT("Cancel"));
- int nReturnCmd = TrackPopupMenu( hMenu, TPM_RETURNCMD, pt.x, pt.y, 0, hDlg, NULL );
- DestroyMenu( hMenu );
- if (nReturnCmd>0){
- int courRow=0;
- size_t sizeNeeded = 0;
- WCHAR from[128]={0}, subject[256]={0}, size[16]={0}, date[64]={0};
- for (courRow=0;courRow<numRows;courRow++){
- if ((nReturnCmd==1) && (ListView_GetItemState(hList, courRow, LVIS_SELECTED)==0)) continue;
- ListView_GetItemText(hList, courRow, 0, from, SIZEOF(from));
- ListView_GetItemText(hList, courRow, 1, subject, SIZEOF(subject));
- ListView_GetItemText(hList, courRow, 2, size, SIZEOF(size));
- ListView_GetItemText(hList, courRow, 3, date, SIZEOF(date));
- sizeNeeded += 5+wcslen(from)+wcslen(subject)+wcslen(size)+wcslen(date);
- }
- if (!sizeNeeded) {
-#ifdef _DEBUG
- MessageBox(hDlg,"Nothing To Copy","Debug MailBrowser",0);
-#endif
- } else if(OpenClipboard(hDlg)){
- EmptyClipboard();
- HGLOBAL hData=GlobalAlloc(GMEM_MOVEABLE,(sizeNeeded+1)*sizeof(WCHAR));
- WCHAR *buff = (WCHAR *)GlobalLock(hData);
- int courPos = 0;
- for (courRow=0;courRow<numRows;courRow++){
- if ((nReturnCmd==1) && (ListView_GetItemState(hList, courRow, LVIS_SELECTED)==0)) continue;
- ListView_GetItemText(hList, courRow, 0, from, SIZEOF(from));
- ListView_GetItemText(hList, courRow, 1, subject, SIZEOF(subject));
- ListView_GetItemText(hList, courRow, 2, size, SIZEOF(size));
- ListView_GetItemText(hList, courRow, 3, date, SIZEOF(date));
- courPos += swprintf(&buff[courPos],L"%s\t%s\t%s\t%s\r\n",from,subject,size,date);
- }
- GlobalUnlock(hData);
- SetClipboardData(CF_UNICODETEXT,hData);
- CloseClipboard();
- }
- }
- }
- } }
- break; // just in case
- default:
- return 0;
- }
-// return DefWindowProc(hDlg,msg,wParam,lParam);
- return 0;
-}
-
-LRESULT CALLBACK ListViewSubclassProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- HWND hwndParent = GetParent(hDlg);
-
- switch(msg) {
- case WM_GETDLGCODE :
- {
- LPMSG lpmsg;
- if ( ( lpmsg = (LPMSG)lParam ) != NULL ) {
- if ( lpmsg->message == WM_KEYDOWN
- && lpmsg->wParam == VK_RETURN)
- return DLGC_WANTALLKEYS;
- }
- break;
- }
- case WM_KEYDOWN:
- {
-
- BOOL isCtrl = GetKeyState(VK_CONTROL) & 0x8000;
- BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
- BOOL isAlt = GetKeyState(VK_MENU) & 0x8000;
-
- switch (wParam)
- {
- case 'A': // ctrl-a
- if(!isAlt && !isShift && isCtrl) SendMessage(hwndParent,WM_COMMAND,IDC_BTNCHECKALL,0);
- break;
- case VK_RETURN:
- case VK_SPACE:
- if(!isAlt && !isShift && !isCtrl) SendMessage(hwndParent,WM_YAMN_SHOWSELECTED,0,0);
- break;
- case VK_DELETE:
- SendMessage(hwndParent,WM_COMMAND,IDC_BTNDEL,0);
- break;
- }
-
- break;
-
- }
- }
- return CallWindowProc(OldListViewSubclassProc, hDlg, msg, wParam, lParam);
-}
-
-DWORD WINAPI MailBrowser(LPVOID Param)
-{
- MSG msg;
-
- HWND hMailBrowser;
- BOOL WndFound=FALSE;
- HACCOUNT ActualAccount;
- struct MailBrowserWinParam MyParam;
-
- MyParam=*(struct MailBrowserWinParam *)Param;
- ActualAccount=MyParam.account;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:Incrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCIncFcn(ActualAccount->UsingThreads);
-
-// we will not use params in stack anymore
- SetEvent(MyParam.ThreadRunningEV);
-
- __try
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:ActualAccountSO-read wait failed\n");
- #endif
- return 0;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:ActualAccountSO-read enter\n");
- #endif
- if(!(ActualAccount->AbilityFlags & YAMN_ACC_BROWSE))
- {
- MyParam.nflags=MyParam.nflags & ~YAMN_ACC_MSG;
- MyParam.nnflags=MyParam.nnflags & ~YAMN_ACC_MSG;
- }
- if(!(ActualAccount->AbilityFlags & YAMN_ACC_POPUP))
- MyParam.nflags=MyParam.nflags & ~YAMN_ACC_POP;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
-
- if(NULL!=(hMailBrowser=WindowList_Find(YAMNVar.NewMailAccountWnd,ActualAccount)))
- WndFound=TRUE;
- if((hMailBrowser==NULL) && ((MyParam.nflags & YAMN_ACC_MSG) || (MyParam.nflags & YAMN_ACC_ICO) || (MyParam.nnflags & YAMN_ACC_MSG)))
- {
- hMailBrowser=CreateDialogParamW(YAMNVar.hInst,MAKEINTRESOURCEW(IDD_DLGVIEWMESSAGES),NULL,(DLGPROC)DlgProcYAMNMailBrowser,(LPARAM)&MyParam);
- SendMessageW(hMailBrowser,WM_SETICON,(WPARAM)ICON_BIG,(LPARAM)hYamnIcons[2]);
- SendMessageW(hMailBrowser,WM_SETICON,(WPARAM)ICON_SMALL,(LPARAM)hYamnIcons[2]);
- MoveWindow(hMailBrowser,PosX,PosY,SizeX,SizeY,TRUE);
- }
-
- if(hMailBrowser!=NULL)
- {
- struct CChangeContent Params={MyParam.nflags,MyParam.nnflags}; //if this thread created window, just post message to update mails
-
- SendMessageW(hMailBrowser,WM_YAMN_CHANGECONTENT,(WPARAM)ActualAccount,(LPARAM)&Params); //we ensure this will do the thread who created the browser window
- }
- else
- UpdateMails(NULL,ActualAccount,MyParam.nflags,MyParam.nnflags); //update mails without displaying or refreshing any window
-
- if((hMailBrowser!=NULL) && !WndFound) //we process message loop only for thread that created window
- {
- while(GetMessage(&msg,NULL,0,0))
- {
- if(!IsDialogMessage(hMailBrowser, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- }
-
- if((!WndFound) && (ActualAccount->Plugin->Fcn!=NULL) && (ActualAccount->Plugin->Fcn->WriteAccountsFcnPtr!=NULL) && ActualAccount->AbleToWork)
- ActualAccount->Plugin->Fcn->WriteAccountsFcnPtr();
- }
- __finally
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"MailBrowser:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCDecFcn(ActualAccount->UsingThreads);
- }
- return 1;
-}
-
-INT_PTR RunMailBrowserSvc(WPARAM wParam,LPARAM lParam)
-{
- DWORD tid;
- //an event for successfull copy parameters to which point a pointer in stack for new thread
- HANDLE ThreadRunningEV;
- PYAMN_MAILBROWSERPARAM Param=(PYAMN_MAILBROWSERPARAM)wParam;
-
- if((DWORD)lParam!=YAMN_MAILBROWSERVERSION)
- return 0;
-
- if(NULL!=(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- {
- HANDLE NewThread;
-
- Param->ThreadRunningEV=ThreadRunningEV;
- if(NULL!=(NewThread=CreateThread(NULL,0,MailBrowser,Param,0,&tid)))
- {
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- CloseHandle(ThreadRunningEV);
- return 1;
- }
- return 0;
-}
diff --git a/yamn/debug.cpp b/yamn/debug.cpp
deleted file mode 100644
index 67fbf5c..0000000
--- a/yamn/debug.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * YAMN plugin main file
- * Miranda homepage: http://miranda-icq.sourceforge.net/
- *
- * Debug functions used in DEBUG release (you need to global #define DEBUG to get debug version)
- *
- * (c) majvan 2002-2004
- */
-
-/*#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>*/
-#include "debug.h"
-#ifdef YAMN_DEBUG
-#include "yamn.h"
-#include "version.h"
-
-#if defined (WIN9X)
- #define YAMN_VER "YAMN " YAMN_VERSION_C " (Win9x)"
-#elif defined(WIN2IN1)
- #define YAMN_VER "YAMN " YAMN_VERSION_C " (2in1)"
-#else
- #define YAMN_VER "YAMN " YAMN_VERSION_C " (WinNT)"
-#endif
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-TCHAR DebugUserDirectory[MAX_PATH]=".";
-LPCRITICAL_SECTION FileAccessCS;
-
-#ifdef DEBUG_SYNCHRO
-TCHAR DebugSynchroFileName2[]=_T("%s\\yamn-debug.synchro.log");
-HANDLE SynchroFile;
-#endif
-
-#ifdef DEBUG_COMM
-TCHAR DebugCommFileName2[]=_T("%s\\yamn-debug.comm.log");
-HANDLE CommFile;
-#endif
-
-#ifdef DEBUG_DECODE
-TCHAR DebugDecodeFileName2[]=_T("%s\\yamn-debug.decode.log");
-HANDLE DecodeFile;
-#endif
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-void InitDebug()
-{
-#if defined (DEBUG_SYNCHRO) || defined (DEBUG_COMM) || defined (DEBUG_DECODE)
- TCHAR DebugFileName[MAX_PATH];
-#endif
- if(FileAccessCS==NULL)
- {
- FileAccessCS=new CRITICAL_SECTION;
- InitializeCriticalSection(FileAccessCS);
- }
-
-#ifdef DEBUG_SYNCHRO
- _stprintf(DebugFileName,DebugSynchroFileName2,DebugUserDirectory);
-
- SynchroFile=CreateFile(DebugFileName,GENERIC_WRITE,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,0,NULL);
- DebugLog(SynchroFile,"Synchro debug file created by %s\n",YAMN_VER);
-#endif
-
-#ifdef DEBUG_COMM
- _stprintf(DebugFileName,DebugCommFileName2,DebugUserDirectory);
-
- CommFile=CreateFile(DebugFileName,GENERIC_WRITE,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,0,NULL);
- DebugLog(CommFile,"Communication debug file created by %s\n",YAMN_VER);
-#endif
-
-#ifdef DEBUG_DECODE
- _stprintf(DebugFileName,DebugDecodeFileName2,DebugUserDirectory);
-
- DecodeFile=CreateFile(DebugFileName,GENERIC_WRITE,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,0,NULL);
- DebugLog(DecodeFile,"Decoding kernel debug file created by %s\n",YAMN_VER);
-#endif
-}
-
-void UnInitDebug()
-{
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"File is being closed normally.");
- CloseHandle(SynchroFile);
-#endif
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"File is being closed normally.");
- CloseHandle(CommFile);
-#endif
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"File is being closed normally.");
- CloseHandle(DecodeFile);
-#endif
-}
-
-
-void DebugLog(HANDLE File,const char *fmt,...)
-{
- char *str;
- char tids[32];
- va_list vararg;
- int strsize;
- DWORD Written;
-
- va_start(vararg,fmt);
- str=(char *)malloc(strsize=65536);
- _stprintf(tids,_T("[%x]"),GetCurrentThreadId());
- while(_vsnprintf(str,strsize,fmt,vararg)==-1)
- str=(char *)realloc(str,strsize+=65536);
- va_end(vararg);
- EnterCriticalSection(FileAccessCS);
- WriteFile(File,tids,(DWORD)strlen(tids),&Written,NULL);
- WriteFile(File,str,(DWORD)strlen(str),&Written,NULL);
- LeaveCriticalSection(FileAccessCS);
- free(str);
-}
-
-void DebugLogW(HANDLE File,const WCHAR *fmt,...)
-{
- WCHAR *str;
- char tids[32];
- va_list vararg;
- int strsize;
- DWORD Written;
-
- va_start(vararg,fmt);
- str=(WCHAR *)malloc((strsize=65536)*sizeof(WCHAR));
- _stprintf(tids,_T("[%x]"),GetCurrentThreadId());
- while(_vsnwprintf(str,strsize,fmt,vararg)==-1)
- str=(WCHAR *)realloc(str,(strsize+=65536)*sizeof(WCHAR));
- va_end(vararg);
- EnterCriticalSection(FileAccessCS);
- WriteFile(File,tids,(DWORD)strlen(tids),&Written,NULL);
- WriteFile(File,str,(DWORD)wcslen(str)*sizeof(WCHAR),&Written,NULL);
- LeaveCriticalSection(FileAccessCS);
- free(str);
-}
-
-#endif //ifdef DEBUG \ No newline at end of file
diff --git a/yamn/debug.h b/yamn/debug.h
deleted file mode 100644
index df69772..0000000
--- a/yamn/debug.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef __DEBUG_H
-#define __DEBUG_H
-
-// #define YAMN_DEBUG
-
-//#define YAMN_VER_BETA
-//#define YAMN_VER_BETA_CRASHONLY
-
-#ifdef YAMN_DEBUG
-
-//#pragma comment(lib, "th32.lib")
-
-#if !defined(_WIN32_WINNT)
-#define _WIN32_WINNT 0x0501 // WinXP only
-#endif
-#define VC_EXTRALEAN
-#include <windows.h>
-#include <tlhelp32.h>
-#include <stdio.h>
-#include <shlwapi.h>
-
-//#define DEBUG_SYNCHRO //debug synchro to a file
-//#define DEBUG_COMM //debug communiation to a file
-//#define DEBUG_DECODE //debug header decoding to a file
-//#define DEBUG_DECODECODEPAGE //add info about codepage used in conversion
-//#define DEBUG_DECODEBASE64 //add info about base64 result
-//#define DEBUG_DECODEQUOTED //add info about quoted printable result
-//#define DEBUG_FILEREAD //debug file reading to message boxes
-//#define DEBUG_FILEREADMESSAGES //debug file reading messages to message boxes
-
-void DebugLog(HANDLE,const char *fmt,...);
-void DebugLogW(HANDLE File,const WCHAR *fmt,...);
-
-#ifdef DEBUG_SYNCHRO
-// Used for synchronization debug
-extern HANDLE SynchroFile;
-#endif
-
-#ifdef DEBUG_COMM
-// Used for communication debug
-extern HANDLE CommFile;
-#endif
-
-#ifdef DEBUG_DECODE
-// Used for decoding debug
-extern HANDLE DecodeFile;
-#endif
-
-#if defined(DEBUG_FILEREAD) || defined(DEBUG_FILEREADMESSAGES)
-DWORD ReadStringFromMemory(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo,TCHAR *DebugString);
- #ifndef UNICODE
-DWORD ReadStringFromMemoryW(TCHAR **Parser,TCHAR *End,TCHAR **StoreTo,TCHAR *DebugString);
- #else
-#define ReadStringFromMemoryW ReadStringFromMemory
- #endif
-#endif
-
-//#ifdef DEBUG_ACCOUNTS
-//int GetAccounts();
-//void WriteAccounts();
-//#endif
-
-#endif //YAMN_DEBUG
-#endif //_DEBUG_H
diff --git a/yamn/docs/InstallScript.xml b/yamn/docs/InstallScript.xml
deleted file mode 100644
index 33d8ac9..0000000
--- a/yamn/docs/InstallScript.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<installscript>
- <info>
- <name>Yet Another Mail Notifier</name>
- <author>majvan</author>
- <version>0.2.4.7</version>
- <type>Plugin</type>
- </info>
-
- <packageinfo>
- <title>Plugin</title>
- <file>YAMN.dll</file>
- </packageinfo>
-
- <packageinfo>
- <optional/>
- <title>Documentation</title>
- <file>YAMN-Readme.txt</file>
- <file>YAMN-License.txt</file>
- <document/>
- </packageinfo>
-
- <packageinfo>
- <optional/>
- <title>Developers Information</title>
- <file>YAMN-Readme.developers.txt</file>
- <document/>
- </packageinfo>
-
- <packageinfo>
- <optional/>
- <title>Simple filter plugin</title>
- <file>YAMN\simple.dll</file>
- <file>YAMN\simple-readme.txt</file>
- </packageinfo>
-
- <packageinfo>
- <optional/>
- <title>Base filter plugin</title>
- <file>YAMN\base.dll</file>
- <file>YAMN\base-readme.txt</file>
- </packageinfo>
-
- <autorun>
- <file>YAMN-Readme.txt</file>
- <document/>
- </autorun>
-
-</installscript>
diff --git a/yamn/docs/YAMN-License.txt b/yamn/docs/YAMN-License.txt
deleted file mode 100644
index 7f11610..0000000
--- a/yamn/docs/YAMN-License.txt
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- 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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/yamn/docs/YAMN-Readme.developers.txt b/yamn/docs/YAMN-Readme.developers.txt
deleted file mode 100644
index fdb3387..0000000
--- a/yamn/docs/YAMN-Readme.developers.txt
+++ /dev/null
@@ -1,205 +0,0 @@
-==================================================================================
-= YAMN plugin for Miranda (short readme for developers) =
-==================================================================================
-Hello developer! :)
-I hope YAMN will give you what you find, but you can also improve YAMN.
-
-This readme gives you some info about YAMN. Please read it first before you are
-going to look at YAMN sources.
-
-YAMN provides two types of plugins now: protocol plugins and filter plugins.
-
-
-1. What do you need to make your protocol plugin cooperating with YAMN
- -------------------------------------------------------------------
-
- If you want to cooperate with YAMN, you have to do some things. YAMN offers you some services,
- so your work is easier, but YAMN needs some things to be done for proper work. These limits go
- according thread synchronization and memory mutual exclusion.
-
- YAMN offers you two types of services. Exported functions and Miranda services. Miranda
- services are described in header files, exported functions are described in cpp files. All
- exported functions in YAMN have the suffix Fcn, so you can easy get if the function is
- exported. Using exported functions is more difficult than using miranda services, but after
- solving some definitions, the work with exported functions is more clear and easier. Miranda
- services from YAMN are for miscellaneus functions. The fact Miranda service uses only two
- parameters and therefore is sometimes very unsuitable leads us to make exported functions.
- Exported functions are divided in several parts: synchronizing functions (used for thread
- and account synchronization) and MIME functions (used to work with MIME
- messages).
-
- Miranda services are used through Miranda CallService function. YAMN exported functions are avialable
- when registering plugin. Then YAMN gives you its table of exported functions.
-
- How to write write your protocol plugin for YAMN? The best way for you is to look at
- internal POP3 protocol, where all info about this is written. At start, you need to register
- plugin (it is done in two steps- registering and inserting to YAMN), then get pointers to
- YAMN's exported functions (using Miranda's service MS_YAMN_GETFCN) you will need in your
- protocol plugin. These are the first steps you should do when implementing some plugin to
- YAMN. Next, you should know how YAMN is stuctured. Structures of YAMN are described in
- chapter 2. And, at the end, you should know something about account synchronizing and some
- limitations you have to achieve, if you want your plugin works well.
-
-
-2. YAMN structures and memory organization
- ---------------------------------------
-
- YAMN uses its own structures, that can change in the future. The problem with change is,
- that there can occur some incomapatibilities between YAMN and plugins written for old YAMN
- versions. To avoid problems, YAMN defines versions for services or exported/imported
- functions, where strucutre version information is passed to/from plugins.
-
-
-2.1. Structures of protcol plugin queue
-
- (PYAMN_PROTOPLUGINQUEUE)FirstPlugin---> =(HYAMNPROTOPLUGIN)= ---> =(HYAMNPROTOPLUGIN)= ---> =(HYAMNPROTOPLUGIN)= ---> NULL
- | | | | | | | | |
- | . | | | . | | | . | |
- | . | | | . | | | . | |
- | . | | | . | | | . | |
- -------------------- | |------------------| | |------------------| |
- | Next |--| | Next |--| | Next |--|
- ==================== ==================== ====================
-
- This structure is not needed if you only create protocol plugin for YAMN. YAMN plugin does
- not see and it is not important for it how YAMN works with plugins and how it stores plugins
- data. For plugin is important only handle for its own plugin, returned from
- MS_YAMN_REGISTERPLUGIN service.
-
-
-2.2. Structure of accounts
-
- Every account in YAMN belongs to exact plugin and its members are allocated with
- MS_YAMN_CREATEPLUGINACCOUNT service. This service cooperates with your function, which is
- defined in your function import table. In your function (if you have defined it), you should
- create the whole account. It is because YAMN cannot know which members in structure did you
- add. So you create the whole derived structure. If your fcn is not implemented (NULL in
- import table), YAMN creates standard account structure.
-
- This structure contains information (members) related to YAMN, to plugin and members shared
- between both (plugin and YAMN). Therefore it is needed to synchronize access to members (see
- Ch. 3). Standard YAMN account is defined in m_account.h header file. There's also
- description for every member how it is synchronised. YAMN creates two synchronizing objects
- (SO) to synchronise access to members. In m_synchro.h file, there are definitions for easy
- work with these SO.
-
- Accounts are queued in plugin:
-
- =(HYAMNPLUGIN)= ---> ===(HACCOUNT)=== ---> ===(HACCOUNT)=== ---> ===(HACCOUNT)=== ---> NULL
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | . | | | | | | | | | | |
- | . | | | | | | | | | | |
- | . | | | | | | | | | | |
- | | | |--------------| | |--------------| | |--------------| |
- | (HACCOUNT) | | | Next |--| | Next |--| | Next |--|
- | FirstAccount|--| ================ ================ ================
- |-------------|
- | |
- ===============
-
- Every account has its own back pointer to (HYAMNPLUGIN) in Plugin member, so you can easy
- look at first account, when you have any other account (see m_account.h).
-
-
-2.3. Structure of mails
-
- Account has a pointer to mails. Account's pointer to mails is pointer to first mail in fact
- and mails are queued too:
-
- ==(HACCOUNT)== ---> ==(HYAMNMAIL)== ---> ==(HYAMNMAIL)== ---> ==(HYAMNMAIL)== ---> NULL
- | | | | | | | | | | | |
- | . | | | | | | | | | | |
- | . | | | | | | | | | | |
- | . | | | | | | | | | | |
- | | | |-------------| | |-------------| | |-------------| |
- | (HYAMNMAIL)| | | Next |--| | Next |--| | Next |--|
- | Mails|--| =============== =============== ===============
- |------------|
- | |
- ==============
-
- Standard MIME mail is defined in mails/m_mails.h file.
-
- Plugin can work with accounts in its own way, but note it is needed to synchronize access.
- For better work, YAMN offers you some services and exports functions. Description of
- exported functions is in its declartation; for accounts functions see account.cpp, for mails
- functions see mails/mails.cpp and so on.
-
-
-3. YAMN thread synchronization
- ---------------------------
-
- Because YAMN is multithreaded, more than one thread can access to any member of account
- structure. Therefore access to these members should be synchronised. YAMN offers two types
- of synchronization objects (SO): SCOUNTER (Synchronized Counter) and SWMRG (Single
- Writer/Multiple Readers Guard). To use these objects, you can use exported functions:
-
- SWMRG: WaitToWriteSO, WaitToWriteSOEx, WriteDoneSO, WaitToReadSO, WaitToReadSOEx, ReadDoneSO
- SCOUNTER: SCGetNumber, SCInc, SCDec
-
- To see description for these functions, see m_synchro.h header file and synchro.cpp. Note
- that in HACCOUNT structure, there are 3 synchronizing members, which you have to use if you
- want to access to any member of account structure. All access techniques (writing to members
- and read from members) are used in POP3 protocol plugin. Now, it is important what we have
- to do when we want to make our plugin be synchronized with YAMN (in POP3 protocol it is
- described too).
-
- 1. We have to use ThreadRunningEV event when YAMN calls our checking/deleting function. This
- parameter is to stop YAMN called thread until we do not have copied datas from stack. After
- that, we SetEvent(ThreadRunningEvent) to unblock YAMN to continue in its work.
-
- 2. We have to use UsingThreads account's member. This is only for YAMN account deleting
- prevention. We use this counter to set number of threads using account. If no thread is just
- using account, account is signaled, that it can be deleted (and is deleted when needed).
- This leads us to do some things: We use SCInc(UsingThreads) as the first thing we can do. We
- cannot omit, that called thread finished before we call this function. UsingThreads should
- have "continuous" value greater than zero when using account. E.g. if YAMN creates thread
- for plugin that checks account for new mail, YAMN waits until we set ThreadRunningEV (see
- point 1). After setting this event to signal, that YAMN can continue in its work, we
- increase SCInc(UsingThreads), so we ensure that another thread uses account before YAMN
- thread, that uses this account ends. And SCDec(UsingThreads) should be the last thing we do
- in our thread. If we run another thread in our thread, we should wait until it does not
- SCInc(UsingThreads) and after that we should continue (just like YAMN creates and calls our
- thread).
-
- 3. If we use account's SWMRG (AccountAccessSO, MessagesAccessSO), we should test what our
- function returned. Use the same methods as POP3 protocol does while testing and accessing
- critical section. Note that we cannot use WaitToWriteSO(MyAccount->AccountAccessSO), but in
- easy way we can WaitToWrite(AccountAccess) and for mails
- WaitToWriteSO(MyAccount->MessagesAccessSO) use MsgsWaitToWrite(AccountAccess) and so on. See
- export.h file for these definitions.
-
- 4. Deleting account is quite easy, but in YAMN, it is very problematic operation. If you use
- MS_YAMN_DELETEACCOUNT service, it is the best way to avoid any problem. These problems raise
- from the facts desribed in the point 2.
-
- 5. You should use ctritical sections only for short time not to block other threads. You can
- imagine that users can't browse through mails, because account is blocked by your thread...
-
- All needed infos in POP3 internal protocol plugin (see proto/pop3/pop3comm.cpp), are
- described.
-
-
-4. What do you need to make your filter plugin cooperating with YAMN
- -----------------------------------------------------------------
-
- Filter plugins are very easy to write in its own way, it much more easier than protocol
- plugin. But some things are common: you have to register your plugin and insert to YAMN
- (these are 2 steps, see sources of some filter plugin), You have to import to YAMN your
- filter function. Filter function can do anything with mails, but the most important is, that
- it can set Flags member of mail (see mails/m_mails.h file) to one of YAMN_MSG_SPAMLx.
- Note Mail is in write-access, so your plugin can do anything with mail and avoid the
- synchronization problem.
-
- Now YAMN recognizes 4 spam levels:
- 1. Notifies about this mail, but shows it in mailbrowser with other color than normally
- 2. Does not notify about this mail, shows it in mailbrowser with other color than normally
- 3. Deletes mail from server (depends on protocol), does not notify and shows "this spam was
- deleted"
- 4. Deletes mail from server (depends on protocol), does not notify, does not show in
- mailbrowser
-
- Your plugin can set data for mail in the TranslatedHeader structure, inserting it to the
- queue. This information is stored, so it is reloaded after protocol read mails from book
- file.
diff --git a/yamn/docs/YAMN-Readme.txt b/yamn/docs/YAMN-Readme.txt
deleted file mode 100644
index 901ad22..0000000
--- a/yamn/docs/YAMN-Readme.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-=========================================================
-= YAMN plugin for Miranda readme =
-=========================================================
-Yet Another Mail Notifier
-Checks pop3 accounts for new mail
-
-Advantages:
-- quite small
-- structured in two parts: notifier and protocols
-- unlimited number of accounts
-- international support in Unicode
-- open-source (GNU-GPL)
-POP3:
-- many switches for each account
-- support for MIME standard
-- support for Base64 and Quoted-Printable
-- 100% detection of new mail based on unique message ID
-- multithreaded checking (also with hotkey)
-- deleting mail from server
-- connecting through Miranda proxy
-- secure password authentification
-- SSL support through OpenSSL
-
-WIN9X SUPPORT
--------------
-Win9x users, use unicows.dll library, download it at:
-http://libunicows.sf.net (whole package)
-or just visit http://www.majvan.host.sk/Projekty/YAMN
-and download zip-ed unicows.dll
-All you need is to copy unicows.dll to Windows system32
-directory (or to Miranda home directory). Use Win9x
-version of YAMN, not WinNT version.
-
-SSL SUPPORT
------------
-If you want to use SSL features, you have to download
-OpenSSL libraries on YAMN homepage
-http://www.majvan.host.sk/Projekty/YAMN
-or the latest (stable) version with installer on
-http://www.slproweb.com/products/Win32OpenSSL.html
-Copy *.dll files to Windows system32 directory (or to
-Miranda home directory).
-
-LATEST STABLE
--------------
-Version of YAMN has following structure: w.x.y.z
-z- only some bug fixed or some changes
-y- some new feature added
-x- big feature added
-w- if this changes, YAMN becomes better than Outlook ;-)
-Latest stable plugin is always present to download from YAMN
-homepage.
-
-BETA
-----
-* YAMN-beta version is intended only for testing purposes.
-* Author waits for stability reports. Sometimes author waits not
-only for crash reports, but also for success reports (you are
-informed by message box on startup, if success reports are also
-needed). This is because he has no resources for testing.
-* Please do not send reports if newer beta version is available.
-* Please do not send reports without describing problem detailed.
-* Beta version produces debug files (yamn-debug.*.log) located
-in Miranda home directory (like every YAMN debug release). These
-files are usefull for author to locate the bug (although not
-100%). After Miranda restart, log files are rewritten. Log files
-can become very large (more than 10MB). Sometimes they can be
-cut at the end (contact author).
-IMPORTANT FOR BETA: yamn-debug.comm.log file contains your plain
-password. You should rewrite it.
-Thank you for comprehension.
-
-=========================================================
- Do you want some FAQ? Visit HOMEPAGE:
- http://www.majvan.host.sk/Projekty/YAMN
- Still don't know answer? Write question to guestbook.
-
- majvan
-=========================================================
diff --git a/yamn/docs/language.pop3.txt b/yamn/docs/language.pop3.txt
deleted file mode 100644
index 03fb78e..0000000
--- a/yamn/docs/language.pop3.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-;
-; YAMN-POP3 0.2.4.7 translation file
-;
-;--------------------------------
-; NEW in 0.2.4.7
-;--------------------------------
-
-;--------------------------------
-; CHANGED in 0.2.4.7
-;--------------------------------
-
-;--------------------------------
-; OLD in 0.2.4.7
-;--------------------------------
-;
-; Main
-;
-[Found new version of account book, not compatible with this version of YAMN.]
-[Error reading account file. Account file corrupted.]
-[Memory allocation error while data reading]
-[Reading file error. File already in use?]
-[Error while copying data to disk occured. File in use?]
-[YAMN (internal POP3) read error]
-[POP3 plugin- write file error]
-[Error %d-%d-%d-%d:]
-[Memory allocation error.]
-[Account is about to be stopped.]
-[Cannot connect to POP3 server.]
-[Cannot allocate memory for received data.]
-[Cannot login to POP3 server.]
-[Bad user or password.]
-[Server does not support APOP authorization.]
-[Error while executing POP3 command.]
-[Cannot connect to server with NetLib.]
-[Cannot send data.]
-[Cannot receive data.]
-[Cannot allocate memory for received data.]
-[OpenSSL not loaded.]
-[Windows socket 2.0 init failed.]
-[DNS lookup error.]
-[Error while creating base socket.]
-[Error connecting to server with socket.]
-[Error while creating SSL structure.]
-[Error connecting socket with SSL.]
-[Server rejected connection with SSL.]
-[Cannot write SSL data.]
-[Cannot read SSL data.]
-[Cannot allocate memory for received data.]
-
-;
-; Options
-;
-[Please wait while account is in use.]
-[Please wait while no account is in use.]
-[Time left to next check [s]: %d]
-[Select executable used for notification]
-[Input error]
-[This is not a valid number value]
-[At least one mail notification event must be checked]
-[Please select application to run]
-[Delete]
-[Check this account]
-[Server:]
-[Port:]
-[User:]
-[Password:]
-[APOP auth]
-[Check interval [min]:]
-[Sound notification]
-[Message notification]
-[Tray icon notification]
-[Application execution:]
-[Persistant message]
-[Sound notification if failed]
-[Message notification if failed]
-[Tray icon notification if failed]
-[Default codepage:]
-[Check while:]
-;[Offline]
-;[Online]
-;[Away]
-;[N/A]
-;[Occupied]
-;[DND]
-;[Free for chat]
-;[Invisible]
-;[On the phone]
-;[Out to lunch]
-[Startup check]
-[Default]
-[Reset counter]
-[Account Test]
-[Account Test (failed)]
-[Account Test]
-[You have N new mails]
-[Connection failed message]
-[Popup notification]
-[Popup if no mail]
-[Single popup]
-[Multi popup]
-[Popup notification if failed]
-[Check from menu]
-[New mail notifications]
-[No new mail notifications]
-[Connection failure notifications]
-[Connecting to server]
-[Reading new mails (%d%% done)]
-[Disconnected]
-[Entering POP3 account]
-[Searching for new mail]
-[Deleting requested mails]
-[Deleting spam]
-[Delete account confirmation]
-[Do you really want to delete this account?]
-
-;--------------------------------
-; REMOVED in 0.2.4.7
-;-------------------------------- \ No newline at end of file
diff --git a/yamn/docs/language.txt b/yamn/docs/language.txt
deleted file mode 100644
index 72d1fcd..0000000
--- a/yamn/docs/language.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-;
-; YAMN 0.2.4.7 translation file
-;
-;--------------------------------
-; NEW in 0.2.4.7
-;--------------------------------
-
-;--------------------------------
-; CHANGED in 0.2.4.7
-;--------------------------------
-
-;--------------------------------
-; OLD in 0.2.4.7
-;--------------------------------
-;
-; Main
-;
-[YAMN: new mail]
-[YAMN: connect failed]
-[No new mail, %d spam(s)]
-[No new mail]
-[YAMN uninstalling]
-[Do you also want to remove native YAMN plugins settings?]
-
-;
-; Menu
-;
-[Check &mail (YAMN)]
-[Check mail] ;for TopToolBar plugin
-
-;
-; Options
-;
-[Hotkey for mail check:]
-[TopToolBar button "Check mail"]
-[Installed plugins]
-[Version:]
-[Description:]
-[Copyright:]
-[Contact:]
-[WWW:]
-
-;
-; Mail browser
-;
-[%s - %d new mails, %d total]
-[ - new mail(s)]
-[From]
-[Subject]
-[Size]
-[Run application]
-[Delete selected]
-[Delete confirmation]
-[Do you really want to delete %d selected mails?]
-
-;
-; Bad connection dialog
-;
-[ - connection error]
-[Cannot allocate memory for received data]
-[Bad user name or error while logging]
-[Bad user or password or error while logging]
-[Cannot get number of messages]
-[Cannot resolve message signatures]
-[Cannot get sizes of messages]
-[Cannot find server]
-[Cannot connect to server]
-[System error occured]
-[Cannot send data]
-[Cannot receive data]
-[Unknown error]
-
-;--------------------------------
-; REMOVED in 0.2.4.7
-;-------------------------------- \ No newline at end of file
diff --git a/yamn/filter/Base/AggressiveOptimize.h b/yamn/filter/Base/AggressiveOptimize.h
deleted file mode 100644
index 1bf0e19..0000000
--- a/yamn/filter/Base/AggressiveOptimize.h
+++ /dev/null
@@ -1,168 +0,0 @@
-
-//////////////////////////////
-// Version 1.40
-// October 22nd, 2002 - .NET (VC7, _MSC_VER=1300) support!
-// Version 1.30
-// Nov 24th, 2000
-// Version 1.20
-// Jun 9th, 2000
-// Version 1.10
-// Jan 23rd, 2000
-// Version 1.00
-// May 20th, 1999
-// Todd C. Wilson, Fresh Ground Software
-// (todd@nopcode.com)
-// This header file will kick in settings for Visual C++ 5 and 6 that will (usually)
-// result in smaller exe's.
-// The "trick" is to tell the compiler to not pad out the function calls; this is done
-// by not using the /O1 or /O2 option - if you do, you implicitly use /Gy, which pads
-// out each and every function call. In one single 500k dll, I managed to cut out 120k
-// by this alone!
-// The other two "tricks" are telling the Linker to merge all data-type segments together
-// in the exe file. The relocation, read-only (constants) data, and code section (.text)
-// sections can almost always be merged. Each section merged can save 4k in exe space,
-// since each section is padded out to 4k chunks. This is very noticeable with smaller
-// exes, since you could have only 700 bytes of data, 300 bytes of code, 94 bytes of
-// strings - padded out, this could be 12k of runtime, for 1094 bytes of stuff! For larger
-// programs, this is less overall, but can save at least 4k.
-// Note that if you're using MFC static or some other 3rd party libs, you may get poor
-// results with merging the readonly (.rdata) section - the exe may grow larger.
-// To use this feature, define _MERGE_DATA_ in your project or before this header is used.
-// With Visual C++ 5, the program uses a file alignment of 512 bytes, which results
-// in a small exe. Under VC6, the program instead uses 4k, which is the same as the
-// section size. The reason (from what I understand) is that 4k is the chunk size of
-// the virtual memory manager, and that WinAlign (an end-user tuning tool for Win98)
-// will re-align the programs on this boundary. The problem with this is that all of
-// Microsoft's system exes and dlls are *NOT* tuned like this, and using 4k causes serious
-// exe bloat. This is very noticeable for smaller programs.
-// The "trick" for this is to use the undocumented FILEALIGN linker parm to change the
-// padding from 4k to 1/2k, which results in a much smaller exe - anywhere from 20%-75%
-// depending on the size. Note that this is the same as using /OPT:NOWIN98, which *is*
-// a previously documented switch, but was left out of the docs for some reason in VC6 and
-// all of the current MSDN's - see KB:Q235956 for more information.
-// Microsoft does say that using the 4k alignment will "speed up process loading",
-// but I've been unable to notice a difference, even on my P180, with a very large (4meg) exe.
-// Please note, however, that this will probably not change the size of the COMPRESSED
-// file (either in a .zip file or in an install archive), since this 4k is all zeroes and
-// gets compressed away.
-// Also, the /ALIGN:4096 switch will "magically" do the same thing, even though this is the
-// default setting for this switch. Apparently this sets the same values as the above two
-// switches do. We do not use this in this header, since it smacks of a bug and not a feature.
-// Thanks to Michael Geary <Mike@Geary.com> for some additional tips!
-//
-// Notes about using this header in .NET
-// First off, VC7 does not allow a lot of the linker command options in pragma's. There is no
-// honest or good reason why Microsoft decided to make this change, it just doesn't.
-// So that is why there are a lot of <1300 #if's in the header.
-// If you want to take full advantage of the VC7 linker options, you will need to do it on a
-// PER PROJECT BASIS; you can no longer use a global header file like this to make it better.
-// Items I strongly suggest putting in all your VC7 project linker options command line settings:
-// /ignore:4078 /RELEASE
-// Compiler options:
-// /GL (Whole Program Optimization)
-// If you're making an .EXE and not a .DLL, consider adding in:
-// /GA (Optimize for Windows Application)
-// Some items to consider using in your VC7 projects (not VC6):
-// Link-time Code Generation - whole code optimization. Put this in your exe/dll project link settings.
-// /LTCG:NOSTATUS
-// The classic no-padding and no-bloat compiler C/C++ switch:
-// /opt:nowin98
-//
-// (C++ command line options: /GL /opt:nowin98 and /GA for .exe files)
-// (Link command line options: /ignore:4078 /RELEASE /LTCG:NOSTATUS)
-//
-// Now, notes on using these options in VC7 vs VC6.
-// VC6 consistently, for me, produces smaller code from C++ the exact same sources,
-// with or without this header. On average, VC6 produces 5% smaller binaries compared
-// to VC7 compiling the exact same project, *without* this header. With this header, VC6
-// will make a 13k file, while VC7 will make a 64k one. VC7 is just bloaty, pure and
-// simple - all that managed/unmanaged C++ runtimes, and the CLR stuff must be getting
-// in the way of code generation. However, template support is better, so there.
-// Both VC6 and VC7 show the same end kind of end result savings - larger binary output
-// will shave about 2% off, where as smaller projects (support DLL's, cpl's,
-// activex controls, ATL libs, etc) get the best result, since the padding is usually
-// more than the actual usable code. But again, VC7 does not compile down as small as VC6.
-//
-// The argument can be made that doing this is a waste of time, since the "zero bytes"
-// will be compressed out in a zip file or install archive. Not really - it doesn't matter
-// if the data is a string of zeroes or ones or 85858585 - it will still take room (20 bytes
-// in a zip file, 29 bytes if only *4* of them 4k bytes are not the same) and time to
-// compress that data and decompress it. Also, 20k of zeros is NOT 20k on disk - it's the
-// size of the cluster slop- for Fat32 systems, 20k can be 32k, NTFS could make it 24k if you're
-// just 1 byte over (round up). Most end users do not have the dual P4 Xeon systems with
-// two gigs of RDram and a Raid 0+1 of Western Digital 120meg Special Editions that all
-// worthy developers have (all six of us), so they will need any space and LOADING TIME
-// savings they will need; taking an extra 32k or more out of your end user's 64megs of
-// ram on Windows 98 is Not a Good Thing.
-//
-// Now, as a ADDED BONUS at NO EXTRA COST TO YOU! Under VC6, using the /merge:.text=.data
-// pragma will cause the output file to be un-disassembleable! (is that a word?) At least,
-// with the normal tools - WinDisam, DumpBin, and the like will not work. Try it - use the
-// header, compile release, and then use DUMPBIN /DISASM filename.exe - no code!
-// Thanks to Gëzim Pani <gpani@siu.edu> for discovering this gem - for a full writeup on
-// this issue and the ramifactions of it, visit www.nopcode.com for the Aggressive Optimize
-// article.
-
-#ifndef _AGGRESSIVEOPTIMIZE_H_
-#define _AGGRESSIVEOPTIMIZE_H_
-
-#pragma warning(disable:4711)
-
-#ifdef NDEBUG
-// /Og (global optimizations), /Os (favor small code), /Oy (no frame pointers)
-#pragma optimize("gsy",on)
-
-#if (_MSC_VER<1300)
- #pragma comment(linker,"/RELEASE")
-#endif
-
-/*
-// Note that merging the .rdata section will result in LARGER exe's if you using
-// MFC (esp. static link). If this is desirable, define _MERGE_RDATA_ in your project.
-#ifdef _MERGE_RDATA_
-#pragma comment(linker,"/merge:.rdata=.data")
-#endif // _MERGE_RDATA_
-
-#pragma comment(linker,"/merge:.text=.data")
-#if (_MSC_VER<1300)
- // In VC7, this causes problems with the relocation and data tables, so best to not merge them
- #pragma comment(linker,"/merge:.reloc=.data")
-#endif
-*/
-
-// Merging sections with different attributes causes a linker warning, so
-// turn off the warning. From Michael Geary. Undocumented, as usual!
-#if (_MSC_VER<1300)
- // In VC7, you will need to put this in your project settings
- #pragma comment(linker,"/ignore:4078")
-#endif
-
-// With Visual C++ 5, you already get the 512-byte alignment, so you will only need
-// it for VC6, and maybe later.
-#if _MSC_VER >= 1000
-
-// Option #1: use /filealign
-// Totally undocumented! And if you set it lower than 512 bytes, the program crashes.
-// Either leave at 0x200 or 0x1000
-//#pragma comment(linker,"/FILEALIGN:0x200")
-
-// Option #2: use /opt:nowin98
-// See KB:Q235956 or the READMEVC.htm in your VC directory for info on this one.
-// This is our currently preferred option, since it is fully documented and unlikely
-// to break in service packs and updates.
-#if (_MSC_VER<1300)
- // In VC7, you will need to put this in your project settings
- #pragma comment(linker,"/opt:nowin98")
-#else
-
-// Option #3: use /align:4096
-// A side effect of using the default align value is that it turns on the above switch.
-// Does nothing under Vc7 that /opt:nowin98 doesn't already give you
-// #pragma comment(linker,"/ALIGN:512")
-#endif
-
-#endif // _MSC_VER >= 1000
-
-#endif // NDEBUG
-
-#endif // _AGGRESSIVEOPTIMIZE_H_
diff --git a/yamn/filter/Base/Base.dsp b/yamn/filter/Base/Base.dsp
deleted file mode 100644
index 7231712..0000000
--- a/yamn/filter/Base/Base.dsp
+++ /dev/null
@@ -1,108 +0,0 @@
-# Microsoft Developer Studio Project File - Name="Base" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** NICHT BEARBEITEN **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=Base - Win32 Release
-!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
-!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
-!MESSAGE
-!MESSAGE NMAKE /f "Base.mak".
-!MESSAGE
-!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
-!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
-!MESSAGE
-!MESSAGE NMAKE /f "Base.mak" CFG="Base - Win32 Release"
-!MESSAGE
-!MESSAGE Für die Konfiguration stehen zur Auswahl:
-!MESSAGE
-!MESSAGE "Base - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "Base - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "Base - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /G4 /Zp4 /MD /W3 /GX /Zi /O1 /Ob0 /I "../../../../include" /I "../../../../include/msapi" /I "../../../../include_API" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE RSC /l 0x417 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /machine:I386 /out:"../../../../bin/release/plugins/YAMN-filter/Base.dll" /filealign:512
-# ADD LINK32 kernel32.lib user32.lib /nologo /dll /pdb:"../../../../bin/Release/plugins/YAMN/base.pdb" /debug /machine:I386 /out:"../../../../bin/Release/plugins/YAMN/base.dll" /filealign:512
-
-!ELSEIF "$(CFG)" == "Base - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /I "../../../../include/msapi" /I "../../../../include_API" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x417 /d "_DEBUG"
-# ADD RSC /l 0x417 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN-filter/Base.dll"
-# ADD LINK32 kernel32.lib user32.lib /nologo /dll /pdb:"../../../../bin/Debug/plugins/YAMN/base.pdb" /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN/base.dll" /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "Base - Win32 Release"
-# Name "Base - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\debug.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\maindll.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yamn/filter/Base/Base.mak b/yamn/filter/Base/Base.mak
deleted file mode 100644
index 75ec59d..0000000
--- a/yamn/filter/Base/Base.mak
+++ /dev/null
@@ -1,229 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on Base.dsp
-!IF "$(CFG)" == ""
-CFG=Base - Win32 Release
-!MESSAGE No configuration specified. Defaulting to Base - Win32 Release.
-!ENDIF
-
-!IF "$(CFG)" != "Base - Win32 Release" && "$(CFG)" != "Base - Win32 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Base.mak" CFG="Base - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Base - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "Base - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-
-!IF "$(CFG)" == "Base - Win32 Release"
-
-OUTDIR=.\Release
-INTDIR=.\Release
-
-ALL : "..\..\..\..\bin\release\plugins\YAMN-filter\base.dll"
-
-
-CLEAN :
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\maindll.obj"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(OUTDIR)\base.exp"
- -@erase "..\..\..\..\bin\release\plugins\YAMN-filter\base.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\Base.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\Base.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\base.pdb" /machine:I386 /out:"../../../../bin/release/plugins/YAMN-filter/base.dll" /implib:"$(OUTDIR)\base.lib" /filealign:512
-LINK32_OBJS= \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\maindll.obj"
-
-"..\..\..\..\bin\release\plugins\YAMN-filter\base.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "Base - Win32 Debug"
-
-OUTDIR=.\Debug
-INTDIR=.\Debug
-# Begin Custom Macros
-OutDir=.\Debug
-# End Custom Macros
-
-ALL : "..\..\..\..\bin\Debug\plugins\YAMN-filter\Base.dll" "$(OUTDIR)\Base.bsc"
-
-
-CLEAN :
- -@erase "$(INTDIR)\debug.obj"
- -@erase "$(INTDIR)\debug.sbr"
- -@erase "$(INTDIR)\maindll.obj"
- -@erase "$(INTDIR)\maindll.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\vc60.pdb"
- -@erase "$(OUTDIR)\Base.bsc"
- -@erase "$(OUTDIR)\Base.exp"
- -@erase "$(OUTDIR)\Base.pdb"
- -@erase "..\..\..\..\bin\Debug\plugins\YAMN-filter\Base.dll"
- -@erase "..\..\..\..\bin\Debug\plugins\YAMN-filter\Base.ilk"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\Base.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\Base.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\debug.sbr" \
- "$(INTDIR)\maindll.sbr"
-
-"$(OUTDIR)\Base.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\Base.pdb" /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN-filter/Base.dll" /implib:"$(OUTDIR)\Base.lib"
-LINK32_OBJS= \
- "$(INTDIR)\debug.obj" \
- "$(INTDIR)\maindll.obj"
-
-"..\..\..\..\bin\Debug\plugins\YAMN-filter\Base.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("Base.dep")
-!INCLUDE "Base.dep"
-!ELSE
-!MESSAGE Warning: cannot find "Base.dep"
-!ENDIF
-!ENDIF
-
-
-!IF "$(CFG)" == "Base - Win32 Release" || "$(CFG)" == "Base - Win32 Debug"
-SOURCE=.\debug.cpp
-
-!IF "$(CFG)" == "Base - Win32 Release"
-
-
-"$(INTDIR)\debug.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "Base - Win32 Debug"
-
-
-"$(INTDIR)\debug.obj" "$(INTDIR)\debug.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-SOURCE=.\maindll.cpp
-
-!IF "$(CFG)" == "Base - Win32 Release"
-
-
-"$(INTDIR)\maindll.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "Base - Win32 Debug"
-
-
-"$(INTDIR)\maindll.obj" "$(INTDIR)\maindll.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-
-!ENDIF
-
diff --git a/yamn/filter/Base/debug.cpp b/yamn/filter/Base/debug.cpp
deleted file mode 100644
index 654ece7..0000000
--- a/yamn/filter/Base/debug.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copied from YAMN plugin
- *
- * (c) majvan 2002-2004
- */
-#ifdef DEBUG_FILTER
-
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-TCHAR DebugUserDirectory[MAX_PATH]=".";
-LPCRITICAL_SECTION FileAccessCS;
-
-void DebugLog(HANDLE File,const char *fmt,...);
-
-#ifdef DEBUG_FILTER
-TCHAR DebugFilterFileName2[]=_T("%s\\yamn-debug.basefilter.log");
-HANDLE FilterFile=INVALID_HANDLE_VALUE;
-#endif
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-void InitDebug()
-{
- TCHAR DebugFileName[MAX_PATH];
-
- if(FileAccessCS==NULL)
- {
- FileAccessCS=new CRITICAL_SECTION;
- InitializeCriticalSection(FileAccessCS);
- }
-
- _stprintf(DebugFileName,DebugFilterFileName2,DebugUserDirectory);
-
- FilterFile=CreateFile(DebugFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
-
- DebugLog(FilterFile,"Base filter plugin for YAMN - debug file\n");
-}
-
-void UnInitDebug()
-{
- DebugLog(FilterFile,"File is being closed normally.");
- CloseHandle(FilterFile);
-}
-
-void DebugLog(HANDLE File,const char *fmt,...)
-{
- char *str;
- char tids[32];
- va_list vararg;
- int strsize;
- DWORD Written;
-
- va_start(vararg,fmt);
- str=(char *)malloc(strsize=65536);
- _stprintf(tids,_T("[%x]"),GetCurrentThreadId());
- while(_vsnprintf(str,strsize,fmt,vararg)==-1)
- str=(char *)realloc(str,strsize+=65536);
- va_end(vararg);
- EnterCriticalSection(FileAccessCS);
- WriteFile(File,tids,(DWORD)strlen(tids),&Written,NULL);
- WriteFile(File,str,(DWORD)strlen(str),&Written,NULL);
- LeaveCriticalSection(FileAccessCS);
- free(str);
-}
-
-#endif //ifdef DEBUG \ No newline at end of file
diff --git a/yamn/filter/Base/docs/base-readme.txt b/yamn/filter/Base/docs/base-readme.txt
deleted file mode 100644
index 2e79bbb..0000000
--- a/yamn/filter/Base/docs/base-readme.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-========================
-= Base Filter for YAMN =
-========================
-
-Q: What???
-A: YAMN filter to classify incoming email.
-
-Q: How?
-A: Finding occurency of defiend MIME header item and its value from blacklist file.
-
-Q: Blacklist file?
-A: Yes. It is created by yourself and located in Miranda directory with name 'basefilterdeny.txt'
-
-Q: Created by myself?
-A: Just create the file and write there your header MIME items and its values.
-
-Q: What do you mean "header MIME items" and "its values"?
-A: Every mail has header consisting of MIME items like "Subject" or "Return-Path".
-
-Q: So I need to understand how the header looks like...
-A: Yes, if you want to use this filter, you should. Header MIME is defined in RFC822 standard.
-
-Q: Ok, I've just studied it. So how to set filter (write some rules to the blacklist file)?
-A: Each line is one rule: write the exact item, press <tab>, press the substring of value needed to be found, press <tab>, define spamlevel and then press <Enter>.
-
-Q: Spamlevel?
-A: Yes.
- 0=do not notify
- 1=notify, display with another color in mailbrowser
- 2=do not notify, display with another color in mailbrowser
- 3=delete, display in mailbrowser about deleted mail
- 4=delete, do not display (mail's quick death, hehe)
-
-Q: So the rule has 3 parameters, that's it?
-A: Yes. This is the example:
-<------ start of file ------>
-From CrazyMail 1
-X-Importance low 0
-Subject LinuxMailList 0
-Return-Path cheapsoftware@junkmails.net 2
-X-TextClassification spam 3
-<------ end of file ------->
-
-Q: Wait while. Ok, but it does not work.
-A: Check if you have this plugin listed in Miranda/Options/Plugins/YAMN item
-
-Q: No, it is not listed in YAMN plugins.
-A: Then check if the dll residents in Plugins/YAMN direcotry.
-
-Q: This directory does not exists.
-A: Create it and put the dll there. Restart Miranda.
-
-Q: Hmmm, ok. But it is not still listed.
-A: Your version of YAMN and filter does not match.
-
-Q: And?
-A: Try to look to http://www.majvan.host.sk/Projekty/YAMN for updates.
-
-Q: Now, it is listed, but does not work anyway.
-A: Try to download debug version from YAMN homepage, if you are not using it (the name of filter must contain the word "debug")
-
-Q: What does debug version do?
-A: It creates debug log file in Miranda home directory where you can browse how does filter mark mails. \ No newline at end of file
diff --git a/yamn/filter/Base/maindll.cpp b/yamn/filter/Base/maindll.cpp
deleted file mode 100644
index 6affd00..0000000
--- a/yamn/filter/Base/maindll.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-//---------------------------------------------------------------------------
-#include <windows.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <newpluginapi.h>
-#include <m_system.h>
-#include <m_langpack.h>
-#include <m_options.h>
-#include "../../m_filterplugin.h"
-#if !defined(_WIN64)
- #include "aggressiveoptimize.h"
-#endif
-
-typedef INT_PTR(* MIRANDASERVICE)(WPARAM,LPARAM);
-
-DWORD WINAPI FilterMail(HACCOUNT Account,DWORD AccountVer,HYAMNMAIL Mail,DWORD MailVer);//Function marks mail as spam when it is spam...
-DWORD WINAPI UnLoadFilter(LPVOID);
-
-int LoadRules(); //Load rules from file
-int findsubstr(char *original,char *pattern); //finds if original contains substring
-
-YAMN_FILTERIMPORTFCN FilterFunctions= //we set for YAMN which is our filter function
-{
- FilterMail,
- UnLoadFilter,
-};
-
-struct cFilterTable
-{
- char account[256];
- char name[256];
- char value[256];
- unsigned char sl;
-} *ft=NULL;
-int fts=0;
-
-YAMN_FILTERREGISTRATION FilterRegistration= //classical YAMN registration
-{
-#ifdef DEBUG_FILTER
- "Base filter plugin for YAMN (debug)",
-#else
- "Base filter plugin for YAMN",
-#endif
- __DATE__,
- "© majvan",
- "Classifies mails using the rules stored in file",
- "om3tn@psg.sk",
- "http://www.majvan.host.sk/Projekty/YAMN?fm=soft",
-};
-
-char *FilterPath=NULL;
-
-struct YAMNExportedFcn
-{
- YAMN_SETFILTERPLUGINFCNIMPORTFCN SetFilterPluginFcnImportFcn;
- MIRANDASERVICE RegisterFilterPlugin;
-} YAMNFcn,*pYAMNFcn; //exported functions from YAMN we will use
-
-HYAMNFILTERPLUGIN POPFilePlugin; //handle of this plugin for YAMN
-HINSTANCE hInst; //handle of this DLL for Windows
-
-#ifdef DEBUG_FILTER
-extern void InitDebug();
-extern void UnInitDebug();
-extern void DebugLog(HANDLE File,const char *fmt,...);
-extern HANDLE FilterFile;
-#endif
-
-extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
-{
- hInst=hinstDLL;
- return true;
-}
-
-extern "C" int __declspec(dllexport) LoadFilter(MIRANDASERVICE GetYAMNFcnPtr)
-{
- FilterPath=new char[MAX_PATH];
- char *delim;
- pYAMNFcn=&YAMNFcn;
-
- GetModuleFileName(GetModuleHandle(NULL),FilterPath,MAX_PATH);
- if(NULL!=(delim=strrchr(FilterPath,'\\')))
- *delim=0;
- lstrcat(FilterPath,"\\basefilterdeny.txt");
-#ifdef DEBUG_FILTER
- InitDebug();
-#endif
-
- if(!LoadRules())
- return 0;
-
- pYAMNFcn->RegisterFilterPlugin=(MIRANDASERVICE)GetYAMNFcnPtr((WPARAM)MS_YAMN_REGISTERFILTERPLUGIN,(LPARAM)0);
- pYAMNFcn->SetFilterPluginFcnImportFcn=(YAMN_SETFILTERPLUGINFCNIMPORTFCN)GetYAMNFcnPtr((WPARAM)YAMN_SETFILTERPLUGINFCNIMPORTID,(LPARAM)0);
-//Register our filter plugin to YAMN
- if(NULL==(POPFilePlugin=(HYAMNFILTERPLUGIN)pYAMNFcn->RegisterFilterPlugin((WPARAM)&FilterRegistration,(LPARAM)YAMN_FILTERREGISTRATIONVERSION)))
- return 0;
-//And add our imported functions for YAMN
- if(!pYAMNFcn->SetFilterPluginFcnImportFcn(POPFilePlugin,0xb0000000,&FilterFunctions,YAMN_FILTERIMPORTFCNVERSION))
- return 0;
- return 1; //Load luccess
-}
-
-DWORD WINAPI UnLoadFilter(LPVOID)
-{
-#ifdef DEBUG_FILTER
- UnInitDebug();
-#endif
- if(FilterPath!=NULL)
- delete[] FilterPath;
- FilterPath=NULL;
-
- return 0;
-}
-
-extern "C" int __declspec(dllexport) UninstallFilter()
-{
- if(FilterPath==NULL)
- MessageBox(NULL,"Cannot delete blacklist file when Base Filter is not loaded. Please do it manually.","Base Filter uninstalling",MB_OK|MB_ICONWARNING);
- else
- DeleteFile(FilterPath);
- return 0;
-}
-
-
-//And this is main filter function.
-DWORD WINAPI FilterMail(HACCOUNT Account,DWORD AccountVer,HYAMNMAIL Mail,DWORD MailVer)
-{
- struct CMimeItem *Browser;
-
- if(MailVer!=YAMN_MAILVERSION) //we test if we work with the right YAMNMAIL
- return 0;
- if(Mail->MailData==NULL) //MailData should be available
- return 0;
-
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"<New mail>\n");
-#endif
- if(!(Mail->Flags & YAMN_MSG_VIRTUAL))
- for(Browser=Mail->MailData->TranslatedHeader;Browser!=NULL;Browser=Browser->Next) //we browse all header stored in Mail->TranslatedHeader
- {
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"<Testing header item %s: %s>\n",Browser->name,Browser->value);
-#endif
- for(int i=0;i<fts;i++)
- if(!lstrcmpi(Browser->name,ft[i].name))
- {
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"\t\t<Found appropriate selector %s>\n",Browser->name);
-#endif
- if(findsubstr(Browser->value,ft[i].value)) //and if we find
- {
- if((ft[i].sl==0) && ((Mail->Flags & YAMN_MSG_SPAMMASK)==0))
- {
- Mail->Flags&=~(YAMN_MSG_POPUP | YAMN_MSG_SYSTRAY | YAMN_MSG_BROWSER | YAMN_MSG_SOUND | YAMN_MSG_APP | YAMN_MSG_NEVENT);
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"\t\tSetting individual flags not to notify mail, but does not consider as spam.");
-#endif
- }
- else if((Mail->Flags & YAMN_MSG_SPAMMASK) < ft[i].sl) //if some filter plugin set higher level of spam, we do nothing
- {
- Mail->Flags=(Mail->Flags & ~YAMN_MSG_SPAMMASK)+ft[i].sl; //else we set spam level 2 (clearing spam bits and then settting them to level 2
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"\t\tMail marked to be spam #%d\n",Mail->Flags & YAMN_MSG_SPAMMASK);
-#endif
- }
- }
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"\t\t</Found appropriate selector>\n");
-#endif
- }
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"</Testing header>\n");
-#endif
- }
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"</New mail>\n\n");
-#endif
- return 1;
-}
-
-int LoadRules()
-{
- char *account=NULL;
- char name[256];
- char value[256];
- char BadCompiler[512+5];
- unsigned char sl;
- FILE *fp;
-
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"<Loading rules from file %s>\n",FilterPath);
-#endif
-
- fp=fopen(FilterPath,"rt");
- if(fp==NULL)
- return 0;
-
- while(!feof(fp))
- {
- if(fscanf(fp,"%255s",name) && !feof(fp) && (name[0]!=0))
- {
- if(fscanf(fp,"%255s",value) && !feof(fp) && (value[0]!=0))
- {
- if(fscanf(fp,"%d",&sl))
- {
- fts++;
- ft=(struct cFilterTable *)realloc((void *)ft,sizeof(cFilterTable)*fts);
- lstrcpy(ft[fts-1].name,name);
- lstrcpy(ft[fts-1].value,value);
- ft[fts-1].sl=sl;
-
- sprintf(BadCompiler,"%s %s %d",name,value,sl);
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"\t<Rule><selector>%s</selector><value>%s</value><spamlevel>%d</spamlevel>\n",name,value,sl);
-#endif
- }
- }
- }
- }
-
- fclose(fp);
-#ifdef DEBUG_FILTER
- DebugLog(FilterFile,"</Loading rules>\n");
-#endif
- return 1;
-}
-
-int findsubstr(char *original,char *pattern)
-{
- int ol=lstrlen(original);
- int pl=lstrlen(pattern);
-
- for(int i=0;(i+pl)<=ol;i++)
- if(!_strnicmp(original+i,pattern,pl))
- return 1;
- return 0;
-} \ No newline at end of file
diff --git a/yamn/filter/Simple/AggressiveOptimize.h b/yamn/filter/Simple/AggressiveOptimize.h
deleted file mode 100644
index 1bf0e19..0000000
--- a/yamn/filter/Simple/AggressiveOptimize.h
+++ /dev/null
@@ -1,168 +0,0 @@
-
-//////////////////////////////
-// Version 1.40
-// October 22nd, 2002 - .NET (VC7, _MSC_VER=1300) support!
-// Version 1.30
-// Nov 24th, 2000
-// Version 1.20
-// Jun 9th, 2000
-// Version 1.10
-// Jan 23rd, 2000
-// Version 1.00
-// May 20th, 1999
-// Todd C. Wilson, Fresh Ground Software
-// (todd@nopcode.com)
-// This header file will kick in settings for Visual C++ 5 and 6 that will (usually)
-// result in smaller exe's.
-// The "trick" is to tell the compiler to not pad out the function calls; this is done
-// by not using the /O1 or /O2 option - if you do, you implicitly use /Gy, which pads
-// out each and every function call. In one single 500k dll, I managed to cut out 120k
-// by this alone!
-// The other two "tricks" are telling the Linker to merge all data-type segments together
-// in the exe file. The relocation, read-only (constants) data, and code section (.text)
-// sections can almost always be merged. Each section merged can save 4k in exe space,
-// since each section is padded out to 4k chunks. This is very noticeable with smaller
-// exes, since you could have only 700 bytes of data, 300 bytes of code, 94 bytes of
-// strings - padded out, this could be 12k of runtime, for 1094 bytes of stuff! For larger
-// programs, this is less overall, but can save at least 4k.
-// Note that if you're using MFC static or some other 3rd party libs, you may get poor
-// results with merging the readonly (.rdata) section - the exe may grow larger.
-// To use this feature, define _MERGE_DATA_ in your project or before this header is used.
-// With Visual C++ 5, the program uses a file alignment of 512 bytes, which results
-// in a small exe. Under VC6, the program instead uses 4k, which is the same as the
-// section size. The reason (from what I understand) is that 4k is the chunk size of
-// the virtual memory manager, and that WinAlign (an end-user tuning tool for Win98)
-// will re-align the programs on this boundary. The problem with this is that all of
-// Microsoft's system exes and dlls are *NOT* tuned like this, and using 4k causes serious
-// exe bloat. This is very noticeable for smaller programs.
-// The "trick" for this is to use the undocumented FILEALIGN linker parm to change the
-// padding from 4k to 1/2k, which results in a much smaller exe - anywhere from 20%-75%
-// depending on the size. Note that this is the same as using /OPT:NOWIN98, which *is*
-// a previously documented switch, but was left out of the docs for some reason in VC6 and
-// all of the current MSDN's - see KB:Q235956 for more information.
-// Microsoft does say that using the 4k alignment will "speed up process loading",
-// but I've been unable to notice a difference, even on my P180, with a very large (4meg) exe.
-// Please note, however, that this will probably not change the size of the COMPRESSED
-// file (either in a .zip file or in an install archive), since this 4k is all zeroes and
-// gets compressed away.
-// Also, the /ALIGN:4096 switch will "magically" do the same thing, even though this is the
-// default setting for this switch. Apparently this sets the same values as the above two
-// switches do. We do not use this in this header, since it smacks of a bug and not a feature.
-// Thanks to Michael Geary <Mike@Geary.com> for some additional tips!
-//
-// Notes about using this header in .NET
-// First off, VC7 does not allow a lot of the linker command options in pragma's. There is no
-// honest or good reason why Microsoft decided to make this change, it just doesn't.
-// So that is why there are a lot of <1300 #if's in the header.
-// If you want to take full advantage of the VC7 linker options, you will need to do it on a
-// PER PROJECT BASIS; you can no longer use a global header file like this to make it better.
-// Items I strongly suggest putting in all your VC7 project linker options command line settings:
-// /ignore:4078 /RELEASE
-// Compiler options:
-// /GL (Whole Program Optimization)
-// If you're making an .EXE and not a .DLL, consider adding in:
-// /GA (Optimize for Windows Application)
-// Some items to consider using in your VC7 projects (not VC6):
-// Link-time Code Generation - whole code optimization. Put this in your exe/dll project link settings.
-// /LTCG:NOSTATUS
-// The classic no-padding and no-bloat compiler C/C++ switch:
-// /opt:nowin98
-//
-// (C++ command line options: /GL /opt:nowin98 and /GA for .exe files)
-// (Link command line options: /ignore:4078 /RELEASE /LTCG:NOSTATUS)
-//
-// Now, notes on using these options in VC7 vs VC6.
-// VC6 consistently, for me, produces smaller code from C++ the exact same sources,
-// with or without this header. On average, VC6 produces 5% smaller binaries compared
-// to VC7 compiling the exact same project, *without* this header. With this header, VC6
-// will make a 13k file, while VC7 will make a 64k one. VC7 is just bloaty, pure and
-// simple - all that managed/unmanaged C++ runtimes, and the CLR stuff must be getting
-// in the way of code generation. However, template support is better, so there.
-// Both VC6 and VC7 show the same end kind of end result savings - larger binary output
-// will shave about 2% off, where as smaller projects (support DLL's, cpl's,
-// activex controls, ATL libs, etc) get the best result, since the padding is usually
-// more than the actual usable code. But again, VC7 does not compile down as small as VC6.
-//
-// The argument can be made that doing this is a waste of time, since the "zero bytes"
-// will be compressed out in a zip file or install archive. Not really - it doesn't matter
-// if the data is a string of zeroes or ones or 85858585 - it will still take room (20 bytes
-// in a zip file, 29 bytes if only *4* of them 4k bytes are not the same) and time to
-// compress that data and decompress it. Also, 20k of zeros is NOT 20k on disk - it's the
-// size of the cluster slop- for Fat32 systems, 20k can be 32k, NTFS could make it 24k if you're
-// just 1 byte over (round up). Most end users do not have the dual P4 Xeon systems with
-// two gigs of RDram and a Raid 0+1 of Western Digital 120meg Special Editions that all
-// worthy developers have (all six of us), so they will need any space and LOADING TIME
-// savings they will need; taking an extra 32k or more out of your end user's 64megs of
-// ram on Windows 98 is Not a Good Thing.
-//
-// Now, as a ADDED BONUS at NO EXTRA COST TO YOU! Under VC6, using the /merge:.text=.data
-// pragma will cause the output file to be un-disassembleable! (is that a word?) At least,
-// with the normal tools - WinDisam, DumpBin, and the like will not work. Try it - use the
-// header, compile release, and then use DUMPBIN /DISASM filename.exe - no code!
-// Thanks to Gëzim Pani <gpani@siu.edu> for discovering this gem - for a full writeup on
-// this issue and the ramifactions of it, visit www.nopcode.com for the Aggressive Optimize
-// article.
-
-#ifndef _AGGRESSIVEOPTIMIZE_H_
-#define _AGGRESSIVEOPTIMIZE_H_
-
-#pragma warning(disable:4711)
-
-#ifdef NDEBUG
-// /Og (global optimizations), /Os (favor small code), /Oy (no frame pointers)
-#pragma optimize("gsy",on)
-
-#if (_MSC_VER<1300)
- #pragma comment(linker,"/RELEASE")
-#endif
-
-/*
-// Note that merging the .rdata section will result in LARGER exe's if you using
-// MFC (esp. static link). If this is desirable, define _MERGE_RDATA_ in your project.
-#ifdef _MERGE_RDATA_
-#pragma comment(linker,"/merge:.rdata=.data")
-#endif // _MERGE_RDATA_
-
-#pragma comment(linker,"/merge:.text=.data")
-#if (_MSC_VER<1300)
- // In VC7, this causes problems with the relocation and data tables, so best to not merge them
- #pragma comment(linker,"/merge:.reloc=.data")
-#endif
-*/
-
-// Merging sections with different attributes causes a linker warning, so
-// turn off the warning. From Michael Geary. Undocumented, as usual!
-#if (_MSC_VER<1300)
- // In VC7, you will need to put this in your project settings
- #pragma comment(linker,"/ignore:4078")
-#endif
-
-// With Visual C++ 5, you already get the 512-byte alignment, so you will only need
-// it for VC6, and maybe later.
-#if _MSC_VER >= 1000
-
-// Option #1: use /filealign
-// Totally undocumented! And if you set it lower than 512 bytes, the program crashes.
-// Either leave at 0x200 or 0x1000
-//#pragma comment(linker,"/FILEALIGN:0x200")
-
-// Option #2: use /opt:nowin98
-// See KB:Q235956 or the READMEVC.htm in your VC directory for info on this one.
-// This is our currently preferred option, since it is fully documented and unlikely
-// to break in service packs and updates.
-#if (_MSC_VER<1300)
- // In VC7, you will need to put this in your project settings
- #pragma comment(linker,"/opt:nowin98")
-#else
-
-// Option #3: use /align:4096
-// A side effect of using the default align value is that it turns on the above switch.
-// Does nothing under Vc7 that /opt:nowin98 doesn't already give you
-// #pragma comment(linker,"/ALIGN:512")
-#endif
-
-#endif // _MSC_VER >= 1000
-
-#endif // NDEBUG
-
-#endif // _AGGRESSIVEOPTIMIZE_H_
diff --git a/yamn/filter/Simple/docs/simple-readme.txt b/yamn/filter/Simple/docs/simple-readme.txt
deleted file mode 100644
index 34c0842..0000000
--- a/yamn/filter/Simple/docs/simple-readme.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-==========================
-= Simple Filter for YAMN =
-==========================
-
-Q: What???
-A: YAMN filter to classify incoming email.
-
-Q: How?
-A: Regarding what the email is from and finding it in the blacklist email file.
-
-Q: Blacklist email file?
-A: Yes. It is created by yourself and located in Miranda directory with name 'simplefilterdeny.txt'
-
-Q: Created by myself?
-A: Just create the file and write there your blacklist mails in every line.
-
-Q: That's all?
-A: Yes and no. You can specify spamlevel for each mail.
-
-Q: Spamlevel?
-A: Yes.
- 1=notify, display with another color in mailbrowser
- 2=do not notify, display with another color in mailbrowser
- 3=delete, display in mailbrowser about deleted mail
- 4=delete, do not display (mail's quick death, hehe)
-
-Q: How to specify it?
-A: After email press <tab> and write number 1-4. Note this is optional. If not defined, level 2 is default.
-
-Q: Ok, that's easy.
-A: Yes, this is the example:
-<------ start of file ------>
-nigeria@spamserver.com 2
-cheapsoftware@junkmails.net 3
-learnenglish@commercial.org
-<------ end of file ------->
-
-Q: Wait while. Ok, but it does not work.
-A: Check if you have this plugin listed in Miranda/Options/Plugins/YAMN item as YAMN plugin.
-
-Q: No, it is not listed in YAMN plugins.
-A: Then check if the dll residents in Plugins/YAMN direcotry.
-
-Q: This directory does not exists.
-A: Create it and put the dll there. Restart Miranda.
-
-Q: Hmmm, ok. But it is not still listed.
-A: Your version of YAMN and filter does not match.
-
-Q: And?
-A: Try to look to http://www.majvan.host.sk/Projekty/YAMN for updates. \ No newline at end of file
diff --git a/yamn/filter/Simple/maindll.cpp b/yamn/filter/Simple/maindll.cpp
deleted file mode 100644
index 7748835..0000000
--- a/yamn/filter/Simple/maindll.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-//---------------------------------------------------------------------------
-#include <windows.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <newpluginapi.h>
-#include <m_system.h>
-#include <m_langpack.h>
-#include <m_options.h>
-#include "../../m_filterplugin.h"
-#if !defined(_WIN64)
- #include "aggressiveoptimize.h"
-#endif
-
-typedef INT_PTR(* MIRANDASERVICE)(WPARAM,LPARAM);
-
-DWORD WINAPI FilterMail(HACCOUNT Account,DWORD AccountVer,HYAMNMAIL Mail,DWORD MailVer);//Function marks mail as spam when it is spam...
-DWORD WINAPI UnLoadFilter(LPVOID);
-
-YAMN_FILTERIMPORTFCN FilterFunctions= //we set for YAMN which is our filter function
-{
- FilterMail,
- UnLoadFilter, //No unloading
-};
-
-YAMN_FILTERREGISTRATION FilterRegistration= //classical YAMN registration
-{
- "Simple filter plugin for YAMN",
- __DATE__,
- "© porter+ majvan",
- "Classifies mails using the blacklist emails stored in file",
- "porterbox@hotmail.com",
- "http://www.majvan.host.sk/Projekty/YAMN?fm=soft",
-};
-
-char *FilterPath=NULL;
-
-struct YAMNExportedFcn
-{
- YAMN_SETFILTERPLUGINFCNIMPORTFCN SetFilterPluginFcnImportFcn;
- MIRANDASERVICE RegisterFilterPlugin;
-} YAMNFcn,*pYAMNFcn; //exported functions from YAMN we will use
-
-HYAMNFILTERPLUGIN POPFilePlugin; //handle of this plugin for YAMN
-HINSTANCE hInst; //handle of this DLL for Windows
-
-extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
-{
- hInst=hinstDLL;
- return true;
-}
-
-extern "C" int __declspec(dllexport) LoadFilter(MIRANDASERVICE GetYAMNFcnPtr)
-{
- FilterPath=new char[MAX_PATH];
- char *delim;
- pYAMNFcn=&YAMNFcn;
-
- GetModuleFileName(GetModuleHandle(NULL),FilterPath,MAX_PATH);
- if(NULL!=(delim=strrchr(FilterPath,'\\')))
- *delim=0;
- lstrcat(FilterPath,"\\simplefilterdeny.txt");
-
- pYAMNFcn->RegisterFilterPlugin=(MIRANDASERVICE)GetYAMNFcnPtr((WPARAM)MS_YAMN_REGISTERFILTERPLUGIN,(LPARAM)0);
- pYAMNFcn->SetFilterPluginFcnImportFcn=(YAMN_SETFILTERPLUGINFCNIMPORTFCN)GetYAMNFcnPtr((WPARAM)YAMN_SETFILTERPLUGINFCNIMPORTID,(LPARAM)0);
-//Register our filter plugin to YAMN
- if(NULL==(POPFilePlugin=(HYAMNFILTERPLUGIN)pYAMNFcn->RegisterFilterPlugin((WPARAM)&FilterRegistration,(LPARAM)YAMN_FILTERREGISTRATIONVERSION)))
- return 0;
-//And add our imported functions for YAMN
- if(!pYAMNFcn->SetFilterPluginFcnImportFcn(POPFilePlugin,0xb0000000,&FilterFunctions,YAMN_FILTERIMPORTFCNVERSION))
- return 0;
- return 1; //Load luccess
-}
-
-DWORD WINAPI UnLoadFilter(LPVOID)
-{
- if(FilterPath!=NULL)
- delete[] FilterPath;
- FilterPath=NULL;
-
- return 0;
-}
-
-extern "C" int __declspec(dllexport) UninstallFilter()
-{
- if(FilterPath==NULL)
- MessageBox(NULL,"Cannot delete blacklist file when Simple Filter is not loaded. Please do it manually.","Simple Filter uninstalling",MB_OK|MB_ICONWARNING);
- else
- DeleteFile(FilterPath);
- return 0;
-}
-
-
-//And this is main filter function.
-DWORD WINAPI FilterMail(HACCOUNT Account,DWORD AccountVer,HYAMNMAIL Mail,DWORD MailVer)
-{
- FILE *fp;
- char EmailSpam[256];
- unsigned char spamLevel;
- struct CMimeItem *Browser;
-
- if(MailVer!=YAMN_MAILVERSION) //we test if we work with the right YAMNMAIL
- return 0;
- if(Mail->MailData==NULL) //MailData should be available
- return 0;
- fp=fopen(FilterPath,"rt");
- if(fp != NULL) {
- if(!(Mail->Flags & YAMN_MSG_VIRTUAL))
- for(Browser=Mail->MailData->TranslatedHeader;Browser!=NULL;Browser=Browser->Next) { //we browse all header stored in Mail->TranslatedHeader
- if((!lstrcmp(Browser->name,"Return-Path")) || (!lstrcmp(Browser->name,"From"))) { //and if we find
- fseek(fp, 0L, SEEK_SET);
- while(!feof(fp)) {
- if(fscanf(fp, "%255s", EmailSpam) != 0) {
- if(!feof(fp))
- if(fscanf(fp, "%d", &spamLevel)==0)
- spamLevel=2;
- if(spamLevel>4)
- spamLevel=2;
- if(strstr(Browser->value,EmailSpam)!=NULL) {
- if((Mail->Flags & (YAMN_MSG_SPAMMASK==0)) && (spamLevel==0))
- Mail->Flags&=~(YAMN_MSG_SOUND | YAMN_MSG_APP | YAMN_MSG_POPUP | YAMN_MSG_SYSTRAY | YAMN_MSG_BROWSER);
- else if((Mail->Flags & YAMN_MSG_SPAMMASK) < spamLevel) //if some filter plugin set higher level of spam, we do nothing
- Mail->Flags=(Mail->Flags & ~YAMN_MSG_SPAMMASK)+spamLevel; //else we set spam level 2 (clearing spam bits and then settting them to level 2
- }
- }
- }
- }
- }
- fclose(fp);
- }
- return 1;
-}
diff --git a/yamn/filter/Simple/simple.dsp b/yamn/filter/Simple/simple.dsp
deleted file mode 100644
index dc6d52e..0000000
--- a/yamn/filter/Simple/simple.dsp
+++ /dev/null
@@ -1,105 +0,0 @@
-# Microsoft Developer Studio Project File - Name="simple" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** NICHT BEARBEITEN **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=simple - Win32 Release
-!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
-!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
-!MESSAGE
-!MESSAGE NMAKE /f "simple.mak".
-!MESSAGE
-!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
-!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
-!MESSAGE
-!MESSAGE NMAKE /f "simple.mak" CFG="simple - Win32 Release"
-!MESSAGE
-!MESSAGE Für die Konfiguration stehen zur Auswahl:
-!MESSAGE
-!MESSAGE "simple - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "simple - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "simple - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /G4 /Zp4 /MD /W3 /GX /Zi /O1 /Ob0 /I "../../../../include" /I "../../../../include/msapi" /I "../../../../include_API" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE RSC /l 0x417 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /machine:I386 /out:"../../../../bin/release/plugins/YAMN-filter/simple.dll" /filealign:512
-# ADD LINK32 kernel32.lib user32.lib /nologo /dll /pdb:"../../../../bin/Release/plugins/YAMN/simple.pdb" /debug /machine:I386 /out:"../../../../bin/Release/plugins/YAMN/simple.dll" /filealign:512
-
-!ELSEIF "$(CFG)" == "simple - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Ignore_Export_Lib 1
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 1
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /I "../../../../include/msapi" /I "../../../../include_API" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x417 /d "_DEBUG"
-# ADD RSC /l 0x417 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN-filter/simple.dll"
-# ADD LINK32 kernel32.lib user32.lib /nologo /dll /pdb:"../../../../bin/Debug/plugins/YAMN/simple.pdb" /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN/simple.dll" /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "simple - Win32 Release"
-# Name "simple - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\maindll.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yamn/filter/Simple/simple.mak b/yamn/filter/Simple/simple.mak
deleted file mode 100644
index 085dc22..0000000
--- a/yamn/filter/Simple/simple.mak
+++ /dev/null
@@ -1,207 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on simple.dsp
-!IF "$(CFG)" == ""
-CFG=simple - Win32 Release
-!MESSAGE No configuration specified. Defaulting to simple - Win32 Release.
-!ENDIF
-
-!IF "$(CFG)" != "simple - Win32 Release" && "$(CFG)" != "simple - Win32 Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "simple.mak" CFG="simple - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "simple - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "simple - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-
-!IF "$(CFG)" == "simple - Win32 Release"
-
-OUTDIR=.\Release
-INTDIR=.\Release
-
-ALL : "..\..\..\..\bin\release\plugins\YAMN-filter\simple.dll"
-
-
-CLEAN :
- -@erase "$(INTDIR)\maindll.obj"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(OUTDIR)\simple.exp"
- -@erase "..\..\..\..\bin\release\plugins\YAMN-filter\simple.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MD /W3 /GX /O1 /Ob0 /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\simple.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\simple.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\simple.pdb" /machine:I386 /out:"../../../../bin/release/plugins/YAMN-filter/simple.dll" /implib:"$(OUTDIR)\simple.lib" /filealign:512
-LINK32_OBJS= \
- "$(INTDIR)\maindll.obj"
-
-"..\..\..\..\bin\release\plugins\YAMN-filter\simple.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "simple - Win32 Debug"
-
-OUTDIR=.\Debug
-INTDIR=.\Debug
-# Begin Custom Macros
-OutDir=.\Debug
-# End Custom Macros
-
-ALL : "..\..\..\..\bin\Debug\plugins\YAMN-filter\simple.dll" "$(OUTDIR)\simple.bsc"
-
-
-CLEAN :
- -@erase "$(INTDIR)\maindll.obj"
- -@erase "$(INTDIR)\maindll.sbr"
- -@erase "$(INTDIR)\vc60.idb"
- -@erase "$(INTDIR)\vc60.pdb"
- -@erase "$(OUTDIR)\simple.bsc"
- -@erase "$(OUTDIR)\simple.exp"
- -@erase "$(OUTDIR)\simple.pdb"
- -@erase "..\..\..\..\bin\Debug\plugins\YAMN-filter\simple.dll"
- -@erase "..\..\..\..\bin\Debug\plugins\YAMN-filter\simple.ilk"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /G4 /Zp4 /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\simple.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\simple.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\maindll.sbr"
-
-"$(OUTDIR)\simple.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\simple.pdb" /debug /machine:I386 /out:"../../../../bin/Debug/plugins/YAMN-filter/simple.dll" /implib:"$(OUTDIR)\simple.lib"
-LINK32_OBJS= \
- "$(INTDIR)\maindll.obj"
-
-"..\..\..\..\bin\Debug\plugins\YAMN-filter\simple.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("simple.dep")
-!INCLUDE "simple.dep"
-!ELSE
-!MESSAGE Warning: cannot find "simple.dep"
-!ENDIF
-!ENDIF
-
-
-!IF "$(CFG)" == "simple - Win32 Release" || "$(CFG)" == "simple - Win32 Debug"
-SOURCE=.\maindll.cpp
-
-!IF "$(CFG)" == "simple - Win32 Release"
-
-
-"$(INTDIR)\maindll.obj" : $(SOURCE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "simple - Win32 Debug"
-
-
-"$(INTDIR)\maindll.obj" "$(INTDIR)\maindll.sbr" : $(SOURCE) "$(INTDIR)"
-
-
-!ENDIF
-
-
-!ENDIF
-
diff --git a/yamn/filter/readme.txt b/yamn/filter/readme.txt
deleted file mode 100644
index a46db02..0000000
--- a/yamn/filter/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-This folder contains filter plugin sources for YAMN. \ No newline at end of file
diff --git a/yamn/filterplugin.cpp b/yamn/filterplugin.cpp
deleted file mode 100644
index cf7252d..0000000
--- a/yamn/filterplugin.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * YAMN plugin export functions for filtering
- *
- * (c) majvan 2002-2004
- */
-
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-#include <newpluginapi.h>
-#include <m_database.h>
-#include "m_yamn.h"
-#include "m_filterplugin.h"
-#include "mails/m_mails.h"
-#include "debug.h"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//From main.cpp
-extern LPCRITICAL_SECTION PluginRegCS;
-extern YAMN_VARIABLES YAMNVar;
-//From synchro.cpp
-extern DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER=NULL);
-extern void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER=NULL);
-//From maild.cpp
-extern INT_PTR LoadMailDataSvc(WPARAM wParam,LPARAM lParam);
-extern INT_PTR UnloadMailDataSvc(WPARAM wParam,LPARAM);
-extern INT_PTR SaveMailDataSvc(WPARAM wParam,LPARAM lParam);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-PYAMN_FILTERPLUGINQUEUE FirstFilterPlugin=NULL;
-
-INT_PTR RegisterFilterPluginSvc(WPARAM,LPARAM);
-
-//Removes plugin from queue and deletes its structures
-INT_PTR UnregisterFilterPlugin(HYAMNFILTERPLUGIN Plugin);
-
-INT_PTR UnregisterFilterPluginSvc(WPARAM wParam,LPARAM lParam);
-
-//Removes all filter plugins
-INT_PTR UnregisterFilterPlugins();
-
-INT_PTR FilterMailSvc(WPARAM,LPARAM);
-
-//Sets imported functions for an plugin and therefore it starts plugin to be registered and running
-// Plugin- plugin, which wants to set its functions
-// Importance- importance of plugin (see m_filterplugin.h)
-// YAMNFilterFcn- pointer to imported functions
-// YAMNfilterFcnVer- version of YAMN_FILTERIMPORTFCN, use YAMN_FILTERIMPORTFCNVERSION
-// returns nonzero if success
-int WINAPI SetFilterPluginFcnImportFcn(HYAMNFILTERPLUGIN Plugin,DWORD Importance,PYAMN_FILTERIMPORTFCN YAMNFilterFcn,DWORD YAMNFilterFcnVer);
-
-struct CExportedFunctions FilterPluginExportedFcn[]=
-{
- {YAMN_SETFILTERPLUGINFCNIMPORTID,(void *)SetFilterPluginFcnImportFcn},
-};
-
-struct CExportedServices FilterPluginExportedSvc[]=
-{
- {MS_YAMN_REGISTERFILTERPLUGIN,RegisterFilterPluginSvc},
- {MS_YAMN_UNREGISTERFILTERPLUGIN,UnregisterFilterPluginSvc},
-};
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR RegisterFilterPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- PYAMN_FILTERREGISTRATION Registration=(PYAMN_FILTERREGISTRATION)wParam;
- HYAMNFILTERPLUGIN Plugin;
-
- if(lParam!=YAMN_FILTERREGISTRATIONVERSION)
- return 0;
- if((Registration->Name==NULL) || (Registration->Ver==NULL))
- return NULL;
- if(NULL==(Plugin=new YAMN_FILTERPLUGIN))
- return NULL;
-
- Plugin->PluginInfo=Registration;
-
- Plugin->FilterFcn=NULL;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- new filter registered: %0x (%s) :::\n",Plugin,Registration->Name);
-#endif
- return (INT_PTR)Plugin;
-}
-
-INT_PTR UnregisterFilterPlugin(HYAMNFILTERPLUGIN Plugin)
-{
- PYAMN_FILTERPLUGINQUEUE Parser,Found;
-
- if(FirstFilterPlugin->Plugin==Plugin)
- {
- Found=FirstFilterPlugin;
- FirstFilterPlugin=FirstFilterPlugin->Next;
- }
- else
- {
- for(Parser=FirstFilterPlugin;(Parser->Next!=NULL) && (Plugin!=Parser->Next->Plugin);Parser=Parser->Next);
- if(Parser->Next!=NULL)
- {
- Found=Parser->Next;
- Parser->Next=Parser->Next->Next;
- }
- else
- Found=NULL;
- }
- if(Found!=NULL)
- {
- if(Plugin->FilterFcn->UnLoadFcn!=NULL)
- Plugin->FilterFcn->UnLoadFcn((void *)0);
-
- delete Found->Plugin;
- delete Found;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- filter %0x unregistered :::\n",Plugin);
-#endif
- }
- else
- return 0;
- return 1;
-}
-
-INT_PTR UnregisterFilterPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNFILTERPLUGIN Plugin=(HYAMNFILTERPLUGIN)wParam;
-
- EnterCriticalSection(PluginRegCS);
- UnregisterFilterPlugin(Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR UnregisterFilterPlugins()
-{
- EnterCriticalSection(PluginRegCS);
-//We remove protocols from the protocol list
- while(FirstFilterPlugin!=NULL)
- UnregisterFilterPlugin(FirstFilterPlugin->Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-int WINAPI SetFilterPluginFcnImportFcn(HYAMNFILTERPLUGIN Plugin,DWORD Importance,PYAMN_FILTERIMPORTFCN YAMNFilterFcn,DWORD YAMNFilterFcnVer)
-{
- PYAMN_FILTERPLUGINQUEUE Parser,Previous;
-
- if(YAMNFilterFcnVer!=YAMN_FILTERIMPORTFCNVERSION)
- return 0;
- if(YAMNFilterFcn==NULL)
- return 0;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- filter %0x import succeed :::\n",Plugin);
-#endif
- Plugin->Importance=Importance;
- Plugin->FilterFcn=YAMNFilterFcn;
-
- EnterCriticalSection(PluginRegCS);
-//We add protocol to the protocol list
- for(Previous=NULL,Parser=FirstFilterPlugin;Parser!=NULL && Parser->Next!=NULL && Parser->Plugin->Importance<=Importance;Previous=Parser,Parser=Parser->Next);
- if(Previous==NULL) //insert to the beginnig of queue
- {
- FirstFilterPlugin=new YAMN_FILTERPLUGINQUEUE;
- FirstFilterPlugin->Plugin=Plugin;
- FirstFilterPlugin->Next=Parser;
- }
- else
- {
- Previous->Next=new YAMN_FILTERPLUGINQUEUE;
- Previous=Previous->Next; //leave previous, go to actual plugin
- Previous->Plugin=Plugin;
- Previous->Next=Parser; //and in actual plugin set, that next plugin is the one we insert in front of
- }
-
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR FilterMailSvc(WPARAM wParam,LPARAM lParam)
-{
- HACCOUNT Account=(HACCOUNT)wParam;
- HYAMNMAIL Mail=(HYAMNMAIL)lParam;
- PYAMN_FILTERPLUGINQUEUE ActualPlugin;
-
- EnterCriticalSection(PluginRegCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write wait\n");
-#endif
- WaitToWriteFcn(Account->MessagesAccessSO);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write enter\n");
-#endif
- for(ActualPlugin=FirstFilterPlugin;ActualPlugin!=NULL;ActualPlugin=ActualPlugin->Next)
- {
- if(ActualPlugin->Plugin->FilterFcn->FilterMailFcnPtr!=NULL)
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tFiltering Mail, running plugin %0x to filter mail\n",ActualPlugin->Plugin);
-#endif
- ActualPlugin->Plugin->FilterFcn->FilterMailFcnPtr(Account,YAMN_ACCOUNTVERSION,Mail,YAMN_MAILVERSION);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tFiltering Mail done\n");
-#endif
- }
- }
- Mail->Flags|=YAMN_MSG_FILTERED;
-
-//Set mail flags according to spamlevel settings
- if((Mail->Flags & YAMN_MSG_SPAMMASK) > YAMN_MSG_SPAML1)
- Mail->Flags=Mail->Flags & ~(YAMN_MSG_BROWSER | YAMN_MSG_POPUP | YAMN_MSG_SYSTRAY | YAMN_MSG_SOUND | YAMN_MSG_APP | YAMN_MSG_NEVENT);
- if(YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML3) || YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML4))
- Mail->Flags=Mail->Flags | (YAMN_MSG_AUTODELETE | YAMN_MSG_DELETEOK); //set message to delete
- if(YAMN_MSG_SPAML(Mail->Flags,YAMN_MSG_SPAML3))
- Mail->Flags=Mail->Flags & ~(YAMN_MSG_MEMDELETE); //set message not to delete it immidiatelly from memory
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FilterMail:ActualAccountMsgsSO-write done\n");
-#endif
- WriteDoneFcn(Account->MessagesAccessSO);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
diff --git a/yamn/icons/iconttbup.ico b/yamn/icons/iconttbup.ico
deleted file mode 100644
index ad18c56..0000000
--- a/yamn/icons/iconttbup.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/icons/icoyamn1.ico b/yamn/icons/icoyamn1.ico
deleted file mode 100644
index d3959b4..0000000
--- a/yamn/icons/icoyamn1.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/icons/icoyamn2.ico b/yamn/icons/icoyamn2.ico
deleted file mode 100644
index dfada56..0000000
--- a/yamn/icons/icoyamn2.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/icons/proto_YAMN.dsp b/yamn/icons/proto_YAMN.dsp
deleted file mode 100644
index 93652ba..0000000
--- a/yamn/icons/proto_YAMN.dsp
+++ /dev/null
@@ -1,91 +0,0 @@
-# Microsoft Developer Studio Project File - Name="proto_YAMN" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** NICHT BEARBEITEN **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=proto_YAMN - Win32 Release
-!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
-!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
-!MESSAGE
-!MESSAGE NMAKE /f "proto_YAMN.mak".
-!MESSAGE
-!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
-!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
-!MESSAGE
-!MESSAGE NMAKE /f "proto_YAMN.mak" CFG="proto_YAMN - Win32 Release"
-!MESSAGE
-!MESSAGE Für die Konfiguration stehen zur Auswahl:
-!MESSAGE
-!MESSAGE "proto_YAMN - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo
-# ADD CPP /nologo
-# ADD BASE RSC /l 0x417 /d "NDEBUG"
-# ADD RSC /l 0x417 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 /nologo /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib /out:"../../../bin/release/icons/proto_YAMN.dll" /filealign:512 /noentry
-# ADD LINK32 /nologo /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib /out:"../../../bin/Release/Icons/proto_YAMN.dll" /filealign:512 /noentry
-# Begin Target
-
-# Name "proto_YAMN - Win32 Release"
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\resources\iconeutral.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\resources\iconttbdown.ico
-# End Source File
-# Begin Source File
-
-SOURCE=iconttbup.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\resources\icooffline.ico
-# End Source File
-# Begin Source File
-
-SOURCE=icoyamn1.ico
-# End Source File
-# Begin Source File
-
-SOURCE=icoyamn2.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\resources\icoyamn3.ico
-# End Source File
-# Begin Source File
-
-SOURCE=proto_YAMN.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/yamn/icons/proto_YAMN.mak b/yamn/icons/proto_YAMN.mak
deleted file mode 100644
index 94c25d7..0000000
--- a/yamn/icons/proto_YAMN.mak
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on proto_YAMN.dsp
-!IF "$(CFG)" == ""
-CFG=proto_YAMN - Win32 Release
-!MESSAGE No configuration specified. Defaulting to proto_YAMN - Win32 Release.
-!ENDIF
-
-!IF "$(CFG)" != "proto_YAMN - Win32 Release"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "proto_YAMN.mak" CFG="proto_YAMN - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "proto_YAMN - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-
-OUTDIR=.\Release
-INTDIR=.\Release
-
-ALL : "..\..\..\bin\release\icons\proto_YAMN.dll"
-
-
-CLEAN :
- -@erase "$(INTDIR)\proto_YAMN.res"
- -@erase "$(OUTDIR)\proto_YAMN.exp"
- -@erase "$(OUTDIR)\proto_YAMN.lib"
- -@erase "..\..\..\bin\release\icons\proto_YAMN.dll"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /ML /Fo"$(INTDIR)\\"
-
-.c{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(INTDIR)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-MTL=midl.exe
-MTL_PROJ=
-RSC=rc.exe
-RSC_PROJ=/l 0x417 /fo"$(INTDIR)\proto_YAMN.res" /d "NDEBUG"
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\proto_YAMN.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=/nologo /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib /out:"../../../bin/release/icons/proto_YAMN.dll" /implib:"$(OUTDIR)\proto_YAMN.lib" /filealign:512 /noentry
-LINK32_OBJS= \
- "$(INTDIR)\proto_YAMN.res"
-
-"..\..\..\bin\release\icons\proto_YAMN.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("proto_YAMN.dep")
-!INCLUDE "proto_YAMN.dep"
-!ELSE
-!MESSAGE Warning: cannot find "proto_YAMN.dep"
-!ENDIF
-!ENDIF
-
-
-!IF "$(CFG)" == "proto_YAMN - Win32 Release"
-SOURCE=proto_YAMN.rc
-
-"$(INTDIR)\proto_YAMN.res" : $(SOURCE) "$(INTDIR)"
- $(RSC) $(RSC_PROJ) $(SOURCE)
-
-
-
-!ENDIF
-
diff --git a/yamn/icons/proto_YAMN.rc b/yamn/icons/proto_YAMN.rc
deleted file mode 100644
index e20bd50..0000000
--- a/yamn/icons/proto_YAMN.rc
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "resource.h"
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-
-IDI_ONLINE ICON DISCARDABLE "../resources/iconeutral.ico"
-IDI_ICOYAMN1 ICON DISCARDABLE "icoyamn1.ico"
-IDI_ICOYAMN2 ICON DISCARDABLE "icoyamn2.ico"
-IDI_ICOTTBUP ICON DISCARDABLE "iconttbup.ico"
-
-IDI_OFFLINE ICON DISCARDABLE "../resources/icooffline.ico"
-IDI_NA ICON DISCARDABLE "../resources/icoyamn3.ico"
-IDI_OCCUPIED ICON DISCARDABLE "../resources/iconttbdown.ico"
diff --git a/yamn/icons/proto_YAMN.vcproj b/yamn/icons/proto_YAMN.vcproj
deleted file mode 100644
index e4c1d85..0000000
--- a/yamn/icons/proto_YAMN.vcproj
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="Proto_Yamn"
- ProjectGUID="{C1CDB82C-6BBF-496E-88F4-CC57E60B0CA9}"
- RootNamespace="Proto_Yamn"
- TargetFrameworkVersion="0"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../../../Files/Release/Icons"
- IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\Release/proto_YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="4"
- RuntimeLibrary="0"
- PrecompiledHeaderFile=".\Release/proto_YAMN.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/filealign:512"
- AdditionalDependencies="odbc32.lib odbccp32.lib"
- IgnoreAllDefaultLibraries="true"
- SubSystem="2"
- ResourceOnlyDLL="true"
- RandomizedBaseAddress="1"
- ImportLibrary=""
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../../../Files/Debug/Icons"
- IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj/$(ProjectName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\Release/proto_YAMN.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="4"
- RuntimeLibrary="0"
- PrecompiledHeaderFile=".\Release/proto_YAMN.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/filealign:512"
- AdditionalDependencies="odbc32.lib odbccp32.lib"
- IgnoreAllDefaultLibraries="true"
- SubSystem="2"
- ResourceOnlyDLL="true"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- ImportLibrary=""
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
- >
- <File
- RelativePath="..\resources\iconeutral.ico"
- >
- </File>
- <File
- RelativePath="..\resources\iconttbdown.ico"
- >
- </File>
- <File
- RelativePath="iconttbup.ico"
- >
- </File>
- <File
- RelativePath="..\resources\icooffline.ico"
- >
- </File>
- <File
- RelativePath="icoyamn1.ico"
- >
- </File>
- <File
- RelativePath="icoyamn2.ico"
- >
- </File>
- <File
- RelativePath="..\resources\icoyamn3.ico"
- >
- </File>
- <File
- RelativePath="proto_YAMN.rc"
- >
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions=""
- />
- </FileConfiguration>
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/yamn/icons/proto_YAMN.vcproj.Nout.User.user b/yamn/icons/proto_YAMN.vcproj.Nout.User.user
deleted file mode 100644
index 33b4536..0000000
--- a/yamn/icons/proto_YAMN.vcproj.Nout.User.user
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioUserFile
- ProjectType="Visual C++"
- Version="9,00"
- ShowAllFiles="false"
- >
- <Configurations>
- <Configuration
- Name="Release|Win32"
- >
- <DebugSettings
- Command=""
- WorkingDirectory=""
- CommandArguments=""
- Attach="false"
- DebuggerType="3"
- Remote="1"
- RemoteMachine="NOUT"
- RemoteCommand=""
- HttpUrl=""
- PDBPath=""
- SQLDebugging=""
- Environment=""
- EnvironmentMerge="true"
- DebuggerFlavor=""
- MPIRunCommand=""
- MPIRunArguments=""
- MPIRunWorkingDirectory=""
- ApplicationCommand=""
- ApplicationArguments=""
- ShimCommand=""
- MPIAcceptMode=""
- MPIAcceptFilter=""
- />
- </Configuration>
- <Configuration
- Name="Debug|Win32"
- >
- <DebugSettings
- Command=""
- WorkingDirectory=""
- CommandArguments=""
- Attach="false"
- DebuggerType="3"
- Remote="1"
- RemoteMachine="NOUT"
- RemoteCommand=""
- HttpUrl=""
- PDBPath=""
- SQLDebugging=""
- Environment=""
- EnvironmentMerge="true"
- DebuggerFlavor=""
- MPIRunCommand=""
- MPIRunArguments=""
- MPIRunWorkingDirectory=""
- ApplicationCommand=""
- ApplicationArguments=""
- ShimCommand=""
- MPIAcceptMode=""
- MPIAcceptFilter=""
- />
- </Configuration>
- </Configurations>
-</VisualStudioUserFile>
diff --git a/yamn/icons/proto_YAMN_10.vcxproj b/yamn/icons/proto_YAMN_10.vcxproj
deleted file mode 100644
index 9d48ff5..0000000
--- a/yamn/icons/proto_YAMN_10.vcxproj
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>Proto_Yamn</ProjectName>
- <ProjectGuid>{C1CDB82C-6BBF-496E-88F4-CC57E60B0CA9}</ProjectGuid>
- <RootNamespace>Proto_Yamn</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseOfMfc>false</UseOfMfc>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../../Files/Release/Icons\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../../Files/Debug/Icons\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
- <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Midl>
- <TypeLibraryName>.\Release/proto_YAMN.tlb</TypeLibraryName>
- <HeaderFileName>
- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeaderOutputFile>.\Release/proto_YAMN.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\Release/</AssemblerListingLocation>
- <ObjectFileName>.\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ResourceCompile>
- <Link>
- <AdditionalOptions>/filealign:512 %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
- <SubSystem>Windows</SubSystem>
- <NoEntryPoint>true</NoEntryPoint>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <ImportLibrary>
- </ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Midl>
- <TypeLibraryName>.\Release/proto_YAMN.tlb</TypeLibraryName>
- <HeaderFileName>
- </HeaderFileName>
- </Midl>
- <ClCompile>
- <Optimization>Disabled</Optimization>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <PrecompiledHeaderOutputFile>.\Release/proto_YAMN.pch</PrecompiledHeaderOutputFile>
- <AssemblerListingLocation>.\Release/</AssemblerListingLocation>
- <ObjectFileName>.\Release/</ObjectFileName>
- <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
- <SuppressStartupBanner>true</SuppressStartupBanner>
- </ClCompile>
- <ResourceCompile>
- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ResourceCompile>
- <Link>
- <AdditionalOptions>/filealign:512 %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
- <SubSystem>Windows</SubSystem>
- <NoEntryPoint>true</NoEntryPoint>
- <RandomizedBaseAddress>false</RandomizedBaseAddress>
- <DataExecutionPrevention>
- </DataExecutionPrevention>
- <ImportLibrary>
- </ImportLibrary>
- <TargetMachine>MachineX86</TargetMachine>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="..\resources\iconeutral.ico" />
- <None Include="..\resources\iconttbdown.ico" />
- <None Include="iconttbup.ico" />
- <None Include="..\resources\icooffline.ico" />
- <None Include="icoyamn1.ico" />
- <None Include="icoyamn2.ico" />
- <None Include="..\resources\icoyamn3.ico" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="proto_YAMN.rc">
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ResourceCompile>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/yamn/icons/proto_YAMN_10.vcxproj.filters b/yamn/icons/proto_YAMN_10.vcxproj.filters
deleted file mode 100644
index ae56e31..0000000
--- a/yamn/icons/proto_YAMN_10.vcxproj.filters
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{4726e1d1-39cd-435a-bd59-51fdb6745f46}</UniqueIdentifier>
- <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="..\resources\iconeutral.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="..\resources\iconttbdown.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="iconttbup.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="..\resources\icooffline.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="icoyamn1.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="icoyamn2.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="..\resources\icoyamn3.ico">
- <Filter>Resource Files</Filter>
- </None>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="proto_YAMN.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/yamn/icons/proto_YAMN_10.vcxproj.user b/yamn/icons/proto_YAMN_10.vcxproj.user
deleted file mode 100644
index 695b5c7..0000000
--- a/yamn/icons/proto_YAMN_10.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project> \ No newline at end of file
diff --git a/yamn/icons/resource.h b/yamn/icons/resource.h
deleted file mode 100644
index af36adf..0000000
--- a/yamn/icons/resource.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "../resources/resource.h"
-
diff --git a/yamn/include/IcoLib.h b/yamn/include/IcoLib.h
deleted file mode 100644
index a911ba5..0000000
--- a/yamn/include/IcoLib.h
+++ /dev/null
@@ -1,26 +0,0 @@
-typedef struct {
- int cbSize;
- char *pszSection; //section name used to group icons
- char *pszDescription; //description for options dialog
- char *pszName; //name to refer to icon when playing and in db
- char *pszDefaultFile; //default icon file to use
- int iDefaultIndex;
-} SKINICONDESC;
-
-//
-// Add a icon into options UI
-// NB! pszName should be unique, e.g.: clistmw_apply, tabsrmm_history
-//
-// wParam = (WPARAM)0
-// lParam = (LPARAM)(SKINICONDESC*)sid;
-//
-#define MS_SKIN2_ADDICON "Skin2/Icons/AddIcon"
-//
-// Retrieve HICON with name specified in lParam
-// Returned HICON SHOULDN'T be destroyed, it managed by IcoLib
-//
-#define MS_SKIN2_GETICON "Skin2/Icons/GetIcon"
-//
-// Icons change notification
-//
-#define ME_SKIN2_ICONSCHANGED "Skin2/IconsChanged"
diff --git a/yamn/include/m_icolib.h b/yamn/include/m_icolib.h
deleted file mode 100644
index a31abe2..0000000
--- a/yamn/include/m_icolib.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// ---------------------------------------------------------------------------80
-// Icons Library Manager plugin for Miranda Instant Messenger
-// __________________________________________________________
-//
-// Copyright © 2005 Denis Stanishevskiy // StDenis
-// Copyright © 2006 Joe Kucera
-//
-// 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.
-//
-// -----------------------------------------------------------------------------
-
-#define SKINICONDESC_SIZE sizeof(SKINICONDESC)
-#define SKINICONDESC_SIZE_V1 0x18
-#define SKINICONDESC_SIZE_V2 0x1C
-#define SKINICONDESC_SIZE_V3 0x24
-
-typedef struct {
- int cbSize;
- union {
- char *pszSection; // section name used to group icons
- TCHAR *ptszSection;
- wchar_t *pwszSection;
- };
- union {
- char *pszDescription; // description for options dialog
- TCHAR *ptszDescription;
- wchar_t *pwszDescription;
- };
- char *pszName; // name to refer to icon when playing and in db
- char *pszDefaultFile; // default icon file to use
- int iDefaultIndex; // index of icon in default file
- HICON hDefaultIcon; // handle to default icon
- int cx,cy; // dimensions of icon
- int flags;
-} SKINICONDESC;
-
-#define SIDF_UNICODE 0x100 // Section and Description are in UCS-2
-
-#if defined(_UNICODE)
- #define SIDF_TCHAR SIDF_UNICODE
-#else
- #define SIDF_TCHAR 0
-#endif
-
-//
-// Add a icon into options UI
-//
-// wParam = (WPARAM)0
-// lParam = (LPARAM)(SKINICONDESC*)sid;
-//
-#define MS_SKIN2_ADDICON "Skin2/Icons/AddIcon"
-
-//
-// Retrieve HICON with name specified in lParam
-// Returned HICON SHOULDN'T be destroyed, it is managed by IcoLib
-//
-
-#define MS_SKIN2_GETICON "Skin2/Icons/GetIcon"
-
-//
-// Icons change notification
-//
-#define ME_SKIN2_ICONSCHANGED "Skin2/IconsChanged"
diff --git a/yamn/include/m_kbdnotify.h b/yamn/include/m_kbdnotify.h
deleted file mode 100644
index 256c009..0000000
--- a/yamn/include/m_kbdnotify.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-
-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.
-
-*/
-
-#ifndef _KBDNOTIFY_
-#define _KBDNOTIFY_
-
-//Enables all notifications (for use by BossKey)
-//wParam=0
-//lParam=0
-//returns 0
-#define MS_KBDNOTIFY_ENABLE "KeyboardNotify/Enable"
-
-
-//Disables all notifications (for use by BossKey)
-//wParam=0
-//lParam=0
-//returns 0
-#define MS_KBDNOTIFY_DISABLE "KeyboardNotify/Disable"
-
-
-//Makes the flashing begin
-//wParam=(unsigned int)eventCount
-//lParam=(char *)szFlashingSequence or NULL if you want the plugin to use current settings
-//returns 0
-#define MS_KBDNOTIFY_STARTBLINK "KeyboardNotify/StartBlinking"
-
-
-//Receives the number of events that were opened (usuful for the 'until events opened' setting)
-//wParam=(unsigned int)eventCount
-//lParam=0
-//returns 0
-#define MS_KBDNOTIFY_EVENTSOPENED "KeyboardNotify/EventsWereOpened"
-
-
-//Informs if the flashing is active
-//wParam=0
-//lParam=0
-//returns 0 if the flashing is inactive or a pointer to the string representing the sequence being used
-#define MS_KBDNOTIFY_FLASHINGACTIVE "KeyboardNotify/IsFlashingActive"
-
-
-//Normalizes the flashing sequence informed
-//wParam=0
-//lParam=(char *)szFlashingSequence <- it is rewritten
-//returns a pointer to the string representing the sequence normalized (which is in fact lParam)
-#define MS_KBDNOTIFY_NORMALSEQUENCE "KeyboardNotify/NormalizeSequence"
-
-
-#endif
diff --git a/yamn/include/m_uninstaller.h b/yamn/include/m_uninstaller.h
deleted file mode 100644
index e26f55c..0000000
--- a/yamn/include/m_uninstaller.h
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
-
- PluginUninstaller 1.1.2.1 for Miranda IM 0.3.3a and +
- ------------------------------------------------------------------------
- Developers - C/C++ Header File
-
- Plugin Info: ----------------------------
- | Version: 1.1.2.1
- | Filename: uninstaller.dll
- | Author: H. Herkenrath (hrathh@users.sourceforge.net)
- | Description: Extends the plugin options and offers the possibility
- | to directly remove plugins and delete all associated
- | settings and files.
-
- Contents: -------------------------------
- | > General Info:
- | - Uninstall Example/Template
- | - Changing displayed icon
- | - Changing displayed docs
- | - Message boxes on uninstall
- | - Service Accesibility
- | - Including this file
- |
- | > Structs:
- | - Uninstall Params (PLUGINUNINSTALLPARAMS)
- |
- | > Helpers:
- | - Macro: Run service while uninstalling (PUICallService)
- | - Function: Remove some files in directory (PUIRemoveFilesInDirectory)
- |
- | > Events:
- | - Allow to uninstall a plugin (ME_PLUGINUNINSTALLER_OKTOUNINSTALL)
- | - Plugin gets uninstalled (ME_PLUGINUNINSTALLER_UNINSTALL)
- |
- | > Services:
- | - Remove database module (MS_PLUGINUNINSTALLER_REMOVEDBMODULE)
- | - Remove a setting globally (MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY)
- | - Remove skinned sound (MS_PLUGINUNINSTALLER_REMOVESKINSOUND)
- | - Uninstall a plugin (MS_PLUGINUNISTALLER_UNISTALLPLUGIN)
- | - Getting handles (MS_PLUGINUNINSTALLER_GETHANDLE)
- |
-
-
- This file is only thought for plugin developers.
- If you only want to use "PluginUninstaller" and don't want to develop a plugin
- or something with it you don't need this file.
-
- If there are any problems or bugs with or in this file or something else
- please mail me. My e-mail address is: hrathh@users.sourceforge.net
- For more documentation you can use this address, too. :-)
-
- If you have any whishes on some plugin uninstalling for your
- plugin you can mail me, too. :-)
-
-*/
-#ifndef M_UNINSTALLER_H
-#define M_UNINSTALLER_H
-
-#ifndef CallService
- #pragma message("Mistake Alert!: "m_uninstaller.h" needs to be included after "newpluginapi.h"!\n The following errors are resulting of this mistake.\n")
-#endif
-
-
-// | General Info
-// -----------------------------
-
-// Uninstall Example/Template
-// ---------------------------
-// Making your plugin uninstallable is very easy.
-// Just add the following "Uninstall" function near the "Unload" function
-// in your plugin.
-// A template plugin is available in the source code package.
-
-// Old:
-// int __declspec(dllexport) Uninstall(BOOL bIsMirandaRunning, BOOL bDoDeleteSettings, char* pszPluginPath);
-
-// New:
-//int __declspec(dllexport) UninstallEx(PLUGINUNINSTALLPARAMS* ppup)
-//{
- // Available Variables:
- // -----------------------------
- // ppup->bIsMirandaRunning:
- // Contains if Miranda is running
- // (Currently this is always TRUE).
-
- // ppup->bDoDeleteSettings:
- // Contains if the users selected
- // that he wants all settings be deleted.
-
- // ppup->pszPluginsPath:
- // Contains the plugins directory name.
-
-
- // Notes:
- // -----------------------------
-
- // Run before "Unload" function:
- // -> IMPORTANT: Be careful not to write to the database or to files in "Unload" again!!!
- // -> Perhaps create a global BOOL variable which is set to TRUE when your plugin gets uninstalled
- // or check of a database setting "IsInstalled" in Unload() or sth. like that
-
- // All Miranda is still loaded
-
- // Here you can do:
- // - Delete settings group in database
- // - Delete registry items
- // - Delete ini-files and other settings files
- // - Delete other files
-
- // Your plugin dll gets automatically deleted
-
- // Services to remove are offered:
- // MS_PLUGINUNINSTALLER_REMOVEDBMODULE
- // MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY
- // MS_PLUGINUNINSTALLER_REMOVESKINSOUND
-
-
- // Getting other useful paths:
- // -----------------------------
-
- // System directory:
-
- //char szSysPath[MAX_PATH];
- //GetSystemDirectory(szSysPath, MAX_PATH);
-
-
- // Windows directory:
-
- //char szWinPath[MAX_PATH];
- //GetWindowsDirectory(szWinPath, MAX_PATH);
-
-
- // Other directories:
-
- // char szPath[MAX_PATH];
- // SHGetSpecialFolderPath(NULL, szPath, CSIDL_* , FALSE);
-
- // Some available dirs:
- // CSIDL_APPDATA CSIDL_SENDTO CSIDL_FAVORITES
- // CSIDL_STARTUP CSIDL_PROFILE CSIDL_DESKTOPDIRECTORY
-
-
- // Delete Files
- //const char* apszFiles[] = {"MyPlugin_Readme.txt", "MyPlugin_License.txt", "MyPlugin_Developer.txt", "MyPlugin_Translation.txt"};
- //PUIRemoveFilesInPath(ppup->pszPluginsPath, apszFiles);
-
- // Delete Settings
- //if(ppup->bDoDeleteSettings == TRUE)
- //{
- //if (ppup->bIsMirandaRunning == TRUE) // Check if it is possible to access services
- //{
- // Remove plugin's module
- //PUIRemoveDbModule("MyPlugin");
-
- // Remove plugin's sounds
- //PUIRemoveSkinSound("MySoundSetting1");
- //PUIRemoveSkinSound("MySoundSetting2");
- //}
- //}
-
- // Remember:
- // Do not forget to remove your (eventually) created registry items here, too.
-
-
- // The plugin's dll file gets deleted after returning.
-
- // Remember:
- // If your DLL file is additionally in use by another application (eg. Windows)
- // you need to free the DLL *here* completely. Otherwise it can't be deleted.
-
-// return 0;
-//}
-
-
-
-// Changing displayed icon
-// ---------------------------
-// The icon that gets displayed on the options page is always the "first"
-// icon in your DLL file.
-// An icon in your DLL file is the first icon when it has the lowest recource ID.
-// If you would like to have an other icon shown in the options please change your
-// icon resource IDs so that the icon you would like to have has the lowest one.
-// For example if you use MS Visual C++, open "resource.h" and change the resource define
-// of your prefered icon to the lowest icon number.
-
-
-// Changing displayed docs
-// ---------------------------
-// The items "License" and "More Information" on the plugin details page
-// are created when the a license and/or a readme file for the plugin exists.
-// The files get detected automatically and need a special name
-// so that they get detected.
-// The text files need to be either placed in the "Plugins" directory or
-// in the "Docs" directory. Whereof the last one is the better one :-)
-//
-// For the license file the following file name formatings are possible:
-// PluginName-License.txt (I personally think that this is the best naming solution... :-) )
-// PluginName_License.txt,
-//
-// For the readme file the following ones are possible:
-// PluginName-Readme.txt (Again...I like this one :-D ),
-// PluginName_Readme.txt,
-
-// Message boxes on uninstall
-// ---------------------------
-// If you would like to ask the user for something to remove/uninstall
-// please hook the event ME_PLUGINUNINSTALLER_UNINSTALL and show your
-// message box there. Save the action the user chose in a
-// global BOOL variable and do the chosen action in "UninstallEx".
-// You can get the plugins options window handle with MS_PLUGINUNINSTALLER_GETHANDLE.
-
-
-// Service Accessibility
-// ---------------------------
-// Remember that you only can use these functions after the event ME_SYSTEM_MODULESLOADED
-// or later because "PluginUninstaller" needs to be loaded first.
-// Normally you only use them in your "UninstallEx" function.
-//
-// IMPORTANT!:
-// Please make sure that you always use the macro PUICallService
-// in the "UninstallEx" function instead of the CallService function.
-
-
-// Including this file
-// ---------------------------
-// To use some of the uninstalling functionality you have to include this file
-// into your project.
-//
-// IMPORTANT!:
-// Please make sure that you include the file "newpluginapi.h" before this one.
-// If this isn't the case there may some compile errors come up.
-
- // -> Example:
- // If your plugin is in the directory "Plugins/MyPlugin/" and
- // this include file is in the directory "Plugins/PluginUninstaller"
- // you can use the following:
-
- //#include "../PluginUninstaller/m_uninstaller.h"
-
- // If your plugin is in an directory that is different to that one just
- // change the include path to the one you want.
-
-
-
-
-
-// | Structs
-// -----------------------------
-
-// ---------------------------------------------
-// -- Struct: Uninstall Params -----------------
-// ---------------------------------------------
-
-// Struct: PLUGINUNINSTALLPARAMS
-// (Gets passed to "UninstallEx" function)
-
-typedef int (*HELPERPROC)(const char*, WPARAM, LPARAM); // Used internally (for pHelperProcAddress)
-
-typedef struct {
- BOOL bIsMirandaRunning; // Is TRUE when Miranda is loaded and services are available (Please use PUICallService instead of CallService)
- BOOL bDoDeleteSettings; // Is TRUE when user wants to delete settings (If this is FALSE, please only delete your files)
- char* pszPluginsPath; // Contains the plugin directory path
- char* pszDocsPath; // Contains the document directory for plugins documentation (Added in version 1.1.1.0)
- char* pszIconsPath; // Contains the icon directory for icon dlls (Added in version 1.1.2.0)
- HELPERPROC pHelperProcAddress; // Used internally (Contains proc address for PUICallService)
-} PLUGINUNINSTALLPARAMS;
-
-
-
-
-
-// | Helper
-// -----------------------------
-
-
-// ---------------------------------------------
-// -- Macro: Run service while uninstalling ----
-// ---------------------------------------------
-
-// Macro: PUICallService
-
-#define PUICallService(service, wParam, lParam) (ppup->pHelperProcAddress) (service, wParam, lParam);
-
-// Description:
-// -------------
-// This service provides the possibility to call a Miranda
-// service in the "UninstallEx" function.
-// Important!: Use this macro always instead of "CallService",
-// because else a crash occurs when the plugin was decativated
-// and gets uninstalled
-
-// Parameters:
-// -------------
-// Same parameters as CallService of Miranda Core.
-
-// Return Values:
-// --------------
-// Return values are the same as the CallService function of Miranda Core.
-// Additionaly returns CALLSERVICE_NOTFOUND if Miranda is not loaded
-// which means the services are not accessable.
-
-
- // Example:
- // ----------------------------------
-
- //if ( (bIsMirandaRunning == TRUE) && (bDoDeleteSettings == TRUE) )
- //{
- // Remove plugin's module
- //PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBMODULE, (WPARAM)"MyPlugin", 0);
- //}
-
-
-
-
-// ---------------------------------------------
-// -- Function: Remove some files in directory -
-// ---------------------------------------------
-
-// Function: PUIRemoveFilesInDirectory
-
-static BOOL __inline PUIRemoveFilesInDirectory(char* pszPath, const char* apszFiles[]);
-
-// Description:
-// -------------
-// This helper provides the possibility to easily
-// remove specified files in a specified directory.
-
-// Note: The last version of this helper (PUIRemoveFilesInPath)
-// did not work correctly.
-// Please do now always append a NULL slot to the end of your array.
-
-// Parameters:
-// -------------
-// char* pszPath = Path to the files in array
-// const LPCSTR apszFiles[] = NULL-terminated array of files to be deleted.
-
-// Return Values:
-// --------------
-// Returns TRUE if the files could be deleted.
-// FALSE if the files could not be deleted or did not exist.
-
-
-static BOOL __inline PUIRemoveFilesInDirectory(char* pszPath, const char* apszFiles[])
-{
- char szFile[MAX_PATH];
- BOOL bReturn = FALSE;
- int iFile = 0;
-
- while (apszFiles[iFile] != NULL)
- {
- strncpy(szFile, pszPath, sizeof(szFile));
- strncat(szFile, apszFiles[iFile], sizeof(szFile)-strlen(szFile));
-
- if ((BOOL)DeleteFile(szFile) == TRUE) bReturn = TRUE;
- iFile++;
- }
-
- return bReturn;
-}
-
- // Example:
- // ----------------------------------
-
- //const char* apszFiles[] = {"File1.txt", "File2.txt", "File3.txt", NULL};
- //PUIRemoveFilesInDirectory(ppup->pszPluginsPath, apszFiles);
-
-
-
-
-// | Events
-// -----------------------------
-
-
-// ---------------------------------------------
-// -- Event: Allow to uninstall a plugin -------
-// ---------------------------------------------
-
-// Event: ME_PLUGINUNINSTALLER_OKTOUNINSTALL
-
-#define ME_PLUGINUNINSTALLER_OKTOUNINSTALL "PluginUninstaller/OkToUninstall"
-
-// Submitted Values:
-// -----------------
-// wParam = pszPluginName (String containing the translated plugin name)
-// lParam = pszPluginFile (String containing the plugin dll file name in lower case)
-
-// Return Values:
-// -----------------
-// Returning 1 on this event causes the "Remove Plugin" button to be disabled.
-
-
-
-// ---------------------------------------------
-// -- Event: Plugin gets uninstalled -----------
-// ---------------------------------------------
-
-// Event: ME_PLUGINUNINSTALLER_UNINSTALL
-
-#define ME_PLUGINUNINSTALLER_UNINSTALL "PluginUninstaller/Uninstall"
-
-// Submitted Values:
-// -----------------
-// wParam = pszPluginName (String containing the translated plugin name)
-// lParam = pszPluginFile (String containing the plugin dll file name in lower case)
-
-// Return Values:
-// -----------------
-// Returning 1 on this event causes the uninstall process to be canceled.
-
-// Notice:
-// Hook this event if you would like to ask the user for something to remove/uninstall
-// and show your message box on this event. Save the action the user chose in a
-// global BOOL variable and do the chosen action in "UninstallEx".
-// You can get the plugins options window handle with MS_PLUGINUNINSTALLER_GETHANDLE.
-
-// Other plugins can use this event to be noticed that another plugin isn't installed anylonger.
-
-
-
-
-// | Services
-// -----------------------------
-
-
-// ---------------------------------------------
-// -- Service: Remove database module ----------
-// ---------------------------------------------
-
-// Service: MS_PLUGINUNINSTALLER_REMOVEDBMODULE
-
-#define MS_PLUGINUNINSTALLER_REMOVEDBMODULE "PluginUninstaller/RemoveDbModule"
-
-// Description:
-// -------------
-// This service provides the possibility to delete all database modules
-// associated to your plugin.
-// The specified database module will be removed in all contacts
-// including the NULL contact.
-// Remember to call it always with PUICallService in "UninstallEx" function.
-
-// Parameters:
-// -------------
-// wParam = (char*)pszModule // Pointer to a string containd module name. Can't be NULL
-// lParam = (const char*)apszIgnoreSettings // NULL terminated array of strings. Can be 0 if no settings should be ignored.
- // See example 3 for more details
-
-// Return Values:
-// --------------
-// Returns 0 on success.
-// Nonzero if the module was not present in database.
-
-
-#ifndef UNINSTALLER_NOHELPERS
-
-// Can only be used in "UninstallEx" function
-#define PUIRemoveDbModule(pszModule) PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBMODULE, (WPARAM)pszModule, 0);
-
-#endif
-
-
- // Example 1:
- // ----------------------------------
-
- //PUIRemoveDbModule("MyPlugin");
-
-
- // Example 2:
- // ----------------------------------
-
- //char szModule[] = "MyModule";
- //PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBMODULE, (WPARAM)szModule, 0);
-
-
- // Example 3:
- // ----------------------------------
-
- // This deletes all settings in the specified module exept
- // the specified settings: "Setting1",..."Setting4"
-
- // char szModule[] = "MyModule";
- // const char* apszIgnoreSettings[] = {"Setting1", "Setting2", "Setting3", "Setting4", NULL};
- // PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBMODULE, (WPARAM)szModule, (LPARAM)&apszIgnoreSettings);
-
-
-
-// ---------------------------------------------
-// -- Service: Remove a setting globally -------
-// ---------------------------------------------
-
-// Service: MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY
-
-#define MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY "PluginUninstaller/RemoveDbSettingGlobally"
-
-// Description:
-// -------------
-// This service provides the possibility to delete a specific
-// setting in database in all contacts including the NULL contact.
-// Remember to call it always with PUICallService in "UninstallEx" function.
-
-// Parameters:
-// -------------
-// wParam = (char*)pszModule
-// lParam = (char*)pszSetting
-
-// Return Values:
-// --------------
-// Returns 0 on success.
-// Nonzero if the setting was not present in database.
-
-
-#ifndef UNINSTALLER_NOHELPERS
-
-// Can only be used in "UninstallEx" function
-#define PUIRemoveDbSettingGlobally(pszModule, pszSetting) PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY, (WPARAM)pszModule, (LPARAM)pszSetting);
-
-
-#endif
-
-
- // Example 1:
- // ----------------------------------
-
- //PUIRemoveDbSettingGlobally("MyPlugin", "MySetting");
-
-
- // Example 2:
- // ----------------------------------
-
- //szModule[] = "MyPlugin";
- //szSetting[] = "MySetting";
- //PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBSETTINGGLOBALLY, (WPARAM)szModule, (LPARAM)szSetting);
-
-
-
-
-
-
-// ---------------------------------------------
-// -- Service: Remove skinned sound ------------
-// ---------------------------------------------
-
-// Service: MS_PLUGINUNINSTALLER_REMOVESKINSOUND
-
-#define MS_PLUGINUNINSTALLER_REMOVESKINSOUND "PluginUninstaller/RemoveSkinSound"
-
-// Description:
-// -------------
-// This service provides the possibility to delete all your sound settings
-// associated to your plugin.
-// The specified sound will be be removed.
-// Remember to call it always with PUICallService in "UninstallEx" function.
-
-// Parameters:
-// -------------
-// wParam = (char*)pszSoundSetting
-// lParam = 0
-
-// Return Values:
-// --------------
-// Returns 0 on success.
-// Nonzero if the sound was not present in database.
-
-
-#ifndef UNINSTALLER_NOHELPERS
-
-// Can only be used in "UninstallEx" function
-#define PUIRemoveSkinSound(pszSoundSetting) PUICallService(MS_PLUGINUNINSTALLER_REMOVESKINSOUND, (WPARAM)pszSoundSetting, 0);
-
-#endif
-
-
- // Example 1:
- // ----------------------------------
-
- //PUIRemoveSkinSound("MySoundSetting");
-
-
- // Example 2:
- // ----------------------------------
-
- //szSoundModule[] = "MySoundSetting";
- //PUICallService(MS_PLUGINUNINSTALLER_REMOVEDBMODULE, (WPARAM)szSoundSetting, 0);
-
-
-
-
-
-// ---------------------------------------------
-// -- Service: Uninstall a plugin --------------
-// ---------------------------------------------
-
-// Service: MS_PLUGINUNINSTALLER_UNINSTALLPLUGIN
-
-#define MS_PLUGINUNINSTALLER_UNINSTALLPLUGIN "PluginUninstaller/UninstallPlugin"
-
-// Description:
-// -------------
-// This service marks a plugin to be uninstalled at next restart of Miranda IM.
-// It uses the default value for "Delete all settings".
-// You can use this service for example when you want that your sub-plugin gets
-// also removed when your main-plugin is uninstalled.
-// Note: This service is not needed for the normal uninstalling functionality.
-
-// Parameters:
-// -------------
-// wParam = (char*)pszPluginName // do not translate this!
-// lParam = (char*)pszPluginFile // without path, only file name!
-
-// Return Values:
-// --------------
-// Returns always 0.
-
-
-#ifndef UNINSTALLER_NOHELPERS
-
-int __inline PUIUninstallPlugin(char* pszPluginName, char* pszPluginFile)
-{
- return CallService(MS_PLUGINUNINSTALLER_UNINSTALLPLUGIN, (WPARAM)pszPluginName, (LPARAM)pszPluginFile);
-}
-
-#endif
-
-
- // Example 1:
- // ----------------------------------
-
- //PUIUninstallPlugin("PluginName", "plugin.dll");
-
-
- // Example 2:
- // ----------------------------------
-
- // hInst => Handle of a specific (your?) plugin
- // char szPluginName[] = "YourPluginName";
-
- //char* pFileName;
- //char szPath[MAX_PATH];
-
- //GetModuleFileName(hInst, szPath, sizeof(szPath));
- //pFileName = strrchr(szPath, '\\');
- //pFileName = pFileName+1; // Pointer arithmetic
-
- //CallService(MS_PLUGINUNINSTALLER_UNINSTALLPLUGIN, (WPARAM)szPluginName, (LPARAM)pFileName);
-
-
-
-
-// ---------------------------------------------
-// -- Service: Getting handles -----------------
-// ---------------------------------------------
-
-// Service: MS_PLUGINUNINSTALLER_GETHANDLE
-
-#define MS_PLUGINUNINSTALLER_GETHANDLE "PluginUninstaller/GetHandle"
-
-// Description:
-// -------------
-// This service gets a specified window/instance handle.
-
-// Note: This service must not be used in "UninstallEx" function.
-// It is mainly thought for being used in ME_PLUGINUNINSTALLER_UNINSTALL event
-// to give out a MessageBox or something like that.
-
-// Parameters:
-// -------------
-// wParam = UINT uHandleType;
-// lParam = 0
-
-// Possible values for wParam:
-#define PUIHT_HINST_PLUGIN_INSTANCE 0 // HINSTANCE of the PluginUninstaller plugin
-#define PUIHT_HWND_PLUGIN_OPTIONS 1 // HWND of the plugin options dialog (if it is loaded; else NULL)
-
-// Return Values:
-// --------------
-// Returns the specified handle value.
-// If no handle type is specified it returns NULL.
-// The handle doesn't need to be destroyed.
-
-
-#ifndef UNINSTALLER_NOHELPERS
-
-HANDLE __inline PUIGetHandle(UINT uHandleType)
-{
- return (HANDLE)CallService(MS_PLUGINUNINSTALLER_GETHANDLE, uHandleType, 0);
-}
-
-#endif
-
-
- // Example
- // ----------------------------------
-
- //HWND hwndDlg;
- //hwndDlg = (HWND)PUIGetHandle(PUIHT_HWND_PLUGIN_OPTIONS);
-
-
-
-
-
-#endif // M_UNINSTALLER_H
diff --git a/yamn/libs/unicows.lib b/yamn/libs/unicows.lib
deleted file mode 100644
index 9ef8bbd..0000000
--- a/yamn/libs/unicows.lib
+++ /dev/null
Binary files differ
diff --git a/yamn/m_account.h b/yamn/m_account.h
deleted file mode 100644
index 2baadd2..0000000
--- a/yamn/m_account.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * This file defines all needed parameters for one account.
- * Other plugin can use this (so YAMN does not check it and another plugin can inform YAMN about new mail e.g.),
- * this can be usefull for plugins like Yahoo or MSN (Hotmail notify)
- *
- * (c) majvan 2002-2004
- */
-
-#ifndef __ACCOUNT_H
-#define __ACCOUNT_H
-
-#include <windows.h>
-#include <tchar.h>
-#include "m_synchro.h" //include synchronizing objects. If you want to write protocol plugin, which works with YAMN accounts, it must use YAMN synchronizing objects
-
-//
-//================================== OTHER DEFINITIONS ========================================
-//
-
-enum
-{
-// Error codes returned from functions (services) working with account book files
- EACC_SYSTEM=1, //use GetLastError() to retrieve detailed information about error
- EACC_ALLOC, //problem with memory allocation
- EACC_FILECOMPATIBILITY, //file is corrupted
- EACC_ENDOFFILE, //unexpected end of file occured
- EACC_FILEVERSION, //file should be YAMN book format, but newer version that expected
- EACC_FILESIZE, //file has wrong size
-};
-
-enum
-{
-// Status of account
-// used in messages WM_YAMN_CHANGESTATUS
-// used also in function GetStatus and SetStatus
- ACC_IDLE=0, //account is IDLE (no work is performed with account)
- ACC_FINDING, //DNS lookup for account
- ACC_CONNECTING, //connecting in progress
- ACC_LOGGING, //logging in progress
- ACC_WORKING, //working
- ACC_DISCONNECTING, //disconnecting from server
-};
-
-typedef struct CNotification
-{
-//#define YAMN_NOTIFICATIONVERSION is not implemented, use YAMN_ACCOUNTVERSION instead
- CNotification(): PopUpB(0), PopUpT(0), PopUpTime(0), App(NULL), AppParam(NULL), Sound(NULL), TrayIcon1(NULL), TrayIcon2(NULL) {}
-
-#define YAMN_ACC_SND 0x00000001 //Plays sound (1)
-#define YAMN_ACC_MSG 0x00000002 //Shows dialog
-#define YAMN_ACC_ICO 0x00000004 //Shows system tray icon (1)
-#define YAMN_ACC_ICOB 0x00000008 //not used now, enables tray icon flashing (1)
-#define YAMN_ACC_APP 0x00000010 //Runs application (1)
-#define YAMN_ACC_POP 0x00000020 //Shows popup
-#define YAMN_ACC_POPC 0x00000040 //Use custom colors in popup
-#define YAMN_ACC_MSGP 0x00000080 //Persistant messgage. This means, when an situation occurs (e.g. new mail) and message is displayed, it is not destroyed when YAMN_ACC_MSG is not set
-#define YAMN_ACC_KBN 0x00000100 //Use Keyboard notify
-#define YAMN_ACC_CONT 0x00000200 //Use Contact notify
-#define YAMN_ACC_CONTNICK 0x00000400 //Use Contact Nick replacement
-#define YAMN_ACC_CONTNOEVENT 0x00000800 //Suppress event for this contact
-//(1) - usable only in newmail notification
- DWORD Flags;
-
- COLORREF PopUpB;
- COLORREF PopUpT;
- DWORD PopUpTime;
- WCHAR *App;
- WCHAR *AppParam;
-
-//These parameters are not stored in standard YAMN book file and therefore must be set by plugin
- char *Sound;
- HICON TrayIcon1;
- HICON TrayIcon2;
-} YAMN_NOTIFICATION,*PYAMN_NOTIFICATION;
-
-typedef struct CServer
-{
- CServer(): Name(NULL),Login(NULL),Passwd(NULL) {}
-
- TCHAR *Name;
- DWORD Port;
-
- TCHAR *Login;
-
-// Password encryption definitions
-#define STARTCODEPSW 0x50
-#define ADDCODEPSW 0x0
- TCHAR *Passwd;
-
-} *PSERVER;
-
-//
-//================================== ACCOUNT DEFINITION ==================================
-//
-
-typedef struct CAccount
-{
-#define YAMN_ACCOUNTFILEVERSION 2 //version of standard file format (YAMN book file format)
-#define YAMN_ACCOUNTVERSION 3
-//If changes are made in this structure, version is changed.
-//So then YAMN does not initialzie your structure, if version does not matches.
-
- BOOL AbleToWork; //This is set to TRUE by default. When it is needed to stop working on this account, YAMN sets this to zero.
-
- struct CYAMNProtoPlugin *Plugin; //free access, because this member should not be changed. The same as YAMN_PLUGIN structure
-
- TCHAR *Name; //access only through AccountAccessSO
-
-// DWORD Abilities; //access only through AccountAccessSO
-
- PSERVER Server; //access only through AccountAccessSO
-
- WORD Interval; //access only through AccountAccessSO
-
-// YAMN account flags (set by user)
-#define YAMN_ACC_ENA 0x00000001 //Enables account. If account is disabled, no countdown is performed
-#define YAMN_ACC_POPN 0x00000002 //Shows one popup per one new mail or for N mails
-#define YAMN_ACC_APOP 0x00000004 //Use APOP authentication
-#define YAMN_ACC_SSL23 0x00000008 //Use SSLv2,3
-#define YAMN_ACC_NOTLS 0x00000010 //Don't try StartTLS (STLS) even available
-#define YAMN_ACC_BODY 0x00000020 //Always retrieve body of the message
- DWORD Flags; //access only through AccountAccessSO
-
-// YAMN account flags (set by plugin)
-#define YAMN_ACC_BROWSE 0x00000001 //Can browse mails. On this account we can run mailbrowser window
-#define YAMN_ACC_POPUP 0x00000002 //Popups of new mail belonging to this account can be showed
- DWORD AbilityFlags;
-
-// YAMN account status flags
-#define YAMN_ACC_ST0 0x00000001 //Check (countdown) when Offline
-#define YAMN_ACC_ST1 0x00000002 //Check (countdown) when Online
-#define YAMN_ACC_ST2 0x00000004 //Check (countdown) when Away
-#define YAMN_ACC_ST3 0x00000008 //Check (countdown) when N/A
-#define YAMN_ACC_ST4 0x00000010 //Check (countdown) when Occupied
-#define YAMN_ACC_ST5 0x00000020 //Check (countdown) when DND
-#define YAMN_ACC_ST6 0x00000040 //Check (countdown) when Free for chat
-#define YAMN_ACC_ST7 0x00000080 //Check (countdown) when Invisible
-#define YAMN_ACC_ST8 0x00000100 //Check (countdown) when On the phone
-#define YAMN_ACC_ST9 0x00000200 //Check (countdown) when Out to lunch
-#define YAMN_ACC_STARTA 0x00010000 //Check on start anyway
-#define YAMN_ACC_STARTS 0x00020000 //Check on start regarding to status setting
-#define YAMN_ACC_FORCE 0x00040000 //Check when "check new mail" item pressed (it is called forced checking)
- DWORD StatusFlags; //access only through AccountAccessSO
-
-// Plugin flags. Use this DWORD if you want YAMN to store it to YAMN book file. You can set here any value
- DWORD PluginFlags;
-
- YAMN_NOTIFICATION NewMailN; //access only through AccountAccessSO
- YAMN_NOTIFICATION NoNewMailN; //access only through AccountAccessSO
- YAMN_NOTIFICATION BadConnectN; //access only through AccountAccessSO
-
- SYSTEMTIME LastChecked; //last check, access only through AccountAccessSO
- SYSTEMTIME LastSChecked; //last check (successfull), access only through AccountAccessSO
- SYSTEMTIME LastSynchronised; //last synchronisation (successfull), access only through AccountAccessSO
- SYSTEMTIME LastMail; //last check when new mail detected, access only through AccountAccessSO
-
- char Status[255]; //access only through GetStatusFcn() and SetStatusFcn() functions
-
- DWORD TimeLeft; //access only through AccountAccessSO
-
- HANDLE Mails; //access only through MessagesAccessSO
-
-//Account members are mostly the same, but there can be protocol (POP3,IMAP...) special features.
-//To use them, only inherit this class and add your own features.
-//First idea was to add pointer to void, where plugin can store its own values.
-//But this solution is better in my opinion.
-
-//This is event with counter. Event is signaled when no threads are using account (and will not be using)
-//Very usefull for account delete operation
- PSCOUNTER UsingThreads;
-
-//We have to achieve, that only one thread can write to account and more threads can read.
-//Writing to account means that we change account parameters
-//Reading from account meands we read account parameters
-//Use WaitToRead(), ReadDone(), WaitToWrite(), WriteDone() synchronization functions
-//For plugins, this is a pointer to void. It does not matter for plugin what is this variable for,
-//because plugin works only with synchronization routines. And why is this void * ? It is because
-//plugin does not need to include headers for SWMRG structures...
- PSWMRG AccountAccessSO;
-
-//We have to achieve, that only one thread can write to account mails and more threads can read.
-//While some thread writes mails, other thread can write to account. This can be small problem, but it never appears in YAMN.
-//But you should think about this note if you want to add some features in the future
-//Writing to messages means any changes to message queue or message data
-//Reading from messages means reading message queue (browsing through all messages) or reading message data
-//Use MsgsWaitToRead(),MsgsReadDone(),MsgsWaitToWrite(),MsgsWriteDone() synchronization functions
- PSWMRG MessagesAccessSO;
-
-//For clist contact notification
- HANDLE hContact;
- BOOL isCounting;
-
- struct CAccount *Next;
-} *HACCOUNT;
-
-//
-//================================== FUNCTIONS DEFINITIONS ========================================
-//
-
-typedef void (WINAPI *YAMN_SETSTATUSFCN)(HACCOUNT,TCHAR *);
-typedef void (WINAPI *YAMN_GETSTATUSFCN)(HACCOUNT,TCHAR *);
-
-//
-//================================== QUICK FUNCTION CALL DEFINITIONS ========================================
-//
-
-//These are defininitions for YAMN exported functions. Your plugin can use them.
-//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions.
-//It is something similar like pluginLink variable in Miranda plugin. If you use
-//this name of variable, you have already defined these functions and you can use them.
-//It's similar to Miranda's CreateService function.
-
-//How to use YAMN functions:
-//Create a structure containing pointer to functions you want to use in your plugin
-//This structure can look something like this:
-//
-// struct
-// {
-// YAMN_SETSTATUSFCN SetStatusFcn;
-// YAMN_GETSTATUSFCN GetStatusFcn;
-// } *pYAMNFcn;
-//
-//then you have to fill this structure with pointers...
-//
-// pYAMNFcn->SetStatusFcn=(YAMN_SETSTATUSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETSTATUSID,(LPARAM)0);
-// pYAMNFcn->GetStatusFcn=(YAMN_GETSTATUSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_GETSTATUSID,(LPARAM)0);
-//
-//and in your plugin just simply use e.g.:
-//
-// SetAccountStatus(ActualAccount,ACC_CONNECTING); //this command set account status to "connecting to server"
-//
-
-#define YAMN_SETSTATUSID "YAMN/SetStatus"
-#define YAMN_GETSTATUSID "YAMN/GetStatus"
-
-#define SetAccountStatus(x,y) pYAMNFcn->SetStatusFcn(x,y)
-#define GetAccountStatus(x,y) pYAMNFcn->GetStatusFcn(x,y)
-
-#endif
diff --git a/yamn/m_filterplugin.h b/yamn/m_filterplugin.h
deleted file mode 100644
index 210cb0c..0000000
--- a/yamn/m_filterplugin.h
+++ /dev/null
@@ -1,139 +0,0 @@
-#ifndef __M_FILTERPLUGIN_H
-#define __M_FILTERPLUGIN_H
-
-#include <windows.h>
-#include "mails/m_mails.h" //for mail definition
-
-//
-//================================== IMPORTED FUNCTIONS ==================================
-//
-
-#ifndef YAMN_STANDARDFCN
-typedef DWORD (WINAPI *YAMN_STANDARDFCN)(LPVOID);
-#endif
-typedef DWORD (WINAPI *YAMN_FILTERMAILFCN)(HACCOUNT,DWORD,HYAMNMAIL,DWORD);
-
-typedef struct CFilterImportFcn
-{
-//If changes are made in this structure, version is changed.
-//So then YAMN does not initialize your structure, if version does not match.
-#define YAMN_FILTERIMPORTFCNVERSION 2
-
-//Function is called to get info from mail and mark mail as spam or not...
- YAMN_FILTERMAILFCN FilterMailFcnPtr;
-
-//Function is called when application exits. Plugin should unload
- YAMN_STANDARDFCN UnLoadFcn;
-} YAMN_FILTERIMPORTFCN, *PYAMN_FILTERIMPORTFCN;
-
-//
-//================================== FILTER PLUGIN REGISTRATION STRUCTURES ==================================
-//
-
-typedef struct CFilterPluginRegistration
-{
-#define YAMN_FILTERREGISTRATIONVERSION 2
-//Name of plugin
-//this member CANNOT be NULL. Just write here description, i.e. "PopFile filter plugin for YAMN"
- char *Name;
-
-//The version of plugin. CANNOT be NULL.
- char *Ver;
-
-//Plugin copyright
-//Write here your copyright if you want (or NULL)
- char *Copyright;
-
-//Plugin description. Can be NULL.
- char *Description;
-
-//Your contact (email). Can be NULL.
- char *Email;
-
-//The web page. Can be NULL.
- char *WWW;
-} YAMN_FILTERREGISTRATION, *PYAMN_FILTERREGISTRATION;
-
-typedef struct CYAMNFilterPlugin
-{
-//Importance of plugin. Mails are filtered in the way, that filter with smallest importance number
-//filters and marks mails first and the filter using the highest number marks mails the last. It means,
-//that number with highest number is the most important, because it can set or clear flags as it wants,
-//if another plugin set some flag, plugin with higher number can clear it.
- DWORD Importance;
-
-//All needed other info from plugin
- PYAMN_FILTERREGISTRATION PluginInfo;
-
-//Imported functions
- PYAMN_FILTERIMPORTFCN FilterFcn;
-} YAMN_FILTERPLUGIN, *PYAMN_FILTERPLUGIN, *HYAMNFILTERPLUGIN;
-
-typedef struct CFilterPluginQueue
-{
- HYAMNFILTERPLUGIN Plugin;
- struct CFilterPluginQueue *Next;
-} YAMN_FILTERPLUGINQUEUE,*PYAMN_FILTERPLUGINQUEUE;
-
-//
-//================================== YAMN SERVICES FOR PROTOCOL PLUGIN ==================================
-//
-
-//RegisterFilterPlugin Service
-//Registers filter plugin
-//WPARAM- pointer to YAMN_FILTERREGISTRATION structure. Plugin must not delete this structure from memory.
-//LPARAM- version of YAMN_FILTERREGISTRATION structure (use YAMN_PROTOREGISTRATIONVERSION definition)
-//returns handle to plugin (HYAMNFILTERPLUGIN), if registration failed (plugin not registered) returns NULL
-//You need next to call SetFilterPluginFcnImportFcn to have your plugin cooperated with YAMN.
-#define MS_YAMN_REGISTERFILTERPLUGIN "YAMN/Service/RegisterFilterPlugin"
-
-//UnregisterFilterPlugin Service
-//Unregisters filter plugin
-//WPARAM- (HYAMNFILTERPLUGIN) plugin handle
-//LPARAM- any value
-//returns nonzero if success
-#define MS_YAMN_UNREGISTERFILTERPLUGIN "YAMN/Service/UnregisterFilterPlugin"
-
-//
-//================================== FUNCTIONS DEFINITIONS ========================================
-//
-
-typedef INT_PTR (WINAPI *YAMN_SETFILTERPLUGINFCNIMPORTFCN)(HYAMNFILTERPLUGIN Plugin,DWORD Importance,PYAMN_FILTERIMPORTFCN YAMNFilterFcn,DWORD YAMNFilterFcnVer);
-
-//
-//================================== QUICK FUNCTION CALL DEFINITIONS ========================================
-//
-
-//These are defininitions for YAMN exported functions. Your plugin can use them.
-//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions.
-//It is something similar like pluginLink variable in Miranda plugin. If you use
-//this name of variable, you have already defined these functions and you can use them.
-//It's similar to Miranda's CreateService function.
-
-//How to use YAMN functions:
-//Create a structure containing pointer to functions you want to use in your plugin
-//This structure can look something like this:
-//
-// struct
-// {
-// YAMN_SETFILTERPLUGINFCNIMPORTFCN SetFilterPluginFcnImportFcn;
-// } *pYAMNFcn;
-//
-//then you have to fill this structure with pointers... If you use Miranda services, you will do it like this
-//
-// pYAMNFcn->SetFilterPluginFcnImportFcn=(YAMN_SETFILTERPLUGINFCNIMPORTFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETFILTERPLUGINFCNIMPORTID,(LPARAM)0);
-//
-//If you do not use Miranda services, call service MS_YAMN_GETFCNPTR directly. The address to the MS_YAMN_GETFCNPTR is sent to you in LoadFilter function:
-//
-// pYAMNFcn->SetFilterPluginFcnImportFcn=(YAMN_SETFILTERPLUGINFCNIMPORTFCN)YAMN_GetFcnPtr((WPARAM)YAMN_SETFILTERPLUGINFCNIMPORTID,(LPARAM)0);
-//
-//and in your plugin just simply use e.g.:
-//
-// SetFilterPluginFcnImport(...);
-//
-
-#define YAMN_SETFILTERPLUGINFCNIMPORTID "YAMN/SetFilterPluginFcnImport"
-
-#define SetFilterPluginFcnImport(a,b,c,d) pYAMNFcn->SetFilterPluginFcnImportFcn(a,b,c,d)
-
-#endif
diff --git a/yamn/m_messages.h b/yamn/m_messages.h
deleted file mode 100644
index 7fc0fbe..0000000
--- a/yamn/m_messages.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef __MESSAGES_H
-#define __MESSAGES_H
-
-//#include "list.h"
-
-// structure for chained list of handles (window handles, account handles, whatever)
-struct WndHandles
-{
- HANDLE Handle;
-
- struct WndHandles *Next;
-};
-
-#define WM_YAMN WM_APP+0x2800 //(0xA800 in fact)
-enum
-{
- WM_YAMN_CHANGEHOTKEY=WM_YAMN,
- WM_YAMN_CHANGETIME,
-
-//ChangeStatus message
-//WPARAM- (HACCOUNT) Account whose status is changed
-//LPARAM- new status of account
- WM_YAMN_CHANGESTATUS,
-
-//StopAccount message
-//WPARAM- (HACCOUNT) Account, which should stop its work and finish immidiatelly
- WM_YAMN_STOPACCOUNT,
-
-//Account content changed
- WM_YAMN_CHANGECONTENT,
-
- WM_YAMN_UPDATEMAILS,
-
- WM_YAMN_NOTIFYICON,
-
- WM_YAMN_CHANGESTATUSOPTION,
-
- WM_YAMN_SHOWSELECTED,
-};
-
-#endif
diff --git a/yamn/m_protoplugin.h b/yamn/m_protoplugin.h
deleted file mode 100644
index 4407dae..0000000
--- a/yamn/m_protoplugin.h
+++ /dev/null
@@ -1,389 +0,0 @@
-#ifndef __M_PROTOPLUGIN_H
-#define __M_PROTOPLUGIN_H
-
-#include <windows.h>
-#include "m_account.h" //for account import functions
-#include "mails/m_mails.h" //for mail import functions
-
-//
-//================================== OTHER DEFINITIONS ========================================
-//
-
-//structure is used to give parameters to Check, Synchro or Timeout function
-struct CheckParam
-{
-//Your plugin should use this definition
-#define YAMN_CHECKVERSION 2
-//Version of this structure. Please verify your version in your plugin
- DWORD Ver;
-//Event that new Check thread must set to signal calling thread that "I've copied all parameters from stack"
-//IMPORTANT!!!: Although version #defined in your plugin is not the same, your plugin MUST signal this event
-//in any way. YAMN is waiting for this event. If you do not signal it, YAMN is blocked.
- HANDLE ThreadRunningEV;
-//ActualAccount- the only parameter used in Check function and should contain all needed information I think :)
- HACCOUNT AccountParam;
-
-//I thought it, but this is needed, too
-#define YAMN_NORMALCHECK 0
-#define YAMN_FORCECHECK 1
- DWORD Flags;
-
-//YAMN writes here some informations that are needed to pass to mail browser function (or bad connection)
- void *BrowserParam;
-//Calling thread (protocol plugin) can write here its own parameters. Usefull when protocol calls its own check function. YAMN always sets this parameter to NULL
- void *CustomParam;
-};
-
-//structure is used to give parameters to DeleteMails function
-struct DeleteParam
-{
-//Your plugin should use this definition
-#define YAMN_DELETEVERSION 1
-//Version of this structure. Please verify your version in your plugin
- DWORD Ver;
-//Event that new Delete thread must set to signal calling thread that it copied all parameters from stack
-//IMPORTANT!!!: Although version #defined in your plugin is not the same, your plugin MUST signal this event
-//in any way. YAMN is waiting for this event. If you do not signal it, YAMN is blocked.
- HANDLE ThreadRunningEV;
-//ActualAccount- which account to delete
- HACCOUNT AccountParam;
-//YAMN writes here some informations that are needed to pass to mail browser function (or bad connection or no new mail)
- void *BrowserParam;
-//Calling thread can write here its own parameter. Usefull when protocol calls its own delete function. YAMN always sets this parameter to NULL
- void *CustomParam;
-};
-
-//
-//================================== IMPORTED FUNCTIONS ==================================
-//
-
-#ifndef YAMN_STANDARDFCN
-typedef DWORD (WINAPI *YAMN_STANDARDFCN)(LPVOID);
-#endif
-typedef struct CYAMNVariables *(WINAPI *YAMN_GETVARIABLESFCN)(DWORD);
-typedef HACCOUNT (WINAPI *YAMN_NEWACCOUNTFCN)(struct CYAMNProtoPlugin *,DWORD);
-typedef void (WINAPI *YAMN_STOPACCOUNTFCN)(HACCOUNT);
-typedef void (WINAPI *YAMN_DELETEACCOUNTFCN)(HACCOUNT);
-typedef DWORD (WINAPI *YAMN_WRITEPLUGINOPTS)(HANDLE File,HACCOUNT);
-typedef DWORD (WINAPI *YAMN_READPLUGINOPTS)(HACCOUNT,TCHAR **,TCHAR *);
-typedef DWORD (WINAPI *YAMN_CHECKFCN)(struct CheckParam *);
-typedef DWORD (WINAPI *YAMN_DELETEFCN)(struct DeleteParam *);
-typedef WCHAR* (WINAPI *YAMN_GETERRORSTRINGWFCN)(DWORD);
-typedef char* (WINAPI *YAMN_GETERRORSTRINGAFCN)(DWORD);
-typedef void (WINAPI *YAMN_DELETEERRORSTRINGFCN)(LPVOID);
-typedef DWORD (WINAPI *YAMN_WRITEACCOUNTSFCN)();
-
-typedef struct CAccountImportFcn
-{
-//If changes are made in this structure, version is changed.
-//So then YAMN does not initialize your structure, if version does not match.
-#define YAMN_PROTOIMPORTFCNVERSION 3
-
-//Note: not all of these functions are needed to be implemented in your protocol plugin. Those
-//functions, which are not implemented, you have to set to NULL.
-
-//Function is called to construct protocol defined account
-//This is VERY IMPORTANT for YAMN and plugin to cooperate:
-//Imagine following situation. YAMN wants to add new account (it is possible e.g.
-//when loading accounts from file), so it has to call protocol constructor.
-//It calls NewAccount function and plugin creates new account and returns
-//its handle (pointer in fact). That means new account is created with plugin features
-//(it is created inherited account, not base class).
- YAMN_NEWACCOUNTFCN NewAccountFcnPtr;
-
-//Function is called to delete protocol defined variables to inherited CAccount structure
- YAMN_DELETEACCOUNTFCN DeleteAccountFcnPtr;
-
-//Function is called when user requests not tu run account longer. (E.g. when closing Miranda)
- YAMN_STOPACCOUNTFCN StopAccountFcnPtr;
-
-//Function is called when plugin should write its own info into book file
- YAMN_WRITEPLUGINOPTS WritePluginOptsFcnPtr;
-
-//Function is called when plugin should read its own info from book file
- YAMN_READPLUGINOPTS ReadPluginOptsFcnPtr;
-
-//Function is called to synchronise account (delete old mails and get the new ones)
- YAMN_CHECKFCN SynchroFcnPtr;
-
-//Function is called when timer timed out- it can be the same as SynchroFcnPtr
- YAMN_CHECKFCN TimeoutFcnPtr;
-
-//Function is called when forced checking- it can be the same as SynchroFcnPtr
- YAMN_CHECKFCN ForceCheckFcnPtr;
-
-//Function is called when user wants to delete mails
- YAMN_DELETEFCN DeleteMailsFcnPtr;
-
-//Function is called when YAMN wants to get error description. Note the parameter given in
-//this function is in fact the same as your CheckFcnPtr, DeleteMailsFcnPtr etc. returns to YAMN.
-//If you want, you may return pointer to some structure, which includes more information about
-//error than only one DWORD. And then, you can in your function create Unicode string containing
-//all your error code. YAMN copies this string into its own buffer. Your error code and pointer
-//can be deleted in DeleteErrorStringFcnPtr, which is called by YAMN
- YAMN_GETERRORSTRINGWFCN GetErrorStringWFcnPtr;
-
-//This is the same as previous one, but plugin returns normal string (not Unicode). YAMN first
-//looks, if your plugin has implemented GetErrorStringWFcnPtr. If not, it looks for this function
-//So as you (of course) wait, you implemnt only one of these functions or no one of them.
- YAMN_GETERRORSTRINGAFCN GetErrorStringAFcnPtr;
-
-//Deletes error string that was allocated in your GetErrorStringXFcnPtr. Parameter to this fcn is
-//Unicode or normal string. Therefore parameter is defined as LPVOID, but your plugin knows if it is
-//Unicode or not...
-//If NULL, YAMN does nothing with string
- YAMN_DELETEERRORSTRINGFCN DeleteErrorStringFcnPtr;
-
-//Function is called to notify plugin, that it is quite good to store account status (and mails)
- YAMN_WRITEACCOUNTSFCN WriteAccountsFcnPtr;
-
-//Function is called when user wants to view mails
-//not used now, in the future
- YAMN_STANDARDFCN ViewMailsFcnPtr;
-
-//Function is called when application exits. Plugin should unload
- YAMN_STANDARDFCN UnLoadFcn;
-} YAMN_PROTOIMPORTFCN, *PYAMN_PROTOIMPORTFCN;
-
-typedef HYAMNMAIL (WINAPI *YAMN_NEWMAILFCN)(HACCOUNT,DWORD);
-typedef void (WINAPI *YAMN_DELETEMAILFCN)(HYAMNMAIL);
-typedef DWORD (WINAPI *YAMN_WRITEMAILOPTS)(HANDLE File,HYAMNMAIL);
-typedef DWORD (WINAPI *YAMN_READMAILOPTS)(HYAMNMAIL,TCHAR **,TCHAR *);
-
-typedef struct CMailImportFcn
-{
-//If changes are made in this structure, version is changed.
-//So then YAMN does not initialize your structure, if version does not match.
-#define YAMN_MAILIMPORTFCNVERSION 1
-
-//Note: not all of these functions are needed to be implemented in your protocol plugin. Those
-//functions, which are not implemented, you have to set to NULL.
-
-//Function is called to construct protocol defined account
-//This is VERY IMPORTANT for YAMN and plugin to cooperate:
-//Imagine following situation. YAMN wants to add new account (it is possible e.g.
-//when loading accounts from file), so it has to call protocol constructor.
-//It calls NewAccount function and plugin creates new account and returns
-//its handle (pointer in fact). That means new account is created with plugin features
-//(it is created inherited account, not base class).
- YAMN_NEWMAILFCN NewMailFcnPtr;
-
-//Function is called to delete protocol defined variables to inherited CAccount structure
- YAMN_DELETEMAILFCN DeleteMailFcnPtr;
-
-//Function is called when plugin should write its own info into book file
- YAMN_WRITEMAILOPTS WriteMailOptsFcnPtr;
-
-//Function is called when plugin should read its own info from book file
- YAMN_READMAILOPTS ReadMailOptsFcnPtr;
-} YAMN_MAILIMPORTFCN, *PYAMN_MAILIMPORTFCN;
-
-//
-//================================== PROTOCOL PLUGIN REGISTRATION STRUCTURES ==================================
-//
-
-typedef struct CProtoPluginRegistration
-{
-#define YAMN_PROTOREGISTRATIONVERSION 1
-//Name of plugin
-//this member CANNOT be NULL. Just write here description, i.e. "Yahoo Mail 1.2"
- char *Name;
-
-//The version of plugin. CANNOT be NULL.
- char *Ver;
-
-//Plugin copyright
-//Write here your copyright if you want (or NULL)
- char *Copyright;
-
-//Plugin description. Can be NULL.
- char *Description;
-
-//Your contact (email). Can be NULL.
- char *Email;
-
-//The web page. Can be NULL.
- char *WWW;
-
-} YAMN_PROTOREGISTRATION, *PYAMN_PROTOREGISTRATION;
-
-typedef struct CYAMNProtoPlugin
-{
-//Pointer to first protocol plugin account
- HACCOUNT FirstAccount;
-
-//We prevent browsing through accounts (chained list) from deleting or adding any account
-//If we want to delete or add, we must have "write" access to AccountBrowserSO
-//Note that accounts can be changed during AccountBrowser is in "read" mode, because we do not add or delete account.
- PSWMRG AccountBrowserSO;
-
-//All needed other info from plugin
- PYAMN_PROTOREGISTRATION PluginInfo;
-
-//Imported functions
- PYAMN_PROTOIMPORTFCN Fcn;
- PYAMN_MAILIMPORTFCN MailFcn;
-} YAMN_PROTOPLUGIN, *PYAMN_PROTOPLUGIN, *HYAMNPROTOPLUGIN;
-
-typedef struct CProtoPluginQueue
-{
- HYAMNPROTOPLUGIN Plugin;
- struct CProtoPluginQueue *Next;
-} YAMN_PROTOPLUGINQUEUE,*PYAMN_PROTOPLUGINQUEUE;
-
-//
-//================================== YAMN SERVICES FOR PROTOCOL PLUGIN ==================================
-//
-
-//RegisterProtoPlugin Service
-//Your plugin can call this service to "connect to YAMN"- it means, that you
-//give some parameters to YAMN and YAMN can then cooperate with your protocol plugins
-//WPARAM- pointer to YAMN_PROTOREGISTRATION structure. Plugin must not delete this structure from memory.
-//LPARAM- version of YAMN_PROTOREGISTRATION structure (use YAMN_PROTOREGISTRATIONVERSION definition)
-//returns handle to plugin (HYAMNPROTOPLUGIN), if registration failed (plugin not registered) returns NULL
-//Note, that your plugin should store returned plugin handle, because it will be usefull in next services.
-//You need next to call SetProtocolPluginFcnImportFcn to have your plugin cooperated with YAMN.
-#define MS_YAMN_REGISTERPROTOPLUGIN "YAMN/Service/RegisterProtocolPlugin"
-
-//UnregisterProtoPlugin Service
-//Removes plugin from YAMN and deltes its structures
-//WPARAM- (HYAMNPROTOPLUGIN) handle of protocol plugin
-//LPARAM- any value
-//returns nonzero if success
-#define MS_YAMN_UNREGISTERPROTOPLUGIN "YAMN/Service/UnregisterProtocolPlugin"
-
-//CreateAccount Service
-//Your plugin should call this to create new account for your plugin.
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- CAccount version (use YAMN_ACCOUNTVERSION definition)
-//returns pointer to (HACCOUNT) or pointer to your structure returned from imported NewAccountFcnPtr, if implemented
-#define MS_YAMN_CREATEPLUGINACCOUNT "YAMN/Service/CreateAccount"
-
-//DeletePluginAccount Service
-//Deletes plugin's account from memory. You probably won't use this service, because it deletes only account
-//without any synchronization. Use MS_YAMN_DELETEACCOUNT instead.
-//WPARAM- (HACCOUNT) to delete
-//LPARAM- any value
-//returns zero if failed, otherwise returns nonzero
-#define MS_YAMN_DELETEPLUGINACCOUNT "YAMN/Service/DeletePluginAccount"
-
-//FindAccountByName Service
-//Searches accounts queue for first account that belongs to plugin
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (TCHAR *)string, name of account to find
-//returns found HACCOUNT handle or NULL if not found
-#define MS_YAMN_FINDACCOUNTBYNAME "YAMN/Service/FindAccountByName"
-
-//GetNextFreeAccount Service
-//Creates new account for plugin and adds it to plugin account queue.
-//Note!!! you have to use AccountBrowserSO in your plugin before and after calling this service, because it is not synchronized
-//So the normal way is like this:
-// WaitToWriteSO(MyPlugin->AccountBrowserSO);
-// CallService(MS_YAMN_GETNEXTFREEACCOUNT,MyPlugin,YAMN_ACCOUNTVERSION);
-// WriteDoneSO(MyPlugin->AccountBrowserSO);
-//
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- CAccount version (use YAMN_ACCOUNTVERSION definition)
-//returns new HACCOUNT handle or NULL if not found
-#define MS_YAMN_GETNEXTFREEACCOUNT "YAMN/Service/GetNextFreeAccount"
-
-//DeleteAccount Service
-//Deletes account from plugin account queue. It also deletes it, but in background (when needed).
-//This deleting is full synchronized and safe. It is recommended for plugins to use this service.
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (HACCOUNT) Account to delete
-#define MS_YAMN_DELETEACCOUNT "YAMN/Service/DeleteAccount"
-
-//ReadAccountsA Service
-//Reads standard accounts to file. Standard account means standard YAMN book format.
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (char *)filename string. Put here your own desired filename.
-//return value is one of the ones written in "account.h" file
-#define MS_YAMN_READACCOUNTSA "YAMN/Service/ReadAccountsA"
-
-//ReadAccountsW Service
-//Same as ReadAccountsA service, but difference is in WPARAM
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (WCHAR *)filename string. Use MS_YAMN_GETFILENAMEW service to retrieve your filename, or
-// just put your own desired filename
-#define MS_YAMN_READACCOUNTSW "YAMN/Service/ReadAccountsW"
-
-//WriteAccountsA Service
-//Writes standard accounts to file. Standard account means standard YAMN book format. It does not
-//store special protocol features. It stores Account settings from CAccount struct and stores MIME mails
-//from CMimeMsgQueue. If your Mails pointer does not point to CMimeMsgQueue structure,
-//do not use this function. You are then forced to write your own function
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (char *)filename string. Put here your own desired filename.
-//return value is one of the ones written in "account.h" file
-#define MS_YAMN_WRITEACCOUNTSA "YAMN/Service/WriteAccountsA"
-
-//WriteAccountsW Service
-//Writes standard accounts to file. Standard account means standard YAMN book format.
-//WPARAM- (HYAMNPLUGIN) Plugin handle
-//LPARAM- (WCHAR *)filename string. Use MS_YAMN_GETFILENAMEW service to retrieve your filename, or
-// just put your own desired filename
-//return value is one of the ones written in "account.h" file
-#define MS_YAMN_WRITEACCOUNTSW "YAMN/Service/WriteAccountsW"
-
-//GetFileNameA Service
-//Function makes original filename, when you add your protocol string
-//From "yahoo" makes "yamn-accounts.yahoo.xxxxx.book" filename
-//It is good to use this fcn to have similar filenames...
-//WPARAM- (char *) plugin string
-//LPARAM- any value
-//returns NULL when failed, otherwise returns (WCHAR *)string (!!! not char *) to filename!!!
-//You can use MS_YAMN_DELETEFILENAME service to release allocated filename from memory
-#define MS_YAMN_GETFILENAMEA "YAMN/Service/GetFileNameA"
-
-//GetFileNameW Service
-//Same as GetFileNameA service, but difference is in WPARAM
-//WPARAM- (WCHAR *) plugin string
-//LPARAM- any value
-#define MS_YAMN_GETFILENAMEW "YAMN/Service/GetFileNameW"
-
-//DeleteFileName Service
-//deletes unicode string from memory
-//WPARAM- (WCHAR *) pointer to unicode string
-//LPARAM- any value
-#define MS_YAMN_DELETEFILENAME "YAMN/Service/DeleteFileName"
-
-//
-//================================== FUNCTIONS DEFINITIONS ========================================
-//
-
-typedef int (WINAPI *YAMN_SETPROTOCOLPLUGINFCNIMPORTFCN)(HYAMNPROTOPLUGIN Plugin,PYAMN_PROTOIMPORTFCN YAMNFcn,DWORD YAMNFcnVer,PYAMN_MAILIMPORTFCN YAMNMailFcn,DWORD YAMNMailFcnVer);
-
-//
-//================================== QUICK FUNCTION CALL DEFINITIONS ========================================
-//
-
-//These are defininitions for YAMN exported functions. Your plugin can use them.
-//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions.
-//It is something similar like pluginLink variable in Miranda plugin. If you use
-//this name of variable, you have already defined these functions and you can use them.
-//It's similar to Miranda's CreateService function.
-
-//How to use YAMN functions:
-//Create a structure containing pointer to functions you want to use in your plugin
-//This structure can look something like this:
-//
-// struct
-// {
-// YAMN_SETPROTOCOLPLUGINFCNIMPORTFCN SetProtocolPluginFcnImportFcn;
-// } *pYAMNFcn;
-//
-//then you have to fill this structure with pointers...
-//
-// pYAMNFcn->SetProtocolPluginFcnImportFcn=(YAMN_SETPROTOCOLPLUGINFCNIMPORTFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETPROTOCOLPLUGINFCNIMPORTID,(LPARAM)0);
-//
-//and in your plugin just simply use e.g.:
-//
-// SetProtocolPluginFcnImport(...);
-//
-
-#define YAMN_SETPROTOCOLPLUGINFCNIMPORTID "YAMN/SetProtocolPluginFcnImport"
-
-#define SetProtocolPluginFcnImport(a,b,c,d,e) pYAMNFcn->SetProtocolPluginFcnImportFcn(a,b,c,d,e)
-
-#endif
diff --git a/yamn/m_synchro.h b/yamn/m_synchro.h
deleted file mode 100644
index ff3e601..0000000
--- a/yamn/m_synchro.h
+++ /dev/null
@@ -1,160 +0,0 @@
-#ifndef __SYNCHRO_H
-#define __SYNCHRO_H
-
-#include <windows.h>
-
-//
-//================================== OTHER DEFINITIONS ========================================
-//
-
-#define WAIT_FINISH WAIT_OBJECT_0+1
-
-// This structure is used to get semaphore-like synchronization:
-// Includes incrementing, decrementing DWORD value and if DWORD is zero, sets event
-typedef struct SynchronisedCounter
-{
-// Stores number value
- HANDLE Event;
- DWORD Number;
-
-// These methods are deleted due to external plugins. Use SCGetNumber,SCInc and SCDec instead
-// DWORD GetNumber();
-// DWORD Inc();
-// DWORD Dec();
-
-// Yes, some code is defined here. But it is not so problematic, because it uses only Win32 API calls and Win32 structures,
- SynchronisedCounter(): Number(0)
- {
- InitializeCriticalSection(&CounterCS);
- Event=CreateEvent(NULL,FALSE,TRUE,NULL);
- SetEvent(Event);
- }
-
- SynchronisedCounter(HANDLE InitializedEvent): Number(0)
- {
- InitializeCriticalSection(&CounterCS);
- Event=InitializedEvent;
- SetEvent(Event);
- }
-
- ~SynchronisedCounter()
- {
- DeleteCriticalSection(&CounterCS);
- CloseHandle(Event);
- }
-
-//private: //it is not private as other functions (not methods) use these members
- CRITICAL_SECTION CounterCS;
-} SCOUNTER, *PSCOUNTER;
-
-// The single-writer/multiple-reader guard
-// compound synchronization object (SO)
-// Notices: Copyright (c) 1995-1997 Jeffrey Richter
-// Changes: majvan, only one process implementation,
-// hFinishEV event added- signals when we do not want to use this SO anymore
-typedef struct SingleWriterMultiReaderGuard
-{
-// This event guards access to the other objects
-// managed by this data structure and also indicates
-// whether any writer threads are writing.
- HANDLE hEventNoWriter;
-
-// This manual-reset event is signaled when
-// no reader threads are reading.
- HANDLE hEventNoReaders;
-
-// This value is used simply as a counter.
-// (the count is the number of reader threads)
- HANDLE hSemNumReaders;
-
-// The request is for not to enter critical section
-// for writing or reading due to going to delete guard
- HANDLE hFinishEV;
-} SWMRG, *PSWMRG;
-
-//
-//================================== FUNCTIONS DEFINITIONS ========================================
-//
-
-typedef DWORD (WINAPI *YAMN_WAITTOWRITEFCN)(PSWMRG,PSCOUNTER);
-typedef void (WINAPI *YAMN_WRITEDONEFCN)(PSWMRG,PSCOUNTER);
-typedef DWORD (WINAPI *YAMN_WAITTOREADFCN)(PSWMRG);
-typedef void (WINAPI *YAMN_READDONEFCN)(PSWMRG);
-typedef DWORD (WINAPI *YAMN_SCMANAGEFCN)(PSCOUNTER);
-
-//
-//================================== QUICK FUNCTION CALL DEFINITIONS ========================================
-//
-
-//These are defininitions for YAMN exported functions. Your plugin can use them.
-//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions.
-//It is something similar like pluginLink variable in Miranda plugin. If you use
-//this name of variable, you have already defined these functions and you can use them.
-//It's similar to Miranda's CreateService function.
-//These functions are used to synchronize accounts. YAMN could create service for these
-//functions and you could call them then e.g. CallService(MS_YAMNWAITTOWRITE,WPARAM,LPARAM),
-//but I think this solution is better, because these functions are much used. It is more
-//"normal" if you call function for example like:
-//WaitToWrite(ActualAccount) than CallService(MS_YAMNWAITTOWRITE,ActualAccount,NULL))
-
-//How to use YAMN functions:
-//Create a structure containing pointer to functions you want to use in your plugin
-//This structure can look something like this:
-//
-// struct
-// {
-// YAMN_WAITTOWRITEFCN WaitToWriteFcn;
-// YAMN_WRITEDONEFCN WriteDoneFcn;
-// } *pYAMNFcn;
-//
-//then you have to fill this structure with pointers...
-//you have to use YAMN service to get pointer, like this (I wrote here all functions you may need,
-//you can copy to your sources only those you need):
-//
-// pYAMNFcn->WaitToWriteFcn=(YAMN_WAITTOWRITEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOWRITEID,(LPARAM)0);
-// pYAMNFcn->WriteDoneFcn=(YAMN_WRITEDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WRITEDONEID,(LPARAM)0);
-// pYAMNFcn->WaitToReadFcn=(YAMN_WAITTOREADFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOREADID,(LPARAM)0);
-// pYAMNFcn->ReadDoneFcn=(YAMN_READDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_READDONEID,(LPARAM)0);
-// pYAMNFcn->SCGetNumberFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCGETNUMBERID,(LPARAM)0);
-// pYAMNFcn->SCIncFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCINCID,(LPARAM)0);
-// pYAMNFcn->SCDecFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCDECID,(LPARAM)0);
-//
-//and in your plugin just simply use e.g.:
-//
-// MsgsWriteDone(ActualAccount); //this command leaves write access to account mails
-//
-
-#define YAMN_WAITTOWRITEID "YAMN/WaitToWrite"
-#define YAMN_WRITEDONEID "YAMN/WriteDone"
-#define YAMN_WAITTOREADID "YAMN/WaitToRead"
-#define YAMN_READDONEID "YAMN/ReadDone"
-#define YAMN_SCGETNUMBERID "YAMN/SCGetNumber"
-#define YAMN_SCINCID "YAMN/SCInc"
-#define YAMN_SCDECID "YAMN/SCDec"
-
-#define WaitToWrite(x) pYAMNFcn->WaitToWriteFcn(x->AccountAccessSO,0)
-#define WaitToWriteEx(x,y) pYAMNFcn->WaitToWriteFcn(x->AccountAccessSO,y)
-#define WriteDone(x) pYAMNFcn->WriteDoneFcn(x->AccountAccessSO,0)
-#define WaitToRead(x) pYAMNFcn->WaitToReadFcn(x->AccountAccessSO)
-#define WaitToReadEx(x,y) pYAMNFcn->WaitToReadFcn(x->AccountAccessSO,y)
-#define ReadDone(x) pYAMNFcn->ReadDoneFcn(x->AccountAccessSO)
-
-#define MsgsWaitToWrite(x) pYAMNFcn->WaitToWriteFcn(x->MessagesAccessSO,0)
-#define MsgsWaitToWriteEx(x,y) pYAMNFcn->WaitToWriteFcn(x->MessagesAccessSO,y)
-#define MsgsWriteDone(x) pYAMNFcn->WriteDoneFcn(x->MessagesAccessSO,0)
-#define MsgsWaitToRead(x) pYAMNFcn->WaitToReadFcn(x->MessagesAccessSO)
-#define MsgsWaitToReadEx(x) pYAMNFcn->WaitToReadFcn(x->MessagesAccessSO,y)
-#define MsgsReadDone(x) pYAMNFcn->ReadDoneFcn(x->MessagesAccessSO)
-
-#define WaitToWriteSO(x) pYAMNFcn->WaitToWriteFcn(x,0)
-#define WaitToWriteSOEx(x,y) pYAMNFcn->WaitToWriteFcn(x,y)
-#define WriteDoneSO(x) pYAMNFcn->WriteDoneFcn(x,0)
-#define WaitToReadSO(x) pYAMNFcn->WaitToReadFcn(x)
-#define WaitToReadSOEx(x,y) pYAMNFcn->WaitToReadFcn(x,y)
-#define ReadDoneSO(x) pYAMNFcn->ReadDoneFcn(x)
-
-#define SCGetNumber(x) pYAMNFcn->SCGetNumberFcn(x)
-#define SCInc(x) pYAMNFcn->SCIncFcn(x)
-#define SCDec(x) pYAMNFcn->SCDecFcn(x)
-
-#endif
diff --git a/yamn/m_yamn.h b/yamn/m_yamn.h
deleted file mode 100644
index 035c71f..0000000
--- a/yamn/m_yamn.h
+++ /dev/null
@@ -1,154 +0,0 @@
-#ifndef __M_YAMN_H
-#define __M_YAMN_H
-
-#include <windows.h>
-
-//
-//================================== VARIABLES STRUCT ========================================
-//
-
-#ifndef MIRANDASERVICE
-typedef INT_PTR (*MIRANDASERVICE)(WPARAM,LPARAM);
-#endif
-
-typedef struct CYAMNVariables
-{
-#define YAMN_VARIABLESVERSION 3
- HINSTANCE hInst;
- HANDLE MessageWnds;
- HANDLE NewMailAccountWnd;
- int Shutdown;
-} YAMN_VARIABLES, *PYAMN_VARIABLES;
-
-//
-//================================== EXPORTED FUNCTIONS STRUCT ===============================
-//
-
-struct CExportedFunctions
-{
- char* ID;
- void *Ptr;
-};
-
-struct CExportedServices
-{
- char* ID;
- INT_PTR (* Ptr)(WPARAM,LPARAM);
-};
-
-//
-//================================== YAMN EVENTS ==================================
-//
-
-//UninstallPlugin Event
-//Sent when user wants to uninstall YAMN and all its plugins
-#define ME_YAMN_UNINSTALLPLUGINS "YAMN/MirandaEvents/UninstallPlugins"
-
-//NewMail Event
-//Notifies you about new mail
-//no arguments now (Developers, send mail, which params would you like to have, but note there's problem that
-//params are 32b numbers. When it is pointer to some data, these data should persist while every plugin read them and
-//after that they can be removed from memory. So it is problem)
-#define ME_YAMN_NEWMAIL "YAMN/MirandaEvents/NewMail"
-
-//
-//================================== YAMN SERVICES ==================================
-//
-
-//GetFcnPtr Service
-//Your plugin can co-operate with YAMN in 2 ways: with Miranda services and with YAMN exported functions
-//Some commands are written in services, some are functions. The advantage of function calling instead of
-//service calling is, that your code is more clear and it is faster than service calling (smaller, FASTER,
-//easier- it is slogan of Miranda, isn't it ?). Miranda service has only 2 parameters, that can be
-//disadvantage too.
-//In every way, it is discutable which functions should be exported or if they should be implemented as
-//services. And if YAMN should export some functions etc. Functions not used very often are now implemented
-//as Miranda services.
-//
-//This service gets pointer to YAMN function. Then you can use function directly. In m_?????.h files you have
-//definitions of some functions, with definitions of structure variable, so you can use functions very
-//clearly, just look to header file.
-//WPARAM- function ID. It is string representating function you need to get pointer (e.g. YAMN_WRITEWAITID)
-//LPARAM- not used now, but set it to 0
-//returns pointer to YAMN function or NULL when functions does not exist
-#define MS_YAMN_GETFCNPTR "YAMN/Service/GetFcn"
-
-//GetVariables Service
-//Ask YAMN for pointer to CYAMNVariables structure.
-//WPARAM- YAMN_VARIABLESVERSION
-//LPARAM- any value
-//returns pointer to YAMN_VARIABLES or NULL when version of structure does not match
-#define MS_YAMN_GETVARIABLES "YAMN/Service/GetVar"
-
-//ForceCheck Service
-//Check mail on accounts
-//WPARAM- not used
-//LPARAM- not used
-#define MS_YAMN_FORCECHECK "YAMN/Service/ForceCheck"
-
-//AccountCheck Service
-//Check mail on individual account
-//WPARAM- HACCOUNT
-//LPARAM- BOOL: Show Popup on no new mail
-#define MS_YAMN_ACCOUNTCHECK "YAMN/Service/AccountCheck"
-
-//Contact List Context Menu Click
-//wParam=(WPARAM)hContact
-//lParam=0
-//
-//Event is fired when there is a double click on a CList contact,
-//it is upto the caller to check for the protocol & status
-//of the HCONTACT, it's not done for you anymore since it didn't make
-//sense to store all this information in memory, etc.
-#define MS_YAMN_CLISTCONTEXT "YAMN/Service/ClistContactContextMenu"
-
-//Contact List Context Menu Click for application
-//wParam=(WPARAM)hContact
-//lParam=0
-//
-//Event is fired when there is a double click on a CList contact,
-//it is upto the caller to check for the protocol & status
-//of the HCONTACT, it's not done for you anymore since it didn't make
-//sense to store all this information in memory, etc.
-#define MS_YAMN_CLISTCONTEXTAPP "YAMN/Service/ClistContactContextMenuApp"
-
-//Contact List Double Click
-//wParam=(WPARAM)hContact
-//lParam=0
-//
-//Event is fired when there is a double click on a CList contact,
-//it is upto the caller to check for the protocol & status
-//of the HCONTACT, it's not done for you anymore since it didn't make
-//sense to store all this information in memory, etc.
-#define MS_YAMN_CLISTDBLCLICK "YAMN/Service/ClistContactDoubleclicked"
-
-//FilterMail Service
-//Ask YAMN to process mail filtering. YAMN calls filter plugins to mark mail as spam etc... Warning! Leave all
-//read or write access to mail as this function waits for write-access to mail!
-//WPARAM- (HACCOUNT) account to which mail belongs
-//LPARAM- (HYAMNMAIL) mail to filter
-#define MS_YAMN_FILTERMAIL "YAMN/Service/FilterMail"
-
-//MailBrowser Service
-//runs mail browser window (or tray icon only or popups only)
-//WPARAM- pointer to YAMN_MAILBROWSERPARAM structure, data to mailbrowser. You do not need to fill ThreadRunningEV event member.
-//LPARAM- YAMN_MAILBROWSERPARAM structure version param. Use YAMN_MAILBROWSERVERSION definition.
-//returns zero if failed, nonzero if succeed
-#define MS_YAMN_MAILBROWSER "YAMN/Service/RunMailBrowser"
-
-//NoNewMail Service
-//runs no new mail procedure (shows popups e.g.)
-//WPARAM- pointer to YAMN_NONEWMAILPARAM structure, data to no new mail procedure. You do not need to fill ThreadRunningEV event member.
-//LPARAM- YAMN_NONEWMAILPARAM structure version param. Use YAMN_NONEWMAILVERSION definition.
-//returns zero if failed, nonzero if succeed
-#define MS_YAMN_NONEWMAILPROC "YAMN/Service/NoNewMailProc"
-
-//BadConnection Service
-//runs bad connection window
-//WPARAM- pointer to YAMN_BADCONNECTIONPARAM structure, data to mailbrowser. You do not need to fill ThreadRunningEV event member.
-//LPARAM- YAMN_BADCONNECTIONPARAM structure version param. Use YAMN_BADCONNECTIONVERSION definition.
-//returns zero if failed, nonzero if succeed
-#define MS_YAMN_BADCONNECTION "YAMN/Service/BadConnection"
-
-#define MUUID_YAMN_FORCECHECK { 0x7d15e716, 0x6045, 0x40e3, { 0xa2, 0xb5, 0x5f, 0xb, 0xa4, 0x2b, 0xc7, 0x77 } }
-#endif
diff --git a/yamn/mails/decode.cpp b/yamn/mails/decode.cpp
deleted file mode 100644
index 15c23e9..0000000
--- a/yamn/mails/decode.cpp
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * This code implements decoding encoded MIME header in style
- * =?iso-8859-2?Q? "User using email in central Europe characters such as =E9" ?=
- *
- * (c) majvan 2002-2004
- */
-#include "../yamn.h"
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-struct _tcptable CodePageNamesAll[]=
-{
- {_T("ANSI"),_T(""),TRUE,CP_ACP},
- {_T("WINDOWS-1"),_T("250"),0,1250},
- {_T("WINDOWS-1"),_T("251"),0,1251},
- {_T("WINDOWS-1"),_T("252"),0,1252},
- {_T("WINDOWS-1"),_T("253"),0,1253},
- {_T("WINDOWS-1"),_T("254"),0,1254},
- {_T("WINDOWS-1"),_T("255"),0,1255},
- {_T("WINDOWS-1"),_T("256"),0,1256},
- {_T("WINDOWS-1"),_T("257"),0,1257},
- {_T("WINDOWS-1"),_T("258"),0,1258},
- {_T("CP1"),_T("250"),0,1250},
- {_T("CP1"),_T("251"),0,1251},
- {_T("CP1"),_T("252"),0,1252},
- {_T("CP1"),_T("253"),0,1253},
- {_T("CP1"),_T("254"),0,1254},
- {_T("CP1"),_T("255"),0,1255},
- {_T("CP1"),_T("256"),0,1256},
- {_T("CP1"),_T("257"),0,1257},
- {_T("CP1"),_T("258"),0,1258},
- {_T("ANSI-1"),_T("250"),0,1250},
- {_T("ANSI-1"),_T("251"),0,1251},
- {_T("ANSI-1"),_T("252"),0,1252},
- {_T("ANSI-1"),_T("253"),0,1253},
- {_T("ANSI-1"),_T("254"),0,1254},
- {_T("ANSI-1"),_T("255"),0,1255},
- {_T("ANSI-1"),_T("256"),0,1256},
- {_T("ANSI-1"),_T("257"),0,1257},
- {_T("ANSI-1"),_T("258"),0,1258},
- {_T("KOI8"),_T("-R"),0,20866},
- {_T("KOI8"),_T(""),0,20866},
- {_T("KOI8"),_T("-U"),0,21866},
- {_T("KOI8"),_T("-RU"),0,21866},
- {_T("US-"),_T("ASCII"),0,20127},
- {_T("CP"),_T("367"),0,20127},
- {_T("ASCII"),_T(""),0,20127},
- {_T("ASCII"),_T("7"),0,20127},
- {_T("ISO-8859"),_T("-1"),0,28591},
- {_T("ISO-8859"),_T("-2"),0,28592},
- {_T("ISO-8859"),_T("-3"),0,28593},
- {_T("ISO-8859"),_T("-4"),0,28594},
- {_T("ISO-8859"),_T("-5"),0,28595},
- {_T("ISO-8859"),_T("-6"),0,28596},
- {_T("ISO-8859"),_T("-7"),0,28597},
- {_T("ISO-8859"),_T("-8"),0,28598},
- {_T("ISO-8859"),_T("-9"),0,28599},
- {_T("ISO-8859"),_T("-15"),0,28605},
- {_T("ISO_8859"),_T("-1"),0,28591},
- {_T("ISO_8859"),_T("-2"),0,28592},
- {_T("ISO_8859"),_T("-3"),0,28593},
- {_T("ISO_8859"),_T("-4"),0,28594},
- {_T("ISO_8859"),_T("-5"),0,28595},
- {_T("ISO_8859"),_T("-6"),0,28596},
- {_T("ISO_8859"),_T("-7"),0,28597},
- {_T("ISO_8859"),_T("-8"),0,28598},
- {_T("ISO_8859"),_T("-9"),0,28599},
- {_T("ISO_8859"),_T("-15"),0,28605},
- {_T("ISO-"),_T("10646-USC2"),0,1200},
- {_T("ISO-2022"),_T("/2-JP"),0,50220},
- {_T("ISO-2022"),_T("-JP"),0,50221},
- {_T("ISO-2022"),_T("/JIS-JP"),0,50222},
- {_T("ISO-2022"),_T("-KR"),0,50225},
- {_T("ISO-2022"),_T("-CH(SP)"),0,50227},
- {_T("ISO-2022"),_T("-CH(TR)"),0,50229},
- {_T("UTF-"),_T("7"),0,65000},
- {_T("UTF-"),_T("8"),0,65001},
- {_T("ARAB-"),_T("TRANSPARENT"),0,710},
- {_T("ASMO-"),_T("TRANSPARENT"),0,720},
- {_T("ASMO-"),_T("449"),0,709},
- {_T("ASMO-"),_T("708"),0,708},
- {_T("BIG5"),_T(""),0,950},
- {_T("EUC-"),_T("CH(SP)"),0,51936},
- {_T("EUC-"),_T("CH(TR)"),0,51950},
- {_T("EUC-"),_T("JP"),0,51932},
- {_T("EUC-"),_T("KR"),0,51949},
- {_T("GB-"),_T("2312"),0,20936},
- {_T("GB"),_T("2312"),0,20936},
- {_T("HZGB-"),_T("2312"),0,52936},
- {_T("IBM-"),_T("037"),0,37},
- {_T("IBM-"),_T("290"),0,290},
- {_T("IBM-"),_T("437"),0,437},
- {_T("IBM-"),_T("500"),0,500},
- {_T("IBM-"),_T("775"),0,775},
- {_T("IBM-"),_T("850"),0,850},
- {_T("IBM-"),_T("852"),0,852},
- {_T("IBM-"),_T("855"),0,855},
- {_T("IBM-"),_T("857"),0,857},
- {_T("IBM-"),_T("860"),0,860},
- {_T("IBM-"),_T("861"),0,861},
- {_T("IBM-"),_T("862"),0,862},
- {_T("IBM-"),_T("863"),0,863},
- {_T("IBM-"),_T("864"),0,864},
- {_T("IBM-"),_T("865"),0,865},
- {_T("IBM-"),_T("866"),0,866},
- {_T("IBM-"),_T("869"),0,869},
- {_T("IBM-"),_T("870"),0,870},
- {_T("IBM-"),_T("875"),0,875},
- {_T("IBM-"),_T("1026"),0,1026},
- {_T("IBM-"),_T("273"),0,20273},
- {_T("IBM-"),_T("277"),0,20277},
- {_T("IBM-"),_T("278"),0,20278},
- {_T("IBM-"),_T("280"),0,20280},
- {_T("IBM-"),_T("284"),0,20284},
- {_T("IBM-"),_T("285"),0,20285},
- {_T("IBM-"),_T("290"),0,20290},
- {_T("IBM-"),_T("297"),0,20297},
- {_T("IBM-"),_T("420"),0,20420},
- {_T("IBM-"),_T("423"),0,20423},
- {_T("IBM-"),_T("871"),0,20871},
- {_T("IBM-"),_T("880"),0,20880},
- {_T("IBM-"),_T("905"),0,20905},
- {_T("IBM-"),_T("THAI"),0,20838},
- {_T("ISCII-"),_T("DEVANAGARI"),0,57002},
- {_T("ISCII-"),_T("BENGALI"),0,57003},
- {_T("ISCII-"),_T("TAMIL"),0,57004},
- {_T("ISCII-"),_T("TELUGU"),0,57005},
- {_T("ISCII-"),_T("ASSAMESE"),0,57006},
- {_T("ISCII-"),_T("ORIYA"),0,57007},
- {_T("ISCII-"),_T("KANNADA"),0,57008},
- {_T("ISCII-"),_T("MALAYALAM"),0,57009},
- {_T("ISCII-"),_T("GUJARATI"),0,57010},
- {_T("ISCII-"),_T("PUNJABI"),0,57011},
- {_T("KOR-"),_T("JOHAB"),0,1361},
- {_T("KSC-"),_T("5601"),0,1361},
- {_T("MAC-"),_T("ROMAN"),0,10000},
- {_T("MAC-"),_T("JP"),0,10001},
- {_T("MAC-"),_T("CH(SP)(BIG5)"),0,10002},
- {_T("MAC-"),_T("KR"),0,10003},
- {_T("MAC-"),_T("AR"),0,10004},
- {_T("MAC-"),_T("HW"),0,10005},
- {_T("MAC-"),_T("GR"),0,10006},
- {_T("MAC-"),_T("CY"),0,10007},
- {_T("MAC-"),_T("CH(SP)(GB2312)"),0,10008},
- {_T("MAC-"),_T("ROMANIA"),0,10010},
- {_T("MAC-"),_T("UA"),0,10017},
- {_T("MAC-"),_T("TH"),0,10021},
- {_T("MAC-"),_T("LAT2"),0,10029},
- {_T("MAC-"),_T("ICE"),0,10079},
- {_T("MAC-"),_T("TR"),0,10081},
- {_T("MAC-"),_T("CR"),0,10082},
-};
-
-int CPLENALL = (sizeof(CodePageNamesAll)/sizeof(CodePageNamesAll[0]));
-struct _tcptable *CodePageNamesSupp;
-int CPLENSUPP = 1;
-
-//Gets codepage ID from string representing charset such as "iso-8859-1"
-// input- the string
-// size- max length of input string
-int GetCharsetFromString(char *input,size_t size);
-
-//HexValue to DecValue ('a' to 10)
-// HexValue- hexa value ('a')
-// DecValue- poiner where to store dec value
-// returns 0 if not success
-int FromHexa(char HexValue,char *DecValue);
-
-//Decodes a char from Base64
-// Base64Value- input char in Base64
-// DecValue- pointer where to store the result
-// returns 0 if not success
-int FromBase64(char Base64Value,char *DecValue);
-
-//Decodes string in quoted printable
-// Src- input string
-// Dst- where to store output string
-// DstLen- how max long should be output string
-// isQ- if is "Q-encoding" modification. should be TRUE in headers
-// always returns 1
-int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ);
-
-//Decodes string in base64
-// Src- input string
-// Dst- where to store output string
-// DstLen- how max long should be output string
-// returns 0 if string was not properly decoded
-int DecodeBase64(char *Src,char *Dst,int DstLen);
-
-//Converts string to unicode from string with specified codepage
-// stream- input string
-// cp- codepage of input string
-// out- pointer to new allocated memory that contains unicode string
-int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out);
-
-//Converts string from MIME header to unicode
-// stream- input string
-// cp- codepage of input string
-// storeto- pointer to memory that contains unicode string
-// mode- MIME_PLAIN or MIME_MAIL (MIME_MAIL deletes '"' from start and end of string)
-void ConvertCodedStringToUnicode(char *stream,WCHAR **storeto,DWORD cp,int mode);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-int GetCharsetFromString(char *input,size_t size)
-//"ISO-8859-1" to ID from table
-{
- char *pin=input;
- char *pout,*parser;
-
- if((size<1) || (parser=pout=new char[size+1])==NULL)
- return -1;
- while((*pin!=0) && (pin-input< (INT_PTR)size))
- {
- if ((*pin>='a') && (*pin<='z'))
- *parser++=*(pin++)-('a'-'A'); // make it capital
- //else if(*pin=='\"') // this is already done in ExtractFromContentType
- // *pin++; //skip the quotes if any
- else
- *parser++=*pin++;
- }
-
- *parser=(char)0;
-
-#ifdef DEBUG_DECODECODEPAGE
- DebugLog(DecodeFile,"<CodePage>%s</CodePage>",pout);
-#endif
- for(int i=0;i<CPLENALL;i++){
- size_t len = strlen(CodePageNamesAll[i].NameBase);
- if(0==strncmp(pout,CodePageNamesAll[i].NameBase,len)){
- if (0==strcmp(pout+len,CodePageNamesAll[i].NameSub)){
- delete[] pout;
- return CodePageNamesAll[i].CP;
- }
- }
- }
- delete[] pout;
- return -1; //not found
-}
-
-int FromHexa(char HexValue,char *DecValue)
-{
- if(HexValue>='0' && HexValue<='9')
- {
- *DecValue=HexValue-'0';
- return 1;
- }
- if(HexValue>='A' && HexValue<='F')
- {
- *DecValue=HexValue-'A'+10;
- return 1;
- }
- if(HexValue>='a' && HexValue<='f')
- {
- *DecValue=HexValue-'a'+10;
- return 1;
- }
- return 0;
-}
-
-int FromBase64(char Base64Value,char *DecValue)
-{
- if(Base64Value>='A' && Base64Value<='Z')
- {
- *DecValue=Base64Value-'A';
- return 1;
- }
- if(Base64Value>='a' && Base64Value<='z')
- {
- *DecValue=Base64Value-'a'+26;
- return 1;
- }
- if(Base64Value>='0' && Base64Value<='9')
- {
- *DecValue=Base64Value-'0'+52;
- return 1;
- }
- if(Base64Value=='+')
- {
- *DecValue=Base64Value-'+'+62;
- return 1;
- }
- if(Base64Value=='/')
- {
- *DecValue=Base64Value-'/'+63;
- return 1;
- }
- if(Base64Value=='=')
- {
- *DecValue=0;
- return 1;
- }
- return 0;
-}
-
-int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ)
-{
-#ifdef DEBUG_DECODEQUOTED
- char *DstTemp=Dst;
- DebugLog(DecodeFile,"<Decode Quoted><Input>%s</Input>",Src);
-#endif
- for(int Counter=0;((char)*Src!=0) && DstLen && (Counter++<DstLen);Src++,Dst++)
- if(*Src=='=')
- {
- if (!isQ){
- if (Src[1]==0x0D){
- Src++; Src++;
- if (Src[0]==0x0A) Src++;
- goto CopyCharQuotedPrintable;
- }
- if (Src[1]==0x0A){
- Src++; Src++;
- goto CopyCharQuotedPrintable;
- }
- }
- char First,Second;
- if(!FromHexa(*(++Src),&First))
- {
- *Dst++='=';Src--;
- continue;
- }
- if(!FromHexa(*(++Src),&Second))
- {
- *Dst++='=';Src--;Src--;
- continue;
- }
- *Dst=(char)(First)<<4;
- *Dst+=Second;
- }
- else if(isQ && *Src=='_')
- *Dst=' ';
- else
-CopyCharQuotedPrintable: // Yeah. Bad programming stile.
- *Dst=*Src;
- *Dst=(char)0;
-#ifdef DEBUG_DECODEQUOTED
- DebugLog(DecodeFile,"<Output>%s</Output></Decode Quoted>",DstTemp);
-#endif
- return 1;
-}
-
-int DecodeBase64(char *Src,char *Dst,int DstLen)
-{
- int Result=0;
- char Locator=0,MiniResult[4];
- char *End=Dst+DstLen;
-
- MiniResult[0]=MiniResult[1]=MiniResult[2]=MiniResult[3]=0;
-
-#ifdef DEBUG_DECODEBASE64
- char *DstTemp=Dst;
- DebugLog(DecodeFile,"<Decode Base64><Input>\n%s\n</Input>\n",Src);
-#endif
- while(*Src!=0 && DstLen && Dst!=End)
- {
- if ((*Src==0x0D)||(*Src==0x0A)) {
- Src++;
- continue;
- }
- if((!(Result=FromBase64(*Src,MiniResult+Locator)) && (*Src==0)) || Locator++==3) //end_of_str || end_of_4_bytes
- {
- Locator=0; //next write to the first byte
- *Dst++=(char)((MiniResult[0]<<2) | (MiniResult[1]>>4));
- if(Dst==End) goto end; //DstLen exceeded?
- *Dst++=(char)((MiniResult[1]<<4) | (MiniResult[2]>>2));
- if(Dst==End) goto end; //someones don't like goto, but not me
- *Dst++=(char)((MiniResult[2]<<6) | MiniResult[3]);
- if(!Result && (*Src==0)) goto end; //end of string?
- MiniResult[0]=MiniResult[1]=MiniResult[2]=MiniResult[3]=0; //zero 4byte buffer for next loop
- }
- if(!Result) return 0; //unrecognised character occured
- Src++;
- }
-end:
- *Dst=0;
-#ifdef DEBUG_DECODEBASE64
- DebugLog(DecodeFile,"<Output>\n%s\n</Output></Decode Base64>",DstTemp);
-#endif
- return 1;
-}
-
-
-
-int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out)
-{
- CPINFO CPInfo;
- WCHAR *temp,*src=*out,*dest;
- size_t outlen;
- int streamlen,Index;
-
- //codepages, which require to have set 0 in dwFlags parameter when calling MultiByteToWideChar
- DWORD CodePagesZeroFlags[]={50220,50221,50222,50225,50227,50229,52936,54936,57002,57003,57004,57005,57006,57007,57008,57009,57010,57011,65000,65001};
-
- if((cp!=CP_ACP) && (cp!=CP_OEMCP) && (cp!=CP_MACCP) && (cp!=CP_THREAD_ACP) && (cp!=CP_SYMBOL) && (cp!=CP_UTF7) && (cp!=CP_UTF8) && !GetCPInfo(cp,&CPInfo))
- cp=CP_ACP;
-#ifdef DEBUG_DECODECODEPAGE
- DebugLog(DecodeFile,"<CodePage #>%d</CodePage #>",cp);
-#endif
-
- for(Index=0;Index<sizeof(CodePagesZeroFlags)/sizeof(CodePagesZeroFlags[0]);Index++)
- if(CodePagesZeroFlags[Index]==cp)
- {
- Index=-1;
- break;
- }
- if(Index==-1)
- streamlen=MultiByteToWideChar(cp,0,stream,-1,NULL,0);
- else
- streamlen=MultiByteToWideChar(cp,MB_USEGLYPHCHARS,stream,-1,NULL,0);
-
- if(*out!=NULL)
- outlen=wcslen(*out);
- else
- outlen=0;
- temp=new WCHAR[streamlen+outlen+1];
-
- if(*out!=NULL)
- {
- for(dest=temp;*src!=(WCHAR)0;src++,dest++) //copy old string from *out to temp
- *dest=*src;
-// *dest++=L' '; //add space?
- delete[] *out;
- }
- else
- dest=temp;
- *out=temp;
-
- if(Index==-1)
- {
- if(!MultiByteToWideChar(cp,0,stream,-1,dest,streamlen))
- return 0;
- }
- else
- {
- if(!MultiByteToWideChar(cp,MB_USEGLYPHCHARS,stream,-1,dest,streamlen))
- return 0;
- }
- return 1;
-}
-
-void ConvertCodedStringToUnicode(char *stream,WCHAR **storeto,DWORD cp,int mode)
-{
- char *start=stream,*finder,*finderend;
- char Encoding=0;
- char *DecodedResult=NULL;
-
- if(stream==NULL)
- return;
-
- while(WS(start)) start++;
- WCHAR *tempstore=0;
- if(!ConvertStringToUnicode(stream,cp,&tempstore))return;
-
- size_t tempstoreLength = wcslen(tempstore);
-
- size_t outind = 0;
- while(*start!=0){
- if(CODES(start)){
- finder=start+2;finderend=finder;
- while(!CODED(finderend) && !EOS(finderend)) finderend++;
- start = finderend;
- if(CODED(finderend))
- {
- Encoding=*(finderend+1);
- switch(Encoding)
- {
- case 'b':
- case 'B':
- case 'q':
- case 'Q':
- break;
- default:
- goto NotEncoded;
- }
- if(-1==(cp=(DWORD)GetCharsetFromString(finder,finderend-finder)))
- cp=CP_ACP;
- if(Encoding!=0)
- {
- int size,codeend;
- char *pcodeend;
-
- finder=finderend+2;
- if(CODED(finder))
- finder++;
- while(WS(finder)) finder++;
- finderend=finder;
- while(!CODEE(finderend) && !EOS(finderend)) finderend++;
- if(codeend=CODEE(finderend))
- pcodeend=finderend;
- while(WS(finderend-1)) finderend--;
- if((mode==MIME_MAIL) && (((*finder=='"') && (*(finderend-1)=='"'))))
- {
- finder++;
- finderend--;
- }
- //*finderend=(char)0;
- char * oneWordEncoded = new char[finderend-finder+1];
- strncpy(oneWordEncoded,finder,finderend-finder);
- oneWordEncoded[finderend-finder]=0;
- switch(Encoding)
- {
- case 'b':
- case 'B':
- size=(finderend-finder)*3/4+3+1+1;
- break;
- case 'q':
- case 'Q':
- size=finderend-finder+1+1;
- break;
- }
- if(DecodedResult!=NULL)
- delete[] DecodedResult;
- DecodedResult=new char[size+1];
- switch(Encoding)
- {
- case 'q':
- case 'Q':
- DecodeQuotedPrintable(oneWordEncoded,DecodedResult,size, TRUE);
- break;
- case 'b':
- case 'B':
- DecodeBase64(oneWordEncoded,DecodedResult,size);
- break;
- }
- delete[] oneWordEncoded;
- if(codeend)
- finderend=pcodeend+2;
- if(WS(finderend)) //if string continues and there's some whitespace, add space to string that is to be converted
- {
- size_t len=strlen(DecodedResult);
- DecodedResult[len]=' ';
- DecodedResult[len+1]=0;
- finderend++;
- }
- WCHAR *oneWord=0;
- if(ConvertStringToUnicode(DecodedResult,cp,&oneWord)){
- size_t len = wcslen(oneWord);
- memcpy(&tempstore[outind],oneWord,len*sizeof(WCHAR));
- outind += len;
- }
- delete oneWord;
- oneWord = 0;
- delete[] DecodedResult; DecodedResult = 0;
- start = finderend;
- } else if (!EOS(start)) start++;
- } else if (!EOS(start)) start++;
- }else{
-NotEncoded:
- tempstore[outind] = tempstore[start-stream];
- outind++;
- if (outind > tempstoreLength) break;
- start++;
- }
- }
- tempstore[outind] = 0;
- *storeto = tempstore;
-}
diff --git a/yamn/mails/m_decode.h b/yamn/mails/m_decode.h
deleted file mode 100644
index e6d2b52..0000000
--- a/yamn/mails/m_decode.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __DECODE_H
-#define __DECODE_H
-
-#include "../debug.h"
-
-#define DOTLINE(s) ((((s)[-2]=='\r') || ((s)[-2]=='\n')) && ((s)[-1]=='.') && (((s)[0]=='\r') || ((s)[0]=='\n') || ((s)[0]=='\0'))) // be careful, it's different to ESR's pop3.c ;-)
-#define ENDLINE(s) (((s)[0]=='\r') || ((s)[0]=='\n')) //endline
-#define WS(s) (((s)[0]==' ') || ((s)[0]=='\t')) //whitespace
-#define ENDLINEWS(s) ((((s)[0]=='\r') || ((s)[0]=='\n')) && (((((s)[1]=='\r') || ((s)[1]=='\n')) && (((s)[2]==' ') || ((s)[2]=='\t'))) || (((s)[1]==' ') || ((s)[1]=='\t')))) //endline+whitespace: enters(CR or LF and their combinations) followed by space or tab
-#define EOS(s) ((s)[0]==0) //end of string (stream)
-
-#define CODES(s) ((s[0]=='=') && (s[1]=='?')) //start of coded string
-#define CODEE(s) ((s[0]=='?') && (s[1]=='=')) //end of coded string
-#define CODED(s) (s[0]=='?') //code delimiter
-
-#define MIME_PLAIN 1
-#define MIME_MAIL 2
-
-struct cptable
-{
- char *name;
- unsigned int ID;
-};
-
-#endif
diff --git a/yamn/mails/m_mails.h b/yamn/mails/m_mails.h
deleted file mode 100644
index e1826a1..0000000
--- a/yamn/mails/m_mails.h
+++ /dev/null
@@ -1,285 +0,0 @@
-#ifndef __MAILS_H
-#define __MAILS_H
-
-#include <windows.h>
-#include <tchar.h>
-#include "../m_account.h"
-
-//
-//================================== OTHER DEFINITIONS ========================================
-//
-
-typedef struct CShortNames
-{
- char *Value;
- char *ValueNick;
- struct CShortNames *Next;
-} YAMN_MIMESHORTNAMES,*PYAMN_MIMESHORTNAMES;
-
-typedef struct CNames
-{
- WCHAR *Value;
- WCHAR *ValueNick;
- struct CNames *Next;
-} YAMN_MIMENAMES,*PYAMN_MIMENAMES;
-
-struct CShortHeader
-//this header is used in to get non-unicode data from mime header
-{
- char *From;
- char *FromNick;
- char *ReturnPath;
- char *ReturnPathNick;
- char *Subject;
- PYAMN_MIMESHORTNAMES To;
- PYAMN_MIMESHORTNAMES Cc;
- PYAMN_MIMESHORTNAMES Bcc;
- char *Date;
- char Priority;
- char *Body;
-
- int CP;
-
- CShortHeader() {}
- ~CShortHeader() {}
-};
-
-struct CHeader
-//this header is used in miranda to store final results of mime reading in Unicode
-{
- WCHAR *From;
- WCHAR *FromNick;
- WCHAR *ReturnPath;
- WCHAR *ReturnPathNick;
- WCHAR *Subject;
- PYAMN_MIMENAMES To;
- PYAMN_MIMENAMES Cc;
- PYAMN_MIMENAMES Bcc;
- WCHAR *Date;
- TCHAR Priority;
- WCHAR *Body;
-
- CHeader() {}
- ~CHeader() {}
-};
-
-struct CMimeItem
-{
- char *name;
- char *value;
- struct CMimeItem *Next;
- CMimeItem(): name(NULL), value(NULL), Next(NULL){}
-};
-
-typedef struct CMailData //this is plugin-independent
-{
-#define YAMN_MAILDATAVERSION 3
-
- DWORD Size;
- int CP;
-
- struct CMimeItem *TranslatedHeader; //MIME items
- struct CMimeItem *Additional; //MIME items not read from server (custom, for filter plugins etc.)
- char *Body; //Message body
-
- CMailData(): CP(-1), Size(0), TranslatedHeader(NULL), Body(NULL){}
-} MAILDATA,*PMAILDATA;
-
-typedef struct CMimeMsgQueue
-{
-#define YAMN_MAILVERSION 3
- char *ID; //The ID of mail. This ID identifies every mail in the account, so plugin should set it
-
- DWORD Number;
-
-#define YAMN_MSG_ANY 0xffffffff //any mail
-
-//The difference between new and unseen: when new mail is found in account, it becomes unseen and new. But in the next check, if the same mail is found, it is not new.
-//However, when user was not near computer, he does not know about this mail- it is unseen. After user accepts, that he saw new mails, it becomes seen.
-#define YAMN_MSG_NEW 0x80000000 //this mail is new
-#define YAMN_MSG_UNSEEN 0x40000000 //this mail is mailbrowser unseen
-#define YAMN_MSG_DISPLAY 0x20000000 //this mail can be displayed in mailbrowser
-#define YAMN_MSG_POPUP 0x10000000 //this mail can be displayed in popup and can invoke a popup
-#define YAMN_MSG_SYSTRAY 0x08000000 //this mail can invoke systray icon
-#define YAMN_MSG_BROWSER 0x04000000 //this mail can run mailbrowser
-#define YAMN_MSG_DISPLAYC 0x02000000 //this mail is inserted to browser mail counter system (the "Account - xx new mails, yy total" phrase)
-#define YAMN_MSG_POPUPC 0x01000000 //this mail is inserted to popup counter system (the "Account - xx new mails, yy total" phrase)
-
-#define YAMN_MSG_SOUND 0x00800000 //this mail can "play sound"
-#define YAMN_MSG_APP 0x00400000 //this mail can "launch application"
-#define YAMN_MSG_NEVENT 0x00100000 //this mail can launch Miranda "new mail" event
-
-#define YAMN_MSG_VIRTUAL 0x00080000 //this mail is not real- does not exists
-
-#define YAMN_MSG_FILTERED 0x00040000 //this mail has been filtered
-
-#define YAMN_MSG_DELETETRASH 0x00020000 //this mail should be moved to the trash bin rather than really deleting from mailbox (this is only switch doing nothing, perhaps usefull for filter plugins)
-#define YAMN_MSG_DELETED 0x00010000 //this mail is already deleted from server (also must be set virtual flag) (when doing synchronizations between 2 queues, YAMN then does not touch this mail)
-#define YAMN_MSG_MEMDELETE 0x00008000 //this mail will be deleted immidiatelly from memory (and disk) when deleted from server (some opposite of YAMN_MSG_DELETED)
-#define YAMN_MSG_USERDELETE 0x00004000 //this mail is about to delete from server (user deletes manually)
-#define YAMN_MSG_AUTODELETE 0x00002000 //this mail is about to delete from server (plugin marks it for deleting)
-#define YAMN_MSG_DELETEOK 0x00001000 //this mail is confirmed to delete (this flag must be set to delete this mail)
-
-#define YAMN_MSG_BODYREQUESTED 0x00000800 //user requested (part of) the body. In POP3 it should be (TOP <nr> <lines>)
-#define YAMN_MSG_BODYRECEIVED 0x00000200 //(part of) the body.received;
-#define YAMN_MSG_STAYUNSEEN 0x00000400 //this mail stays unseen while user does not really see it
-
-#define YAMN_MSG_DELETE (YAMN_MSG_USERDELETE | YAMN_MSG_AUTODELETE)
-
-#define YAMN_MSG_NORMALNEW (YAMN_MSG_NEW | YAMN_MSG_UNSEEN | YAMN_MSG_BROWSER | YAMN_MSG_DISPLAY | YAMN_MSG_DISPLAYC | YAMN_MSG_POPUP | YAMN_MSG_POPUPC | YAMN_MSG_SYSTRAY | YAMN_MSG_SOUND | YAMN_MSG_APP | YAMN_MSG_NEVENT | YAMN_MSG_MEMDELETE | YAMN_MSG_STAYUNSEEN)
-
-#define YAMN_MSG_FLAGSSET(maildata,flag) ((maildata & flag)==flag)
-
-#define YAMN_MSG_SPAML1 1 //spam level 1: notify, show in another color in mail browser
-#define YAMN_MSG_SPAML2 2 //spam level 2: do not notify, show in another color in mail browser
-#define YAMN_MSG_SPAML3 3 //spam level 3: delete, show in another color in mail browser that it was deleted, you do not need to set YAMN_MSG_AUTODELETE
-#define YAMN_MSG_SPAML4 4 //spam level 4: delete, do not show, you do not need to set YAMN_MSG_AUTODELETE
-#define YAMN_MSG_SPAMMASK 0x0000000F
-
-#define YAMN_MSG_SPAML(maildata,level) ((maildata & YAMN_MSG_SPAMMASK)==level)
- DWORD Flags;
-//Plugins can read mail data, but it can be NULL!!! So plugin should use Load and Save services to load or save data and Unload to release data from memory
- PMAILDATA MailData;
-//Here YAMN stores its own informations about this mail. Not usefull for plugins...
-// void *YAMNData;
- HWND MsgWindow;
-//plugins can store here its own data
- void *PluginData;
-
- CMimeMsgQueue(): ID(NULL), Number(0), Flags(0), MailData(NULL), MsgWindow(NULL), PluginData(NULL), Next(NULL){}
- ~CMimeMsgQueue(){}
-
- struct CMimeMsgQueue *Next;
-} YAMNMAIL,*HYAMNMAIL;
-
-#define LoadedMailData(x) (x->MailData!=NULL)
-
-//
-//================================== YAMN MAIL SERVICES ==================================
-//
-
-//CreateAccountMail Service
-//Your plugin should call this to create new mail for your plugin.
-//WPARAM- (HACCOUNT) Account handle
-//LPARAM- CMailData version (use YAMN_MAILVERSION definition)
-//returns pointer to (HYAMNMAIL) or pointer to your structure returned from imported NewMailFcnPtr, if implemented
-#define MS_YAMN_CREATEACCOUNTMAIL "YAMN/Service/CreateMail"
-#define CreateAccountMail(x) (HYAMNMAIL)CallService(MS_YAMN_CREATEACCOUNTMAIL,(WPARAM)x,(LPARAM)YAMN_MAILVERSION)
-
-//DeleteAccountMail Service
-//Deletes plugin's mail from memory. You probably won't use this service, because it deletes only account
-//without any synchronization. Use MS_YAMN_DELETEACCOUNT instead. Note that deleting mail is something like "this mail is
-//not more in the account".
-//WPARAM- (HYAMNPROTOPLUGIN) handle of plugin, which is going to delete mail
-//LPARAM- (HYAMNMAIL) mail going to delete
-//returns zero if failed, otherwise returns nonzero
-#define MS_YAMN_DELETEACCOUNTMAIL "YAMN/Service/DeletePluginMail"
-#define DeleteAccountMail(x,y) CallService(MS_YAMN_DELETEACCOUNTMAIL,(WPARAM)x,(LPARAM)y)
-
-//LoadMailData Service
-//This service loads mail from standard YAMN storage (now it is 1 file, from which mails are loaded once at startup, but
-//in the future it can be Miranda profile file or separate file (1 file per 1 mail). It depends on YAMN implementation...
-//Use this function if you want to read or write to MailData member of mail structure. Please use synchronization obejcts
-//before calling this service (so you must have read or write access to mails)
-//WPARAM- (HYAMNMAIL) mail where to load data
-//LPARAM- (DWORD) version of MAILDATA structure (use YAMN_MAILDATAVERSION definition)
-//returns pointer to new allocated MailData structure (the same value as MailData member)
-#define MS_YAMN_LOADMAILDATA "YAMN/Service/LoadMailData"
-#define LoadMailData(x) (PMAILDATA)CallService(MS_YAMN_LOADMAILDATA,(WPARAM)x,(LPARAM)YAMN_MAILDATAVERSION)
-
-//UnloadMailData Service
-//This service frees mail data from memory. It does not care if data were saved or not. So you should save mail before you
-//release data from memory.
-//WPARAM- (HYAMNMAIL) mail whose data are about to free
-//LPARAM- nothing yet
-//returns nonzero if success
-#define MS_YAMN_UNLOADMAILDATA "YAMN/Service/UnloadMailData"
-#define UnloadMailData(x) CallService(MS_YAMN_UNLOADMAILDATA,(WPARAM)x,(LPARAM)0)
-
-//SaveMailData Service
-//This service saves mail to standard YAMN storage (when using now 1 book file, it does nothing, because save is done when
-//using MS_YAMN_WRITEACCOUNT service. In the future, mail can be saved to Miranda profile or to separate file...)
-//WPARAM- (HYAMNMAIL) mail to save
-//LPARAM- (DWORD) version of MAILDATA structure (use YAMN_MAILDATAVERSION definition)
-//returns ZERO! if succes
-#define MS_YAMN_SAVEMAILDATA "YAMN/Service/SaveMailData"
-#define SaveMailData(x) CallService(MS_YAMN_SAVEMAILDATA,(WPARAM)x,(LPARAM)YAMN_MAILDATAVERSION)
-
-//
-//================================== FUNCTIONS DEFINITIONS ========================================
-//
-
-//typedef void (WINAPI *YAMN_SENDMESSAGEFCN)(UINT,WPARAM,LPARAM);
-typedef void (WINAPI *YAMN_SYNCHROMIMEMSGSFCN)(HACCOUNT,HYAMNMAIL *,HYAMNMAIL *,HYAMNMAIL *,HYAMNMAIL *);
-typedef void (WINAPI *YAMN_TRANSLATEHEADERFCN)(char *,int,struct CMimeItem **);
-typedef void (WINAPI *YAMN_APPENDQUEUEFCN)(HYAMNMAIL,HYAMNMAIL);
-typedef void (WINAPI *YAMN_DELETEMIMEQUEUEFCN)(HACCOUNT,HYAMNMAIL);
-typedef void (WINAPI *YAMN_DELETEMIMEMESSAGEFCN)(HYAMNMAIL *,HYAMNMAIL,int);
-typedef HYAMNMAIL (WINAPI *YAMN_FINDMIMEMESSAGEFCN)(HYAMNMAIL,char *);
-typedef HYAMNMAIL (WINAPI *YAMN_CREATENEWDELETEQUEUEFCN)(HYAMNMAIL);
-typedef void (WINAPI *YAMN_SETREMOVEQUEUEFLAGSFCN)(HYAMNMAIL,DWORD,DWORD,DWORD,int);
-
-//
-//================================== QUICK FUNCTION CALL DEFINITIONS ========================================
-//
-
-//These are defininitions for YAMN exported functions. Your plugin can use them.
-//pYAMNFcn is global variable, it is pointer to your structure containing YAMN functions.
-//It is something similar like pluginLink variable in Miranda plugin. If you use
-//this name of variable, you have already defined these functions and you can use them.
-//It's similar to Miranda's CreateService function.
-
-//How to use YAMN functions:
-//Create a structure containing pointer to functions you want to use in your plugin
-//This structure can look something like this:
-//
-// struct
-// {
-// YAMN_SYNCHROMIMEMSGSFCN SynchroMessagesFcn;
-// YAMN_APPENDQUEUEFCN AppendQueueFcn;
-// } *pYAMNMailFcn;
-//
-//then you have to fill this structure with pointers...
-//you have to use YAMN service to get pointer, like this (I wrote here all functions you may need,
-//you can copy to your sources only those you need):
-//
-// pYAMNMailFcn->SynchroMessagesFcn=(YAMN_SYNCHROMIMEMSGSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SYNCHROMIMEMSGSID,(LPARAM)0);
-// pYAMNMailFcn->TranslateHeaderFcn=(YAMN_TRANSLATEHEADERFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_TRANSLATEHEADERID,(LPARAM)0);
-// pYAMNMailFcn->AppendQueueFcn=(YAMN_APPENDQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_APPENDQUEUEID,(LPARAM)0);
-// pYAMNMailFcn->DeleteMessagesToEndFcn=(YAMN_DELETEMIMEQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_DELETEMIMEQUEUEID,(LPARAM)0);
-// pYAMNMailFcn->DeleteMessageFromQueueFcn=(YAMN_DELETEMIMEMESSAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_DELETEMIMEMESSAGEID,(LPARAM)0);
-// pYAMNMailFcn->FindMessageByIDFcn=(YAMN_FINDMIMEMESSAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_FINDMIMEMESSAGEID,(LPARAM)0);
-// pYAMNMailFcn->CreateNewDeleteQueueFcn=(YAMN_CREATENEWDELETEQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_CREATENEWDELETEQUEUEID,(LPARAM)0);
-// pYAMNMailFcn->SetRemoveQueueFlagsFcn=(YAMN_SETREMOVEQUEUEFLAGSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETREMOVEQUEUEFLAGSID,(LPARAM)0);
-//
-//
-//and in your plugin just simply use e.g.:
-//
-// DeleteMIMEQueue(MyAccount,OldMessages); //this command deletes all messages in the mail queue OldMessages
-//
-
-#define YAMN_SYNCHROMIMEMSGSID "YAMN/SynchroMessages"
-#define YAMN_TRANSLATEHEADERID "YAMN/TranslateHeader"
-#define YAMN_APPENDQUEUEID "YAMN/AppendQueue"
-#define YAMN_DELETEMIMEQUEUEID "YAMN/DeleteMIMEQueue"
-#define YAMN_DELETEMIMEMESSAGEID "YAMN/DeleteMIMEMessage"
-#define YAMN_FINDMIMEMESSAGEID "YAMN/FindMIMEMessageByID"
-#define YAMN_CREATENEWDELETEQUEUEID "YAMN/CreateNewDeleteQueue"
-#define YAMN_SETREMOVEQUEUEFLAGSID "YAMN/SetRemoveQueueFlags"
-
-#define YAMN_FLAG_REMOVE 0
-#define YAMN_FLAG_SET 1
-
-
-#define SynchroMessages(a,b,c,d,e) pYAMNMailFcn->SynchroMessagesFcn(a,b,c,d,e)
-#define TranslateHeader(a,b,c) pYAMNMailFcn->TranslateHeaderFcn(a,b,c)
-#define AppendQueue(x,y) pYAMNMailFcn->AppendQueueFcn(x,y)
-#define DeleteMIMEQueue(x,y) pYAMNMailFcn->DeleteMessagesToEndFcn(x,y)
-#define DeleteMIMEMessage(x,y) pYAMNMailFcn->DeleteMessageFromQueueFcn(x,y,0)
-#define DeleteMIMEMessageEx(x,y,z) pYAMNMailFcn->DeleteMessageFromQueueFcn(x,y,z)
-#define FindMIMEMessageByID(x,y) pYAMNMailFcn->FindMessageByIDFcn(x,y)
-#define CreateNewDeleteQueue(x) pYAMNMailFcn->CreateNewDeleteQueueFcn(x)
-#define SetQueueFlags(a,b,c,d) pYAMNMailFcn->SetRemoveQueueFlagsFcn(a,b,c,d,1)
-#define RemoveQueueFlags(a,b,c,d) pYAMNMailFcn->SetRemoveQueueFlagsFcn(a,b,c,d,0)
-
-#endif
diff --git a/yamn/mails/mails.cpp b/yamn/mails/mails.cpp
deleted file mode 100644
index b99a9fd..0000000
--- a/yamn/mails/mails.cpp
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * This code implements retrieving info from MIME header
- *
- * (c) majvan 2002-2004
- */
-
-#pragma warning( disable : 4290 )
-#include "../yamn.h"
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-// SMALL INTRO
-// Mails are queued in a queue (chained list). Pointer to first mail is pointed from Account structure
-// member called Mails.
-// Mail queue is ended with NULL- pointered mail (NULL handle)
-
-//Creates new mail for plugin (calling plugin's constructor, when plugin imported to YAMN)
-INT_PTR CreateAccountMailSvc(WPARAM wParam,LPARAM lParam);
-
-//Deletes mail for plugin (calling plugin's destructor, when plugin imported to YAMN)
-INT_PTR DeleteAccountMailSvc(WPARAM wParam,LPARAM lParam);
-
-//Loads mail data from standard storage to memory
-INT_PTR LoadMailDataSvc(WPARAM wParam,LPARAM lParam);
-
-//Deletes mail data from memory
-INT_PTR UnloadMailDataSvc(WPARAM wParam,LPARAM);
-
-//Saves mail data from memory to standard storage
-INT_PTR SaveMailDataSvc(WPARAM wParam,LPARAM lParam);
-
-//Appends second MIME mail queue to the first one
-//Only finds the end of first queue and its Next memember repoints to second one
-void WINAPI AppendQueueFcn(HYAMNMAIL first,HYAMNMAIL second);
-
-//Synchronizes two accounts
-//Function finds, if there were some mails deleted from mailbox and deletes (depends on RemovedOld param) them from OldQueue
-//Next finds, if there are new mails. Mails that are still on mailbox are deleted (depends on RemovedNew param) from NewQueue
-//After this, OldQueue is pointer to mails that are on mailbox, but not new mails
-//and NewQueue contains new mails in account
-//New accounts can be then appended to account mails queue, but they have set the New flag
-//
-//Two mails equals if they have the same ID
-//
-// hPlugin- handle of plugin going to delete mails
-// OldQueue- queue of mails that we found on mailbox last time, after function finishes queue contains all mails except new ones
-// RemovedOld- queue of mails where to store removed mails from OldQueue, if NULL deletes mails from OldQueue
-// NewQueue- queue of mails that we found on mailbox (all mails), after function finishes queue contains only new mails
-// RemovedNew- queue of mails where to store removed mails from NewQueue, if NULL deletes mails from NewQueue
-//So function works like:
-//1. delete (or move to RemovedOld queue if RemovedOld is not NULL) all mails from OldQueue not found in NewQueue
-//2. delete (or move to RemovedNew queue if RemovedNew is not NULL) all mails from NewQueue found in OldQueue
-void WINAPI SynchroMessagesFcn(HACCOUNT Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew);
-
-//Deletes messages from mail From to the end
-// Account- account who owns mails
-// From- first mail in queue, which is going to delete
-void WINAPI DeleteMessagesToEndFcn(HACCOUNT Account,HYAMNMAIL From);
-
-//Removes message from queue, does not delete from memory
-// From- queue pointer
-// Which- mail to delete
-// mode- nonzero if you want to decrement numbers in messages that are bigger than the one in Which mail, 0 if not
-void WINAPI DeleteMessageFromQueueFcn(HYAMNMAIL *From,HYAMNMAIL Which,int mode);
-
-//Finds message in queue that has the same ID number
-// From- message queue
-// ID- pointer to ID
-// returns pointer to found message, NULL if not found
-HYAMNMAIL WINAPI FindMessageByIDFcn(HYAMNMAIL From,char *ID);
-
-//Translate header from text to queue of CMimeItem structures
-//This means that new queue will contain all info about headers
-// stream- pointer to text containing header (can be ended with zero)
-// len- length of stream
-// head- function fills this pointer to first header item in queue
-void WINAPI TranslateHeaderFcn(char *stream,int len,struct CMimeItem **head);
-
-//Creates new mail queue, copying only these mails, that have set flag for deleting
-// From- message queue, whose mail with given flag are duplicated
-// returns new mail queue (or NULL when no mail with flag is in From queue)
-//Function does not copy the whole mails, it copies only ID string. And ID is copied as string, so
-//you can use this fcn only if you have your ID as pointer to char string ended with zero character
-HYAMNMAIL WINAPI CreateNewDeleteQueueFcn(HYAMNMAIL From);
-
-//Sets/removes flags from specific mails
-// From- pointer to first message
-// FlagsSet- mail must have set these flags...
-// FlagsNotSet- ...and must not have set these flags...
-// FlagsToSetRemove- ...to set/remove these flags (see mode)
-// mode- nonzero to set, else remove
-void WINAPI SetRemoveFlagsInQueueFcn(HYAMNMAIL From,DWORD FlagsSet,DWORD FlagsNotSet,DWORD FlagsToSetRemove,int mode);
-
-struct CExportedFunctions MailExportedFcn[]=
-{
- {YAMN_SYNCHROMIMEMSGSID,(void *)SynchroMessagesFcn},
- {YAMN_TRANSLATEHEADERID,(void *)TranslateHeaderFcn},
- {YAMN_APPENDQUEUEID,(void *)AppendQueueFcn},
- {YAMN_DELETEMIMEQUEUEID,(void *)DeleteMessagesToEndFcn},
- {YAMN_DELETEMIMEMESSAGEID,(void *)DeleteMessageFromQueueFcn},
- {YAMN_FINDMIMEMESSAGEID,(void *)FindMessageByIDFcn},
- {YAMN_CREATENEWDELETEQUEUEID,(void *)CreateNewDeleteQueueFcn},
- {YAMN_SETREMOVEQUEUEFLAGSID,(void *)SetRemoveFlagsInQueueFcn},
-};
-
-struct CExportedServices MailExportedSvc[]=
-{
- {MS_YAMN_CREATEACCOUNTMAIL,CreateAccountMailSvc},
- {MS_YAMN_DELETEACCOUNTMAIL,DeleteAccountMailSvc},
- {MS_YAMN_LOADMAILDATA,LoadMailDataSvc},
- {MS_YAMN_UNLOADMAILDATA,UnloadMailDataSvc},
- {MS_YAMN_SAVEMAILDATA,SaveMailDataSvc},
-};
-
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR CreateAccountMailSvc(WPARAM wParam,LPARAM lParam)
-{
- HACCOUNT Account=(HACCOUNT)wParam;
- DWORD MailVersion=(DWORD)lParam;
- HYAMNMAIL NewMail;
-
-//test if we are going to initialize members of suitable structure (structures of plugin and YAMN must match)
- if(MailVersion!=YAMN_MAILVERSION)
- return NULL;
-
- if(Account->Plugin!=NULL)
- {
- if(Account->Plugin->MailFcn->NewMailFcnPtr!=NULL)
- {
-//Let plugin create its own structure, which can be derived from CAccount structure
- if(NULL==(NewMail=Account->Plugin->MailFcn->NewMailFcnPtr(Account,YAMN_MAILVERSION)))
- return NULL;
- }
- else
- {
-//We suggest plugin uses standard CAccount structure, so we create it
- if(NULL==(NewMail=new YAMNMAIL))
-//If not created successfully
- return NULL;
- NewMail->MailData=NULL;
- }
-//Init every members of structure, used by YAMN
- return (INT_PTR)NewMail;
- }
- return NULL;
-}
-
-INT_PTR DeleteAccountMailSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
- HYAMNMAIL OldMail=(HYAMNMAIL)lParam;
- struct CMimeItem *TH;
-
- if(Plugin->MailFcn!=NULL){
- if(Plugin->MailFcn->DeleteMailFcnPtr!=NULL) {
- //Let plugin delete its own CMimeMsgQueue derived structure
- Plugin->MailFcn->DeleteMailFcnPtr(OldMail);
- return 1;
- }
- }
- if(OldMail->MailData!=NULL) {
- if(OldMail->MailData->Body!=NULL)
- delete[] OldMail->MailData->Body;
- if((TH=OldMail->MailData->TranslatedHeader)!=NULL)
- for(;OldMail->MailData->TranslatedHeader!=NULL;) {
- TH=TH->Next;
- if(OldMail->MailData->TranslatedHeader->name!=NULL)
- delete[] OldMail->MailData->TranslatedHeader->name;
- if(OldMail->MailData->TranslatedHeader->value!=NULL)
- delete[] OldMail->MailData->TranslatedHeader->value;
- delete OldMail->MailData->TranslatedHeader;
- OldMail->MailData->TranslatedHeader=TH;
- }
- delete OldMail->MailData;
- }
- if(OldMail->ID!=NULL)
- delete[] OldMail->ID;
-
- delete OldMail; //consider mail as standard HYAMNMAIL, not initialized before and use its own destructor
- return 1;
-}
-
-
-void WINAPI AppendQueueFcn(HYAMNMAIL first,HYAMNMAIL second)
-{
- HYAMNMAIL Finder=first;
- while(Finder->Next!=NULL) Finder=Finder->Next;
- Finder->Next=second;
-}
-
-INT_PTR LoadMailDataSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNMAIL Mail=(HYAMNMAIL)wParam;
- DWORD MailVersion=(DWORD)lParam;
-
- if(MailVersion!=YAMN_MAILDATAVERSION)
- return NULL;
-
-//now we have all data to memory persisting, so no loading is needed
- return (INT_PTR)Mail->MailData;
-}
-
-INT_PTR UnloadMailDataSvc(WPARAM wParam,LPARAM)
-{
- HYAMNMAIL Mail=(HYAMNMAIL)wParam;
-
-//now we should delete structure from memory, but it will be made in future YAMN version
- return 1;
-}
-
-INT_PTR SaveMailDataSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNMAIL Mail=(HYAMNMAIL)wParam;
- DWORD MailVersion=(DWORD)lParam;
-
- if(MailVersion!=YAMN_MAILDATAVERSION)
- return (INT_PTR)-1;
-
-//now we have all data to memory persisting, so no saving is needed
- return (INT_PTR)0;
-}
-
-void WINAPI SynchroMessagesFcn(HACCOUNT Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew)
-//deletes messages from new queue, if they are old
-//it also deletes messages from old queue, if they are not in mailbox anymore
-//"YAMN_MSG_DELETED" messages in old queue remain in old queue (are never removed, although they are not in new queue)
-//"YAMN_MSG_DELETED" messages in new queue remain in new queue (are never removed, although they can be in old queue)
-{
- HYAMNMAIL Finder,FinderPrev;
- HYAMNMAIL Parser,ParserPrev;
- HYAMNMAIL RemovedOldParser =NULL;
- HYAMNMAIL RemovedNewParser =NULL;
- if(RemovedOld!=NULL) *RemovedOld=NULL;
- if(RemovedNew!=NULL) *RemovedNew=NULL;
-
- for(FinderPrev=NULL,Finder=*OldQueue;Finder!=NULL;)
- {
- if(Finder->Flags & YAMN_MSG_DELETED) //if old queue contains deleted mail
- {
- FinderPrev=Finder;
- Finder=Finder->Next; //get next message in old queue for testing
- continue;
- }
- for(ParserPrev=NULL,Parser=*NewQueue;Parser!=NULL;ParserPrev=Parser,Parser=Parser->Next)
- {
- if(Parser->Flags & YAMN_MSG_DELETED)
- continue;
-
- if(Parser->ID==NULL) //simply ignore the message, that has not filled its ID
- continue;
-
- if(0==strcmp(Parser->ID,Finder->ID)) //search for equal message in new queue
- break;
- }
- if(Parser!=NULL) //found equal message in new queue
- {
- if(Parser==*NewQueue)
- *NewQueue=(*NewQueue)->Next;
- else
- ParserPrev->Next=Parser->Next;
- Finder->Number=Parser->Number; //rewrite the number of current message in old queue
-
- if(RemovedNew==NULL) //delete from new queue
- DeleteAccountMailSvc((WPARAM)Account->Plugin,(LPARAM)Parser);
- else //or move to RemovedNew
- {
- if(RemovedNewParser==NULL) //if it is first mail removed from NewQueue
- *RemovedNew=Parser; //set RemovedNew queue to point to first message in removed queue
- else
- RemovedNewParser->Next=Parser; //else don't forget to show to next message in RemovedNew queue
- RemovedNewParser=Parser; //follow RemovedNew queue
- RemovedNewParser->Next=NULL;
- }
- FinderPrev=Finder;
- Finder=Finder->Next; //get next message in old queue for testing
- }
- else //a message was already deleted from mailbox
- {
- if(Finder==*OldQueue) //if we are at the first item in OldQueue
- {
- *OldQueue=(*OldQueue)->Next; //set OldQueue to next item
- if(RemovedOld==NULL) //delete from old queue
- DeleteAccountMailSvc((WPARAM)Account->Plugin,(LPARAM)Finder);
- else //or move to RemovedOld
- {
- if(RemovedOldParser==NULL) //if it is first mail removed from OldQueue
- *RemovedOld=Finder; //set RemovedOld queue to point to first message in removed queue
- else
- RemovedOldParser->Next=Finder; //else don't forget to show to next message in RemovedNew queue
- RemovedOldParser=Finder; //follow RemovedOld queue
- RemovedOldParser->Next=NULL;
- }
- Finder=*OldQueue;
- }
- else
- {
- FinderPrev->Next=Finder->Next;
- if(RemovedOld==NULL) //delete from old queue
- DeleteAccountMailSvc((WPARAM)Account->Plugin,(LPARAM)Finder);
- else //or move to RemovedOld
- {
- if(RemovedOldParser==NULL) //if it is first mail removed from OldQueue
- *RemovedOld=Finder; //set RemovedOld queue to point to first message in removed queue
- else
- RemovedOldParser->Next=Finder; //else don't forget to show to next message in RemovedNew queue
- RemovedOldParser=Finder; //follow RemovedOld queue
- RemovedOldParser->Next=NULL;
- }
- Finder=FinderPrev->Next;
- }
- }
- }
-}
-
-void WINAPI DeleteMessagesToEndFcn(HACCOUNT Account,HYAMNMAIL From)
-{
- HYAMNMAIL Temp;
- while(From!=NULL)
- {
- Temp=From;
- From=From->Next;
- DeleteAccountMailSvc((WPARAM)Account->Plugin,(LPARAM)Temp);
- }
-}
-
-void WINAPI DeleteMessageFromQueueFcn(HYAMNMAIL *From,HYAMNMAIL Which,int mode=0)
-{
- DWORD Number=Which->Number;
- HYAMNMAIL Parser;
-
- if(*From==Which)
- {
- Parser=Which->Next;
- *From=Parser;
- }
- else
- {
- for(Parser=*From;Which!=Parser->Next;Parser=Parser->Next)
- if(mode && (Parser->Number>Number)) Parser->Number--;
- if(mode && (Parser->Number>Number)) Parser->Number--;
- Parser->Next=Parser->Next->Next;
- Parser=Which->Next;
- }
- if(mode)
- for(;Parser!=NULL;Parser=Parser->Next)
- if(Parser->Number>Number) Parser->Number--;
-}
-
-void DeleteMessagesFromQueue(HYAMNMAIL *From,HYAMNMAIL Which,int mode=0)
-{
- HYAMNMAIL Parser;
-
- for(Parser=Which;Parser!=NULL;Parser=Parser->Next)
- DeleteMessageFromQueueFcn(From,Parser,mode);
-}
-
-HYAMNMAIL WINAPI FindMessageByIDFcn(HYAMNMAIL From,char *ID)
-{
- HYAMNMAIL Browser;
-
- for(Browser=From;Browser!=NULL;Browser=Browser->Next)
- if(0==lstrcmp(Browser->ID,ID))
- break;
- return Browser;
-}
-
-void WINAPI TranslateHeaderFcn(char *stream,int len,struct CMimeItem **head)
-{
- try
- {
- char *finder=stream;
- char *prev1,*prev2,*prev3;
- struct CMimeItem *Item=NULL;
-
- while(finder<=(stream+len))
- {
- while(ENDLINEWS(finder)) finder++;
-
- //at the start of line
- if(DOTLINE(finder+1)) //at the end of stream
- break;
-
- prev1=finder;
-
- while(*finder!=':' && !EOS(finder)) finder++;
- if(!EOS(finder))
- prev2=finder++;
- else
- break;
-
- while(WS(finder) && !EOS(finder)) finder++;
- if(!EOS(finder))
- prev3=finder;
- else
- break;
-
- do
- {
- if(ENDLINEWS(finder)) finder+=2; //after endline information continues
- while(!ENDLINE(finder) && !EOS(finder)) finder++;
- }while(ENDLINEWS(finder));
-
- if(Item!=NULL)
- {
- if(NULL==(Item->Next=new struct CMimeItem))
- break;
- Item=Item->Next;
- }
- else
- {
- Item = new CMimeItem;
- *head = Item;
- }
-
- Item->Next=NULL;
- Item->name=new char [prev2-prev1+1];
- lstrcpyn(Item->name,prev1,prev2-prev1+1);
- Item->value=new char [finder-prev3+1];
- lstrcpyn(Item->value,prev3,finder-prev3+1);
-
- if(EOS(finder))
- break;
- finder++;
- if(ENDLINE(finder)) {
- finder++;
- if(ENDLINE(finder)) {
- // end of headers. message body begins
- finder++;
- if(ENDLINE(finder))finder++;
- prev1 = finder;
- while (!DOTLINE(finder+1))finder++;
- if (ENDLINE(finder))finder--;
- prev2 = finder;
- if (prev2>prev1){ // yes, we have body
- if(NULL==(Item->Next=new struct CMimeItem)) break; // Cant create new item?!
- Item=Item->Next;
- Item->Next=NULL;//just in case;
- Item->name=new char[5]; strncpy(Item->name,"Body",5);
- Item->value=new char [prev2-prev1];
- lstrcpyn(Item->value,prev1,prev2-prev1-1);
- }
- break; // there is nothing else
- }
- }
- }
- }
- catch(...)
- {
- MessageBox(NULL,"Translate header error","",0);
- }
-}
-
-HYAMNMAIL WINAPI CreateNewDeleteQueueFcn(HYAMNMAIL From)
-{
- HYAMNMAIL FirstMail,Browser;
-
- for(FirstMail=NULL;From!=NULL;From=From->Next)
- {
- if((From->Flags & (YAMN_MSG_USERDELETE | YAMN_MSG_AUTODELETE)) && !(From->Flags & YAMN_MSG_DELETED))
- {
- if(FirstMail==NULL)
- {
- FirstMail=Browser=new YAMNMAIL;
- if(FirstMail==NULL)
- break;
- }
- else
- {
- Browser->Next=new YAMNMAIL;
- Browser=Browser->Next;
- }
- Browser->ID=new char[strlen(From->ID)+1];
- strcpy(Browser->ID,From->ID);
- Browser->Number=From->Number;
- Browser->Flags=From->Flags;
- }
- }
- return FirstMail;
-}
-
-void WINAPI SetRemoveFlagsInQueueFcn(HYAMNMAIL From,DWORD FlagsSet,DWORD FlagsNotSet,DWORD FlagsToSetRemove,int mode)
-{
- HYAMNMAIL msgq;
-
- for(msgq=(HYAMNMAIL)From;msgq!=NULL;msgq=msgq->Next)
- {
- if((FlagsSet==(msgq->Flags & FlagsSet)) && (0==(msgq->Flags & FlagsNotSet)))
- {
- if(mode)
- msgq->Flags=msgq->Flags | FlagsToSetRemove;
- else
- msgq->Flags=msgq->Flags & ~FlagsToSetRemove;
- }
- }
-}
diff --git a/yamn/mails/mime.cpp b/yamn/mails/mime.cpp
deleted file mode 100644
index f2364c9..0000000
--- a/yamn/mails/mime.cpp
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- * This code implements retrieving info from MIME header
- *
- * (c) majvan 2002-2004
- */
-
-#pragma warning( disable : 4290 )
-#include "../yamn.h"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern SWMRG *AccountBrowserSO;
-extern struct WndHandles *MessageWnd;
-
-extern int GetCharsetFromString(char *input,size_t size);
-extern void SendMsgToRecepients(struct WndHandles *FirstWin,UINT msg,WPARAM wParam,LPARAM lParam);
-extern void ConvertCodedStringToUnicode(char *stream,WCHAR **storeto,DWORD cp,int mode);
-extern DWORD WINAPI MailBrowser(LPVOID Param);
-extern DWORD WINAPI NoNewMailProc(LPVOID Param);
-extern DWORD WINAPI BadConnection(LPVOID Param);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//Copies one string to another
-// srcstart- source string
-// srcend- address to the end of source string
-// dest- pointer that stores new allocated string that contains copy of source string
-// mode- MIME_PLAIN or MIME_MAIL (MIME_MAIL deletes '"' characters (or '<' and '>') if they are at start and end of source string
-void CopyToHeader(char *srcstart,char *srcend,char **dest,int mode);
-
-//Extracts email address (finds nick name and mail and then stores them to strings)
-// finder- source string
-// storeto- pointer that receives address of mail string
-// storetonick- pointer that receives address of nickname
-void ExtractAddressFromLine(char *finder,char **storeto,char **storetonick);
-
-//Extracts simple text from string
-// finder- source string
-// storeto- pointer that receives address of string
-void ExtractStringFromLine(char *finder,char **storeto);
-
-//Extracts some item from content-type string
-//Example: ContentType string: "TEXT/PLAIN; charset=US-ASCII", item:"charset=", returns: "US-ASCII"
-// ContetType- content-type string
-// value- string item
-// returns extracted string (or NULL when not found)
-char *ExtractFromContentType(char *ContentType,char *value);
-
-//Extracts info from header text into header members
-//Note that this function as well as struct CShortHeadwer can be always changed, because there are many items to extract
-//(e.g. the X-Priority and Importance and so on)
-// items- translated header (see TranslateHeaderFcn)
-// head- header to be filled with values extracted from items
-void ExtractShortHeader(struct CMimeItem *items,struct CShortHeader *head);
-
-//Extracts header to mail using ExtractShortHeader fcn.
-// items- translated header (see TranslateHeaderFcn)
-// CP- codepage used when no default found
-// head- header to be filled with values extracted from items, in unicode (wide char)
-void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head);
-
-//Deletes items in CShortHeader structure
-// head- structure whose items are deleted
-void DeleteShortHeaderContent(struct CShortHeader *head);
-
-//Deletes list of YAMN_MIMENAMES structures
-// Names- pointer to first item of list
-void DeleteNames(PYAMN_MIMENAMES Names);
-
-//Deletes list of YAMN_MIMESHORTNAMES structures
-// Names- pointer to first item of list
-void DeleteShortNames(PYAMN_MIMESHORTNAMES Names);
-
-//Makes a string lowercase
-// string- string to be lowercased
-void inline ToLower(char *string);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-void CopyToHeader(char *srcstart,char *srcend,char **dest,int mode)
-{
- char *dst;
-
- if(dest==NULL)
- return;
- if(srcstart>=srcend)
- return;
-
- if((mode==MIME_MAIL) && (((*srcstart=='"') && (*(srcend-1)=='"')) || ((*srcstart=='<') && (*(srcend-1)=='>'))))
- {
- srcstart++;
- srcend--;
- }
-
- if(srcstart>=srcend)
- return;
-
- if(NULL!=*dest)
- delete[] *dest;
- if(NULL==(*dest=new char[srcend-srcstart+1]))
- return;
-
- dst=*dest;
-
- for(;srcstart<srcend;dst++,srcstart++)
- {
- if(ENDLINE(srcstart))
- {
- while(ENDLINE(srcstart) || WS(srcstart)) srcstart++;
- *dst=' ';
- srcstart--; //because at the end of "for loop" we increment srcstart
- }
- else
- *dst=*srcstart;
- }
- *dst=0;
-}
-
-void ExtractAddressFromLine(char *finder,char **storeto,char **storetonick)
-{
- if(finder==NULL)
- {
- *storeto=*storetonick=NULL;
- return;
- }
- while(WS(finder)) finder++;
- if((*finder)!='<')
- {
- char *finderend=finder+1;
- do
- {
- if(ENDLINEWS(finderend)) //after endline information continues
- finderend+=2;
- while(!ENDLINE(finderend) && !EOS(finderend)) finderend++; //seek to the end of line or to the end of string
- }while(ENDLINEWS(finderend));
- finderend--;
- while(WS(finderend) || ENDLINE(finderend)) finderend--; //find the end of text, no whitespace
- if(*finderend!='>') //not '>' at the end of line
- CopyToHeader(finder,finderend+1,storeto,MIME_MAIL);
- else //at the end of line, there's '>'
- {
- char *finder2=finderend;
- while((*finder2!='<') && (finder2>finder)) finder2--; //go to matching '<' or to the start
- CopyToHeader(finder2,finderend+1,storeto,MIME_MAIL);
- if(*finder2=='<') //if we found '<', the rest copy as from nick
- {
- finder2--;
- while(WS(finder2) || ENDLINE(finder2)) finder2--; //parse whitespace
- CopyToHeader(finder,finder2+1,storetonick,MIME_MAIL); //and store nickname
- }
- }
- }
- else
- {
- char *finderend=finder+1;
- do
- {
- if(ENDLINEWS(finderend)) //after endline information continues
- finderend+=2;
- while(!ENDLINE(finderend) && (*finderend!='>') && !EOS(finderend)) finderend++; //seek to the matching < or to the end of line or to the end of string
- }while(ENDLINEWS(finderend));
- CopyToHeader(finder,finderend+1,storeto,MIME_MAIL); //go to first '>' or to the end and copy
- finder=finderend+1;
- while(WS(finder)) finder++; //parse whitespace
- if(!ENDLINE(finder) && !EOS(finder)) //if there are chars yet, it's nick
- {
- finderend=finder+1;
- while(!ENDLINE(finderend) && !EOS(finderend)) finderend++; //seek to the end of line or to the end of string
- finderend--;
- while(WS(finderend)) finderend--; //find the end of line, no whitespace
- CopyToHeader(finder,finderend+1,storetonick,MIME_MAIL);
- }
- }
-}
-
-void ExtractStringFromLine(char *finder,char **storeto)
-{
- if(finder==NULL)
- {
- *storeto=NULL;
- return;
- }
- while(WS(finder)) finder++;
- char *finderend=finder;
-
- do
- {
- if(ENDLINEWS(finderend)) finderend++; //after endline information continues
- while(!ENDLINE(finderend) && !EOS(finderend)) finderend++;
- }while(ENDLINEWS(finderend));
- finderend--;
- while(WS(finderend)) finderend--; //find the end of line, no whitespace
- CopyToHeader(finder,finderend+1,storeto,MIME_PLAIN);
-}
-
-char *ExtractFromContentType(char *ContentType,char *value)
-{
- char *lowered = _strdup(ContentType);
- ToLower(lowered);
- char *finder=strstr(lowered,value);
- if(finder==NULL){
- free (lowered);
- return NULL;
- }
- finder = finder-lowered+ContentType;
- free (lowered);
-
- char *temp,*copier;
- char *CopiedString;
-
- temp=finder-1;
- while((temp>ContentType) && WS(temp)) temp--; //now we have to find, if the word "Charset=" is located after ';' like "; Charset="
- if(*temp!=';' && !ENDLINE(temp) && temp!=ContentType)
- return NULL;
- finder=finder+strlen(value); //jump over value string
-
- while(WS(finder)) finder++; //jump over whitespaces
- temp=finder;
- while(*temp!=0 && *temp!=';') temp++; //jump to the end of setting (to the next ;)
- temp--;
- while(WS(temp)) temp--; //remove whitespaces from the end
- if (*finder=='\"'){ //remove heading and tailing quotes
- finder++;
- if (*temp=='\"') temp--;
- }
- if(NULL==(CopiedString=new char[++temp-finder+1]))
- return NULL;
- for(copier=CopiedString;finder!=temp;*copier++=*finder++); //copy string
- *copier=0; //and end it with zero character
-
- return CopiedString;
-}
-
-void ExtractShortHeader(struct CMimeItem *items,struct CShortHeader *head)
-{
- for(;items!=NULL;items=items->Next)
- {
- //at the start of line
- //MessageBox(NULL,items->value,items->name,0);
- if(0==_strnicmp(items->name,"From",4))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting from>");
- #endif
- ExtractAddressFromLine(items->value,&head->From,&head->FromNick);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"Return-Path",11))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting return-path>");
- #endif
- ExtractAddressFromLine(items->value,&head->ReturnPath,&head->ReturnPathNick);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"Subject",7))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting subject>");
- #endif
- ExtractStringFromLine(items->value,&head->Subject);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"Body",4))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting body>");
- #endif
- ExtractStringFromLine(items->value,&head->Body);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"Date",4))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting date>");
- #endif
- ExtractStringFromLine(items->value,&head->Date);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"Content-Type",12))
- {
- if(items->value==NULL)
- continue;
-
- char *ContentType=NULL,*CharSetStr;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting Content-Type>");
- #endif
- ExtractStringFromLine(items->value,&ContentType);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- ToLower(ContentType);
- if(NULL!=(CharSetStr=ExtractFromContentType(ContentType,"charset=")))
- {
- head->CP=GetCharsetFromString(CharSetStr,strlen(CharSetStr));
- delete[] CharSetStr;
- }
- delete[] ContentType;
- }
- else if(0==_strnicmp(items->name,"Importance",10))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting importance>");
- #endif
- if(head->Priority!=-1)
- {
- if(0==strncmp(items->value,"low",3))
- head->Priority=5;
- else if(0==strncmp(items->value,"normal",6))
- head->Priority=3;
- else if(0==strncmp(items->value,"high",4))
- head->Priority=1;
- }
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
- else if(0==_strnicmp(items->name,"X-Priority",10))
- {
- if(items->value==NULL)
- continue;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<X-Priority>");
- #endif
- if((*items->value>='1') && (*items->value<='5'))
- head->Priority=*items->value-'0';
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting>\n");
- #endif
- }
-
- }
-}
-
-void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head)
-{
- struct CShortHeader ShortHeader;
-
- ZeroMemory(&ShortHeader,sizeof(struct CShortHeader));
- ShortHeader.Priority=ShortHeader.CP=-1;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting header>\n");
- #endif
- ExtractShortHeader(items,&ShortHeader);
-
- head->Priority=ShortHeader.Priority==-1 ? 3 : ShortHeader.Priority;
- CP=ShortHeader.CP==-1 ? CP : ShortHeader.CP;
- #ifdef DEBUG_DECODE
- if(NULL!=ShortHeader.From)
- DebugLog(DecodeFile,"<Decoded from>%s</Decoded)\n",ShortHeader.From);
- if(NULL!=ShortHeader.FromNick)
- DebugLog(DecodeFile,"<Decoded from-nick>%s</Decoded)\n",ShortHeader.FromNick);
- if(NULL!=ShortHeader.ReturnPath)
- DebugLog(DecodeFile,"<Decoded return-path>%s</Decoded)\n",ShortHeader.ReturnPath);
- if(NULL!=ShortHeader.ReturnPathNick)
- DebugLog(DecodeFile,"<Decoded return-path nick>%s</Decoded)\n",ShortHeader.ReturnPathNick);
- if(NULL!=ShortHeader.Subject)
- DebugLog(DecodeFile,"<Decoded subject>%s</Decoded)\n",ShortHeader.Subject);
- if(NULL!=ShortHeader.Date)
- DebugLog(DecodeFile,"<Decoded date>%s</Decoded)\n",ShortHeader.Date);
- DebugLog(DecodeFile,"</Extracting header>\n");
- DebugLog(DecodeFile,"<Convert>\n");
- #endif
-
- ConvertCodedStringToUnicode(ShortHeader.From,&head->From,CP,MIME_PLAIN);
-
- #ifdef DEBUG_DECODE
- if(NULL!=head->From)
- DebugLogW(DecodeFile,L"<Converted from>%s</Converted>\n",head->From);
- #endif
- ConvertCodedStringToUnicode(ShortHeader.FromNick,&head->FromNick,CP,MIME_MAIL);
- #ifdef DEBUG_DECODE
- if(NULL!=head->FromNick)
- DebugLogW(DecodeFile,L"<Converted from-nick>%s</Converted>\n",head->FromNick);
- #endif
- ConvertCodedStringToUnicode(ShortHeader.ReturnPath,&head->ReturnPath,CP,MIME_PLAIN);
- #ifdef DEBUG_DECODE
- if(NULL!=head->ReturnPath)
- DebugLogW(DecodeFile,L"<Converted return-path>%s</Converted>\n",head->ReturnPath);
- #endif
- ConvertCodedStringToUnicode(ShortHeader.ReturnPathNick,&head->ReturnPathNick,CP,MIME_MAIL);
- #ifdef DEBUG_DECODE
- if(NULL!=head->ReturnPathNick)
- DebugLogW(DecodeFile,L"<Converted return-path nick>%s</Converted>\n",head->ReturnPathNick);
- #endif
- ConvertCodedStringToUnicode(ShortHeader.Subject,&head->Subject,CP,MIME_PLAIN);
- #ifdef DEBUG_DECODE
- if(NULL!=head->Subject)
- DebugLogW(DecodeFile,L"<Converted subject>%s</Converted>\n",head->Subject);
- #endif
- ConvertCodedStringToUnicode(ShortHeader.Date,&head->Date,CP,MIME_PLAIN);
- #ifdef DEBUG_DECODE
- if(NULL!=head->Date)
- DebugLogW(DecodeFile,L"<Converted date>%s</Converted>\n",head->Date);
- #endif
-
- ConvertCodedStringToUnicode(ShortHeader.Body,&head->Body,CP,MIME_PLAIN);
- #ifdef DEBUG_DECODE
- if(NULL!=head->Body)
- DebugLogW(DecodeFile,L"<Converted Body>%s</Converted>\n",head->Body);
- #endif
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Convert>\n");
- #endif
-
- DeleteShortHeaderContent(&ShortHeader);
-
-// head->From=L"Frommmm";
-// head->Subject=L"Subject";
- return;
-}
-
-void DeleteShortHeaderContent(struct CShortHeader *head)
-{
- if(head->From!=NULL) delete[] head->From;
- if(head->FromNick!=NULL) delete[] head->FromNick;
- if(head->ReturnPath!=NULL) delete[] head->ReturnPath;
- if(head->ReturnPathNick!=NULL) delete[] head->ReturnPathNick;
- if(head->Subject!=NULL) delete[] head->Subject;
- if(head->Date!=NULL) delete[] head->Date;
- if(head->To!=NULL) DeleteShortNames(head->To);
- if(head->Cc!=NULL) DeleteShortNames(head->Cc);
- if(head->Bcc!=NULL) DeleteShortNames(head->Bcc);
- if(head->Body!=NULL) delete[] head->Body;
-}
-
-void DeleteHeaderContent(struct CHeader *head)
-{
- if(head->From!=NULL) delete[] head->From;
- if(head->FromNick!=NULL) delete[] head->FromNick;
- if(head->ReturnPath!=NULL) delete[] head->ReturnPath;
- if(head->ReturnPathNick!=NULL) delete[] head->ReturnPathNick;
- if(head->Subject!=NULL) delete[] head->Subject;
- if(head->Date!=NULL) delete[] head->Date;
- if(head->Body!=NULL) delete[] head->Body;
- if(head->To!=NULL) DeleteNames(head->To);
- if(head->Cc!=NULL) DeleteNames(head->Cc);
- if(head->Bcc!=NULL) DeleteNames(head->Bcc);
-}
-
-void DeleteNames(PYAMN_MIMENAMES Names)
-{
- PYAMN_MIMENAMES Parser=Names,Old;
- for(;Parser!=NULL;Parser=Parser->Next)
- {
- if(Parser->Value!=NULL)
- delete[] Parser->Value;
- if(Parser->ValueNick!=NULL)
- delete[] Parser->ValueNick;
- Old=Parser;
- Parser=Parser->Next;
- delete Old;
- }
-}
-
-void DeleteShortNames(PYAMN_MIMESHORTNAMES Names)
-{
- PYAMN_MIMESHORTNAMES Parser=Names,Old;
- for(;Parser!=NULL;Parser=Parser->Next)
- {
- if(Parser->Value!=NULL)
- delete[] Parser->Value;
- if(Parser->ValueNick!=NULL)
- delete[] Parser->ValueNick;
- Old=Parser;
- Parser=Parser->Next;
- delete Old;
- }
-}
-
-
-void inline ToLower(char *string)
-{
- for(;*string!=0;string++)
- if(*string>='A' && *string<='Z') *string=*string-'A'+'a';
-}
-
-#define TE_UNKNOWN
-#define TE_QUOTEDPRINTABLE 1
-#define TE_BASE64 2
-struct APartDataType
-{
- char *Src;//Input
- char *ContType;
- int CodePage;
- char *TransEnc;
- BYTE TransEncType; //TE_something
- char *body;
- int bodyLen;
- WCHAR *wBody;
-};
-
-
-void ParseAPart(APartDataType *data)
-{
- size_t len = strlen(data->Src);
- try
- {
- char *finder=data->Src;
- char *prev1,*prev2,*prev3;
-
- while(finder<=(data->Src+len))
- {
- while(ENDLINEWS(finder)) finder++;
-
- //at the start of line
- if (finder>data->Src){
- if (*(finder-2)=='\r' || *(finder-2)=='\n')
- *(finder-2)=0;
- if (*(finder-1)=='\r' || *(finder-1)=='\n')
- *(finder-1)=0;
- }
- prev1=finder;
-
- while(*finder!=':' && !EOS(finder) && !ENDLINE(finder)) finder++;
- if (ENDLINE(finder)||EOS(finder)){
- // no ":" in the line? here the body begins;
- data->body = prev1;
- break;
- }
- prev2=finder++;
-
- while(WS(finder) && !EOS(finder)) finder++;
- if(!EOS(finder))
- prev3=finder;
- else
- break;
-
- do
- {
- if(ENDLINEWS(finder)) finder+=2; //after endline information continues
- while(!ENDLINE(finder) && !EOS(finder)) finder++;
- }while(ENDLINEWS(finder));
-
- if (!_strnicmp(prev1,"Content-type",prev2-prev1)){
- data->ContType = prev3;
- } else if (!_strnicmp(prev1,"Content-Transfer-Encoding",prev2-prev1)){
- data->TransEnc = prev3;
- }
-
- if(EOS(finder))
- break;
- finder++;
- if(ENDLINE(finder)) {
- finder++;
- if(ENDLINE(finder)) {
- // end of headers. message body begins
- if (finder>data->Src){
- if (*(finder-2)=='\r' || *(finder-2)=='\n')
- *(finder-2)=0;
- if (*(finder-1)=='\r' || *(finder-1)=='\n')
- *(finder-1)=0;
- }
- finder++;
- if(ENDLINE(finder))finder++;
- prev1 = finder;
- while (!EOS(finder+1))finder++;
- if (ENDLINE(finder))finder--;
- prev2 = finder;
- if (prev2>prev1){ // yes, we have body
- data->body = prev1;
- }
- break; // there is nothing else
- }
- }
- }
- }
- catch(...)
- {
- MessageBox(NULL,_T("Translate header error"),_T(""),0);
- }
- if (data->body) data->bodyLen = (int)strlen(data->body);
-}
-
-//from decode.cpp
-int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ);
-int DecodeBase64(char *Src,char *Dst,int DstLen);
-int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out);
-
-WCHAR *ParseMultipartBody(char *src, char *bond)
-{
- char *srcback = _strdup(src);
- size_t sizebond = strlen(bond);
- int numparts = 1;
- int i;
- char *courbond = srcback;
- WCHAR *dest;
- for (;(courbond=strstr(courbond,bond));numparts++,courbond+=sizebond);
- APartDataType *partData = new APartDataType[numparts];
- memset(partData, 0, sizeof(APartDataType)*numparts);
- partData[0].Src = courbond = srcback;
- for (i=1;(courbond=strstr(courbond,bond));i++,courbond+=sizebond){
- *(courbond-2) = 0;
- partData[i].Src = courbond+sizebond;
- while (ENDLINE(partData[i].Src)) partData[i].Src++;
- }
- size_t resultSize=0;
- for (i=0;i<numparts;i++){
- ParseAPart(&partData[i]);
- if (partData[i].body){
- if (partData[i].TransEnc){
- if (!_stricmp(partData[i].TransEnc,"base64")) partData[i].TransEncType=TE_BASE64;
- else if (!_stricmp(partData[i].TransEnc,"quoted-printable"))partData[i].TransEncType=TE_QUOTEDPRINTABLE;
- }
- if (partData[i].ContType){
- char *CharSetStr;
- if(NULL!=(CharSetStr=ExtractFromContentType(partData[i].ContType,"charset=")))
- {
- partData[i].CodePage=GetCharsetFromString(CharSetStr,strlen(CharSetStr));
- delete[] CharSetStr;
- }
- }
- if (partData[i].ContType && !_strnicmp(partData[i].ContType,"text",4)) {
- char *localBody=0;
- switch (partData[i].TransEncType){
- case TE_BASE64:
- {
- int size =partData[i].bodyLen*3/4+5;
- localBody = new char[size+1];
- DecodeBase64(partData[i].body,localBody,size);
- }break;
- case TE_QUOTEDPRINTABLE:
- {
- int size = partData[i].bodyLen+2;
- localBody = new char[size+1];
- DecodeQuotedPrintable(partData[i].body,localBody,size,FALSE);
- }break;
- }
- ConvertStringToUnicode(localBody?localBody:partData[i].body,partData[i].CodePage,&partData[i].wBody);
- if (localBody) delete[] localBody;
- } else if(partData[i].ContType && !_strnicmp(partData[i].ContType,"multipart/",10)){
- //Multipart in mulitipart recursive? should be SPAM. Ah well
- char *bondary=NULL;
- if(NULL!=(bondary=ExtractFromContentType(partData[i].ContType,"boundary=")))
- {
- partData[i].wBody = ParseMultipartBody(partData[i].body,bondary);
- delete[] bondary;
- } else goto FailBackRaw; //multipart with no boundary? badly formatted messages.
- } else {
-FailBackRaw:
- ConvertStringToUnicode(partData[i].body,partData[i].CodePage,&partData[i].wBody);
- }
- resultSize += wcslen(partData[i].wBody);
- }// if (partData[i].body)
- resultSize += 100+4+3; //cr+nl+100+ 3*bullet
- }
- dest = new WCHAR[resultSize+1];
- size_t destpos = 0;
- for (i=0;i<numparts;i++){
- if (i){ // part before first boudary should not have headers
- char infoline[104]; size_t linesize = 0;
- _snprintf(infoline,100,"%s %d",Translate("Part"),i);
- linesize = strlen(infoline);
- if (partData[i].TransEnc){
- _snprintf(infoline+linesize,100-linesize,"; %s",partData[i].TransEnc);
- linesize = strlen(infoline);
- }
- if (partData[i].ContType){
- char *CharSetStr=strchr(partData[i].ContType,';');
- if (CharSetStr){
- CharSetStr[0]=0;
- _snprintf(infoline+linesize,100-linesize,"; %s",partData[i].ContType);
- linesize = strlen(infoline);
- partData[i].ContType=CharSetStr+1;
- if(NULL!=(CharSetStr=ExtractFromContentType(partData[i].ContType,"charset=")))
- {
- _snprintf(infoline+linesize,100-linesize,"; %s",CharSetStr);
- linesize = strlen(infoline);
- delete[] CharSetStr;
- }
- if(NULL!=(CharSetStr=ExtractFromContentType(partData[i].ContType,"name=")))
- {
- _snprintf(infoline+linesize,100-linesize,"; \"%s\"",CharSetStr);
- linesize = strlen(infoline);
- delete[] CharSetStr;
- }
- } else {
- _snprintf(infoline+linesize,100-linesize,"; %s",partData[i].ContType);
- linesize = strlen(infoline);
- }
- }
- sprintf(infoline+linesize,".\r\n");
- {WCHAR *temp=0;
- dest[destpos] = dest[destpos+1] = dest[destpos+2] = 0x2022; // bullet;
- destpos+=3;
- ConvertStringToUnicode(infoline,CP_ACP,&temp);
- size_t wsize = wcslen(temp);
- wcscpy(&dest[destpos],temp);
- destpos += wsize;
- delete[] temp;
- }
- } // if (i)
- if (partData[i].wBody){
- size_t wsize = wcslen(partData[i].wBody);
- wcscpy(&dest[destpos],partData[i].wBody);
- destpos += wsize;
- delete[] partData[i].wBody;
- }
- }
-
- free (srcback);
- delete[] partData;
- dest[resultSize] = 0;//just in case
- return dest;
-}
diff --git a/yamn/mails/test/header.txt b/yamn/mails/test/header.txt
deleted file mode 100644
index 55a4d86..0000000
--- a/yamn/mails/test/header.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Return-Path: <foromundial-return-1047-decode.com.ar-pablo=decode.com.ar@decode.com.ar>
-Delivered-To: pablo@decode.com.ar
-Received: (qmail 5438 invoked by uid 618); 5 Sep 2003 19:49:16 -0000
-Mailing-List: contact foromundial-help@decode.com.ar; run by ezmlm
-Precedence: bulk
-X-No-Archive: yes
-List-Post: <mailto:foromundial@decode.com.ar>
-List-Help: <mailto:foromundial-help@decode.com.ar>
-List-Unsubscribe: <mailto:foromundial-unsubscribe@decode.com.ar>
-List-Subscribe: <mailto:foromundial-subscribe@decode.com.ar>
-X-Seq: 1047
-Delivered-To: mailing list foromundial@decode.com.ar
-Received: (qmail 5432 invoked by uid 618); 5 Sep 2003 19:49:15 -0000
-X-Spam-Status: No, hits=3.9 required=7.5
-Message-Id: <4.2.1.20030905163128.00a998a0@mail.labsem.cetuc.puc-rio.br>
-X-Sender: sandra@mail.labsem.cetuc.puc-rio.br
-X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.1
-Date: Fri, 05 Sep 2003 16:48:12 -0300
-To: foromundial@decode.com.ar
-From: "Sandra M. Landi" <sandra@labsem.cetuc.puc-rio.br>
-Mime-Version: 1.0
-Content-Type: multipart/alternative;
- boundary="=====================_4293080==_.ALT"
-X-Antirelay: Good relay from local net2 139.82.127.0/26
-Subject: [foromundial-1047] frases para un viernes
-
-
-.
diff --git a/yamn/mails/test/header2.txt b/yamn/mails/test/header2.txt
deleted file mode 100644
index 3ba81a2..0000000
--- a/yamn/mails/test/header2.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-Return-Path: <miranda@megami.sprintserve.net>
-Received: [from megami.sprintserve.net (megami.sprintserve.net [207.142.136.160])
- by mail2.ba.psg.sk with ESMTP id i4FHNUY6018585
- for <om3tn@psg.sk>; Sat, 15 May 2004 19:23:31 +0200]
-X-Envelope-To: <om3tn@psg.sk>
-Received: from miranda by megami.sprintserve.net with local (Exim 4.34)
- id 1BP2sS-0006W6-MS
- for om3tn@psg.sk; Sat, 15 May 2004 13:23:12 -0400
-To: Undisclosed-recipients:;
-Subject: UpozornØn¡ na odpovØÔ v t‚matu - YAMN problem
-Reply-to: forum@miranda-im.org
-From: forum@miranda-im.org:
-Message-ID: <e003226b4a46a7ca6b490345f21b91af@forums.miranda-im.org>
-MIME-Version: 1.0
-Content-type: text/plain; charset=Windows-1250
-Content-transfer-encoding: 8bit
-Date: Sat, 15 May 2004 13:23:12 -0400
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: PHP
-X-MimeOLE: Produced By phpBB2
-X-MailScanner-Information: Please contact the ISP for more information
-X-MailScanner: Found to be clean
-X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
-X-AntiAbuse: Primary Hostname - megami.sprintserve.net
-X-AntiAbuse: Original Domain - psg.sk
-X-AntiAbuse: Originator/Caller UID/GID - [32110 32110] / [47 12]
-X-AntiAbuse: Sender Address Domain - megami.sprintserve.net
-X-Source:
-X-Source-Args:
-X-Source-Dir:
-.
-
-Subject: UpozornØn¡ na odpovØÔ v t‚matu - YAMN problem
-
-Return-Path: <miranda@megami.sprintserve.net>
-Received: [from megami.sprintserve.net (megami.sprintserve.net [207.142.136.160])
- by mail2.ba.psg.sk with ESMTP id i4FHX2Y6020695
- for <om3tn@psg.sk>; Sat, 15 May 2004 19:33:03 +0200]
-X-Envelope-To: <om3tn@psg.sk>
-Received: from miranda by megami.sprintserve.net with local (Exim 4.34)
- id 1BP31h-0001cs-Ai
- for om3tn@psg.sk; Sat, 15 May 2004 13:32:45 -0400
-To: Undisclosed-recipients:;
-Subject: UpozornØn¡ na odpovØÔ v t‚matu - YAMN problem
-Reply-to: forum@miranda-im.org
-From: forum@miranda-im.org
-Message-ID: <0873b36d0931479c4ebe23ba71ff4810@forums.miranda-im.org>
-MIME-Version: 1.0
-Content-type: text/plain; charset=Windows-1250
-Content-transfer-encoding: 8bit
-Date: Sat, 15 May 2004 13:32:45 -0400
-X-Priority: 3
-X-MSMail-Priority: Normal
-X-Mailer: PHP
-X-MimeOLE: Produced By phpBB2
-X-MailScanner-Information: Please contact the ISP for more information
-X-MailScanner: Found to be clean
-X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
-X-AntiAbuse: Primary Hostname - megami.sprintserve.net
-X-AntiAbuse: Original Domain - psg.sk
-X-AntiAbuse: Originator/Caller UID/GID - [32110 32110] / [47 12]
-X-AntiAbuse: Sender Address Domain - megami.sprintserve.net
-X-Source:
-X-Source-Args:
-X-Source-Dir:
-
-.
-
-Received: by hplm (mbox om3tn)
- (with POP3 daemon cucipop (v1.31 1998/05/13) Tue May 27 18:42:20 2003)
-X-From_: HMF@hotbox.ru Tue May 20 18:11:44 2003
-Return-Path: <HMF@hotbox.ru>
-Received: from ns1.slovanet.net (ns1.slovanet.net [195.28.64.119])
- by hplm.psg.sk (8.12.9/8.12.7) with SMTP id h4KGBfxJ003732
- for <om3tn@psg.sk>; Tue, 20 May 2003 18:11:44 +0200
-X-Envelope-To: <om3tn@psg.sk>
-Received: (qmail 6339 invoked from network); 20 May 2003 18:11:45 +0200
-Received: from unknown (HELO ??+???) (61.33.134.106)
- by ns1.slovanet.net with SMTP; 20 May 2003 18:11:45 +0200
-Received: by london.com (Postfix, from userid 302)
- id WTS; Tue, 20 May 2003 20:13:19
-Received: from Œù+⌥ (Œù+⌥ [61.33.134.106])
- by mill.co.uk (Postfix) with ESMTP id 613
- for <om3tn@psg.sk>; Tue, 20 May 2003 20:13:19
-Subject: Òàìîæåííàî÷èñòêà. ÔèíëäèÌîñêâà. Îò 0,8 çà êã, âêëþ÷àâñå ! 20:13:19
-From: <HMF@hotbox.ru>
-To: OM3TN <om3tn@psg.sk>
-Reply-To: <>
-X-Mailer: AOL 7.0 for Windows UK sub 52
-X-Priority: 1
-X-MSMail-Priority: High
-Mime-Version: 1.0
-Content-Type: text/html; charset="Windows-1251"
-Content-Transfer-Encoding: 7bit
-Date: Tue, 20 May 2003 20:13:21
-Message-Id: <DED-173-MCL662@mail-relay2.slovanet.net> \ No newline at end of file
diff --git a/yamn/mails/test/readme.txt b/yamn/mails/test/readme.txt
deleted file mode 100644
index 35a30b2..0000000
--- a/yamn/mails/test/readme.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is project for testing mime encoding/decoding. It
-is very usefull for developers, when some problems with
-non-standard headers occured. You can use it to step through
-MIME decoding functions.
diff --git a/yamn/mails/test/test.cpp b/yamn/mails/test/test.cpp
deleted file mode 100644
index f8dcd14..0000000
--- a/yamn/mails/test/test.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is for testing purposes. Save in header.txt your problem header and you can
- * browse through functions to get result
- *
- * (c) majvan 2002-2004
- */
-
-#include <stdio.h>
-#include "../m_mails.h"
-
-extern void WINAPI TranslateHeaderFcn(char *stream,int len,struct CMimeItem **head);
-extern void ExtractHeader(struct CMimeItem *items,int CP,struct CHeader *head);
-
-void main()
-{
- char Buffer[8192]; //we do not suppose longer header
- FILE *fp;
- YAMNMAIL *Mail;
- PMAILDATA *MailData;
- CMimeItem *head;
-
- struct CHeader ExtractedHeader;
-
- if(NULL==(fp=fopen("header2.txt","r")))
- return;
- fread(Buffer,sizeof(Buffer),1,fp);
- if(ferror(fp))
- {
- fclose(fp);
- return;
- }
- fclose(fp);
- Mail = new YAMNMAIL;
- MailData = new PMAILDATA;
- head = new CMimeItem;
- Mail->MailData = *MailData;
- Mail->MailData->TranslatedHeader = head;
-
- TranslateHeaderFcn(Buffer,strlen(Buffer), &Mail->MailData->TranslatedHeader);
- ExtractHeader(Mail->MailData->TranslatedHeader,CP_ACP,&ExtractedHeader);
- return;
-} \ No newline at end of file
diff --git a/yamn/mails/test/test.dsp b/yamn/mails/test/test.dsp
deleted file mode 100644
index 6d01b36..0000000
--- a/yamn/mails/test/test.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x405 /d "NDEBUG"
-# ADD RSC /l 0x405 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x405 /d "_DEBUG"
-# ADD RSC /l 0x405 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "test - Win32 Release"
-# Name "test - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\decode.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\mails.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\mime.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/yamn/mails/test/test.dsw b/yamn/mails/test/test.dsw
deleted file mode 100644
index e25096d..0000000
--- a/yamn/mails/test/test.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "test"=.\test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/yamn/main.cpp b/yamn/main.cpp
deleted file mode 100644
index 3a7db58..0000000
--- a/yamn/main.cpp
+++ /dev/null
@@ -1,849 +0,0 @@
-/*
- * YAMN plugin main file
- * Miranda homepage: http://miranda-icq.sourceforge.net/
- * YAMN homepage: http://www.majvan.host.sk/Projekty/YAMN
- *
- * initializes all variables for further work
- *
- * (c) majvan 2002-2004
- */
-
-
-#include "main.h"
-#include "yamn.h"
-#include "resources/resource.h"
-#include <io.h>
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//CRITICAL_SECTION MWCS;
-//CRITICAL_SECTION ASCS;
-//CRITICAL_SECTION PRCS;
-
-extern LPCRITICAL_SECTION PluginRegCS;
-extern HANDLE ExitEV;
-extern HANDLE WriteToFileEV;
-
-extern int PosX,PosY,SizeX,SizeY;
-extern int HeadPosX,HeadPosY,HeadSizeX,HeadSizeY,HeadSplitPos;
-
-//From account.cpp
-extern LPCRITICAL_SECTION AccountStatusCS;
-extern LPCRITICAL_SECTION FileWritingCS;
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-WCHAR *ProfileName = NULL; //e.g. "majvan"
-WCHAR *UserDirectory = NULL; //e.g. "F:\WINNT\Profiles\UserXYZ"
-char *ProtoName = YAMN_DBMODULE;
-//char *AltProtoName;
-char *szMirandaDir = NULL;
-char *szProfileDir = NULL;
-
-INT_PTR YAMN_STATUS;
-
-BOOL UninstallPlugins;
-
-HANDLE hAccountFolder;
-
-HINSTANCE *hDllPlugins;
-static int iDllPlugins=0;
-
-PLUGINLINK *pluginLink;
-YAMN_VARIABLES YAMNVar;
-
-int hLangpack;
-
-static const MUUID interfaces[] = {MUUID_YAMN_FORCECHECK, MIID_LAST};
-
-PLUGININFOEX pluginInfo={
- sizeof(PLUGININFOEX),
- YAMN_SHORTNAME,
- YAMN_VERSION,
- "Mail notifier and browser for Miranda IM. Included POP3 protocol. Mod for Mataes Pack.",
- "y_b tweety (majvan)",
- "francois.mean@skynet.be",
- "© (2002-2004 majvan) 2005-2007 tweety y_b Miranda community",
- "http://www.miranda-im.org/download/details.php?action=viewfile&id=3411", //"http://www.majvan.host.sk/Projekty/YAMN?fm=soft",
- UNICODE_AWARE,
- 0, //doesn't replace anything built-in
- { 0xb047a7e5, 0x27a, 0x4cfc, { 0x8b, 0x18, 0xed, 0xa8, 0x34, 0x5d, 0x27, 0x90 } } // {B047A7E5-027A-4cfc-8B18-EDA8345D2790}
-
-};
-
-SKINSOUNDDESC NewMailSound={
- sizeof(SKINSOUNDDESC),
- YAMN_NEWMAILSOUND, //name to refer to sound when playing and in db
- YAMN_NEWMAILSNDDESC, //description for options dialog
- "", //default sound file to use, without path
-};
-
-SKINSOUNDDESC ConnectFailureSound={
- sizeof(SKINSOUNDDESC),
- YAMN_CONNECTFAILSOUND, //name to refer to sound when playing and in db
- YAMN_CONNECTFAILSNDDESC,//description for options dialog
- "", //default sound file to use, without path
-};
-
-HANDLE hNewMailHook;
-//HANDLE hUninstallPluginsHook;
-
-HANDLE NoWriterEV;
-
-HANDLE hTTButton; //TopToolBar button
-
-DWORD HotKeyThreadID;
-
-UINT SecTimer;
-
-BOOL bIcolibEmbededInCore = FALSE;
-
-HICON hYamnIcons[ICONSNUMBER];
-char *iconDescs[ICONSNUMBER]={ICONSDESCS};
-char *iconNames[ICONSNUMBER]={ICONSNAMES};
- int iconIndexes[ICONSNUMBER]={ICONSINDS};
-
-HANDLE hMenuItemMain = 0;
-HANDLE hMenuItemCont = 0;
-HANDLE hMenuItemContApp = 0;
-
-BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD) = 0;
-HMODULE hUxTheme = 0;
-
-// function pointers, use typedefs for casting to shut up the compiler when using GetProcAddress()
-
-typedef BOOL (WINAPI *PITA)();
-typedef HANDLE (WINAPI *POTD)(HWND, LPCWSTR);
-typedef UINT (WINAPI *PDTB)(HANDLE, HDC, int, int, RECT *, RECT *);
-typedef UINT (WINAPI *PCTD)(HANDLE);
-typedef UINT (WINAPI *PDTT)(HANDLE, HDC, int, int, LPCWSTR, int, DWORD, DWORD, RECT *);
-
-PITA pfnIsThemeActive = 0;
-POTD pfnOpenThemeData = 0;
-PDTB pfnDrawThemeBackground = 0;
-PCTD pfnCloseThemeData = 0;
-PDTT pfnDrawThemeText = 0;
-
-#define FIXED_TAB_SIZE 100 // default value for fixed width tabs
-
-/*
- * visual styles support (XP+)
- * returns 0 on failure
- */
-
-int InitVSApi()
-{
- if((hUxTheme = LoadLibraryA("uxtheme.dll")) == 0)
- return 0;
-
- pfnIsThemeActive = (PITA)GetProcAddress(hUxTheme, "IsThemeActive");
- pfnOpenThemeData = (POTD)GetProcAddress(hUxTheme, "OpenThemeData");
- pfnDrawThemeBackground = (PDTB)GetProcAddress(hUxTheme, "DrawThemeBackground");
- pfnCloseThemeData = (PCTD)GetProcAddress(hUxTheme, "CloseThemeData");
- pfnDrawThemeText = (PDTT)GetProcAddress(hUxTheme, "DrawThemeText");
-
- MyEnableThemeDialogTexture = (BOOL (WINAPI *)(HANDLE, DWORD))GetProcAddress(hUxTheme, "EnableThemeDialogTexture");
- if(pfnIsThemeActive != 0 && pfnOpenThemeData != 0 && pfnDrawThemeBackground != 0 && pfnCloseThemeData != 0 && pfnDrawThemeText != 0) {
- return 1;
- }
- return 0;
-}
-
-/*
- * unload uxtheme.dll
- */
-
-int FreeVSApi()
-{
- if(hUxTheme != 0)
- FreeLibrary(hUxTheme);
- return 0;
-}
-
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-static void GetProfileDirectory(char *szPath,int cbPath)
-//This is copied from Miranda's sources. In 0.2.1.0 it is needed, in newer vesions of Miranda use MS_DB_GETPROFILEPATH service
-{
- szProfileDir=new char[MAX_PATH];
- if (ServiceExists(MS_DB_GETPROFILEPATH)){
- if (!CallService(MS_DB_GETPROFILEPATH,(WPARAM)cbPath,(LPARAM)szPath)) {
- lstrcpy(szProfileDir,szPath);
- return; //success
- }
- }
- char szMirandaIni[MAX_PATH],szExpandedProfileDir[MAX_PATH];
- DWORD dwAttributes;
-
- lstrcpy(szMirandaIni,szMirandaDir);
- lstrcat(szMirandaIni,"\\mirandaboot.ini");
- GetPrivateProfileString("Database","ProfileDir",".",szProfileDir,sizeof(szProfileDir),szMirandaIni);
- ExpandEnvironmentStrings(szProfileDir,szExpandedProfileDir,sizeof(szExpandedProfileDir));
- _chdir(szMirandaDir);
- if(!_fullpath(szPath,szExpandedProfileDir,cbPath))
- lstrcpyn(szPath,szMirandaDir,cbPath);
- if(szPath[lstrlen(szPath)-1]=='\\') szPath[lstrlen(szPath)-1]='\0';
- if((dwAttributes=GetFileAttributes(szPath))!=0xffffffff&&dwAttributes&FILE_ATTRIBUTE_DIRECTORY) return;
- CreateDirectory(szPath,NULL);
-}
-
-void SetDefaultProtocolIcons()
-{
- char szFileName[MAX_PATH+1];
- char oldname[] = YAMN_DBMODULE"4007_"; // the deprecated one
- char dllname[] = "plugins\\"YAMN_DBMODULE".dll,-xxxxx";
-
- // determine whether external icon file exists
- lstrcpy(szFileName, szMirandaDir);
- lstrcat(szFileName, "\\icons\\proto_"YAMN_DBMODULE".dll");
- BOOL isDllPresent = (_access(szFileName, 0) == 0);
-
- WORD statuses[4] = {ID_STATUS_OFFLINE,ID_STATUS_ONLINE,ID_STATUS_NA,ID_STATUS_OCCUPIED};
- BYTE indices[4] = {7, 0, 3, 4};
- //From skinicons.c skinIconStatusToIdStatus[]
- BYTE protoStatusInd[4] = {0,1,4,5};
-
- for (int i=0;i<4;i++){
- oldname[sizeof(oldname)-2]=protoStatusInd[i]+'1'; // "Out for lunch will not work here"
- if (isDllPresent){ // use the icons in proto_YAMN.dll and delete any user settings
- DBDeleteContactSetting(NULL, "Icons", oldname);
- } else {
- DBVARIANT dbv;
- if(!DBGetContactSetting(NULL,"SkinIcons",iconNames[indices[i]],&dbv))
- {// user won't be able to set status icons different from those in YAMN section
- DBWriteContactSettingString(NULL, "Icons", oldname, (char *)dbv.pszVal);
- DBFreeVariant(&dbv);
- } else {
- _snprintf(&dllname[sizeof(dllname)-6],5,"%d",iconIndexes[indices[i]]);
- DBWriteContactSettingString(NULL, "Icons", oldname, dllname);
- }
- }
- }
-}
-
-extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
-{
-#ifndef WIN2IN1
- OSVERSIONINFO OSversion;
-
- OSversion.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
-
- GetVersionEx(&OSversion);
- switch(OSversion.dwPlatformId)
- {
- case VER_PLATFORM_WIN32s:
- case VER_PLATFORM_WIN32_WINDOWS:
-#ifndef WIN9X
- MessageBoxA(NULL,"This YAMN cannot run on Windows 95, 98 or Me. Why? Read FAQ. You should download Win9x version.","YAMN error",MB_OK | MB_ICONSTOP);
- return FALSE;
-#else
- break;
-#endif
- case VER_PLATFORM_WIN32_NT:
-#ifdef WIN9X
- MessageBoxA(NULL,"This YAMN is intended for Windows 95, 98 or Me. You should use native WinNT version.","YAMN error",MB_OK | MB_ICONSTOP);
- return FALSE;
-#else
- break;
-#endif
- }
-#endif // WIN2IN1
- YAMNVar.hInst=hinstDLL;
- if(fdwReason==DLL_PROCESS_ATTACH)
- {
- if(NULL==(UserDirectory=new WCHAR[MAX_PATH]))
- return FALSE;
- }
- return TRUE;
-}
-
-extern "C" __declspec(dllexport) PLUGININFO* MirandaPluginInfo(DWORD mirandaVersion)
-{
- if (mirandaVersion >= PLUGIN_MAKE_VERSION(0, 7, 0, 3))
- bIcolibEmbededInCore = TRUE;
- pluginInfo.cbSize = sizeof(PLUGININFO);//Miranda pre-0.7.0.17 does not load the plugin if cbSize does not match.
- return (PLUGININFO *) &pluginInfo;
-}
-
-extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
-{
- if (mirandaVersion >= PLUGIN_MAKE_VERSION(0, 7, 0, 3))
- bIcolibEmbededInCore = TRUE;
- pluginInfo.cbSize = sizeof(PLUGININFOEX);//Make sure cbSize is correct;
- return &pluginInfo;
-}
-
-extern "C" __declspec(dllexport) const MUUID * MirandaPluginInterfaces(void)
-{
- return interfaces;
-}
-
-#ifdef YAMN_DEBUG
-static char unknownCP[1500]={0};
-#endif
-// The callback function
-BOOL CALLBACK EnumSystemCodePagesProc(LPTSTR cpStr)
-{
- //Convert code page string to number
- UINT cp = _ttoi(cpStr);
- if (!IsValidCodePage(cp))
- return TRUE;
-
- //Get Code Page name
- CPINFOEX info;
- if(GetCPInfoEx(cp,0,&info)){
- #ifdef YAMN_DEBUG
- BOOLEAN found = FALSE;
- #endif
- for (int i=1;i<CPLENALL;i++) if (CodePageNamesAll[i].CP==cp) {
- CodePageNamesAll[i].isValid = TRUE;
- CPLENSUPP++;
- #ifdef YAMN_DEBUG
- found = TRUE;
- #endif
- break;
- }
- #ifdef YAMN_DEBUG
- if (!found) {
- strcat(unknownCP,info.CodePageName);
- strcat(unknownCP,"\n");
- }
- #endif
- }
- return TRUE;
-}
-
-int SystemModulesLoaded(WPARAM,LPARAM){
- if(ServiceExists(MS_SKIN2_ADDICON))
- {
- //MessageBox(NULL,"Icolib present","test",0);
- SKINICONDESC sid = {0};
- HICON temp;
- sid.cbSize = SKINICONDESC_SIZE;
- sid.pszSection = "YAMN";
- sid.pszDefaultFile = NULL;
- for (int i=0; i<ICONSNUMBER; i++){
- sid.iDefaultIndex = -iconIndexes[i];
- sid.pszName = iconNames[i];
- sid.pszDescription = iconDescs[i];
- sid.hDefaultIcon = hYamnIcons[i];
- CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
- if (temp = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconNames[i]))hYamnIcons[i]=temp;
- }
- }
-
- CLISTMENUITEM mi;
-
- //Insert "Check mail (YAMN)" item to Miranda's menu
- ZeroMemory(&mi,sizeof(mi));
- mi.cbSize = sizeof(mi);
- mi.position = 0xb0000000;
- mi.flags = 0;
- mi.hIcon = hYamnIcons[5];
- mi.pszName = "Check &mail (All Account)";
- mi.pszPopupName = NULL;//ProtoName;
- mi.pszService = MS_YAMN_FORCECHECK;
- if(DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_SHOWMAINMENU, 1))
- hMenuItemMain = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&mi);
-
- mi.pszName = "Check &mail (This Account)";
- mi.pszContactOwner = ProtoName;
- mi.pszService = MS_YAMN_CLISTCONTEXT;
- hMenuItemCont = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
-
- mi.hIcon = hYamnIcons[4];
- mi.pszName = "Launch application";
- mi.pszContactOwner = ProtoName;
- mi.pszService = MS_YAMN_CLISTCONTEXTAPP;
- hMenuItemContApp = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
-
- //Use for the Updater plugin
- if(ServiceExists(MS_UPDATE_REGISTER))
- {
- Update update = {0};
- char szVersion[16];
- char szUrl[250];
-
- update.szComponentName = pluginInfo.shortName;
- update.pbVersion = (BYTE *)CreateVersionStringPlugin((PLUGININFO *)&pluginInfo, szVersion);
- update.cpbVersion = (int)strlen((char *)update.pbVersion);
- /*#ifdef YAMN_9x
- update.szUpdateURL = "http://addons.miranda-im.org/feed.php?dlfile=2166";
- update.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id=2166";
- update.pbVersionPrefix = (BYTE *)"<span class=\"fileNameHeader\">YAMN tweety win9x ";
- #else
- update.szUpdateURL = "http://addons.miranda-im.org/feed.php?dlfile=2165";
- update.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id=2165";
- update.pbVersionPrefix = (BYTE *)"<span class=\"fileNameHeader\">YAMN tweety ";
- #endif*/
- update.szUpdateURL = "http://addons.miranda-im.org/feed.php?dlfile=3411";
- update.szVersionURL = "http://addons.miranda-im.org/details.php?action=viewfile&id=3411";
- update.pbVersionPrefix = (BYTE *)"<span class=\"fileNameHeader\">YAMN 2in1 ";
- wsprintf(szUrl,"http://www.miranda-fr.net/tweety/yamn/%s.zip",YAMN_FILENAME);
- update.szBetaUpdateURL = szUrl;
- update.szBetaVersionURL = "http://www.miranda-fr.net/tweety/yamn/yamn_beta.html";
- update.pbBetaVersionPrefix = (BYTE *)"YAMN version ";
- update.cpbVersionPrefix = (int)strlen((char *)update.pbVersionPrefix);
- update.cpbBetaVersionPrefix = (int)strlen((char *)update.pbBetaVersionPrefix);
-
- CallService(MS_UPDATE_REGISTER, 0, (WPARAM)&update);
-
- }
- if (ServiceExists(MS_FOLDERS_GET_PATH)){
- //char AccountFolder[MAX_PATH];
- //CallService(MS_DB_GETPROFILEPATH, (WPARAM) MAX_PATH, (LPARAM)AccountFolder);
- //sprintf(AccountFolder,"%s\\%s",AccountFolder,ProtoName);
- hAccountFolder = FoldersRegisterCustomPathW(ProtoName,YAMN_DBMODULE" Account Folder", UserDirectory);
-
- FoldersGetCustomPathW(hAccountFolder, UserDirectory, MAX_PATH, UserDirectory);
- //MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,AccountFolder,-1,UserDirectory,strlen(AccountFolder)+1);
- }
-
- RegisterPOP3Plugin(0,0);
-
- return 0;
-}
-
-//int IcoLibIconsChanged(WPARAM wParam, LPARAM lParam); // implemented in services.cpp
-extern HCURSOR hCurSplitNS, hCurSplitWE;
-extern "C" int __declspec(dllexport) Load(PLUGINLINK *link)
-{
- UINT mod,vk;
- char pn[MAX_PATH+1];
- char *fc;
- int i,k;
-
- pluginLink=link;
- mir_getLP(&pluginInfo);
-
- YAMN_STATUS = ID_STATUS_OFFLINE;
-
- // we get the Miranda Root Path
- szMirandaDir=new char[MAX_PATH];
- if (ServiceExists(MS_UTILS_PATHTOABSOLUTE)){
- CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)".",(LPARAM)szMirandaDir);
- }
- else {
- char *str2;
- GetModuleFileName(GetModuleHandle(NULL),szMirandaDir,MAX_PATH);
- str2=strrchr(szMirandaDir,'\\');
- if(str2!=NULL) *str2=0;
- }
-
- // we get the user path where our yamn-account.book.ini is stored from mirandaboot.ini file
- char szProfileDir[MAX_PATH+1];
- GetProfileDirectory(szProfileDir,sizeof(szProfileDir));
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,szProfileDir,-1,UserDirectory,(int)strlen(szProfileDir)+1);
-
-
- // Enumerate all the code pages available for the System Locale
- EnumSystemCodePages(EnumSystemCodePagesProc, CP_INSTALLED);
- CodePageNamesSupp = new _tcptable[CPLENSUPP];
- for (i=0,k=0;i<CPLENALL;i++) {
- if (CodePageNamesAll[i].isValid){
- CodePageNamesSupp[k]=CodePageNamesAll[i];
- k++;
- }
- }
- #ifdef YAMN_DEBUG
-//unknownCP 0x6005a734
-//20127 (US-ASCII)
-//20261 (T.61)
-//28605 (ISO 8859-15 Latin 9)
-//737 (OEM - Greek 437G)
-//874 (ANSI/OEM - Thai)
-//932 (ANSI/OEM - Japanese Shift-JIS)
-//936 (ANSI/OEM - Simplified Chinese GBK)
-//949 (ANSI/OEM - Korean)
- MessageBox( NULL,unknownCP, TEXT("Unkown Code Page"), MB_OK);
- #endif
-
- HIMAGELIST CSImages = ImageList_Create(16, 16, ILC_COLOR8|ILC_MASK, 0, 3);
- {// workarround of 4bit forced images
- HBITMAP hScrBM = (HBITMAP)LoadImage(YAMNVar.hInst,MAKEINTRESOURCE(IDB_ICONS), IMAGE_BITMAP, 0, 0,LR_SHARED);
- ImageList_AddMasked(CSImages, hScrBM, RGB( 255, 0, 255 ));
- DeleteObject(hScrBM);
- }
- for (i=0,k=0; i<ICONSNUMBER; i++){
- switch (i){
- case 0: case 3: case 4: case 7: hYamnIcons[i] = LoadIcon(YAMNVar.hInst,MAKEINTRESOURCE(iconIndexes[i])); break;
- case 6: hYamnIcons[i] = hYamnIcons[4]; break;
- default: hYamnIcons[i] = ImageList_ExtractIcon(NULL, CSImages, k); k++;
- }
- }
-
- //Registering YAMN as protocol
- PROTOCOLDESCRIPTOR pd;
-
- memset(&pd,0,sizeof(pd));
- pd.cbSize=sizeof(pd);
- pd.szName=ProtoName;
- pd.type=PROTOTYPE_PROTOCOL;
-
- CallService(MS_PROTO_REGISTERMODULE,0,(LPARAM)&pd);
-
- if(NULL==(ProfileName=new WCHAR[MAX_PATH]))
- return 1;
-
- CallService(MS_DB_GETPROFILENAME,(WPARAM)sizeof(pn),(LPARAM)&(*pn)); //not to pass entire array to fcn
- if(NULL!=(fc=strrchr(pn,(int)'.')))
- *fc=0;
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,pn,-1,ProfileName,(int)strlen(pn)+1);
-
- if(NULL==(AccountStatusCS=new CRITICAL_SECTION))
- return 1;
- if(NULL==(FileWritingCS=new CRITICAL_SECTION))
- return 1;
- if(NULL==(PluginRegCS=new CRITICAL_SECTION))
- return 1;
-
- InitializeCriticalSection(AccountStatusCS);
- InitializeCriticalSection(FileWritingCS);
- InitializeCriticalSection(PluginRegCS);
-
- if(NULL==(NoWriterEV=CreateEvent(NULL,TRUE,TRUE,NULL)))
- return 1;
- if(NULL==(WriteToFileEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- return 1;
- if(NULL==(ExitEV=CreateEvent(NULL,TRUE,FALSE,NULL)))
- return 1;
-// AccountWriterSO=new SCOUNTER(NoWriterEV);
-
- NewMailSound.pszDescription=Translate(YAMN_NEWMAILSNDDESC);
- ConnectFailureSound.pszDescription=Translate(YAMN_CONNECTFAILSNDDESC);
-
- PosX=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBPOSX,0);
- PosY=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBPOSY,0);
- SizeX=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBSIZEX,800);
- SizeY=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBSIZEY,200);
-
- HeadPosX=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSX,0);
- HeadPosY=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSY,0);
- HeadSizeX=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEX,690);
- HeadSizeY=DBGetContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEY,300);
- HeadSplitPos=DBGetContactSettingWord(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSSPLIT,250);
-
- optDateTime=DBGetContactSettingByte(NULL,YAMN_DBMODULE,YAMN_DBTIMEOPTIONS,optDateTime);
-
-//Create new window queues for broadcast messages
- YAMNVar.MessageWnds=(HANDLE)CallService(MS_UTILS_ALLOCWINDOWLIST,0,0);
- YAMNVar.NewMailAccountWnd=(HANDLE)CallService(MS_UTILS_ALLOCWINDOWLIST,0,0);
- YAMNVar.Shutdown=FALSE;
-
- hCurSplitNS = LoadCursor(NULL, IDC_SIZENS);
- hCurSplitWE = LoadCursor(NULL, IDC_SIZEWE);
-
-#ifdef YAMN_DEBUG
- InitDebug();
-#endif
-
-
- CreateServiceFunctions();
-
- CallService(MS_SKIN_ADDNEWSOUND,0,(LPARAM)&NewMailSound);
- CallService(MS_SKIN_ADDNEWSOUND,0,(LPARAM)&ConnectFailureSound);
-
- /*
- // this does nothing - these event are never fired
- hNewMailHook=CreateHookableEvent(ME_YAMN_NEWMAIL);
- hUninstallPluginsHook=CreateHookableEvent(ME_YAMN_UNINSTALLPLUGINS);
- */
-
- HookEvents();
-
- if (!bIcolibEmbededInCore)
- SetDefaultProtocolIcons();
-
- LoadPlugins();
-
- InitVSApi();
-
- WordToModAndVk(DBGetContactSettingWord(NULL,YAMN_DBMODULE,YAMN_HKCHECKMAIL,YAMN_DEFAULTHK),&mod,&vk);
-
-//Create thread for hotkey
- WORD HotKey = MAKEWORD((BYTE)vk,(BYTE)mod);
- CloseHandle(CreateThread(NULL,0,YAMNHotKeyThread,(LPVOID)HotKey,0,&HotKeyThreadID));
-//Create thread that will be executed every second
- if(!(SecTimer=SetTimer(NULL,0,1000,(TIMERPROC)TimerProc)))
- return 1;
-
-
-#ifdef YAMN_VER_BETA
- #ifdef YAMN_VER_BETA_CRASHONLY
- MessageBox(NULL,"This YAMN beta version is intended for testing. After crash, you should send report to author. Please read included readme when available. Thank you.","YAMN beta",MB_OK);
- #else
- MessageBox(NULL,"This YAMN beta version is intended for testing. You should inform author if it works or when it does not work. Please read included readme when available. Thank you.","YAMN beta",MB_OK);
- #endif
-#endif
-#ifdef YAMN_DEBUG
- MessageBox(NULL,"This YAMN creates extended debug logfiles. It is not intended for general use.","YAMN beta",MB_OK);
-#endif
-
- return 0;
-}
-
-extern "C" int __declspec(dllexport) UninstallEx(PLUGINUNINSTALLPARAMS* ppup)
-{
- const char* DocFiles[]={"YAMN-License.txt","YAMN-Readme.txt","YAMN-Readme.developers.txt",NULL};
-
- typedef int (* UNINSTALLFILTERFCN)();
- UNINSTALLFILTERFCN UninstallFilter;
-
- PUIRemoveSkinSound(YAMN_NEWMAILSOUND);
- PUIRemoveSkinSound(YAMN_CONNECTFAILSOUND);
-
- if(UninstallPlugins)
- {
- for(int i=0;i<iDllPlugins;i++)
- {
- if(NULL!=(UninstallFilter=(UNINSTALLFILTERFCN)GetProcAddress(hDllPlugins[i],"UninstallFilter")))
- UninstallFilter();
-
- FreeLibrary(hDllPlugins[i]);
- hDllPlugins[i]=NULL; //for safety
- }
- iDllPlugins = 0;
- if(hDllPlugins){
- free((void *)hDllPlugins);
- hDllPlugins = NULL;
- }
-
-// NotifyEventHooks(ME_YAMN_UNINSTALLPLUGINS,0,0);
- }
- UninstallPOP3(ppup);
-
- MessageBoxA(NULL,"You have to delete manually YAMN plugins located in \"Plugins/YAMN\" folder.","YAMN uninstalling",MB_OK|MB_ICONINFORMATION);
- PUIRemoveFilesInDirectory(ppup->pszDocsPath,DocFiles);
- if(ppup->bDoDeleteSettings)
- PUIRemoveDbModule("YAMN");
- return 0;
-}
-
-int Shutdown(WPARAM,LPARAM)
-{
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSX,HeadPosX);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSY,HeadPosY);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEX,HeadSizeX);
- DBWriteContactSettingDword(NULL,YAMN_DBMODULE,YAMN_DBMSGSIZEY,HeadSizeY);
- DBWriteContactSettingWord(NULL,YAMN_DBMODULE,YAMN_DBMSGPOSSPLIT,HeadSplitPos);
- YAMNVar.Shutdown=TRUE;
-// CallService(MS_TTB_REMOVEBUTTON,(WPARAM)hTTButton,0); //this often leads to deadlock in Miranda (bug in Miranda)
- KillTimer(NULL,SecTimer);
-
- UnregisterProtoPlugins();
- UnregisterFilterPlugins();
- return 0;
-}
-
-//We undo all things from Load()
-extern "C" int __declspec(dllexport) Unload(void)
-{
-#ifdef YAMN_DEBUG
- UnInitDebug();
-#endif
- DestroyCursor(hCurSplitNS);
- DestroyCursor(hCurSplitWE);
-
- CloseHandle(NoWriterEV);
- CloseHandle(WriteToFileEV);
- CloseHandle(ExitEV);
-
- FreeVSApi();
-
- DeleteCriticalSection(AccountStatusCS);
- delete AccountStatusCS;
- DeleteCriticalSection(FileWritingCS);
- delete FileWritingCS;
- DeleteCriticalSection(PluginRegCS);
-
- delete PluginRegCS;
- UnhookEvents();
- DestroyServiceFunctions();
-
- UnloadPlugins();
-
- delete [] CodePageNamesSupp;
- delete [] szMirandaDir;
- delete [] UserDirectory;
- delete [] szProfileDir;
- delete [] ProfileName;
- return 0;
-}
-
-void LoadPlugins()
-{
- HANDLE hFind;
- WIN32_FIND_DATA fd;
- char szSearchPath[MAX_PATH];
- char szPluginPath[MAX_PATH];
- lstrcpy(szSearchPath,szMirandaDir);
- lstrcat(szSearchPath,"\\Plugins\\YAMN\\*.dll");
- typedef INT_PTR (*LOADFILTERFCN)(MIRANDASERVICE GetYAMNFcn);
-
- hDllPlugins=NULL;
-
- if(INVALID_HANDLE_VALUE!=(hFind=FindFirstFile(szSearchPath,&fd)))
- {
- do
- { //rewritten from Miranda sources... Needed because Win32 API has a bug in FindFirstFile, search is done for *.dlllllll... too
- char *dot=strrchr(fd.cFileName,'.');
- if(dot)
- { // we have a dot
- int len=(int)strlen(fd.cFileName); // find the length of the string
- char* end=fd.cFileName+len; // get a pointer to the NULL
- int safe=(end-dot)-1; // figure out how many chars after the dot are "safe", not including NULL
-
- if((safe!=3) || (lstrcmpi(dot+1,"dll")!=0)) //not bound, however the "dll" string should mean only 3 chars are compared
- continue;
- }
- else
- continue;
-
- HINSTANCE hDll;
- LOADFILTERFCN LoadFilter;
-
- lstrcpy(szPluginPath,szMirandaDir);
- lstrcat(szPluginPath,"\\Plugins\\YAMN\\");
- lstrcat(szPluginPath,fd.cFileName);
- if((hDll=LoadLibrary(szPluginPath))==NULL) continue;
- LoadFilter=(LOADFILTERFCN)GetProcAddress(hDll,"LoadFilter");
- if(NULL==LoadFilter)
- {
- FreeLibrary(hDll);
- hDll=NULL;
- continue;
- }
- if(!(*LoadFilter)(GetFcnPtrSvc))
- {
- FreeLibrary(hDll);
- hDll=NULL;
- }
-
- if(hDll!=NULL)
- {
- hDllPlugins=(HINSTANCE *)realloc((void *)hDllPlugins,(iDllPlugins+1)*sizeof(HINSTANCE));
- hDllPlugins[iDllPlugins++]=hDll;
- }
- } while(FindNextFile(hFind,&fd));
- FindClose(hFind);
- }
-}
-
-void UnloadPlugins()
-{
- for(int i=iDllPlugins-1;i>=0;i--) {
- if(FreeLibrary(hDllPlugins[i])){
- hDllPlugins[i]=NULL; //for safety
- iDllPlugins --;
- }
- }
- if(hDllPlugins){
- free((void *)hDllPlugins);
- hDllPlugins = NULL;
- }
-}
-
-void GetIconSize(HICON hIcon, int* sizeX, int* sizeY)
-{
- ICONINFO ii;
- BITMAP bm;
- GetIconInfo(hIcon, &ii);
- GetObject(ii.hbmColor, sizeof(bm), &bm);
- if (sizeX != NULL) *sizeX = bm.bmWidth;
- if (sizeY != NULL) *sizeY = bm.bmHeight;
- DeleteObject(ii.hbmMask);
- DeleteObject(ii.hbmColor);
-}
-
-HBITMAP LoadBmpFromIcon(HICON hIcon)
-{
- HBITMAP hBmp, hoBmp;
- HDC hdc, hdcMem;
- HBRUSH hBkgBrush;
-
- int IconSizeX = 16;
- int IconSizeY = 16;
-
- //GetIconSize(hIcon, &IconSizeX, &IconSizeY);
-
- //DebugLog(SynchroFile,"Icon size %i %i\n",IconSizeX,IconSizeY);
-
- if ((IconSizeX == 0) || (IconSizeY == 0))
- {
- IconSizeX = 16;
- IconSizeY = 16;
- }
-
- RECT rc;
- BITMAPINFOHEADER bih = {0};
- int widthBytes;
-
- hBkgBrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));
- bih.biSize = sizeof(bih);
- bih.biBitCount = 24;
- bih.biPlanes = 1;
- bih.biCompression = BI_RGB;
- bih.biHeight = IconSizeY;
- bih.biWidth = IconSizeX;
- widthBytes = ((bih.biWidth*bih.biBitCount + 31) >> 5) * 4;
- rc.top = rc.left = 0;
- rc.right = bih.biWidth;
- rc.bottom = bih.biHeight;
- hdc = GetDC(NULL);
- hBmp = CreateCompatibleBitmap(hdc, bih.biWidth, bih.biHeight);
- hdcMem = CreateCompatibleDC(hdc);
- hoBmp = (HBITMAP)SelectObject(hdcMem, hBmp);
- FillRect(hdcMem, &rc, hBkgBrush);
- DrawIconEx(hdcMem, 0, 0, hIcon, bih.biWidth, bih.biHeight, 0, NULL, DI_NORMAL);
- SelectObject(hdcMem, hoBmp);
-
- return hBmp;
-}
-
-int AddTopToolbarIcon(WPARAM,LPARAM)
-{
- TTBButton Button=
- {
- sizeof(TTBButton),
- NULL,
- NULL,
- NULL,
- MS_YAMN_FORCECHECK,
- TTBBF_VISIBLE | TTBBF_SHOWTOOLTIP, // | TTBBF_DRAWBORDER,
- 0,0,0,0,
- NULL
- };
-
- if(!DBGetContactSettingByte(NULL,YAMN_DBMODULE,YAMN_TTBFCHECK,1))
- return 1;
-
- Button.name=Translate("Check mail");
-
- Button.hbBitmapUp = LoadBmpFromIcon(hYamnIcons[5]);
- Button.hbBitmapDown = LoadBmpFromIcon(hYamnIcons[6]); //LoadBitmap(YAMNVar.hInst,MAKEINTRESOURCE(IDB_BMTTB));
-
- if((HANDLE)-1==(hTTButton=(HANDLE)CallService(MS_TTB_ADDBUTTON,(WPARAM)&Button,(LPARAM)0)))
- return 1;
- CallService(MS_TTB_SETBUTTONOPTIONS,MAKEWPARAM((WORD)TTBO_TIPNAME,(WORD)hTTButton),(LPARAM)Translate("Check mail"));
- return 0;
-}
-
-int UninstallQuestionSvc(WPARAM wParam,LPARAM)
-{
-// if(strcmp((char *)wParam,Translate("Yet Another Mail Notifier")))
-// return 0;
- switch(MessageBoxA(NULL,Translate("Do you also want to remove native YAMN plugins settings?"),Translate("YAMN uninstalling"),MB_YESNOCANCEL|MB_ICONQUESTION))
- {
- case IDYES:
- UninstallPlugins=TRUE;
- break;
- case IDNO:
- UninstallPlugins=FALSE;
- break;
- case IDCANCEL:
- return 1;
- }
- return 0;
-}
diff --git a/yamn/main.h b/yamn/main.h
deleted file mode 100644
index 56b9d91..0000000
--- a/yamn/main.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef __MAIN_H
-#define __MAIN_H
-
-#ifdef __GNUC__
- #define __try
- #define __except(x) if (0) /* don't execute handler */
- #define __finally
- #define _try __try
- #define _except __except
- #define _finally __finally
-#endif
-//For updater
-//#define YAMN_9x
-#ifndef WIN2IN1
-#ifdef YAMN_9x
- #define YAMN_SHORTNAME "YAMN tweety win9x"
- #define YAMN_FILENAME "yamn_9x"
-#else
- #define YAMN_SHORTNAME "YAMN tweety"
- #define YAMN_FILENAME "yamn"
-#endif
-#else
- #define YAMN_SHORTNAME "YAMN tweety 2in1"
- #define YAMN_FILENAME "yamn"
-#endif //WIN2IN1
-
-#include "version.h"
-#define YAMN_NEWMAILSNDDESC "YAMN: new mail message"
-#define YAMN_CONNECTFAILSNDDESC "YAMN: connect failed"
-#define YAMN_CONNECTFAILSOUND "YAMN/Sound/ConnectFail"
-#define YAMN_NEWMAILSOUND "YAMN/Sound/NewMail"
-
-#define YAMN_DBMODULE "YAMN"
-#define YAMN_DBPOSX "MailBrowserWinX"
-#define YAMN_DBPOSY "MailBrowserWinY"
-#define YAMN_DBSIZEX "MailBrowserWinW"
-#define YAMN_DBSIZEY "MailBrowserWinH"
-#define YAMN_DBMSGPOSX "MailMessageWinX"
-#define YAMN_DBMSGPOSY "MailMessageWinY"
-#define YAMN_DBMSGSIZEX "MailMessageWinW"
-#define YAMN_DBMSGSIZEY "MailMessageWinH"
-#define YAMN_DBMSGPOSSPLIT "MailMessageSplitY"
-#define YAMN_HKCHECKMAIL "HKCheckMail"
-#define YAMN_TTBFCHECK "ForceCheckTTB"
-#define YAMN_SHOWMAINMENU "ShowMainMenu"
-#define YAMN_CLOSEDELETE "CloseOnDelete"
-#define YAMN_SHOWASPROTO "ShowAsProtcol"
-#define YAMN_DBTIMEOPTIONS "MailBrowserTimeOpts"
-
-#define YAMN_DEFAULTHK MAKEWORD(VK_F11,MOD_CONTROL)
-
-#define SHOWDATELONG 0x01
-#define SHOWDATENOTODAY 0x02
-#define SHOWDATENOSECONDS 0x04
-
-extern unsigned char optDateTime;
-
-void UnloadPlugins();
-
-// Loading Icon and checking for icolib
-void LoadIcons();
-extern int iconIndexes[];
-
-
-#endif
-
diff --git a/yamn/mingw/base.dev b/yamn/mingw/base.dev
deleted file mode 100644
index 42e2fab..0000000
--- a/yamn/mingw/base.dev
+++ /dev/null
@@ -1,69 +0,0 @@
-[Project]
-FileName=base.dev
-Name=base
-Ver=1
-IsCpp=1
-Type=3
-Compiler=-D__GNUWIN32__ -mcpu=i486 -D_M_IX86=400 -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS_@@_
-CppCompiler=-D__GNUWIN32__ -mcpu=i486 -D_M_IX86=400 -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS_@@_
-Includes=../../../include
-Linker=-lkernel32 -luser32_@@_
-Libs=
-UnitCount=2
-Folders="Header Files","Resource Files","Source Files"
-ObjFiles=
-PrivateResource=
-ResourceIncludes=
-MakeIncludes=
-Icon=
-ExeOutput=binfilter
-ObjectOutput=objbase
-OverrideOutput=0
-OverrideOutputName=base.dll
-HostApplication=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=base.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0010000001001000000100
-
-[Unit1]
-FileName=..\filter\base\maindll.cpp
-Folder="Source Files"
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=..\filter\base\debug.cpp
-Folder="Source Files"
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=0.1
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=base.dll
-ProductName=base
-ProductVersion=0.1
-AutoIncBuildNr=0
-
diff --git a/yamn/mingw/base.win b/yamn/mingw/base.win
deleted file mode 100644
index 3af9e7a..0000000
--- a/yamn/mingw/base.win
+++ /dev/null
@@ -1,38 +0,0 @@
-# Project: base
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES =
-OBJ = objbase/maindll.o objbase/debug.o $(RES)
-LINKOBJ = objbase/maindll.o objbase/debug.o $(RES)
-LIBS = -lkernel32 -luser32 -s
-INCS = -I"../../../include"
-CXXINCS = -I"../../../include"
-BIN = binfilter/base.dll
-CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-CFLAGS = $(INCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before binfilter/base.dll all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-DLLWRAP=dllwrap.exe
-DEFFILE=objbase/libbase.def
-STATICLIB=objbase/libbase.a
-
-$(BIN): $(LINKOBJ)
-# $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
- $(CPP) $(LINKOBJ) $(LIBS) -o $(BIN) -mdll
-
-objbase/maindll.o: ../filter/base/maindll.cpp
- $(CPP) -c ../filter/base/maindll.cpp -o objbase/maindll.o $(CXXFLAGS)
-
-objbase/debug.o: ../filter/base/debug.cpp
- $(CPP) -c ../filter/base/debug.cpp -o objbase/debug.o $(CXXFLAGS)
diff --git a/yamn/mingw/simple.dev b/yamn/mingw/simple.dev
deleted file mode 100644
index 617324b..0000000
--- a/yamn/mingw/simple.dev
+++ /dev/null
@@ -1,59 +0,0 @@
-[Project]
-FileName=simple.dev
-Name=simple
-Ver=1
-IsCpp=1
-Type=3
-Compiler=-D__GNUWIN32__ -mcpu=i486 -D_M_IX86=400 -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS_@@_
-CppCompiler=-D__GNUWIN32__ -mcpu=i486 -D_M_IX86=400 -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS_@@_
-Includes=../../../include
-Linker=-lkernel32 -luser32_@@_
-Libs=
-UnitCount=1
-Folders="Header Files","Resource Files","Source Files"
-ObjFiles=
-PrivateResource=
-ResourceIncludes=
-MakeIncludes=
-Icon=
-ExeOutput=binfilter
-ObjectOutput=objsimple
-OverrideOutput=0
-OverrideOutputName=simple.dll
-HostApplication=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=simple.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0010000001001000000100
-
-[Unit1]
-FileName=..\filter\Simple\maindll.cpp
-Folder="Source Files"
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=0.1
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=simple.dll
-ProductName=simple
-ProductVersion=0.1
-AutoIncBuildNr=0
-
diff --git a/yamn/mingw/simple.win b/yamn/mingw/simple.win
deleted file mode 100644
index fc9e3c6..0000000
--- a/yamn/mingw/simple.win
+++ /dev/null
@@ -1,35 +0,0 @@
-# Project: simple
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES =
-OBJ = objsimple/maindll.o $(RES)
-LINKOBJ = objsimple/maindll.o $(RES)
-LIBS = -lkernel32 -luser32 -s
-INCS = -I"../../../include"
-CXXINCS = -I"../../../include"
-BIN = binfilter/simple.dll
-CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-CFLAGS = $(INCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before binfilter/simple.dll all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-DLLWRAP=dllwrap.exe
-DEFFILE=objsimple/libsimple.def
-STATICLIB=objsimple/libsimple.a
-
-$(BIN): $(LINKOBJ)
-# $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
- $(CPP) $(LINKOBJ) $(LIBS) -o $(BIN) -mdll
-
-objsimple/maindll.o: ../filter/Simple/maindll.cpp
- $(CPP) -c ../filter/Simple/maindll.cpp -o objsimple/maindll.o $(CXXFLAGS)
diff --git a/yamn/mingw/yamn-2in1.dev b/yamn/mingw/yamn-2in1.dev
deleted file mode 100644
index 615e63f..0000000
--- a/yamn/mingw/yamn-2in1.dev
+++ /dev/null
@@ -1,469 +0,0 @@
-[Project]
-FileName=yamn-2in1.dev
-Name=YAMN
-Ver=1
-IsCpp=1
-Type=3
-Compiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN2IN1
-CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN2IN1
-Includes=../../../include
-Linker=-lunicows -lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 --image-base "0x60010000"
-Libs=../libs
-UnitCount=36
-Folders=Documentation,"Resource Files",YAMN,YAMN/Header,YAMN/include,"YAMN/Mail browser, dialogs",YAMN/Mails,"YAMN/POP3 plugin"
-ObjFiles=
-PrivateResource=YAMN_private.rc
-ResourceIncludes=../resources
-MakeIncludes=
-Icon=
-ExeOutput=bin2in1
-ObjectOutput=objs2in1
-OverrideOutput=1
-OverrideOutputName=YAMN.dll
-HostApplication=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=yamn-2in1.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0010000001001000000100
-
-[Unit1]
-FileName=..\browser\badconnect.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=..\browser\mailbrowser.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=..\mails\decode.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=..\mails\mails.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=..\mails\mime.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=..\proto\md5.c
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=0
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=..\proto\netlib.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=..\proto\pop3\pop3.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=..\proto\pop3\pop3comm.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=..\proto\pop3\pop3opt.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=..\proto\ssl.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=..\debug.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=..\main.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=..\proto\pop3\pop3.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=..\proto\pop3\pop3comm.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=..\proto\pop3\pop3opt.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit17]
-FileName=..\yamn.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=..\include\m_kbdnotify.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=..\include\m_popup.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=..\include\m_toptoolbar.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=..\include\m_uninstaller.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=..\include\m_updater.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=..\account.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit24]
-FileName=..\ChangeLog.txt
-Folder=Documentation
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit25]
-FileName=..\debug.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit26]
-FileName=..\filterplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit27]
-FileName=..\main.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit28]
-FileName=..\protoplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit29]
-FileName=..\services.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit30]
-FileName=..\synchro.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit31]
-FileName=..\yamn.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit32]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit33]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit34]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit35]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit36]
-FileName=..\m_messages.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit37]
-FileName=..\resources\icoyamn2.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit38]
-FileName=..\resources\icoyamn3.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit39]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit40]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit41]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit42]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=0.1
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=YAMN.exe
-ProductName=YAMN
-ProductVersion=0.1
-AutoIncBuildNr=0
-
diff --git a/yamn/mingw/yamn-2in1.win b/yamn/mingw/yamn-2in1.win
deleted file mode 100644
index 5b90f86..0000000
--- a/yamn/mingw/yamn-2in1.win
+++ /dev/null
@@ -1,92 +0,0 @@
-# Project: YAMN
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES = objs2in1/YAMN.res
-OBJ = objs2in1/badconnect.o objs2in1/mailbrowser.o objs2in1/decode.o objs2in1/mails.o objs2in1/mime.o objs2in1/md5.o objs2in1/netlib.o objs2in1/pop3.o objs2in1/pop3comm.o objs2in1/pop3opt.o objs2in1/ssl.o objs2in1/account.o objs2in1/debug.o objs2in1/filterplugin.o objs2in1/main.o objs2in1/protoplugin.o objs2in1/services.o objs2in1/synchro.o objs2in1/yamn.o $(RES)
-LINKOBJ = objs2in1/badconnect.o objs2in1/mailbrowser.o objs2in1/decode.o objs2in1/mails.o objs2in1/mime.o objs2in1/md5.o objs2in1/netlib.o objs2in1/pop3.o objs2in1/pop3comm.o objs2in1/pop3opt.o objs2in1/ssl.o objs2in1/account.o objs2in1/debug.o objs2in1/filterplugin.o objs2in1/main.o objs2in1/protoplugin.o objs2in1/services.o objs2in1/synchro.o objs2in1/yamn.o $(RES)
-LIBS = -L"../libs" -lunicows -lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 -s
-INCS = -I"../../../include"
-CXXINCS = -I"../../../include"
-BIN = bin2in1/yamn.dll
-CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -DWIN2IN1 -w -fweb -frename-registers -Os
-CFLAGS = $(INCS) -D__GNUWIN32__ -W -fno-inline -DWIN32 -DNDEBUG -D_WINDOWS -DWIN2IN1 -w -fweb -frename-registers -Os
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before bin2in1/yamn.dll all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-DLLWRAP=dllwrap.exe
-DEFFILE=bin2in1/libYAMN.def
-STATICLIB=bin2in1/libYAMN.a
-
-$(BIN): $(LINKOBJ)
-# $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
- $(CPP) $(LINKOBJ) $(LIBS) -o $(BIN) -mdll
-
-objs2in1/badconnect.o: ../browser/badconnect.cpp
- $(CPP) -c ../browser/badconnect.cpp -o objs2in1/badconnect.o $(CXXFLAGS)
-
-objs2in1/mailbrowser.o: ../browser/mailbrowser.cpp
- $(CPP) -c ../browser/mailbrowser.cpp -o objs2in1/mailbrowser.o $(CXXFLAGS)
-
-objs2in1/decode.o: ../mails/decode.cpp
- $(CPP) -c ../mails/decode.cpp -o objs2in1/decode.o $(CXXFLAGS)
-
-objs2in1/mails.o: ../mails/mails.cpp
- $(CPP) -c ../mails/mails.cpp -o objs2in1/mails.o $(CXXFLAGS)
-
-objs2in1/mime.o: ../mails/mime.cpp
- $(CPP) -c ../mails/mime.cpp -o objs2in1/mime.o $(CXXFLAGS)
-
-objs2in1/md5.o: ../proto/md5.c
- $(CC) -c ../proto/md5.c -o objs2in1/md5.o $(CFLAGS)
-
-objs2in1/netlib.o: ../proto/netlib.cpp
- $(CPP) -c ../proto/netlib.cpp -o objs2in1/netlib.o $(CXXFLAGS)
-
-objs2in1/pop3.o: ../proto/pop3/pop3.cpp
- $(CPP) -c ../proto/pop3/pop3.cpp -o objs2in1/pop3.o $(CXXFLAGS)
-
-objs2in1/pop3comm.o: ../proto/pop3/pop3comm.cpp
- $(CPP) -c ../proto/pop3/pop3comm.cpp -o objs2in1/pop3comm.o $(CXXFLAGS)
-
-objs2in1/pop3opt.o: ../proto/pop3/pop3opt.cpp
- $(CPP) -c ../proto/pop3/pop3opt.cpp -o objs2in1/pop3opt.o $(CXXFLAGS)
-
-objs2in1/ssl.o: ../proto/ssl.cpp
- $(CPP) -c ../proto/ssl.cpp -o objs2in1/ssl.o $(CXXFLAGS)
-
-objs2in1/account.o: ../account.cpp
- $(CPP) -c ../account.cpp -o objs2in1/account.o $(CXXFLAGS)
-
-objs2in1/debug.o: ../debug.cpp
- $(CPP) -c ../debug.cpp -o objs2in1/debug.o $(CXXFLAGS)
-
-objs2in1/filterplugin.o: ../filterplugin.cpp
- $(CPP) -c ../filterplugin.cpp -o objs2in1/filterplugin.o $(CXXFLAGS)
-
-objs2in1/main.o: ../main.cpp
- $(CPP) -c ../main.cpp -o objs2in1/main.o $(CXXFLAGS)
-
-objs2in1/protoplugin.o: ../protoplugin.cpp
- $(CPP) -c ../protoplugin.cpp -o objs2in1/protoplugin.o $(CXXFLAGS)
-
-objs2in1/services.o: ../services.cpp
- $(CPP) -c ../services.cpp -o objs2in1/services.o $(CXXFLAGS)
-
-objs2in1/synchro.o: ../synchro.cpp
- $(CPP) -c ../synchro.cpp -o objs2in1/synchro.o $(CXXFLAGS)
-
-objs2in1/yamn.o: ../yamn.cpp
- $(CPP) -c ../yamn.cpp -o objs2in1/yamn.o $(CXXFLAGS)
-
-objs2in1/YAMN.res: ../resources/YAMN.rc
- $(WINDRES) -i ../resources/YAMN.rc --input-format=rc -o objs2in1/YAMN.res -O coff --include-dir ../resources
diff --git a/yamn/mingw/yamn-w9x.dev b/yamn/mingw/yamn-w9x.dev
deleted file mode 100644
index b652000..0000000
--- a/yamn/mingw/yamn-w9x.dev
+++ /dev/null
@@ -1,469 +0,0 @@
-[Project]
-FileName=yamn-w9x.dev
-Name=YAMN
-Ver=1
-IsCpp=1
-Type=3
-Compiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN9X
-CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN9X
-Includes=../../../include
-Linker=-lunicows -lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 --image-base "0x60010000"
-Libs=../libs
-UnitCount=36
-Folders=Documentation,"Resource Files",YAMN,YAMN/Header,YAMN/include,"YAMN/Mail browser, dialogs",YAMN/Mails,"YAMN/POP3 plugin"
-ObjFiles=
-PrivateResource=YAMN_private.rc
-ResourceIncludes=../resources
-MakeIncludes=
-Icon=
-ExeOutput=bin9x
-ObjectOutput=objs9x
-OverrideOutput=1
-OverrideOutputName=YAMN.dll
-HostApplication=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=yamn-w9x.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0010000001001000000100
-
-[Unit1]
-FileName=..\browser\badconnect.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=..\browser\mailbrowser.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=..\mails\decode.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=..\mails\mails.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=..\mails\mime.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=..\proto\md5.c
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=0
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=..\proto\netlib.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=..\proto\pop3\pop3.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=..\proto\pop3\pop3comm.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=..\proto\pop3\pop3opt.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=..\proto\ssl.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=..\debug.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=..\main.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=..\proto\pop3\pop3.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=..\proto\pop3\pop3comm.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=..\proto\pop3\pop3opt.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit17]
-FileName=..\yamn.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=..\include\m_kbdnotify.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=..\include\m_popup.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=..\include\m_toptoolbar.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=..\include\m_uninstaller.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=..\include\m_updater.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=..\account.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit24]
-FileName=..\ChangeLog.txt
-Folder=Documentation
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit25]
-FileName=..\debug.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit26]
-FileName=..\filterplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit27]
-FileName=..\main.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit28]
-FileName=..\protoplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit29]
-FileName=..\services.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit30]
-FileName=..\synchro.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit31]
-FileName=..\yamn.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit32]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit33]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit34]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit35]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit36]
-FileName=..\m_messages.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit37]
-FileName=..\resources\icoyamn2.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit38]
-FileName=..\resources\icoyamn3.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit39]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit40]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit41]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit42]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=0.1
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=YAMN.exe
-ProductName=YAMN
-ProductVersion=0.1
-AutoIncBuildNr=0
-
diff --git a/yamn/mingw/yamn-w9x.win b/yamn/mingw/yamn-w9x.win
deleted file mode 100644
index 0e741d5..0000000
--- a/yamn/mingw/yamn-w9x.win
+++ /dev/null
@@ -1,92 +0,0 @@
-# Project: YAMN
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES = objs9x/YAMN.res
-OBJ = objs9x/badconnect.o objs9x/mailbrowser.o objs9x/decode.o objs9x/mails.o objs9x/mime.o objs9x/md5.o objs9x/netlib.o objs9x/pop3.o objs9x/pop3comm.o objs9x/pop3opt.o objs9x/ssl.o objs9x/account.o objs9x/debug.o objs9x/filterplugin.o objs9x/main.o objs9x/protoplugin.o objs9x/services.o objs9x/synchro.o objs9x/yamn.o $(RES)
-LINKOBJ = objs9x/badconnect.o objs9x/mailbrowser.o objs9x/decode.o objs9x/mails.o objs9x/mime.o objs9x/md5.o objs9x/netlib.o objs9x/pop3.o objs9x/pop3comm.o objs9x/pop3opt.o objs9x/ssl.o objs9x/account.o objs9x/debug.o objs9x/filterplugin.o objs9x/main.o objs9x/protoplugin.o objs9x/services.o objs9x/synchro.o objs9x/yamn.o $(RES)
-LIBS = -L"../libs" -lunicows -lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 -s
-INCS = -I"../../../include"
-CXXINCS = -I"../../../include"
-BIN = bin9x/yamn.dll
-CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN9X -w -fweb -frename-registers -Os
-CFLAGS = $(INCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -DWIN9X -w -fweb -frename-registers -Os
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before bin9x/yamn.dll all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-DLLWRAP=dllwrap.exe
-DEFFILE=bin9x/libYAMN.def
-STATICLIB=bin9x/libYAMN.a
-
-$(BIN): $(LINKOBJ)
-# $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
- $(CPP) $(LINKOBJ) $(LIBS) -o $(BIN) -mdll
-
-objs9x/badconnect.o: ../browser/badconnect.cpp
- $(CPP) -c ../browser/badconnect.cpp -o objs9x/badconnect.o $(CXXFLAGS)
-
-objs9x/mailbrowser.o: ../browser/mailbrowser.cpp
- $(CPP) -c ../browser/mailbrowser.cpp -o objs9x/mailbrowser.o $(CXXFLAGS)
-
-objs9x/decode.o: ../mails/decode.cpp
- $(CPP) -c ../mails/decode.cpp -o objs9x/decode.o $(CXXFLAGS)
-
-objs9x/mails.o: ../mails/mails.cpp
- $(CPP) -c ../mails/mails.cpp -o objs9x/mails.o $(CXXFLAGS)
-
-objs9x/mime.o: ../mails/mime.cpp
- $(CPP) -c ../mails/mime.cpp -o objs9x/mime.o $(CXXFLAGS)
-
-objs9x/md5.o: ../proto/md5.c
- $(CC) -c ../proto/md5.c -o objs9x/md5.o $(CFLAGS)
-
-objs9x/netlib.o: ../proto/netlib.cpp
- $(CPP) -c ../proto/netlib.cpp -o objs9x/netlib.o $(CXXFLAGS)
-
-objs9x/pop3.o: ../proto/pop3/pop3.cpp
- $(CPP) -c ../proto/pop3/pop3.cpp -o objs9x/pop3.o $(CXXFLAGS)
-
-objs9x/pop3comm.o: ../proto/pop3/pop3comm.cpp
- $(CPP) -c ../proto/pop3/pop3comm.cpp -o objs9x/pop3comm.o $(CXXFLAGS)
-
-objs9x/pop3opt.o: ../proto/pop3/pop3opt.cpp
- $(CPP) -c ../proto/pop3/pop3opt.cpp -o objs9x/pop3opt.o $(CXXFLAGS)
-
-objs9x/ssl.o: ../proto/ssl.cpp
- $(CPP) -c ../proto/ssl.cpp -o objs9x/ssl.o $(CXXFLAGS)
-
-objs9x/account.o: ../account.cpp
- $(CPP) -c ../account.cpp -o objs9x/account.o $(CXXFLAGS)
-
-objs9x/debug.o: ../debug.cpp
- $(CPP) -c ../debug.cpp -o objs9x/debug.o $(CXXFLAGS)
-
-objs9x/filterplugin.o: ../filterplugin.cpp
- $(CPP) -c ../filterplugin.cpp -o objs9x/filterplugin.o $(CXXFLAGS)
-
-objs9x/main.o: ../main.cpp
- $(CPP) -c ../main.cpp -o objs9x/main.o $(CXXFLAGS)
-
-objs9x/protoplugin.o: ../protoplugin.cpp
- $(CPP) -c ../protoplugin.cpp -o objs9x/protoplugin.o $(CXXFLAGS)
-
-objs9x/services.o: ../services.cpp
- $(CPP) -c ../services.cpp -o objs9x/services.o $(CXXFLAGS)
-
-objs9x/synchro.o: ../synchro.cpp
- $(CPP) -c ../synchro.cpp -o objs9x/synchro.o $(CXXFLAGS)
-
-objs9x/yamn.o: ../yamn.cpp
- $(CPP) -c ../yamn.cpp -o objs9x/yamn.o $(CXXFLAGS)
-
-objs9x/YAMN.res: ../resources/YAMN.rc
- $(WINDRES) -i ../resources/YAMN.rc --input-format=rc -o objs9x/YAMN.res -O coff --include-dir ../resources
diff --git a/yamn/mingw/yamn.dev b/yamn/mingw/yamn.dev
deleted file mode 100644
index d726894..0000000
--- a/yamn/mingw/yamn.dev
+++ /dev/null
@@ -1,469 +0,0 @@
-[Project]
-FileName=yamn.dev
-Name=YAMN
-Ver=1
-IsCpp=1
-Type=3
-Compiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS
-CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS
-Includes=../../../include
-Linker=-lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 --image-base "0x60010000"
-Libs=
-UnitCount=36
-Folders=Documentation,"Resource Files",YAMN,YAMN/Header,YAMN/include,"YAMN/Mail browser, dialogs",YAMN/Mails,"YAMN/POP3 plugin"
-ObjFiles=
-PrivateResource=YAMN_private.rc
-ResourceIncludes=../resources
-MakeIncludes=
-Icon=
-ExeOutput=bin
-ObjectOutput=objs
-OverrideOutput=0
-OverrideOutputName=YAMN.dll
-HostApplication=
-CommandLine=
-UseCustomMakefile=1
-CustomMakefile=yamn.win
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=0000000001001000000100
-
-[Unit1]
-FileName=..\browser\badconnect.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=..\browser\mailbrowser.cpp
-Folder=YAMN/Mail browser, dialogs
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=..\mails\decode.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=..\mails\mails.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=..\mails\mime.cpp
-Folder=YAMN/Mails
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=..\proto\md5.c
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=0
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=..\proto\netlib.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=..\proto\pop3\pop3.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=..\proto\pop3\pop3comm.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=..\proto\pop3\pop3opt.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=..\proto\ssl.cpp
-Folder=YAMN/POP3 plugin
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=..\debug.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit13]
-FileName=..\main.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit14]
-FileName=..\proto\pop3\pop3.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit15]
-FileName=..\proto\pop3\pop3comm.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit16]
-FileName=..\proto\pop3\pop3opt.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit17]
-FileName=..\yamn.h
-Folder=YAMN/Header
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit18]
-FileName=..\include\m_kbdnotify.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit19]
-FileName=..\include\m_popup.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit20]
-FileName=..\include\m_toptoolbar.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit21]
-FileName=..\include\m_uninstaller.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit22]
-FileName=..\include\m_updater.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit23]
-FileName=..\account.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit24]
-FileName=..\ChangeLog.txt
-Folder=Documentation
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit25]
-FileName=..\debug.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit26]
-FileName=..\filterplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit27]
-FileName=..\main.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit28]
-FileName=..\protoplugin.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit29]
-FileName=..\services.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit30]
-FileName=..\synchro.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit31]
-FileName=..\yamn.cpp
-Folder=YAMN
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit32]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit33]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit34]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit35]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit36]
-FileName=..\m_messages.h
-Folder=YAMN/include
-Compile=1
-CompileCpp=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit37]
-FileName=..\resources\icoyamn2.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit38]
-FileName=..\resources\icoyamn3.ico
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit39]
-FileName=..\resources\ttbfcheck.bmp
-Folder=Resource Files
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit40]
-FileName=..\resources\YAMN.rc
-Folder=Resource Files
-Compile=1
-CompileCpp=1
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit41]
-FileName=..\docs\language.pop3.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit42]
-FileName=..\docs\language.txt
-Folder=Documentation
-Compile=0
-CompileCpp=0
-Link=0
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=0.1
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=YAMN.exe
-ProductName=YAMN
-ProductVersion=0.1
-AutoIncBuildNr=0
-
diff --git a/yamn/mingw/yamn.win b/yamn/mingw/yamn.win
deleted file mode 100644
index d396e45..0000000
--- a/yamn/mingw/yamn.win
+++ /dev/null
@@ -1,92 +0,0 @@
-# Project: YAMN
-# Makefile created by Dev-C++ 4.9.9.2
-
-CPP = g++.exe
-CC = gcc.exe
-WINDRES = windres.exe
-RES = objs/YAMN.res
-OBJ = objs/badconnect.o objs/mailbrowser.o objs/decode.o objs/mails.o objs/mime.o objs/md5.o objs/netlib.o objs/pop3.o objs/pop3comm.o objs/pop3opt.o objs/ssl.o objs/account.o objs/debug.o objs/filterplugin.o objs/main.o objs/protoplugin.o objs/services.o objs/synchro.o objs/yamn.o $(RES)
-LINKOBJ = objs/badconnect.o objs/mailbrowser.o objs/decode.o objs/mails.o objs/mime.o objs/md5.o objs/netlib.o objs/pop3.o objs/pop3comm.o objs/pop3opt.o objs/ssl.o objs/account.o objs/debug.o objs/filterplugin.o objs/main.o objs/protoplugin.o objs/services.o objs/synchro.o objs/yamn.o $(RES)
-LIBS = -lkernel32 -luser32 -lshell32 -lmsvcrt -lcomctl32 -lcomdlg32 -lgdi32 -lwsock32 -s
-INCS = -I"../../../include"
-CXXINCS = -I"../../../include"
-BIN = bin/yamn.dll
-CXXFLAGS = $(CXXINCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-CFLAGS = $(INCS) -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -w -fweb -frename-registers -Os
-RM = rm -f
-
-.PHONY: all all-before all-after clean clean-custom
-
-all: all-before bin/yamn.dll all-after
-
-
-clean: clean-custom
- ${RM} $(OBJ) $(BIN)
-
-DLLWRAP=dllwrap.exe
-DEFFILE=bin/libyamn.def
-STATICLIB=bin/libyamn.a
-
-$(BIN): $(LINKOBJ)
-# $(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
- $(CPP) $(LINKOBJ) $(LIBS) -o $(BIN) -mdll
-
-objs/badconnect.o: ../browser/badconnect.cpp
- $(CPP) -c ../browser/badconnect.cpp -o objs/badconnect.o $(CXXFLAGS)
-
-objs/mailbrowser.o: ../browser/mailbrowser.cpp
- $(CPP) -c ../browser/mailbrowser.cpp -o objs/mailbrowser.o $(CXXFLAGS)
-
-objs/decode.o: ../mails/decode.cpp
- $(CPP) -c ../mails/decode.cpp -o objs/decode.o $(CXXFLAGS)
-
-objs/mails.o: ../mails/mails.cpp
- $(CPP) -c ../mails/mails.cpp -o objs/mails.o $(CXXFLAGS)
-
-objs/mime.o: ../mails/mime.cpp
- $(CPP) -c ../mails/mime.cpp -o objs/mime.o $(CXXFLAGS)
-
-objs/md5.o: ../proto/md5.c
- $(CC) -c ../proto/md5.c -o objs/md5.o $(CFLAGS)
-
-objs/netlib.o: ../proto/netlib.cpp
- $(CPP) -c ../proto/netlib.cpp -o objs/netlib.o $(CXXFLAGS)
-
-objs/pop3.o: ../proto/pop3/pop3.cpp
- $(CPP) -c ../proto/pop3/pop3.cpp -o objs/pop3.o $(CXXFLAGS)
-
-objs/pop3comm.o: ../proto/pop3/pop3comm.cpp
- $(CPP) -c ../proto/pop3/pop3comm.cpp -o objs/pop3comm.o $(CXXFLAGS)
-
-objs/pop3opt.o: ../proto/pop3/pop3opt.cpp
- $(CPP) -c ../proto/pop3/pop3opt.cpp -o objs/pop3opt.o $(CXXFLAGS)
-
-objs/ssl.o: ../proto/ssl.cpp
- $(CPP) -c ../proto/ssl.cpp -o objs/ssl.o $(CXXFLAGS)
-
-objs/account.o: ../account.cpp
- $(CPP) -c ../account.cpp -o objs/account.o $(CXXFLAGS)
-
-objs/debug.o: ../debug.cpp
- $(CPP) -c ../debug.cpp -o objs/debug.o $(CXXFLAGS)
-
-objs/filterplugin.o: ../filterplugin.cpp
- $(CPP) -c ../filterplugin.cpp -o objs/filterplugin.o $(CXXFLAGS)
-
-objs/main.o: ../main.cpp
- $(CPP) -c ../main.cpp -o objs/main.o $(CXXFLAGS)
-
-objs/protoplugin.o: ../protoplugin.cpp
- $(CPP) -c ../protoplugin.cpp -o objs/protoplugin.o $(CXXFLAGS)
-
-objs/services.o: ../services.cpp
- $(CPP) -c ../services.cpp -o objs/services.o $(CXXFLAGS)
-
-objs/synchro.o: ../synchro.cpp
- $(CPP) -c ../synchro.cpp -o objs/synchro.o $(CXXFLAGS)
-
-objs/yamn.o: ../yamn.cpp
- $(CPP) -c ../yamn.cpp -o objs/yamn.o $(CXXFLAGS)
-
-objs/YAMN.res: ../resources/YAMN.rc
- $(WINDRES) -i ../resources/YAMN.rc --input-format=rc -o objs/YAMN.res -O coff --include-dir ../resources
diff --git a/yamn/proto/md5.c b/yamn/proto/md5.c
deleted file mode 100644
index 25546d2..0000000
--- a/yamn/proto/md5.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-//#include <string.h> /* for memcpy() */
-#if defined(_WIN64)
- typedef unsigned __int64 size_t;
-#else
- typedef unsigned int size_t;
- #include "../filter/simple/AggressiveOptimize.h"
-#endif
-void * __cdecl memcpy(void *, const void *, size_t);
-void * __cdecl memset(void *, int, size_t);
-#include "md5.h"
-
-#ifndef HIGHFIRST
-#define byteReverse(buf, len) /* Nothing */
-#else
-void byteReverse(unsigned char *buf, unsigned longs);
-
-#ifndef ASM_MD5
-/*
- * Note: this code is harmless on little-endian machines.
- */
-void byteReverse(unsigned char *buf, unsigned longs)
-{
- uint32 t;
- do {
- t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
- ((unsigned) buf[1] << 8 | buf[0]);
- *(uint32 *) buf = t;
- buf += 4;
- } while (--longs);
-}
-#endif
-#endif
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init(struct MD5Context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t) {
- unsigned char *p = (unsigned char *) ctx->in + t;
-
- t = 64 - t;
- if (len < t) {
- memcpy(p, buf, len);
- return;
- }
- memcpy(p, buf, t);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- buf += t;
- len -= t;
- }
- /* Process data in 64-byte chunks */
-
- while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy(ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8) {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset(p, 0, count);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
- } else {
- /* Pad block to 56 bytes */
- memset(p, 0, count - 8);
- }
- byteReverse(ctx->in, 14);
-
- /* Append length in bits and transform */
- ((uint32 *) ctx->in)[14] = ctx->bits[0];
- ((uint32 *) ctx->in)[15] = ctx->bits[1];
-
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- byteReverse((unsigned char *) ctx->buf, 4);
- memcpy(digest, ctx->buf, 16);
- memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform(uint32 buf[4], uint32 const in[16])
-{
- register uint32 a, b, c, d;
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-#endif
diff --git a/yamn/proto/md5.h b/yamn/proto/md5.h
deleted file mode 100644
index e264f68..0000000
--- a/yamn/proto/md5.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __alpha
-typedef unsigned int uint32;
-#else
-typedef unsigned long uint32;
-#endif
-
-struct MD5Context {
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init(struct MD5Context *context);
-void MD5Update(struct MD5Context *context, unsigned char const *buf,
- unsigned len);
-void MD5Final(unsigned char digest[16], struct MD5Context *context);
-void MD5Transform(uint32 buf[4], uint32 const in[16]);
-
-/*
- * This is needed to make RSAREF happy on some MS-DOS compilers.
- */
-typedef struct MD5Context MD5_CTX;
-
-#endif /* !MD5_H */
diff --git a/yamn/proto/netclient.h b/yamn/proto/netclient.h
deleted file mode 100644
index 2414dbd..0000000
--- a/yamn/proto/netclient.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef __CLIENT_H
-#define __CLIENT_H
-
-class CNetClient
-{
-public:
- CNetClient(): Stopped(FALSE) {}
- virtual void Connect(const char* servername,const int port)=0;
- virtual void Send(const char *query)=0;
- virtual char* Recv(char *buf=NULL,int buflen=65536)=0;
- virtual void Disconnect()=0;
- virtual BOOL Connected()=0;
- virtual void SSLify()=0;
-
- BOOL Stopped;
- int Rcv;
- DWORD NetworkError;
- DWORD SystemError;
- BOOL ifTLSed;
-};
-
-#endif
diff --git a/yamn/proto/netlib.cpp b/yamn/proto/netlib.cpp
deleted file mode 100644
index f6f497b..0000000
--- a/yamn/proto/netlib.cpp
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * This code implements communication based on Miranda netlib library
- *
- * (c) majvan 2002-2004
- */
-
-#if !defined(_WIN64)
- #include "../filter/simple/AggressiveOptimize.h"
-#endif
-#include <windows.h>
-#include <stdio.h>
-#include <newpluginapi.h> //CallService,UnHookEvent
-#include <m_netlib.h> //socket thorugh proxy functions
-#include <m_langpack.h> //langpack for "connection" and other words
-#include "../debug.h"
-#include "netlib.h"
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-BOOL SSLLoaded=FALSE;
-HANDLE hNetlibUser=NULL;
-
-extern PVOID TLSCtx;
-extern PVOID SSLCtx;
-
-void __stdcall SSL_DebugLog(const char *fmt, ...)
-{
- char str[ 4096 ];
- va_list vararg;
-
- va_start( vararg, fmt );
- int tBytes = _vsnprintf( str, sizeof(str)-1, fmt, vararg );
- if ( tBytes == 0 )
- return;
-
- if ( tBytes > 0 )
- str[ tBytes ] = 0;
- else
- str[ sizeof(str)-1 ] = 0;
-
- CallService(MS_NETLIB_LOG, (WPARAM)hNetlibUser, (LPARAM)str);
- va_end( vararg );
-}
-
-HANDLE RegisterNLClient(const char *name)
-{
- static NETLIBUSER nlu={0};
- char desc[128];
-
- sprintf(desc, TranslateT("%s connection"),name);
-
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<Register PROXY support>");
-#endif
- nlu.cbSize = sizeof(nlu);
- nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS;
- nlu.szDescriptiveName=desc;
- nlu.szSettingsModule=(char *)name;
- hNetlibUser=(HANDLE)CallService(MS_NETLIB_REGISTERUSER,0,(LPARAM)&nlu);
-
-#ifdef DEBUG_COMM
- if(NULL==hNetlibUser)
- DebugLog(CommFile,"<error></Register PROXY support>\n");
- else
- DebugLog(CommFile,"</Register PROXY support>\n");
-#endif
- return hNetlibUser;
-}
-
-//Move connection to SSL
-void CNLClient::SSLify() throw(DWORD){
-#ifdef DEBUG_COMM
- SSL_DebugLog("Staring SSL...");
-#endif
- int socket = CallService(MS_NETLIB_GETSOCKET, (WPARAM)hConnection, 0);
- if (socket != INVALID_SOCKET)
- {
-#ifdef DEBUG_COMM
- SSL_DebugLog("Staring netlib core SSL");
-#endif
- if (CallService(MS_NETLIB_STARTSSL, (WPARAM)hConnection, 0))
- {
-#ifdef DEBUG_COMM
- SSL_DebugLog("Netlib core SSL started");
-#endif
- isTLSed = true;
- SSLLoaded = TRUE;
- return;
- }
- }
-
- //ssl could not be created
- throw NetworkError = (DWORD)ESSL_CREATESSL;
-}
-
-//Connects to the server through the sock
-//if not success, exception is throwed
-void CNLClient::Connect(const char* servername,const int port) throw(DWORD)
-{
- NETLIBOPENCONNECTION nloc;
-
- NetworkError=SystemError=0;
- isTLSed = false;
-
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<connect>\n");
-#endif
- try
- {
- nloc.cbSize=sizeof(NETLIBOPENCONNECTION);
- nloc.szHost=servername;
- nloc.wPort=port;
- nloc.flags=0;
- if(NULL==(hConnection=(HANDLE)CallService(MS_NETLIB_OPENCONNECTION,(WPARAM)hNetlibUser,(LPARAM)&nloc)))
- {
- SystemError=WSAGetLastError();
- throw NetworkError=(DWORD)ENL_CONNECT;
- }
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"</connect>\n");
-#endif
- return;
- }
- catch(...)
- {
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<error></connect>\n");
-#endif
- throw;
- }
-}
-
-//Performs a simple query
-// query- command to send
-int CNLClient::LocalNetlib_Send(HANDLE hConn,const char *buf,int len,int flags) {
- if (isTLSed)
- {
-#ifdef DEBUG_COMM
- SSL_DebugLog("SSL send: %s", buf);
-#endif
- }
-
- NETLIBBUFFER nlb={(char*)buf,len,flags};
- return CallService(MS_NETLIB_SEND,(WPARAM)hConn,(LPARAM)&nlb);
-}
-
-void CNLClient::Send(const char *query) throw(DWORD)
-{
- unsigned int Sent;
-
- if(NULL==query)
- return;
- if(hConnection==NULL)
- return;
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<send>%s",query);
-#endif
- try
- {
- if((SOCKET_ERROR==(Sent=LocalNetlib_Send(hConnection,query,(int)strlen(query),MSG_DUMPASTEXT))) || Sent!=(unsigned int)strlen(query))
- {
- SystemError=WSAGetLastError();
- throw NetworkError=(DWORD)ENL_SEND;
- }
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"</send>\n");
-#endif
- }
- catch(...)
- {
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<error></send>\n");
-#endif
- throw;
- }
-}
-
-//Reads data from socket
-// buf- buffer where to store max. buflen of received characters
-// if buf is NULL, creates buffer of buflen size
-// buf is NULL by default
-//You need free() returned buffer, which can be allocated in this function
-//if not success, exception is throwed
-
-int CNLClient::LocalNetlib_Recv(HANDLE hConn,char *buf,int len,int flags) {
- NETLIBBUFFER nlb={buf,len,flags};
- int iReturn = CallService(MS_NETLIB_RECV,(WPARAM)hConn,(LPARAM)&nlb);
- if (isTLSed)
- {
-#ifdef DEBUG_COMM
- SSL_DebugLog("SSL recv: %s", buf);
-#endif
- }
-
- return iReturn;
-}
-
-char* CNLClient::Recv(char *buf,int buflen) throw(DWORD)
-{
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<reading>");
-#endif
- try
- {
- if(buf==NULL)
- buf=(char *)malloc(sizeof(char)*(buflen+1));
- if(buf==NULL)
- throw NetworkError=(DWORD)ENL_RECVALLOC;
-
- if (!isTLSed)
- {
- NETLIBSELECT nls;
- memset(&nls, 0, sizeof(NETLIBSELECT));
- nls.cbSize = sizeof(NETLIBSELECT);
- nls.dwTimeout = 60000;
- nls.hReadConns[0] = hConnection;
- switch (CallService(MS_NETLIB_SELECT, 0, (LPARAM) &nls))
- {
- case SOCKET_ERROR:
- free(buf);
- SystemError=WSAGetLastError();
- throw NetworkError = (DWORD) ENL_RECV;
- case 0: // time out!
- free(buf);
- throw NetworkError = (DWORD) ENL_TIMEOUT;
- }
- }
-
- ZeroMemory(buf,buflen);
- if(SOCKET_ERROR==(Rcv=LocalNetlib_Recv(hConnection,buf,buflen,MSG_DUMPASTEXT)))
- {
- free(buf);
- SystemError=WSAGetLastError();
- throw NetworkError=(DWORD)ENL_RECV;
- }
- if(!Rcv)
- {
- free(buf);
- SystemError=WSAGetLastError();
- throw NetworkError=(DWORD)ENL_RECV;
- }
-#ifdef DEBUG_COMM
- *(buf+Rcv)=0; //end the buffer to write it to file
- DebugLog(CommFile,"%s",buf);
- DebugLog(CommFile,"</reading>\n");
-#endif
- return(buf);
- }
- catch(...)
- {
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<error></reading>\n");
-#endif
- throw;
- }
-}
-
-//Closes netlib connection
-void CNLClient::Disconnect()
-{
- Netlib_CloseHandle(hConnection);
- hConnection=(HANDLE)NULL;
-}
-
-//Uninitializes netlib library
-void UnregisterNLClient()
-{
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<Unregister PROXY support>");
-#endif
-
- Netlib_CloseHandle(hNetlibUser);
- hNetlibUser=(HANDLE)NULL;
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"</Unregister PROXY support>\n");
-#endif
-}
diff --git a/yamn/proto/netlib.h b/yamn/proto/netlib.h
deleted file mode 100644
index 90ad361..0000000
--- a/yamn/proto/netlib.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef __NETLIB_H
-#define __NETLIB_H
-
-#include "netclient.h"
-
-#pragma warning( disable : 4290 )
-
-class CNLClient: public CNetClient
-{
-public:
- CNLClient(): hConnection(NULL) {}
- void Connect(const char* servername,const int port) throw(DWORD);
- void Send(const char *query) throw(DWORD);
- char* Recv(char *buf=NULL,int buflen=65536) throw(DWORD);
- void Disconnect();
- void SSLify()throw(DWORD);
-
- inline BOOL Connected() {return hConnection!=NULL;}
-
-protected:
- HANDLE hConnection;
- BOOL isTLSed;
- int LocalNetlib_Send(HANDLE hConn,const char *buf,int len,int flags);
- int LocalNetlib_Recv(HANDLE hConn,char *buf,int len,int flags);
-};
-
-void SSL_DebugLog(const char *fmt, ...);
-
-enum
-{
- ENL_WINSOCKINIT=1, //error initializing socket //only wsock
- ENL_GETHOSTBYNAME, //DNS error //only wsock
- ENL_CREATESOCKET, //error creating socket //only wsock
- ENL_CONNECT, //cannot connect to server
- ENL_SEND, //cannot send data
- ENL_RECV, //cannot receive data
- ENL_RECVALLOC, //cannot allocate memory for received data
- ENL_TIMEOUT, //timed out during recv
-};
-
-enum
-{
- ESSL_NOTLOADED=1, //OpenSSL is not loaded
- ESSL_WINSOCKINIT, //WinSock 2.0 init failed
- ESSL_GETHOSTBYNAME, //DNS error
- ESSL_CREATESOCKET, //error creating socket
- ESSL_SOCKETCONNECT, //error connecting with socket
- ESSL_CREATESSL, //error creating SSL session structure
- ESSL_SETSOCKET, //error connect socket with SSL session for bidirect I/O space
- ESSL_CONNECT, //cannot connect to server
- ESSL_SEND, //cannot send data
- ESSL_RECV, //cannot receive data
- ESSL_RECVALLOC, //cannot allocate memory for received data
-};
-#endif
diff --git a/yamn/proto/pop3/pop3.cpp b/yamn/proto/pop3/pop3.cpp
deleted file mode 100644
index 59b8244..0000000
--- a/yamn/proto/pop3/pop3.cpp
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * This code implements basics of POP3 protocol
- *
- * (c) majvan 2002-2004
- */
-/* This was made from the libspopc project
- * copyright c 2002 Benoit Rouits <brouits@free.fr>
- * released under the terms of GNU LGPL
- * (GNU Lesser General Public Licence).
- * libspopc offers simple API for a pop3 client (MTA).
- * See RFC 1725 for pop3 specifications.
- * more information on http://brouits.free.fr/libspopc/
- */
-/*
- * This file is not original and is changed by majvan <om3tn@psg.sk>
- * for mail checker purpose. Please see original web page to
- * obtain the original. I rewrote it in C++, but good ideas were,
- * I think, unchanged.
- *
- * Note that this file was not designed to work under Unix. It's
- * needed to add Unix-specific features. I was interested only in
- * Windows for my project. majvan
- *
- */
-
-#pragma warning( disable : 4290 )
-
-#if !defined(_WIN64)
- #include "../../filter/simple/AggressiveOptimize.h"
-#endif
-#include <windows.h>
-#include <stdio.h>
-#include "pop3.h"
-
-extern "C" {
-#include "../md5.h"
-}
-
-extern void __stdcall SSL_DebugLog( const char *fmt, ... );
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//Connects to the server through the netlib
-//if not success, exception is throwed
-//returns welcome string returned by server
-//sets AckFlag
-char *CPop3Client::Connect(const char* servername,const int port,BOOL UseSSL, BOOL NoTLS)
-{
- char *temp = 0;
- if(Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- if(NetClient!=NULL)
- delete NetClient;
- SSL=UseSSL;
- NetClient=new CNLClient;
-
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"Connect:servername: %s port:%d\n",servername,port);
-#endif
- POP3Error=EPOP3_CONNECT;
- NetClient->Connect(servername,port);
- POP3Error=0;
-
- if (SSL)
- {
- try { NetClient->SSLify(); }
- catch (...)
- {
- NetClient->Disconnect();
- return NULL;
- }
- }
-
- temp = RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- extern BOOL SSLLoaded;
- if (!NoTLS & !(SSL)){
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
- NetClient->Send("STLS\r\n");
- free(temp);
- temp=RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- if(AckFlag==POP3_FOK){ // Ok, we are going to tls
- try {
- NetClient->SSLify();
- } catch (...) {
- NetClient->Disconnect();
- return NULL;
- }
-// temp = RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- }
- }
-// SSL_DebugLog("Received: %s",temp);
- return temp;
-}
-
-//Receives data to the end of packet
-// prev- previous data read (appends to this string next received data)
-// mode- mode of packet.
-// Packet can end with ack state (+OK or -ERR): set mode to POP3_SEARCHACK
-// If packet ends with '.' (end of string), set mode to POP3_SEARCHDOT
-// size- received data are stored to memory, but if length of data is more than allocated memory, function allocates
-// new memory. New allocated memory has allocated size more bytes
-// This value can be selectable: if you think it is better to reallocate by 1kB size, select size to 1024,
-// default is 128. You do not need to use this parameter
-char* CPop3Client::RecvRest(char* prev,int mode,int size)
-{
- int SizeRead=0;
- int SizeLeft=size-NetClient->Rcv;
- int RcvAll=NetClient->Rcv;
- char *LastString,*PrevString=prev;
-
- AckFlag=0;
-
- while(((mode==POP3_SEARCHDOT) && !SearchFromEnd(PrevString+RcvAll-1,RcvAll-3,POP3_SEARCHDOT) && !SearchFromStart(PrevString,2,POP3_SEARCHERR)) || //we are looking for dot or -err phrase
- ((mode==POP3_SEARCHACK) && (!SearchFromStart(PrevString,RcvAll-3,mode) || !((RcvAll>3) && SearchFromEnd(PrevString+RcvAll-1,1,POP3_SEARCHNL))))) //we are looking for +ok or -err phrase ended with newline
- { //if not found
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- {
- if(PrevString!=NULL)
- free(PrevString);
- throw POP3Error=(DWORD)EPOP3_STOPPED;
- }
- if(SizeLeft==0) //if block is full
- {
- SizeRead+=size;
- SizeLeft=size;
- LastString=NetClient->Recv(NULL,SizeLeft);
- PrevString=(char *)realloc(PrevString,sizeof(char)*(SizeRead+size));
- if(PrevString==NULL)
- throw POP3Error=(DWORD)EPOP3_RESTALLOC;
- memcpy(PrevString+SizeRead,LastString,size);
- free(LastString);
- }
- else
- NetClient->Recv(PrevString+RcvAll,SizeLeft); //to Rcv stores received bytes
- SizeLeft=SizeLeft-NetClient->Rcv;
- RcvAll+=NetClient->Rcv;
-// printf("[Read: %s]\n",PrevString);
- }
- NetClient->Rcv=RcvAll; //at the end, store the number of all bytes, no the number of last received bytes
- return PrevString;
-}
-
-// CPop3Client::SearchFromEnd
-// returns 1 if substring DOTLINE or ENDLINE found from end in bs bytes
-// if you need to add condition for mode, insert it into switch statement
-BOOL CPop3Client::SearchFromEnd(char *end,int bs,int mode)
-{
- while(bs>=0)
- {
- switch(mode)
- {
- case POP3_SEARCHDOT:
- if(DOTLINE(end))
- return 1;
- break;
- case POP3_SEARCHNL:
- if(ENDLINE(end))
- return 1;
- break;
- }
- end--;
- bs--;
- }
- return 0;
-}
-
-//Finds for a occurence of some pattern in string
-// returns 1 if substring OKLINE, ERRLINE or any of them found from start in bs bytes
-//call only this function to retrieve ack status (+OK or -ERR), because it sets flag AckFlag
-//if you need to add condition for mode, insert it into switch statement
-BOOL CPop3Client::SearchFromStart(char *start,int bs,int mode)
-{
- while(bs>=0)
- {
- switch(mode)
- {
- case POP3_SEARCHOK:
- if(OKLINE(start))
- {
- AckFlag=POP3_FOK;
- return 1;
- }
- break;
- case POP3_SEARCHERR:
- if(ERRLINE(start))
- {
- AckFlag=POP3_FERR;
- return 1;
- }
- break;
- case POP3_SEARCHACK:
- if(ACKLINE(start))
- {
- OKLINE(start) ? AckFlag=POP3_FOK : AckFlag=POP3_FERR;
- return 1;
- }
- break;
- }
- start++;
- bs--;
- }
- return 0;
-}
-
-//Performs "USER" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::User(char* name)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
- char *Result;
-
- sprintf(query,"USER %s\r\n",name);
- NetClient->Send(query);
- Result=RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- if(AckFlag==POP3_FERR)
- throw POP3Error=(DWORD)EPOP3_BADUSER;
- POP3Error=0;
- return Result;
-}
-
-//Performs "PASS" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Pass(char* pw)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
- char *Result;
-
- sprintf(query,"PASS %s\r\n",pw);
- NetClient->Send(query);
- Result=RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- if(AckFlag==POP3_FERR)
- throw POP3Error=(DWORD)EPOP3_BADPASS;
- return Result;
-}
-
-//Performs "APOP" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::APOP(char* name, char* pw, char* timestamp)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[512];
- char *Result;
- unsigned char digest[16];
- char hexdigest[40];
-
- if(timestamp==NULL)
- throw POP3Error=(DWORD)EPOP3_APOP;
- MD5Context ctx;
- MD5Init(&ctx);
- MD5Update(&ctx,(const unsigned char *)timestamp,(unsigned int)strlen(timestamp));
- MD5Update(&ctx,(const unsigned char *)pw,(unsigned int)strlen(pw));
- MD5Final(digest,&ctx);
- hexdigest[0]='\0';
- for(int i=0; i<16; i++) {
- char tmp[4];
- sprintf(tmp, "%02x", digest[i]);
- strcat(hexdigest, tmp);
- }
- sprintf(query,"APOP %s %s\r\n",name, hexdigest);
- NetClient->Send(query);
- Result=RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- if(AckFlag==POP3_FERR)
- throw POP3Error=(DWORD)EPOP3_BADUSER;
- return Result;
-}
-
-//Performs "QUIT" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Quit()
-{
- char query[]="QUIT\r\n";
-
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHACK);
-}
-
-//Performs "STAT" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Stat()
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[]="STAT\r\n";
-
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHACK);
-}
-
-//Performs "LIST" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::List()
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[]="LIST\r\n";
-
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHDOT);
-}
-
-//Performs "TOP" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Top(int nr, int lines)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
-
- sprintf(query,"TOP %d %d\r\n",nr,lines);
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHDOT);
-}
-
-//Performs "UIDL" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Uidl(int nr)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
-
- if(nr)
- {
- sprintf(query,"UIDL %d\r\n",nr);
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- }
- sprintf(query,"UIDL\r\n");
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHDOT);
-}
-
-//Performs "DELE" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Dele(int nr)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
-
- sprintf(query,"DELE %d\r\n",nr);
- NetClient->Send(query);
- return RecvRest(NetClient->Recv(),POP3_SEARCHACK);
-}
-//Performs "RETR" pop query and returns server response
-//sets AckFlag
-char* CPop3Client::Retr(int nr)
-{
- if(NetClient->Stopped) //check if we can work with this POP3 client session
- throw POP3Error=(DWORD)EPOP3_STOPPED;
-
- char query[128];
-
- sprintf(query,"RETR %d\r\n",nr);
- NetClient->Send(query);
- RecvRest(NetClient->Recv(),POP3_SEARCHACK);
- return NetClient->Recv();
-} \ No newline at end of file
diff --git a/yamn/proto/pop3/pop3.h b/yamn/proto/pop3/pop3.h
deleted file mode 100644
index faa6bd6..0000000
--- a/yamn/proto/pop3/pop3.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef __POP3_H
-#define __POP3_H
-
-#include "../../debug.h"
-#include "../netlib.h" //NetLib client
-
-#define DOTLINE(s) ((((s)[-2]=='\r') || ((s)[-2]=='\n')) && ((s)[-1]=='.') && (((s)[0]=='\r') || ((s)[0]=='\n') || ((s)[0]=='\0'))) // be careful, it's different to ESR's pop3.c ;-)
-#define ENDLINE(s) (((s)[0]=='\r') || ((s)[0]=='\n')) //endline
-#define OKLINE(s) (((s)[0]=='+') && (((s)[1]=='o') || ((s)[1]=='O')) && (((s)[2]=='k') || ((s)[2]=='K'))) // +OK
-#define ERRLINE(s) (((s)[0]=='-') && (((s)[1]=='e') || ((s)[1]=='E')) && (((s)[2]=='r') || ((s)[2]=='R')) && (((s)[3]=='r') || ((s)[3]=='R'))) // -ERR
-#define ACKLINE(s) (OKLINE(s) || ERRLINE(s))
-
-#define POP3_SEARCHDOT 1
-#define POP3_SEARCHACK 2
-#define POP3_SEARCHOK 3
-#define POP3_SEARCHERR 4
-#define POP3_SEARCHNL 5
-
-#define POP3_FOK 1
-#define POP3_FERR 2
-
-class CPop3Client
-{
-public:
- CPop3Client(): NetClient(NULL), Stopped(FALSE) {}
- ~CPop3Client() {if(NetClient!=NULL) delete NetClient;}
-
- char* Connect(const char* servername,const int port=110,BOOL UseSSL=FALSE, BOOL NoTLS=FALSE);
- char* RecvRest(char* prev,int mode,int size=65536);
- char* User(char* name);
- char* Pass(char* pw);
- char* APOP(char* name, char* pw, char* timestamp);
- char* Quit();
- char* Stat();
- char* List();
- char* Top(int nr, int lines=0);
- char* Uidl(int nr=0);
- char* Dele(int nr);
- char* Retr(int nr);
-
- unsigned char AckFlag;
- BOOL SSL;
- BOOL Stopped;
-
- DWORD POP3Error;
- class CNetClient *NetClient; //here the network layout is defined (TCP or SSL+TCP etc.)
-private:
- BOOL SearchFromEnd(char *end,int bs,int mode);
- BOOL SearchFromStart(char *end,int bs,int mode);
-};
-
-enum
-{
- EPOP3_QUEUEALLOC=1, //memory allocation
- EPOP3_STOPPED, //stop account
- EPOP3_CONNECT, //cannot connect to server
- EPOP3_RESTALLOC, //cannot allocate memory for received data
- EPOP3_BADUSER, //cannot login because USER command failed
- EPOP3_BADPASS, //cannot login because PASS command failed
- EPOP3_APOP, //server does not send timestamp for APOP auth
- EPOP3_STAT,
- EPOP3_LIST,
- EPOP3_UIDL,
-};
-
-#endif
diff --git a/yamn/proto/pop3/pop3comm.cpp b/yamn/proto/pop3/pop3comm.cpp
deleted file mode 100644
index 44cbfcc..0000000
--- a/yamn/proto/pop3/pop3comm.cpp
+++ /dev/null
@@ -1,1636 +0,0 @@
-/*
- * This code implements POP3 server checking for new mail and so on.
- * There's function SynchroPOP3 in this file- for checking and synchronising POP3 account
- * and DeleteMailsPOP3- for deleting mails from POP3 server
- *
- * Note this file acts as main file for internal plugin.
- *
- * (c) majvan 2002-2004
- * 18/08
-*/
-
-
-#pragma warning( disable : 4290 )
-#include "../../main.h"
-#include "../../yamn.h"
-#include "pop3.h"
-#include "pop3comm.h" //all we need for POP3 account (POP3 account= YAMN account + some more POP3 specified members)
-#include <m_netlib.h> //socket thorugh proxy functions
-
-#define ERRORSTR_MAXLEN 1024 //in wide-chars
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//From main.cpp
-void SetDefaultProtocolIcons();
-//From pop3opt.cpp
-extern int POP3OptInit(WPARAM wParam,LPARAM lParam);
-//From netlib.cpp
-extern HANDLE RegisterNLClient(const char *name);
-//this is imported because of one bug, should not be imported normally (this POP3 is plugin of YAMN)
-extern INT_PTR FilterMailSvc(WPARAM,LPARAM);
-
-extern char *ProtoName;
-extern INT_PTR YAMN_STATUS;
-extern PLUGININFO pluginInfo;
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-HANDLE hNetLib = NULL;
-PSCOUNTER CPOP3Account::AccountWriterSO = NULL;
-
-//Creates new CPOP3Account structure
-HACCOUNT WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN Plugin,DWORD CAccountVersion);
-
-//Deletes CPOP3Account structure
-void WINAPI DeletePOP3Account(HACCOUNT Which);
-
-//Sets stop flag to account
-void WINAPI StopPOP3Account(HACCOUNT Which);
-
-//Function registers standard functions for YAMN
-int RegisterPOP3Plugin(WPARAM,LPARAM);
-
-//This should be normally exporeted fcn UninstallEx from plugin DLL, but YAMN has already exported one, so this is the same called from YAMN UninstallEx
-//This is used by PluginUninstall
-int UninstallPOP3(PLUGINUNINSTALLPARAMS* ppup);
-
-//Unloads all variables created on heap (delete[])
-DWORD WINAPI UnLoadPOP3(void *);
-
-//Function writes POP3 accounts using YAMN exported functions
-DWORD WINAPI WritePOP3Accounts();
-
-//Function stores plugin's data for account to file
-DWORD WINAPI WritePOP3Options(HANDLE,HACCOUNT);
-
-//Function reads plugin's data for account from file
-DWORD WINAPI ReadPOP3Options(HACCOUNT,TCHAR **,TCHAR *);
-
-//Creates new mail for an account
-HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account,DWORD CMimeMailVersion);
-
-//Function does all needed work when connection failed or any error occured
-//Creates structure containing error code, closes internet session, runs "bad connect" function
-static void PostErrorProc(HPOP3ACCOUNT ActualAccount,void *ParamToBadConnect,DWORD POP3PluginParam,BOOL UseSSL);
-
-//Checks POP3 account and stores all info to account. It deletes old mails=> synchro
-// WhichTemp- pointer to strucure containing needed information
-DWORD WINAPI SynchroPOP3(struct CheckParam *WhichTemp);
-
-//Deletes mails from POP3 server
-// WhichTemp- structure containing needed information (queued messages to delete)
-//Function deletes from memory queue in WhichTemp structure
-DWORD WINAPI DeleteMailsPOP3(struct DeleteParam *WhichTemp);
-
-//Function makes readable message about error. It sends it back to YAMN, so YAMN then
-//can show it to the message window
-WCHAR* WINAPI GetErrorString(DWORD Code);
-
-//Function deletes string allocated in GetErrorString
-void WINAPI DeleteErrorString(LPVOID String);
-
-//Extracts info from result of POP3's STAT command
-// stream- source string
-// len- length of source string
-// mboxsize- adreess to integer, that receives size of mailbox
-// mails- adreess to integer, that receives number of mails
-void ExtractStat(char *stream,int len,int *mboxsize,int *mails);
-
-//Extracts mail ID on mailbox
-// stream- source string
-// len- length of source string
-// queue- address of first message, where first ID will be stored
-void ExtractUIDL(char *stream,int len,HYAMNMAIL queue);
-
-//Extracts mail size on mailbox
-// stream- source string
-// len- length of source string
-// queue- address of first message, where size of message #1 will be stored
-void ExtractList(char *stream,int len,HYAMNMAIL queue);
-
-void ExtractMail(char *stream,int len,HYAMNMAIL queue);
-
-struct YAMNExportedFcns *pYAMNFcn = NULL;
-struct MailExportedFcns *pYAMNMailFcn = NULL;
-
-YAMN_PROTOIMPORTFCN POP3ProtocolFunctions =
-{
- CreatePOP3Account,
- DeletePOP3Account,
- StopPOP3Account,
- WritePOP3Options,
- ReadPOP3Options,
- SynchroPOP3,
- SynchroPOP3,
- SynchroPOP3,
- DeleteMailsPOP3,
- GetErrorString,
- NULL,
- DeleteErrorString,
- WritePOP3Accounts,
- NULL,
- UnLoadPOP3,
-};
-
-YAMN_MAILIMPORTFCN POP3MailFunctions =
-{
- CreatePOP3Mail,
- NULL,
- NULL,
- NULL,
-};
-
-PYAMN_VARIABLES pYAMNVar = NULL;
-HYAMNPROTOPLUGIN POP3Plugin = NULL;
-
-YAMN_PROTOREGISTRATION POP3ProtocolRegistration =
-{
- "POP3 protocol (internal)",
- YAMN_VERSION_C,
- "© 2002-2004 majvan | 2005-2007 tweety, yb",
- "Mail notifier and browser for Miranda IM. Included POP3 protocol.",
- "francois.mean@skynet.be",
- "http://forums.miranda-im.org/showthread.php?t=3035",
-};
-
-WCHAR *FileName = NULL;
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-CPOP3Account::CPOP3Account()
-{
-//NOTE! This constructor constructs CAccount structure. If your plugin is not internal,
-//you will need these constructors. All you need is in Account.cpp. Just copy to your source code
-//constructor and destructor of CAccount.
- UseInternetFree=CreateEvent(NULL,FALSE,TRUE,NULL);
- InternetQueries=new SCOUNTER;
- AbilityFlags=YAMN_ACC_BROWSE | YAMN_ACC_POPUP;
-
- SetAccountStatus((HACCOUNT)this,TranslateT("Disconnected"));
-}
-
-CPOP3Account::~CPOP3Account()
-{
- CloseHandle(UseInternetFree);
- if(InternetQueries!=NULL)
- delete InternetQueries;
-}
-
-HACCOUNT WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN Plugin,DWORD CAccountVersion)
-{
-//First, we should check whether CAccountVersion matches.
-//But this is internal plugin, so YAMN's CAccount structure and our CAccount structure are
-//the same, so we do not need to test version. Otherwise, if CAccount version does not match
-//in your plugin, you should return NULL, like this:
-// if(CAccountVersion!=YAMN_ACCOUNTVERSION) return NULL;
-
-//Now it is needed to construct our POP3 account and return its handle
- return (HACCOUNT)new struct CPOP3Account();
-}
-
-void WINAPI DeletePOP3Account(HACCOUNT Which)
-{
- delete (HPOP3ACCOUNT)Which;
-}
-
-void WINAPI StopPOP3Account(HACCOUNT Which)
-{
- ((HPOP3ACCOUNT)Which)->Client.Stopped=TRUE;
- if(((HPOP3ACCOUNT)Which)->Client.NetClient!=NULL) //we should inform also network client. Usefull only when network client implements this feature
- ((HPOP3ACCOUNT)Which)->Client.NetClient->Stopped=TRUE;
-}
-
-//This function is like main function for POP3 internal protocol
-int RegisterPOP3Plugin(WPARAM,LPARAM)
-{
-
- //Get YAMN variables we can use
- if(NULL==(pYAMNVar=(PYAMN_VARIABLES)CallService(MS_YAMN_GETVARIABLES,(WPARAM)YAMN_VARIABLESVERSION,(LPARAM)0)))
- return 0;
-
- //We have to get pointers to YAMN exported functions: allocate structure and fill it
- if(NULL==(pYAMNFcn=new struct YAMNExportedFcns))
- {UnLoadPOP3(0); return 0;}
-
- //Register new pop3 user in netlib
- if(NULL==(hNetLib=RegisterNLClient("YAMN-POP3")))
- {UnLoadPOP3(0); return 0;}
-
- pYAMNFcn->SetProtocolPluginFcnImportFcn=(YAMN_SETPROTOCOLPLUGINFCNIMPORTFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETPROTOCOLPLUGINFCNIMPORTID,(LPARAM)0);
- pYAMNFcn->WaitToWriteFcn=(YAMN_WAITTOWRITEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOWRITEID,(LPARAM)0);
- pYAMNFcn->WriteDoneFcn=(YAMN_WRITEDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WRITEDONEID,(LPARAM)0);
- pYAMNFcn->WaitToReadFcn=(YAMN_WAITTOREADFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_WAITTOREADID,(LPARAM)0);
- pYAMNFcn->ReadDoneFcn=(YAMN_READDONEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_READDONEID,(LPARAM)0);
- pYAMNFcn->SCGetNumberFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCGETNUMBERID,(LPARAM)0);
- pYAMNFcn->SCIncFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCINCID,(LPARAM)0);
- pYAMNFcn->SCDecFcn=(YAMN_SCMANAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SCDECID,(LPARAM)0);
- pYAMNFcn->SetStatusFcn=(YAMN_SETSTATUSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SETSTATUSID,(LPARAM)0);
- pYAMNFcn->GetStatusFcn=(YAMN_GETSTATUSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_GETSTATUSID,(LPARAM)0);
-
- if(NULL==(pYAMNMailFcn=new struct MailExportedFcns))
- {UnLoadPOP3(0); return 0;}
-
- pYAMNMailFcn->SynchroMessagesFcn=(YAMN_SYNCHROMIMEMSGSFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_SYNCHROMIMEMSGSID,(LPARAM)0);
- pYAMNMailFcn->TranslateHeaderFcn=(YAMN_TRANSLATEHEADERFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_TRANSLATEHEADERID,(LPARAM)0);
- pYAMNMailFcn->AppendQueueFcn=(YAMN_APPENDQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_APPENDQUEUEID,(LPARAM)0);
- pYAMNMailFcn->DeleteMessagesToEndFcn=(YAMN_DELETEMIMEQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_DELETEMIMEQUEUEID,(LPARAM)0);
- pYAMNMailFcn->DeleteMessageFromQueueFcn=(YAMN_DELETEMIMEMESSAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_DELETEMIMEMESSAGEID,(LPARAM)0);
- pYAMNMailFcn->FindMessageByIDFcn=(YAMN_FINDMIMEMESSAGEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_FINDMIMEMESSAGEID,(LPARAM)0);
- pYAMNMailFcn->CreateNewDeleteQueueFcn=(YAMN_CREATENEWDELETEQUEUEFCN)CallService(MS_YAMN_GETFCNPTR,(WPARAM)YAMN_CREATENEWDELETEQUEUEID,(LPARAM)0);
-
- //set static variable
- if(CPOP3Account::AccountWriterSO==NULL) {
- if(NULL==(CPOP3Account::AccountWriterSO=new SCOUNTER))
- {UnLoadPOP3(0); return 0;}
- }
-
- //First, we register this plugin
- //it is quite impossible this function returns zero (failure) as YAMN and internal plugin structre versions are the same
- POP3ProtocolRegistration.Name = Translate("POP3 protocol (internal)");
- POP3ProtocolRegistration.Description = Translate("Mail notifier and browser for Miranda IM. Included POP3 protocol.");
- if(NULL==(POP3Plugin=(HYAMNPROTOPLUGIN)CallService(MS_YAMN_REGISTERPROTOPLUGIN,(WPARAM)&POP3ProtocolRegistration,(LPARAM)YAMN_PROTOREGISTRATIONVERSION)))
- return 0;
-
- //Next we set our imported functions for YAMN
- if(!SetProtocolPluginFcnImport(POP3Plugin,&POP3ProtocolFunctions,YAMN_PROTOIMPORTFCNVERSION,&POP3MailFunctions,YAMN_MAILIMPORTFCNVERSION))
- return 0;
-
- //Then, we read all mails for accounts.
- //You must first register account, before using this function as YAMN must use CreatePOP3Account function to add new accounts
- //But if CreatePOP3Account is not implemented (equals to NULL), YAMN creates account as YAMN's standard HACCOUNT
- if(FileName) CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0); //shoud not happen (only for secure)
- FileName=(WCHAR *)CallService(MS_YAMN_GETFILENAMEA,(WPARAM)"pop3",(LPARAM)0);
-
- switch(CallService(MS_YAMN_READACCOUNTSW,(WPARAM)POP3Plugin,(LPARAM)FileName))
- {
- case EACC_FILEVERSION:
- MessageBoxA(NULL,Translate("Found new version of account book, not compatible with this version of YAMN."),Translate(_T("YAMN (internal POP3) read error")),MB_OK);
- CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0);
- return 0;
- case EACC_FILECOMPATIBILITY:
- MessageBoxA(NULL,Translate("Error reading account file. Account file corrupted."),Translate("YAMN (internal POP3) read error"),MB_OK);
- CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0);
- return 0;
- case EACC_ALLOC:
- MessageBoxA(NULL,Translate("Memory allocation error while data reading"),Translate("YAMN (internal POP3) read error"),MB_OK);
- CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0);
- return 0;
- case EACC_SYSTEM:
- if(ERROR_FILE_NOT_FOUND!=GetLastError())
- {
- char temp[1024] = {0};
- _snprintf(temp,1024,"%s\n%S",Translate("Reading file error. File already in use?"),FileName);
- MessageBoxA(NULL,temp,Translate("YAMN (internal POP3) read error"),MB_OK);
- CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0);
- return 0;
- }
- break;
- }
- //HookEvent(ME_OPT_INITIALISE,POP3OptInit);
-
- HACCOUNT Finder;
- HANDLE hContact;
- DBVARIANT dbv;
- char *szProto;
-
- for(Finder=POP3Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next)
- {
- Finder->hContact = NULL;
- hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
- while(hContact)
- {
- szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
- if(szProto != NULL && strcmp(szProto, ProtoName)==0)
- {
- if(!DBGetContactSetting(hContact,ProtoName,"Id",&dbv))
- {
-
- if( strcmp((char*)dbv.pszVal, Finder->Name)==0)
- {
- Finder->hContact = hContact;
- DBWriteContactSettingWord(Finder->hContact, ProtoName, "Status", ID_STATUS_ONLINE);
- DBWriteContactSettingString(Finder->hContact, "CList", "StatusMsg", Translate("No new mail message"));
- if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT))
- {
- DBDeleteContactSetting(Finder->hContact, "CList", "Hidden");
- }
- if(!(Finder->Flags & YAMN_ACC_ENA) || !(Finder->NewMailN.Flags & YAMN_ACC_CONT))
- {
- DBWriteContactSettingByte(Finder->hContact, "CList", "Hidden", 1);
- }
- }
- DBFreeVariant(&dbv);
- }
-
- }
- hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0);
- }
- if(Finder->hContact == NULL && (Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT))
- {
- //No account contact found, have to create one
- Finder->hContact =(HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0);
- CallService(MS_PROTO_ADDTOCONTACT,(WPARAM)Finder->hContact,(LPARAM)ProtoName);
- DBWriteContactSettingString(Finder->hContact,ProtoName,"Id",Finder->Name);
- DBWriteContactSettingString(Finder->hContact,ProtoName,"Nick",Finder->Name);
- DBWriteContactSettingString(Finder->hContact,"Protocol","p",ProtoName);
- DBWriteContactSettingWord(Finder->hContact, ProtoName, "Status", YAMN_STATUS);
- }
-
- /*//this doesn't work. the function doesn't know which contact to check
- //if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT) && DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_SHOWMAINMENU, 1))
- //{
- // mi.cbSize = sizeof(mi);
- // mi.position = 0xb0000000;
- // mi.flags = CMIM_ICON;
- // mi.hIcon = hYamnIcons[1];
- // mi.pszName = Finder->Name;
- // mi.pszPopupName = ProtoName;
- // mi.pszService = MS_YAMN_CLISTCONTEXT;
- // hMenuItemMain = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&mi);
- }*/
-
- }
-
- return 0;
-}
-
-int UninstallPOP3(PLUGINUNINSTALLPARAMS* ppup) //Usually UninstallEx, but need different name, because it is registered yet in main.cpp
-{
- if(ppup->bDoDeleteSettings)
- {
- char FileNameA[MAX_PATH+1];
-
- PUIRemoveDbModule("YAMN-POP3");
-
- if(FileName==NULL)
- MessageBox(NULL,"Cannot delete book file when YAMN is not loaded. Please do it manually.","YAMN-POP3 uninstalling",MB_OK|MB_ICONWARNING);
- else
- {
- if(!WideCharToMultiByte(CP_ACP,0,FileName,-1,FileNameA,MAX_PATH+1,NULL,NULL))
- MessageBox(NULL,"Cannot delete book file. Please do it manually.","YAMN-POP3 uninstalling",MB_OK|MB_ICONWARNING);
- else
- DeleteFile(FileNameA);
- }
- }
- return 0;
-}
-
-DWORD WINAPI UnLoadPOP3(void *)
-{
- //pYAMNVar is only a pointr, no need delete or free
- if(hNetLib) {
- Netlib_CloseHandle(hNetLib); hNetLib = NULL;}
- if(CPOP3Account::AccountWriterSO) {
- delete CPOP3Account::AccountWriterSO; CPOP3Account::AccountWriterSO = NULL;}
- if(pYAMNMailFcn) {
- delete pYAMNMailFcn; pYAMNMailFcn = NULL;}
- if(pYAMNFcn) {
- delete pYAMNFcn; pYAMNFcn = NULL;}
- if(FileName) {
- CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0); FileName = NULL;}
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"UnLoadPOP3:done\n");
- #endif
- return 1;
-}
-
-DWORD WINAPI WritePOP3Accounts()
-{
-// WCHAR *FileName=(WCHAR *)CallService(MS_YAMN_GETFILENAMEA,(WPARAM)"pop3",(LPARAM)0);
- DWORD ReturnValue=CallService(MS_YAMN_WRITEACCOUNTSW,(WPARAM)POP3Plugin,(LPARAM)FileName);
-
- switch(ReturnValue)
- {
- case EACC_SYSTEM:
- {
- char temp[1024] = {0};
- _snprintf(temp,1024,"%s\n%S",Translate("Error while copying data to disk occured. File in use?"),FileName);
- MessageBox(NULL,temp,Translate("POP3 plugin- write file error"),MB_OK);
- }
- break;
- case 0:
- break;
- }
-// CallService(MS_YAMN_DELETEFILENAME,(WPARAM)FileName,(LPARAM)0);
- return ReturnValue;
-}
-
-DWORD WINAPI WritePOP3Options(HANDLE File,HACCOUNT Which)
-{
- DWORD WrittenBytes;
- DWORD Ver=POP3_FILEVERSION;
-
- if((!WriteFile(File,(char *)&Ver,sizeof(DWORD),&WrittenBytes,NULL)) ||
- (!WriteFile(File,(char *)&((HPOP3ACCOUNT)Which)->CP,sizeof(WORD),&WrittenBytes,NULL)))
- return EACC_SYSTEM;
- return 0;
-}
-
-DWORD WINAPI ReadPOP3Options(HACCOUNT Which,TCHAR **Parser,TCHAR *End)
-{
- DWORD Ver;
-#ifdef DEBUG_FILEREAD
- TCHAR Debug[256];
-#endif
- Ver=*(DWORD *)(*Parser);
- (*Parser)+=sizeof(DWORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
- if(Ver!=POP3_FILEVERSION)
- return EACC_FILECOMPATIBILITY;
-
- ((HPOP3ACCOUNT)Which)->CP=*(WORD *)(*Parser);
- (*Parser)+=sizeof(WORD)/sizeof(TCHAR);
- if(*Parser>=End)
- return EACC_FILECOMPATIBILITY;
-#ifdef DEBUG_FILEREAD
- _stprintf(Debug,_T("CodePage: %d, remaining %d chars"),((HPOP3ACCOUNT)Which)->CP,End-*Parser);
- MessageBox(NULL,Debug,_T("debug"),MB_OK);
-#endif
- return 0;
-}
-
-HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account,DWORD MailDataVersion)
-{
- HYAMNMAIL NewMail;
-//First, we should check whether MAILDATA matches.
-//But this is internal plugin, so YAMN's MAILDATA structure and our MAILDATA structure are
-//the same, so we do not need to test version. Otherwise, if MAILDATA version does not match
-//in your plugin, you should return NULL, like this:
-// if(MailDataVersion!=YAMN_MAILDATAVERSION) return NULL;
-
-//Now it is needed to construct our POP3 account and return its handle
- if(NULL==(NewMail=new YAMNMAIL))
- return NULL;
-
- if(NULL==(NewMail->MailData=new MAILDATA))
- {
- delete NewMail;
- return NULL;
- }
- NewMail->MailData->CP=((HPOP3ACCOUNT)Account)->CP;
- return (HYAMNMAIL)NewMail;
-}
-
-static void SetContactStatus(HACCOUNT account, int status){
- if ((account->hContact) && (account->NewMailN.Flags & YAMN_ACC_CONT)){
- DBWriteContactSettingWord(account->hContact, ProtoName, "Status", status);
- }
-}
-
-static void PostErrorProc(HPOP3ACCOUNT ActualAccount,void *ParamToBadConnection,DWORD POP3PluginParam,BOOL UseSSL)
-{
- char *DataRX;
-
-//We create new structure, that we pass to bad connection dialog procedure. This procedure next calls YAMN imported fuction
-//from POP3 protocol to determine the description of error. We can describe error from our error code structure, because later,
-//when YAMN calls our function, it passes us our error code. This is pointer to structure for POP3 protocol in fact.
- PPOP3_ERRORCODE ErrorCode;
-
-//We store status before we do Quit(), because quit can destroy our errorcode status
- if(NULL!=(ErrorCode=new POP3_ERRORCODE))
- {
- ErrorCode->SSL=UseSSL;
- ErrorCode->AppError=ActualAccount->SystemError;
- ErrorCode->POP3Error=ActualAccount->Client.POP3Error;
- ErrorCode->NetError=ActualAccount->Client.NetClient->NetworkError;
- ErrorCode->SystemError=ActualAccount->Client.NetClient->SystemError;
- }
-
- if(POP3PluginParam==(DWORD)NULL) //if it was normal YAMN call (force check or so on)
- {
- try
- {
- DataRX=ActualAccount->Client.Quit();
- if(DataRX!=NULL)
- free(DataRX);
- }
- catch(...)
- {
- }
-//We always close connection if error occured
- try
- {
- ActualAccount->Client.NetClient->Disconnect();
- }
- catch(...)
- {
- }
-
- SetAccountStatus(ActualAccount,Translate("Disconnected"));
-
-//If we cannot allocate memory, do nothing
- if(ErrorCode==NULL)
- {
- SetEvent(ActualAccount->UseInternetFree);
- return;
- }
- }
- else //else it was called from POP3 plugin, probably error when deleting old mail (POP3 synchro calls POP3 delete)
- if(ErrorCode==NULL)
- return;
-
- if((ActualAccount->BadConnectN.Flags & YAMN_ACC_MSG) || (ActualAccount->BadConnectN.Flags & YAMN_ACC_ICO) || (ActualAccount->BadConnectN.Flags & YAMN_ACC_POP))
- {
- YAMN_BADCONNECTIONPARAM cp={(HANDLE)0,ActualAccount,(UINT_PTR)ErrorCode,ParamToBadConnection};
-
- CallService(MS_YAMN_BADCONNECTION,(WPARAM)&cp,(LPARAM)YAMN_BADCONNECTIONVERSION);
- }
- if(POP3PluginParam==(DWORD)NULL) //if it was normal YAMN call
- SetEvent(ActualAccount->UseInternetFree);
-}
-
-//Checks POP3 account and synchronizes it
-DWORD WINAPI SynchroPOP3(struct CheckParam * WhichTemp)
-{
- HPOP3ACCOUNT ActualAccount;
- CPop3Client *MyClient;
- HYAMNMAIL NewMails=NULL,MsgQueuePtr=NULL;
- char* DataRX=NULL,*Temp;
- int mboxsize,msgs,i;
- SYSTEMTIME now;
- LPVOID YAMNParam;
- DWORD CheckFlags;
- BOOL UsingInternet=FALSE;
- struct {
- char *ServerName;
- DWORD ServerPort;
- char *ServerLogin;
- char *ServerPasswd;
- DWORD Flags;
- DWORD NFlags;
- DWORD NNFlags;
- } ActualCopied;
-
- //First, we should compare our version of CheckParam structure, but here it is not needed, because YAMN and internal plugin
- //have the same version. But your plugin should do that in this way:
- // if(((struct CheckParam *)WhichTemp)->Ver!=YAMN_CHECKVERSION)
- // {
- // SetEvent(((struct CheckParam *)WhichTemp)->ThreadRunningEV); //don't forget to unblock YAMN
- // return (DWORD)-1; //ok, but we should return value.
- // //When our plugin returns e.g. 0xFFFFFFFF (=-1, this is only our plugin value, YAMN does nothing with return value,
- // //but only tests if it is nonzero. If yes, it calls GetErrorStringFcn. We know problem occured in YAMN incompatibility
- // //and then we can in our GetErrorStringFcn e.g. return string "Uncompatible version of YAMN".
- // }
-
- ActualAccount=(HPOP3ACCOUNT)WhichTemp->AccountParam; //copy address of structure from calling thread to stack of this thread
- YAMNParam=WhichTemp->BrowserParam;
- CheckFlags=WhichTemp->Flags;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:Incrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCInc(ActualAccount->UsingThreads);
- //Unblock YAMN, signal that we have copied all parameters from YAMN thread stack
- if(INVALID_HANDLE_VALUE!=WhichTemp->ThreadRunningEV)
- SetEvent(WhichTemp->ThreadRunningEV);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToRead(ActualAccount))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountSO-read wait failed\n");
- #endif
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCDec(ActualAccount->UsingThreads);
- return 0;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountSO-read enter\n");
- #endif
- MyClient=&ActualAccount->Client;
- //Now, copy all needed information about account to local variables, so ActualAccount is not blocked in read mode during all connection process, which can last for several minutes.
- ActualCopied.ServerName=_strdup(ActualAccount->Server->Name);
- ActualCopied.ServerPort=ActualAccount->Server->Port;
- ActualCopied.Flags=ActualAccount->Flags;
- ActualCopied.ServerLogin=_strdup(ActualAccount->Server->Login);
- ActualCopied.ServerPasswd=_strdup(ActualAccount->Server->Passwd);
- ActualCopied.NFlags=ActualAccount->NewMailN.Flags;
- ActualCopied.NNFlags=ActualAccount->NoNewMailN.Flags;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountSO-read done\n");
- #endif
- ReadDone(ActualAccount);
-
- SCInc(ActualAccount->InternetQueries); //increment counter, that there is one more thread waiting for connection
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:InternetFreeEV-wait\n");
- #endif
- WaitForSingleObject(ActualAccount->UseInternetFree,INFINITE); //wait until we can use connection
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:InternetFreeEV-enter\n");
- #endif
- SCDec(ActualAccount->InternetQueries);
-
- //OK, we enter the "use internet" section. But after we start communication, we can test if we did not enter the "use internet" section only for the reason,
- //that previous thread release the internet section because this account has stop signal (we stop account and there are 2 threads: one communicating,
- //the second one waiting for network access- the first one ends because we want to stop account, this one is released, but should be stopped as well).
- if(!ActualAccount->AbleToWork)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:stop signal-InternetFreeEV-done\n");
- #endif
- SetEvent(ActualAccount->UseInternetFree);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:stop signal-Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCDec(ActualAccount->UsingThreads);
- return 0;
- }
- UsingInternet=TRUE;
-
- GetLocalTime(&now);
- ActualAccount->SystemError=0; //now we can use internet for this socket. First, clear errorcode.
- try
- {
- SetContactStatus(ActualAccount,ID_STATUS_OCCUPIED);
- #ifdef DEBUG_COMM
- DebugLog(CommFile,"<--------Communication-------->\n");
- #endif
- // if we are already connected, we have open session (another thread left us open session), so we don't need to login
- // note that connected state without logging cannot occur, because if we close session, we always close socket too (we must close socket is the right word :) )
- if((MyClient->NetClient==NULL) || !MyClient->NetClient->Connected())
- {
- SetAccountStatus(ActualAccount,Translate("Connecting to server"));
-
- DataRX=MyClient->Connect(ActualCopied.ServerName,ActualCopied.ServerPort,ActualCopied.Flags & YAMN_ACC_SSL23,ActualCopied.Flags & YAMN_ACC_NOTLS);
- char *timestamp=NULL;
-
- if(DataRX!=NULL)
- {
- if(ActualCopied.Flags & YAMN_ACC_APOP)
- {
- char *lpos=strchr(DataRX,'<');
- char *rpos=strchr(DataRX,'>');
- if(lpos && rpos && rpos>lpos) {
- int sz=(int)(rpos-lpos+2);
- timestamp=new char[sz];
- memcpy(timestamp, lpos, sz-1);
- timestamp[sz-1]='\0';
- }
- }
- free(DataRX);
- DataRX=NULL;
- }
-
- SetAccountStatus(ActualAccount,Translate("Entering POP3 account"));
-
- if(ActualCopied.Flags & YAMN_ACC_APOP)
- {
- DataRX=MyClient->APOP(ActualCopied.ServerLogin,ActualCopied.ServerPasswd,timestamp);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- delete[] timestamp;
- } else {
- DataRX=MyClient->User(ActualCopied.ServerLogin);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- DataRX=MyClient->Pass(ActualCopied.ServerPasswd);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- }
- }
- SetAccountStatus(ActualAccount,Translate("Searching for new mail message"));
-
- DataRX=MyClient->Stat();
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<--------Account checking-------->\n");
- DebugLog(DecodeFile,"<Extracting stat>\n");
- #endif
- ExtractStat(DataRX,MyClient->NetClient->Rcv,&mboxsize,&msgs);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<MailBoxSize>%d</MailBoxSize>\n",mboxsize);
- DebugLog(DecodeFile,"<Msgs>%d</Msgs>\n",msgs);
- DebugLog(DecodeFile,"</Extracting stat>\n");
- #endif
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- for(i=0;i<msgs;i++)
- {
- if(!i)
- MsgQueuePtr=NewMails=(HYAMNMAIL)CallService(MS_YAMN_CREATEACCOUNTMAIL,(WPARAM)ActualAccount,(LPARAM)YAMN_MAILVERSION);
- else
- {
- MsgQueuePtr->Next=(HYAMNMAIL)CallService(MS_YAMN_CREATEACCOUNTMAIL,(WPARAM)ActualAccount,(LPARAM)YAMN_MAILVERSION);
- MsgQueuePtr=MsgQueuePtr->Next;
- }
- if(MsgQueuePtr==NULL)
- {
- ActualAccount->SystemError=EPOP3_QUEUEALLOC;
- throw (DWORD)ActualAccount->SystemError;
- }
- }
-
- if(msgs)
- {
- DataRX=MyClient->List();
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting list>\n");
- #endif
- ExtractList(DataRX,MyClient->NetClient->Rcv,NewMails);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting list>\n");
- #endif
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting UIDL>\n");
- #endif
- DataRX=MyClient->Uidl();
- ExtractUIDL(DataRX,MyClient->NetClient->Rcv,NewMails);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting UIDL>\n");
- #endif
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0!=MsgsWaitToWrite(ActualAccount))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait failed\n");
- #endif
- throw (DWORD)(ActualAccount->SystemError=EACC_STOPPED);
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write enter\n");
- #endif
- ActualAccount->LastChecked=now;
- for(MsgQueuePtr=(HYAMNMAIL)ActualAccount->Mails;MsgQueuePtr!=NULL;MsgQueuePtr=MsgQueuePtr->Next){
- if (MsgQueuePtr->Flags&YAMN_MSG_BODYREQUESTED){
- HYAMNMAIL NewMsgsPtr=NULL;
- for(NewMsgsPtr=(HYAMNMAIL)NewMails;NewMsgsPtr!=NULL;NewMsgsPtr=NewMsgsPtr->Next){
- if (!strcmp(MsgQueuePtr->ID,NewMsgsPtr->ID)){
- char accstatus[512];
- sprintf(accstatus,Translate("Reading body %s"),NewMsgsPtr->ID);
- SetAccountStatus(ActualAccount,accstatus);
- DataRX=MyClient->Top(MsgQueuePtr->Number,100);
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Reading body>\n");
- DebugLog(DecodeFile,"<Header>%s</Header>\n",DataRX);
- #endif
- if(DataRX!=NULL)
- {
- Temp=DataRX;
- while((Temp<DataRX+MyClient->NetClient->Rcv) && (WS(Temp) || ENDLINE(Temp))) Temp++;
-
- if(OKLINE(DataRX))
- for(Temp=DataRX;(Temp<DataRX+MyClient->NetClient->Rcv) && (!ENDLINE(Temp));Temp++);
- while((Temp<DataRX+MyClient->NetClient->Rcv) && ENDLINE(Temp)) Temp++;
- }
- else
- continue;
- //delete all the headers of the old mail MsgQueuePtr->MailData->TranslatedHeader
- struct CMimeItem *TH = MsgQueuePtr->MailData->TranslatedHeader;
- if (TH) for(;MsgQueuePtr->MailData->TranslatedHeader!=NULL;)
- {
- TH=TH->Next;
- if(MsgQueuePtr->MailData->TranslatedHeader->name!=NULL)
- delete[] MsgQueuePtr->MailData->TranslatedHeader->name;
- if(MsgQueuePtr->MailData->TranslatedHeader->value!=NULL)
- delete[] MsgQueuePtr->MailData->TranslatedHeader->value;
- delete MsgQueuePtr->MailData->TranslatedHeader;
- MsgQueuePtr->MailData->TranslatedHeader=TH;
- }
-
- TranslateHeader(Temp,MyClient->NetClient->Rcv-(Temp-DataRX),&MsgQueuePtr->MailData->TranslatedHeader);
-
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Reading body>\n");
- #endif
- MsgQueuePtr->Flags|=YAMN_MSG_BODYRECEIVED;
-
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- break;
- }
- }
- }
- }
-
- SynchroMessages(ActualAccount,(HYAMNMAIL *)&ActualAccount->Mails,NULL,(HYAMNMAIL *)&NewMails,NULL); //we get only new mails on server!
-// NewMails=NULL;
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write done\n");
- #endif
- MsgsWriteDone(ActualAccount);
- for(MsgQueuePtr=(HYAMNMAIL)ActualAccount->Mails;MsgQueuePtr!=NULL;MsgQueuePtr=MsgQueuePtr->Next){
- if ((MsgQueuePtr->Flags&YAMN_MSG_BODYREQUESTED) && (MsgQueuePtr->Flags&YAMN_MSG_BODYRECEIVED)){
- MsgQueuePtr->Flags&=~YAMN_MSG_BODYREQUESTED;
- if (MsgQueuePtr->MsgWindow){
- SendMessage(MsgQueuePtr->MsgWindow,WM_YAMN_CHANGECONTENT,0,0);
- }
- }
- }
-
- for(msgs=0,MsgQueuePtr=NewMails;MsgQueuePtr!=NULL;MsgQueuePtr=MsgQueuePtr->Next,msgs++); //get number of new mails
-
- try
- {
- char accstatus[512];
-
- for(i=0,MsgQueuePtr=NewMails;MsgQueuePtr!=NULL;i++)
- {
- BOOL autoretr = (ActualAccount->Flags & YAMN_ACC_BODY)!=0;
- DataRX=MyClient->Top(MsgQueuePtr->Number,autoretr?100:0);
- sprintf(accstatus,Translate("Reading new mail messages (%d%% done)"),100*i/msgs);
- SetAccountStatus(ActualAccount,accstatus);
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<New mail>\n");
- DebugLog(DecodeFile,"<Header>%s</Header>\n",DataRX);
- #endif
- if(DataRX!=NULL)
- {
- Temp=DataRX;
- while((Temp<DataRX+MyClient->NetClient->Rcv) && (WS(Temp) || ENDLINE(Temp))) Temp++;
-
- if(OKLINE(DataRX))
- for(Temp=DataRX;(Temp<DataRX+MyClient->NetClient->Rcv) && (!ENDLINE(Temp));Temp++);
- while((Temp<DataRX+MyClient->NetClient->Rcv) && ENDLINE(Temp)) Temp++;
- }
- else
- continue;
-
- TranslateHeader(Temp,MyClient->NetClient->Rcv-(Temp-DataRX),&MsgQueuePtr->MailData->TranslatedHeader);
-
-
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</New mail>\n");
- #endif
- MsgQueuePtr->Flags|=YAMN_MSG_NORMALNEW;
- if (autoretr) MsgQueuePtr->Flags|=YAMN_MSG_BODYRECEIVED;
-
- //We are going to filter mail. Warning!- we must not be in read access neither write access to mails when calling this service
- //This is done, because the "NewMails" queue is not synchronised. It is because it is new queue. Only this thread uses new queue yet, it is not
- //connected to account mail queue.
- // CallService(MS_YAMN_FILTERMAIL,(WPARAM)ActualAccount,(LPARAM)MsgQueuePtr);
- FilterMailSvc((WPARAM)ActualAccount,(LPARAM)MsgQueuePtr);
-
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
-
- //MsgQueuePtr->MailData->Body=MyClient->Retr(MsgQueuePtr->Number);
-
- MsgQueuePtr=MsgQueuePtr->Next;
-
- }
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</--------Account checking-------->\n");
- #endif
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0!=MsgsWaitToWrite(ActualAccount))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait failed\n");
- #endif
- throw (DWORD)ActualAccount->SystemError==EACC_STOPPED;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write enter\n");
- #endif
- if(ActualAccount->Mails==NULL)
- ActualAccount->Mails=NewMails;
- else
- {
- ActualAccount->LastMail=ActualAccount->LastChecked;
- AppendQueue((HYAMNMAIL)ActualAccount->Mails,NewMails);
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write done\n");
- #endif
- MsgsWriteDone(ActualAccount);
-
- // we are going to delete mails having SPAM flag level3 and 4 (see m_mails.h) set
- {
- struct DeleteParam ParamToDeleteMails={YAMN_DELETEVERSION,INVALID_HANDLE_VALUE,ActualAccount,YAMNParam,(void *)POP3_DELETEFROMCHECK};
-
- // Delete mails from server. Here we should not be in write access for account's mails
- DeleteMailsPOP3(&ParamToDeleteMails);
- }
-
- // if there is no waiting thread for internet connection close it
- // else leave connection open
- if(0==SCGetNumber(ActualAccount->InternetQueries))
- {
- DataRX=MyClient->Quit();
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- MyClient->NetClient->Disconnect();
-
- SetAccountStatus(ActualAccount,Translate("Disconnected"));
- }
-
- UsingInternet=FALSE;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:InternetFreeEV-done\n");
- #endif
- SetEvent(ActualAccount->UseInternetFree);
-
- ActualAccount->LastSChecked=ActualAccount->LastChecked;
- ActualAccount->LastSynchronised=ActualAccount->LastChecked;
- }
- catch(...)
- {
- throw; //go to the main exception handling
- }
-
- {
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,ActualCopied.NFlags,ActualCopied.NNFlags,YAMNParam};
-
- if(CheckFlags & YAMN_FORCECHECK)
- Param.nnflags|=YAMN_ACC_POP; //if force check, show popup anyway and if mailbrowser was opened, do not close
- Param.nnflags|= YAMN_ACC_MSGP; //do not close browser if already open
- CallService(MS_YAMN_MAILBROWSER,(WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
- }
- SetContactStatus(ActualAccount,ActualAccount->isCounting?ID_STATUS_ONLINE:ID_STATUS_OFFLINE);
- }
- #ifdef DEBUG_COMM
- catch(DWORD ErrorCode)
- #else
- catch(DWORD)
- #endif
- {
- if(ActualAccount->Client.POP3Error==EPOP3_STOPPED)
- ActualAccount->SystemError=EACC_STOPPED;
- #ifdef DEBUG_COMM
- DebugLog(CommFile,"ERROR: %x\n",ErrorCode);
- #endif
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0==MsgsWaitToWrite(ActualAccount))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write enter\n");
- #endif
- ActualAccount->LastChecked=now;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write done\n");
- #endif
- MsgsWriteDone(ActualAccount);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"CheckPOP3:ActualAccountMsgsSO-write wait failed\n");
- #endif
-
- DeleteMIMEQueue(ActualAccount,NewMails);
-
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- switch(ActualAccount->SystemError)
- {
- case EACC_QUEUEALLOC:
- case EACC_STOPPED:
- ActualAccount->Client.NetClient->Disconnect();
- break;
- default:
- PostErrorProc(ActualAccount,YAMNParam,(DWORD)NULL,MyClient->SSL); //it closes internet connection too
- }
-
- if(UsingInternet) //if our thread still uses internet
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:InternetFreeEV-done\n");
- #endif
- SetEvent(ActualAccount->UseInternetFree);
- }
- SetContactStatus(ActualAccount,ID_STATUS_NA);
- }
- free(ActualCopied.ServerName);
- free(ActualCopied.ServerLogin);
- free(ActualCopied.ServerPasswd);
- #ifdef DEBUG_COMM
- DebugLog(CommFile,"</--------Communication-------->\n");
- #endif
-// WriteAccounts();
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
- #endif
- SCDec(ActualAccount->UsingThreads);
- return 0;
-}
-
-DWORD WINAPI DeleteMailsPOP3(struct DeleteParam *WhichTemp)
-{
- HPOP3ACCOUNT ActualAccount;
- LPVOID YAMNParam;
- UINT_PTR POP3PluginParam;
- CPop3Client *MyClient;
- HYAMNMAIL DeleteMails,NewMails=NULL,MsgQueuePtr;
- char* DataRX=NULL;
- int mboxsize,msgs,i;
- BOOL UsingInternet=FALSE;
- struct {
- char *ServerName;
- DWORD ServerPort;
- char *ServerLogin;
- char *ServerPasswd;
- DWORD Flags;
- DWORD NFlags;
- DWORD NNFlags;
- } ActualCopied;
-
- //First, we should compare our version of DeleteParam structure, but here it is not needed, because YAMN and internal plugin
- //have the same version. But your plugin should do that in this way:
- // if(((struct DeleteParam *)WhichTemp)->Ver!=YAMN_DELETEVERSION)
- // {
- // SetEvent(((struct DeleteParam *)WhichTemp)->ThreadRunningEV); //don't forget to unblock YAMN
- // return (DWORD)-1; //ok, but we should return value.
- // //When our plugin returns e.g. 0xFFFFFFFF (this is only our plugin value, YAMN does nothing with return value,
- // //but only tests if it is nonzero. If yes, it calls GetErrorStringFcn), we know problem occured in YAMN incompatibility
- // //and then we can in our GetErrorStringFcn e.g. return string "Uncompatible version of YAMN".
- // }
-
- ActualAccount=(HPOP3ACCOUNT)((struct DeleteParam *)WhichTemp)->AccountParam; //copy address of structure from calling thread to stack of this thread
- YAMNParam=((struct DeleteParam *)WhichTemp)->BrowserParam;
- POP3PluginParam=(UINT_PTR)((struct DeleteParam *)WhichTemp)->CustomParam;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:Incrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCInc(ActualAccount->UsingThreads);
- if(INVALID_HANDLE_VALUE!=WhichTemp->ThreadRunningEV)
- SetEvent(WhichTemp->ThreadRunningEV);
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0!=WaitToRead(ActualAccount))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountSO-read wait failed\n");
-#endif
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCDec(ActualAccount->UsingThreads);
- return 0;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountSO-read enter\n");
-#endif
- if(NULL==(DeleteMails=(HYAMNMAIL)CreateNewDeleteQueue((HYAMNMAIL)ActualAccount->Mails))) //if there's no mail for deleting, return
- {
- if(POP3_DELETEFROMCHECK!=POP3PluginParam) //We do not wait for free internet when calling from SynchroPOP3. It is because UseInternetFree is blocked
- {
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,YAMN_ACC_MSGP,YAMN_ACC_MSGP,YAMNParam}; //Just update the window
-
- CallService(MS_YAMN_MAILBROWSER,(WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountSO-read done\n");
-#endif
- ReadDone(ActualAccount);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCDec(ActualAccount->UsingThreads);
-
- return NO_MAIL_FOR_DELETE;
- }
- MyClient=&(ActualAccount->Client);
-
-//Now, copy all needed information about account to local variables, so ActualAccount is not blocked in read mode during all connection process, which can last for several minutes.
- ActualCopied.ServerName=_strdup(ActualAccount->Server->Name);
- ActualCopied.ServerPort=ActualAccount->Server->Port;
- ActualCopied.Flags=ActualAccount->Flags;
- ActualCopied.ServerLogin=_strdup(ActualAccount->Server->Login);
- ActualCopied.ServerPasswd=_strdup(ActualAccount->Server->Passwd);
- ActualCopied.NFlags=ActualAccount->NewMailN.Flags;
- ActualCopied.NNFlags=ActualAccount->NoNewMailN.Flags;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountSO-read done\n");
-#endif
- ReadDone(ActualAccount);
-
- SCInc(ActualAccount->InternetQueries); //This is POP3-internal SCOUNTER, we set another thread wait for this account to be connected to inet
- if(POP3_DELETEFROMCHECK!=POP3PluginParam) //We do not wait for free internet when calling from SynchroPOP3. It is because UseInternetFree is blocked
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:InternetFreeEV-wait\n");
-#endif
- WaitForSingleObject(ActualAccount->UseInternetFree,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:InternetFreeEV-enter\n");
-#endif
- }
- SCDec(ActualAccount->InternetQueries);
- UsingInternet=TRUE;
-
- try
- {
- SetContactStatus(ActualAccount,ID_STATUS_OCCUPIED);
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"<--------Communication-------->\n");
-#endif
- if((MyClient->NetClient==NULL) || !MyClient->NetClient->Connected())
- {
- SetAccountStatus(ActualAccount,Translate("Connecting to server"));
-
- DataRX=MyClient->Connect(ActualCopied.ServerName,ActualCopied.ServerPort,ActualCopied.Flags & YAMN_ACC_SSL23,ActualCopied.Flags & YAMN_ACC_NOTLS);
-
- char *timestamp=NULL;
- if(DataRX!=NULL) {
- if(ActualAccount->Flags & YAMN_ACC_APOP) {
- char *lpos=strchr(DataRX,'<');
- char *rpos=strchr(DataRX,'>');
- if(lpos && rpos && rpos>lpos) {
- int sz=(int)(rpos-lpos+2);
- timestamp=new char[sz];
- memcpy(timestamp, lpos, sz-1);
- timestamp[sz-1]='\0';
- }
- }
- free(DataRX);
- DataRX=NULL;
- }
- SetAccountStatus(ActualAccount,Translate("Entering POP3 account"));
-
- if(ActualAccount->Flags & YAMN_ACC_APOP)
- {
- DataRX=MyClient->APOP(ActualCopied.ServerLogin,ActualCopied.ServerPasswd,timestamp);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- delete[] timestamp;
- } else {
- DataRX=MyClient->User(ActualCopied.ServerLogin);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- DataRX=MyClient->Pass(ActualCopied.ServerPasswd);
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- }
- }
-
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<--------Deleting requested mails-------->\n");
-#endif
- if(POP3_DELETEFROMCHECK!=POP3PluginParam) //We do not need to get mails on server as we have already it from check function
- {
- SetAccountStatus(ActualAccount,Translate("Deleting requested mails"));
-
- DataRX=MyClient->Stat();
-
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting stat>\n");
-#endif
- ExtractStat(DataRX,MyClient->NetClient->Rcv,&mboxsize,&msgs);
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<MailBoxSize>%d</MailBoxSize>\n",mboxsize);
- DebugLog(DecodeFile,"<Msgs>%d</Msgs>\n",msgs);
- DebugLog(DecodeFile,"</Extracting stat>\n");
-#endif
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- for(i=0;i<msgs;i++)
- {
- if(!i)
- MsgQueuePtr=NewMails=(HYAMNMAIL)CallService(MS_YAMN_CREATEACCOUNTMAIL,(WPARAM)ActualAccount,(LPARAM)YAMN_MAILVERSION);
- else
- {
- MsgQueuePtr->Next=(HYAMNMAIL)CallService(MS_YAMN_CREATEACCOUNTMAIL,(WPARAM)ActualAccount,(LPARAM)YAMN_MAILVERSION);
- MsgQueuePtr=MsgQueuePtr->Next;
- }
- if(MsgQueuePtr==NULL)
- {
- ActualAccount->SystemError=EPOP3_QUEUEALLOC;
- throw (DWORD)ActualAccount->SystemError;
- }
- }
-
- if(msgs)
- {
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Extracting UIDL>\n");
-#endif
- DataRX=MyClient->Uidl();
- ExtractUIDL(DataRX,MyClient->NetClient->Rcv,NewMails);
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</Extracting UIDL>\n");
-#endif
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
-// we get "new mails" on server (NewMails will contain all mails on server not found in DeleteMails)
-// but also in DeleteMails we get only those, which are still on server with their responsable numbers
- SynchroMessages(ActualAccount,(HYAMNMAIL *)&DeleteMails,NULL,(HYAMNMAIL *)&NewMails,NULL);
- }
- }
- else
- SetAccountStatus(ActualAccount,Translate("Deleting spam"));
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountMsgsSO-write wait\n");
-#endif
- if(WAIT_OBJECT_0!=MsgsWaitToWrite(ActualAccount))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountMsgsSO-write wait failed\n");
-#endif
- throw (DWORD)EACC_STOPPED;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountMsgsSO-write enter\n");
-#endif
- if(msgs || POP3_DELETEFROMCHECK==POP3PluginParam)
- {
- try
- {
- HYAMNMAIL Temp;
-
- for(i=0,MsgQueuePtr=DeleteMails;MsgQueuePtr!=NULL;i++)
- {
- if(!(MsgQueuePtr->Flags & YAMN_MSG_VIRTUAL)) //of course we can only delete real mails, not virtual
- {
- DataRX=MyClient->Dele(MsgQueuePtr->Number);
- Temp=MsgQueuePtr->Next;
- if(POP3_FOK==MyClient->AckFlag) //if server answers that mail was deleted
- {
- DeleteMIMEMessage((HYAMNMAIL *)&DeleteMails,MsgQueuePtr);
- HYAMNMAIL DeletedMail=FindMIMEMessageByID((HYAMNMAIL)ActualAccount->Mails,MsgQueuePtr->ID);
- if((MsgQueuePtr->Flags & YAMN_MSG_MEMDELETE)) //if mail should be deleted from memory (or disk)
- {
- DeleteMIMEMessage((HYAMNMAIL *)&ActualAccount->Mails,DeletedMail); //remove from queue
- CallService(MS_YAMN_DELETEACCOUNTMAIL,(WPARAM)POP3Plugin,(LPARAM)DeletedMail);
- }
- else //else mark it only as "deleted mail"
- {
- DeletedMail->Flags |= (YAMN_MSG_VIRTUAL | YAMN_MSG_DELETED);
- DeletedMail->Flags &= ~(YAMN_MSG_NEW | YAMN_MSG_USERDELETE | YAMN_MSG_AUTODELETE); //clear "new mail"
- }
- delete MsgQueuePtr->MailData;
- delete[] MsgQueuePtr->ID;
- delete MsgQueuePtr;
- }
- MsgQueuePtr=Temp;
-
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- }
- else
- MsgQueuePtr=MsgQueuePtr->Next;
- }
- }
- catch(...) //if any exception in the code where we have write-access to account occured, don't forget to leave write-access
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountMsgsSO-write done\n");
-#endif
- MsgsWriteDone(ActualAccount);
- throw; //and go to the main exception handling
- }
-
- if(NewMails!=NULL)
-// in ActualAccount->Mails we have all mails stored before calling this function
-// in NewMails we have all mails not found in DeleteMails (in other words: we performed new ID checking and we
-// stored all mails found on server, then we deleted the ones we wanted to delete in this function
-// and NewMails queue now contains actual state of mails on server). But we will not use NewMails as actual state, because NewMails does not contain header data (subject, from...)
-// We perform deleting from ActualAccount->Mails: we remove from original queue (ActualAccount->Mails) all deleted mails
- SynchroMessages(ActualAccount,(HYAMNMAIL *)&ActualAccount->Mails,NULL,(HYAMNMAIL *)&NewMails,NULL);
-// Now ActualAccount->Mails contains all mails when calling this function except the ones, we wanted to delete (these are in DeleteMails)
-// And in NewMails we have new mails (if any)
- else if(POP3_DELETEFROMCHECK!=POP3PluginParam)
- {
- DeleteMIMEQueue(ActualAccount,(HYAMNMAIL)ActualAccount->Mails);
- ActualAccount->Mails=NULL;
- }
- }
- else
- {
- DeleteMIMEQueue(ActualAccount,(HYAMNMAIL)ActualAccount->Mails);
- ActualAccount->Mails=NULL;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:ActualAccountMsgsSO-write done\n");
-#endif
- MsgsWriteDone(ActualAccount);
-#ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"</--------Deleting requested mails-------->\n");
-#endif
-
-// TODO: now, we have in NewMails new mails. If NewMails is not NULL, we found some new mails, so Checking for new mail should be performed
-// now, we do not call CheckPOP3
-
-// if there is no waiting thread for internet connection close it
-// else leave connection open
-// if this functin was called from SynchroPOP3, then do not try to disconnect
- if(POP3_DELETEFROMCHECK!=POP3PluginParam)
- {
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,ActualCopied.NFlags,YAMN_ACC_MSGP,YAMNParam};
-
- CallService(MS_YAMN_MAILBROWSER,(WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
-
- if(0==SCGetNumber(ActualAccount->InternetQueries))
- {
- DataRX=MyClient->Quit();
- if(DataRX!=NULL)
- free(DataRX);
- DataRX=NULL;
- MyClient->NetClient->Disconnect();
-
- SetAccountStatus(ActualAccount,Translate("Disconnected"));
- }
-
- UsingInternet=FALSE;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:InternetFreeEV-done\n");
-#endif
- SetEvent(ActualAccount->UseInternetFree);
- }
- SetContactStatus(ActualAccount,ActualAccount->isCounting?ID_STATUS_ONLINE:ID_STATUS_OFFLINE);
- }
-#ifdef DEBUG_COMM
- catch(DWORD ErrorCode)
-#else
- catch(DWORD)
-#endif
- {
- if(ActualAccount->Client.POP3Error==EPOP3_STOPPED)
- ActualAccount->SystemError=EACC_STOPPED;
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"ERROR %x\n",ErrorCode);
-#endif
- if(DataRX!=NULL)
- free(DataRX);
- switch(ActualAccount->SystemError)
- {
- case EACC_QUEUEALLOC:
- case EACC_STOPPED:
- ActualAccount->Client.NetClient->Disconnect();
- break;
- default:
- PostErrorProc(ActualAccount,YAMNParam,POP3PluginParam,MyClient->SSL); //it closes internet connection too
- }
-
- if(UsingInternet && (POP3_DELETEFROMCHECK!=POP3PluginParam)) //if our thread still uses internet and it is needed to release internet
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"CheckPOP3:InternetFreeEV-done\n");
-#endif
- SetEvent(ActualAccount->UseInternetFree);
- }
- }
-
- free(ActualCopied.ServerName);
- free(ActualCopied.ServerLogin);
- free(ActualCopied.ServerPasswd);
-
- DeleteMIMEQueue(ActualAccount,NewMails);
- DeleteMIMEQueue(ActualAccount,DeleteMails);
-
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"</--------Communication-------->\n");
-#endif
-// WriteAccounts();
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"DeleteMailsPOP3:Decrementing \"using threads\" %x (account %x)\n",ActualAccount->UsingThreads,ActualAccount);
-#endif
- SCDec(ActualAccount->UsingThreads);
- return 0;
-}
-
-void ExtractStat(char *stream,int len,int *mboxsize,int *mails)
-{
- char *finder=stream;
- while(WS(finder) || ENDLINE(finder)) finder++;
- if(ACKLINE(finder))
- {
- while(!WS(finder)) finder++;
- while(WS(finder)) finder++;
- }
- if(1!=sscanf(finder,"%d",mails))
- throw (DWORD)EPOP3_STAT;
- while(!WS(finder)) finder++;
- while(WS(finder)) finder++;
- if(1!=sscanf(finder,"%d",mboxsize))
- throw (DWORD)EPOP3_STAT;
-}
-void ExtractMail(char *stream,int len,HYAMNMAIL queue)
-{
- char *finder=stream;
- char *finderend;
- int msgnr,i;
- HYAMNMAIL queueptr=queue;
-
- while(WS(finder) || ENDLINE(finder)) finder++;
- while(!ACKLINE(finder)) finder++;
- while(!ENDLINE(finder)) finder++; //now we at the end of first ack line
- while(finder<=(stream+len))
- {
- while(ENDLINE(finder)) finder++; //go to the new line
- if(DOTLINE(finder+1)) //at the end of stream
- break;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Message>\n");
- #endif
- while(WS(finder)) finder++; //jump whitespace
- if(1!=sscanf(finder,"%d",&msgnr))
- throw (DWORD)EPOP3_UIDL;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Nr>%d</Nr>\n",msgnr);
- #endif
-// for(i=1,queueptr=queue;(queueptr->Next!=NULL) && (i<msgnr);queueptr=queueptr->Next,i++);
-// if(i!=msgnr)
-// throw (DWORD)EPOP3_UIDL;
- while(!WS(finder)) finder++; //jump characters
- while(WS(finder)) finder++; //jump whitespace
- finderend=finder+1;
- while(!WS(finderend) && !ENDLINE(finderend)) finderend++;
- queueptr->ID=new char[finderend-finder+1];
- for(i=0;finder!=finderend;finder++,i++)
- queueptr->MailData->Body[i]=*finder;
- queueptr->MailData->Body[i]=0; //ends string
- queueptr->Number=msgnr;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<ID>%s</ID>\n",queueptr->MailData->Body);
- DebugLog(DecodeFile,"</Message>\n");
- #endif
- queueptr=queueptr->Next;
- while(!ENDLINE(finder)) finder++;
- }
-}
-
-void ExtractUIDL(char *stream,int len,HYAMNMAIL queue)
-{
- char *finder=stream;
- char *finderend;
- int msgnr,i;
- HYAMNMAIL queueptr=queue;
-
- while(WS(finder) || ENDLINE(finder)) finder++;
- while(!ACKLINE(finder)) finder++;
- while(!ENDLINE(finder)) finder++; //now we at the end of first ack line
- while(finder<=(stream+len))
- {
- while(ENDLINE(finder)) finder++; //go to the new line
- if(DOTLINE(finder+1)) //at the end of stream
- break;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Message>\n");
- #endif
- while(WS(finder)) finder++; //jump whitespace
- if(1!=sscanf(finder,"%d",&msgnr))
- throw (DWORD)EPOP3_UIDL;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Nr>%d</Nr>\n",msgnr);
- #endif
-// for(i=1,queueptr=queue;(queueptr->Next!=NULL) && (i<msgnr);queueptr=queueptr->Next,i++);
-// if(i!=msgnr)
-// throw (DWORD)EPOP3_UIDL;
- while(!WS(finder)) finder++; //jump characters
- while(WS(finder)) finder++; //jump whitespace
- finderend=finder+1;
- while(!WS(finderend) && !ENDLINE(finderend)) finderend++;
- queueptr->ID=new char[finderend-finder+1];
- for(i=0;finder!=finderend;finder++,i++)
- queueptr->ID[i]=*finder;
- queueptr->ID[i]=0; //ends string
- queueptr->Number=msgnr;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<ID>%s</ID>\n",queueptr->ID);
- DebugLog(DecodeFile,"</Message>\n");
- #endif
- queueptr=queueptr->Next;
- while(!ENDLINE(finder)) finder++;
- }
-}
-
-void ExtractList(char *stream,int len,HYAMNMAIL queue)
-{
- char *finder=stream;
- char *finderend;
- int msgnr,i;
- HYAMNMAIL queueptr;
-
- while(WS(finder) || ENDLINE(finder)) finder++;
- while(!ACKLINE(finder)) finder++;
- while(!ENDLINE(finder)) finder++; //now we at the end of first ack line
- while(finder<=(stream+len))
- {
- while(ENDLINE(finder)) finder++; //go to the new line
- if(DOTLINE(finder+1)) //at the end of stream
- break;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Message>\n",NULL,0);
- #endif
- while(WS(finder)) finder++; //jump whitespace
- if(1!=sscanf(finder,"%d",&msgnr)) //message nr.
- throw (DWORD)EPOP3_LIST;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Nr>%d</Nr>\n",msgnr);
- #endif
-
- for(i=1,queueptr=queue;(queueptr->Next!=NULL) && (i<msgnr);queueptr=queueptr->Next,i++);
- if(i!=msgnr)
- throw (DWORD)EPOP3_LIST;
- while(!WS(finder)) finder++; //jump characters
- while(WS(finder)) finder++; //jump whitespace
- finderend=finder+1;
- if(1!=sscanf(finder,"%d",&queueptr->MailData->Size))
- throw (DWORD)EPOP3_LIST;
- #ifdef DEBUG_DECODE
- DebugLog(DecodeFile,"<Nr>%d</Nr>\n",queueptr->MailData->Size);
- #endif
- while(!ENDLINE(finder)) finder++;
- }
-}
-
-WCHAR* WINAPI GetErrorString(DWORD Code)
-{
- static char *POP3Errors[]=
- {
- "Memory allocation error.", //memory allocation
- "Account is about to be stopped.", //stop account
- "Cannot connect to POP3 server.",
- "Cannot allocate memory for received data.",
- "Cannot login to POP3 server.",
- "Bad user or password.",
- "Server does not support APOP authorization.",
- "Error while executing POP3 command.",
- "Error while executing POP3 command.",
- "Error while executing POP3 command.",
- };
-
- static char *NetlibErrors[]=
- {
- "Cannot connect to server with NetLib.",
- "Cannot send data.",
- "Cannot receive data.",
- "Cannot allocate memory for received data.",
- };
-
- static char *SSLErrors[]=
- {
- "OpenSSL not loaded.",
- "Windows socket 2.0 init failed.",
- "DNS lookup error.",
- "Error while creating base socket.",
- "Error connecting to server with socket.",
- "Error while creating SSL structure.",
- "Error connecting socket with SSL.",
- "Server rejected connection with SSL.",
- "Cannot write SSL data.",
- "Cannot read SSL data.",
- "Cannot allocate memory for received data.",
- };
-
- char *ErrorStringA=new char[ERRORSTR_MAXLEN];
- WCHAR *ErrorStringW=new WCHAR[ERRORSTR_MAXLEN];
- POP3_ERRORCODE *ErrorCode=(POP3_ERRORCODE *)(UINT_PTR)Code;
-
- sprintf(ErrorStringA,Translate("Error %d-%d-%d-%d:"),ErrorCode->AppError,ErrorCode->POP3Error,ErrorCode->NetError,ErrorCode->SystemError);
- if(ErrorCode->POP3Error)
- sprintf(ErrorStringA,"%s\n%s",ErrorStringA,Translate(POP3Errors[ErrorCode->POP3Error-1]));
- if(ErrorCode->NetError)
- if(ErrorCode->SSL)
- sprintf(ErrorStringA,"%s\n%s",ErrorStringA,Translate(SSLErrors[ErrorCode->NetError-1]));
- else
- sprintf(ErrorStringA,"%s\n%s",ErrorStringA,Translate(NetlibErrors[ErrorCode->NetError-4]));
-
-#ifdef DEBUG_COMM
- DebugLog(CommFile,"%s\n",ErrorStringA);
-#endif
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,ErrorStringA,-1,ErrorStringW,(int)strlen(ErrorStringA)+1);
- delete[] ErrorStringA; //we delete ErrorStringA, used to get error string, because Translate() doesn't works in unicode
- delete ErrorCode; //now we can delete ErrorCode, that will not be used anymore
- return ErrorStringW;
-}
-
-void WINAPI DeleteErrorString(LPVOID String)
-{
- delete (char *)String;
-}
diff --git a/yamn/proto/pop3/pop3comm.h b/yamn/proto/pop3/pop3comm.h
deleted file mode 100644
index 0d30e5d..0000000
--- a/yamn/proto/pop3/pop3comm.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef __POP3COMM_H
-#define __POP3COMM_H
-
-#include <windows.h>
-#include "pop3.h"
-
-#include "../../m_protoplugin.h"
-//We can use synchro.h because this is internal plugin. If you use external plugin,
-//and you want to use SO for your plugin, you can use YAMN's SO.
-//All you need is to include synchro.h and use YAMN's exported synchronization functions.
-#include "../../m_synchro.h"
-
-//For mail exported functions defintions
-#include "../../mails/m_mails.h"
-
-#include "../../debug.h"
-
-#define POP3_FILEVERSION 1 //Version of aditional information stored in book file
-
-typedef struct CPOP3Account: public CAccount
-{
-// We can use SCOUNTER structure, because this is internal plugin.
-// This SO is used to determine if any POP3 account is in "write access" mode
- static PSCOUNTER AccountWriterSO;
-
-// It is usefull to have client structure in account. With this structure we have access to account's socket.
-// This is related to InternetQueries and UseInternetFree
-// This member should be synchronized with UseInternetFree
- class CPop3Client Client;
-
-// This member is usefull for MIME headers. It is default codepage, if no other codepage found
- WORD CP; //access only through AccountAccessSO
-
-// In this memeber last error code is stored
- DWORD SystemError; //access through UseInternetFree
-
-// We use only counter from this object and it is # of threads waiting to work on internet.
-// We use event UseInternet to access critical sections.
-// It is usefull in 2 ways: we have mutual exclusion that only one thread works with account on internet.
-// Thread, which has done its work with account on internet can close socket, but it is not needed, when any other
-// thread wants to work (e.g. we have deleted mails, but when deleting, another thread wants to check new mail, so
-// we delete all needed mails and check if there's thread that wants to work. If yes, we do not need to quit session,
-// we leave socket open, and leave internet. Another thread then start checking and does not connect, does not send
-// user and password... because socket is open- it continues)
- PSCOUNTER InternetQueries;
- HANDLE UseInternetFree;
-
- CPOP3Account();
- ~CPOP3Account();
-
-} POP3ACCOUNT,*HPOP3ACCOUNT;
-
-typedef struct POP3LayeredError
-{
- BOOL SSL;
- DWORD AppError;
- DWORD POP3Error;
- DWORD NetError;
- DWORD SystemError;
-} POP3_ERRORCODE,*PPOP3_ERRORCODE;
-
-struct YAMNExportedFcns
-{
- YAMN_SETPROTOCOLPLUGINFCNIMPORTFCN SetProtocolPluginFcnImportFcn;
- YAMN_WAITTOWRITEFCN WaitToWriteFcn;
- YAMN_WRITEDONEFCN WriteDoneFcn;
- YAMN_WAITTOREADFCN WaitToReadFcn;
- YAMN_READDONEFCN ReadDoneFcn;
- YAMN_SCMANAGEFCN SCGetNumberFcn;
- YAMN_SCMANAGEFCN SCIncFcn;
- YAMN_SCMANAGEFCN SCDecFcn;
- YAMN_SETSTATUSFCN SetStatusFcn;
- YAMN_GETSTATUSFCN GetStatusFcn;
-};
-
-struct MailExportedFcns
-{
- YAMN_SYNCHROMIMEMSGSFCN SynchroMessagesFcn;
- YAMN_TRANSLATEHEADERFCN TranslateHeaderFcn;
- YAMN_APPENDQUEUEFCN AppendQueueFcn;
- YAMN_DELETEMIMEQUEUEFCN DeleteMessagesToEndFcn;
- YAMN_DELETEMIMEMESSAGEFCN DeleteMessageFromQueueFcn;
- YAMN_FINDMIMEMESSAGEFCN FindMessageByIDFcn;
- YAMN_CREATENEWDELETEQUEUEFCN CreateNewDeleteQueueFcn;
-};
-
-enum
-{
- EACC_QUEUEALLOC=1, //memory allocation
- EACC_STOPPED, //stop account
-};
-
-#define NO_MAIL_FOR_DELETE 1
-
-#define POP3_DELETEFROMCHECK 1
-
-#endif
diff --git a/yamn/proto/pop3/pop3opt.cpp b/yamn/proto/pop3/pop3opt.cpp
deleted file mode 100644
index ec748ac..0000000
--- a/yamn/proto/pop3/pop3opt.cpp
+++ /dev/null
@@ -1,1686 +0,0 @@
-/*
- * This code implements POP3 options window handling
- *
- * (c) majvan 2002-2003
-*/
-
-/*
-#include <tchar.h>
-#include <stdio.h>
-#include <windows.h>
-#include <winuser.h>
-#include <commctrl.h>
-#include "../../../../../SDK/headers_c/newpluginapi.h"
-//#include "../../../../random/utils/m_utils.h" //for window broadcasting
-#include "../../../../../SDK/headers_c/m_langpack.h"
-#include "../../../../../SDK/headers_c/m_options.h"
-#include "../../../../../SDK/headers_c/m_utils.h"
-#include "../../SDK/import/m_popup.h"
-#include "../../m_protoplugin.h"
-#include "../../m_synchro.h"
-#include "../../m_messages.h"
-#include "../../resources/resource.h"
-#include "../../m_yamn.h"
-#include "../../debug.h"
-*/
-#include "../../yamn.h"
-#include "../../main.h"
-#include "pop3comm.h"
-#include "pop3opt.h"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern PLUGINLINK *pluginLink;
-extern PYAMN_VARIABLES pYAMNVar;
-extern HYAMNPROTOPLUGIN POP3Plugin;
-extern struct YAMNExportedFcns *pYAMNFcn;
-extern YAMN_VARIABLES YAMNVar;
-
-extern HICON hYamnIcons[];
-
-extern DWORD WINAPI WritePOP3Accounts();
-extern DWORD HotKeyThreadID;
-extern LPCRITICAL_SECTION PluginRegCS;
-//From filterplugin.cpp
-extern PYAMN_FILTERPLUGINQUEUE FirstFilterPlugin;
-//From protoplugin.cpp
-extern PYAMN_PROTOPLUGINQUEUE FirstProtoPlugin;
-//for XP themes
-extern BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-
-BOOL Check0,Check1,Check2,Check3,Check4,Check5,Check6,Check7,Check8,Check9;
-TCHAR DlgInput[MAX_PATH];
-
-//Fuction took from Miranda
-void WordToModAndVk(WORD w,UINT *mod,UINT *vk);
-
-//Initializes YAMN general options for Miranda
-int YAMNOptInitSvc(WPARAM wParam,LPARAM lParam);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-void WordToModAndVk(WORD w,UINT *mod,UINT *vk)
-{
- *mod=0;
- if(HIBYTE(w)&HOTKEYF_CONTROL) *mod|=MOD_CONTROL;
- if(HIBYTE(w)&HOTKEYF_SHIFT) *mod|=MOD_SHIFT;
- if(HIBYTE(w)&HOTKEYF_ALT) *mod|=MOD_ALT;
- if(HIBYTE(w)&HOTKEYF_EXT) *mod|=MOD_WIN;
- *vk=LOBYTE(w);
-}
-
-
-INT_PTR CALLBACK DlgProcYAMNOpt(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hDlg);
- CheckDlgButton(hDlg,IDC_CHECKTTB,DBGetContactSettingByte(NULL,YAMN_DBMODULE,YAMN_TTBFCHECK,1) ? BST_CHECKED : BST_UNCHECKED);
- SendDlgItemMessage(hDlg,IDC_HKFORCE,HKM_SETHOTKEY,DBGetContactSettingWord(NULL,YAMN_DBMODULE,YAMN_HKCHECKMAIL,YAMN_DEFAULTHK),0);
- CheckDlgButton(hDlg,IDC_LONGDATE,(optDateTime&SHOWDATELONG) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_SMARTDATE,(optDateTime&SHOWDATENOTODAY) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_NOSECONDS,(optDateTime&SHOWDATENOSECONDS) ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_MAINMENU,DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_SHOWMAINMENU, 1));
- CheckDlgButton(hDlg,IDC_YAMNASPROTO,DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_SHOWASPROTO, 1));
- CheckDlgButton(hDlg,IDC_CLOSEONDELETE,DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_CLOSEDELETE, 0));
-
- break;
- case WM_COMMAND:
- {
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- case IDC_YAMNASPROTO:
- case IDC_MAINMENU:
- case IDC_CHECKTTB:
- case IDC_HKFORCE:
- case IDC_CLOSEONDELETE:
- case IDC_LONGDATE:
- case IDC_SMARTDATE:
- case IDC_NOSECONDS:
- SendMessage(GetParent(hDlg),PSM_CHANGED,0,0);
- break;
-
- }
- break;
- }
- case WM_NOTIFY:
- switch(((LPNMHDR)lParam)->idFrom)
- {
- case 0:
- switch(((LPNMHDR)lParam)->code)
- {
- case PSN_APPLY:
- {
- WORD ForceHotKey =(WORD)SendDlgItemMessage(hDlg,IDC_HKFORCE,HKM_GETHOTKEY,0,0);
- BYTE TTBFCheck =(BYTE)IsDlgButtonChecked(hDlg,IDC_CHECKTTB);
- BYTE MainMenu = (BYTE)IsDlgButtonChecked(hDlg,IDC_MAINMENU);
- BYTE CloseDelete = (BYTE)IsDlgButtonChecked(hDlg,IDC_CLOSEONDELETE);
- BYTE ShowAsProto = (BYTE)IsDlgButtonChecked(hDlg,IDC_YAMNASPROTO);
- UINT mod,vk;
-
- DBWriteContactSettingByte(NULL,YAMN_DBMODULE,YAMN_SHOWASPROTO,ShowAsProto);
- DBWriteContactSettingWord(NULL,YAMN_DBMODULE,YAMN_HKCHECKMAIL,ForceHotKey);
- DBWriteContactSettingByte(NULL,YAMN_DBMODULE,YAMN_TTBFCHECK,TTBFCheck);
- DBWriteContactSettingByte(NULL,YAMN_DBMODULE,YAMN_SHOWMAINMENU,MainMenu);
- DBWriteContactSettingByte(NULL,YAMN_DBMODULE,YAMN_CLOSEDELETE,CloseDelete);
- WordToModAndVk(ForceHotKey,&mod,&vk);
- PostThreadMessage(HotKeyThreadID,WM_YAMN_CHANGEHOTKEY,(WPARAM)mod,(LPARAM)vk);
-
- optDateTime = 0;
- if (IsDlgButtonChecked(hDlg,IDC_LONGDATE))optDateTime |= SHOWDATELONG;
- if (IsDlgButtonChecked(hDlg,IDC_SMARTDATE))optDateTime |= SHOWDATENOTODAY;
- if (IsDlgButtonChecked(hDlg,IDC_NOSECONDS))optDateTime |= SHOWDATENOSECONDS;
- DBWriteContactSettingByte(NULL,YAMN_DBMODULE,YAMN_DBTIMEOPTIONS,optDateTime);
- }
- }
- }
- break;
- }
-
- return FALSE;
-}
-
-INT_PTR CALLBACK DlgProcPluginOpt(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- switch(msg)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hDlg);
- break;
- case WM_COMMAND:
- {
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- case IDC_COMBOPLUGINS:
- if(wNotifyCode==CBN_SELCHANGE)
- {
- HWND hCombo=GetDlgItem(hDlg,IDC_COMBOPLUGINS);
- PYAMN_PROTOPLUGINQUEUE PParser;
- PYAMN_FILTERPLUGINQUEUE FParser;
- int index,id;
-
- if(CB_ERR==(index=SendMessage(hCombo,CB_GETCURSEL,0,0)))
- break;
- id=SendMessage(hCombo,CB_GETITEMDATA,(WPARAM)index,(LPARAM)0);
- EnterCriticalSection(PluginRegCS);
- for(PParser=FirstProtoPlugin;PParser!=NULL;PParser=PParser->Next)
- if(id==(INT_PTR)PParser->Plugin)
- {
- SetDlgItemText(hDlg,IDC_STVER,PParser->Plugin->PluginInfo->Ver);
- SetDlgItemText(hDlg,IDC_STDESC,PParser->Plugin->PluginInfo->Description == NULL ? "" : PParser->Plugin->PluginInfo->Description);
- SetDlgItemText(hDlg,IDC_STCOPY,PParser->Plugin->PluginInfo->Copyright == NULL ? "" : PParser->Plugin->PluginInfo->Copyright);
- SetDlgItemText(hDlg,IDC_STMAIL,PParser->Plugin->PluginInfo->Email == NULL ? "" : PParser->Plugin->PluginInfo->Email);
- SetDlgItemText(hDlg,IDC_STWWW,PParser->Plugin->PluginInfo->WWW == NULL ? "" : PParser->Plugin->PluginInfo->WWW);
- break;
- }
- for(FParser=FirstFilterPlugin;FParser!=NULL;FParser=FParser->Next)
- if(id==(INT_PTR)FParser->Plugin)
- {
- SetDlgItemText(hDlg,IDC_STVER,FParser->Plugin->PluginInfo->Ver);
- SetDlgItemText(hDlg,IDC_STDESC,FParser->Plugin->PluginInfo->Description == NULL ? "" : FParser->Plugin->PluginInfo->Description);
- SetDlgItemText(hDlg,IDC_STCOPY,FParser->Plugin->PluginInfo->Copyright == NULL ? "" : FParser->Plugin->PluginInfo->Copyright);
- SetDlgItemText(hDlg,IDC_STMAIL,FParser->Plugin->PluginInfo->Email == NULL ? "" : FParser->Plugin->PluginInfo->Email);
- SetDlgItemText(hDlg,IDC_STWWW,FParser->Plugin->PluginInfo->WWW == NULL ? "" : FParser->Plugin->PluginInfo->WWW);
- break;
- }
- LeaveCriticalSection(PluginRegCS);
- }
- break;
- case IDC_STWWW:
- {
- char str[1024];
-
- GetDlgItemText(hDlg,IDC_STWWW,str,sizeof(str));
- CallService(MS_UTILS_OPENURL,1,(LPARAM)str);
- break;
- }
-
- }
- break;
- }
- case WM_SHOWWINDOW:
- if(TRUE==(BOOL)wParam)
- {
- PYAMN_PROTOPLUGINQUEUE PParser;
- PYAMN_FILTERPLUGINQUEUE FParser;
- int index;
-
- EnterCriticalSection(PluginRegCS);
- for(PParser=FirstProtoPlugin;PParser!=NULL;PParser=PParser->Next)
- {
- index=SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_ADDSTRING,0,(LPARAM)PParser->Plugin->PluginInfo->Name);
- index=SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_SETITEMDATA,(WPARAM)index,(LPARAM)PParser->Plugin);
- }
- for(FParser=FirstFilterPlugin;FParser!=NULL;FParser=FParser->Next)
- {
- index=SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_ADDSTRING,0,(LPARAM)FParser->Plugin->PluginInfo->Name);
- index=SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_SETITEMDATA,(WPARAM)index,(LPARAM)FParser->Plugin);
- }
-
- LeaveCriticalSection(PluginRegCS);
- SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_SETCURSEL,(WPARAM)0,(LPARAM)0);
- SendMessage(hDlg,WM_COMMAND,MAKELONG(IDC_COMBOPLUGINS,CBN_SELCHANGE),(LPARAM)NULL);
- break;
- }
- else //delete all items in combobox
- {
- int cbn=SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_GETCOUNT,(WPARAM)0,(LPARAM)0);
-
- for(int i=0;i<cbn;i++)
- SendDlgItemMessage(hDlg,IDC_COMBOPLUGINS,CB_DELETESTRING,(WPARAM)0,(LPARAM)0);
- break;
- }
- case WM_NOTIFY:
- break;
- }
-
- return FALSE;
-}
-
-
-int YAMNOptInitSvc(WPARAM wParam,LPARAM lParam)
-{
- OPTIONSDIALOGPAGE odp={0};
-
- odp.cbSize=sizeof(odp);
- odp.position=0x00000000;
- odp.hInstance=YAMNVar.hInst;
- odp.pszGroup=LPGEN("Network");
- odp.pszTitle=LPGEN("YAMN");
- odp.flags=ODPF_BOLDGROUPS;
-//insert YAMN options dialog
- //odp.pszTemplate=MAKEINTRESOURCEA(IDD_OPTIONS);
- //odp.pfnDlgProc=(DLGPROC)DlgOptionsProc;
- //CallService(MS_OPT_ADDPAGE,wParam,(LPARAM)&odp);
-
- odp.pszTab = LPGEN("Accounts");
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_POP3ACCOUNTOPT);
- odp.pfnDlgProc = DlgProcPOP3AccOpt;
- CallService(MS_OPT_ADDPAGE, wParam, (LPARAM) &odp);
-
- odp.pszTab = LPGEN("General");
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_YAMNOPT);
- odp.pfnDlgProc = DlgProcYAMNOpt;
- CallService(MS_OPT_ADDPAGE, wParam, (LPARAM) &odp);
-
- odp.pszTab = LPGEN("Plugins");
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_PLUGINOPT);
- odp.pfnDlgProc = DlgProcPluginOpt;
- CallService(MS_OPT_ADDPAGE, wParam, (LPARAM) &odp);
-
- if( ServiceExists(MS_POPUP_ADDPOPUPEX) )
- {
- odp.pszGroup=LPGEN("PopUps");
- odp.pszTab=LPGEN("YAMN");
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_POP3ACCOUNTPOPUP);
- odp.pfnDlgProc = DlgProcPOP3AccPopup;
- CallService(MS_OPT_ADDPAGE, wParam, (LPARAM) &odp);
- }
- return 0;
-}
-
-
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-BOOL DlgEnableAccountStatus(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST0),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST1),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST2),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST3),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST4),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST5),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST6),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST7),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST8),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST9),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST9),(BOOL)wParam);
- return TRUE;
-}
-BOOL DlgEnableAccountPopup(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKPOP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCOL),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPB),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPT),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_RADIOPOPN),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_RADIOPOP1),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNPOP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITNPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNCOL),(IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNB),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNT),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFPOP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITFPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFCOL),(IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFB),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFT),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKAPOP),(BOOL)wParam);
- return TRUE;
-}
-
-BOOL DlgEnableAccount(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- EnableWindow(GetDlgItem(hDlg,IDC_CHECK),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITSERVER),wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITNAME),wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITPORT),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITLOGIN),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITPASS),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITINTERVAL),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKSND),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKMSG),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKICO),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKAPP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKKBN),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNAPP),(IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITAPP),(IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITAPPPARAM),(IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNMSGP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFSND),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFMSG),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFICO),(BOOL)wParam);
- /*EnableWindow(GetDlgItem(hDlg,IDC_CHECKST0),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST1),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST2),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST3),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST4),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST5),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST6),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST7),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST8),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST9),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKST9),(BOOL)wParam);*/
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKSTART),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFORCE),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_COMBOCP),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_STTIMELEFT),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNRESET),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEFAULT),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNSTATUS),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKSSL),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNOTLS),(IsDlgButtonChecked(hDlg,IDC_CHECKSSL)==BST_UNCHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_AUTOBODY),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCONTACT),(BOOL)wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCONTACTNICK),(IsDlgButtonChecked(hDlg,IDC_CHECKCONTACT)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCONTACTNOEVENT),(IsDlgButtonChecked(hDlg,IDC_CHECKCONTACT)==BST_CHECKED) && wParam);
- return TRUE;
-}
-BOOL DlgShowAccountStatus(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- HPOP3ACCOUNT ActualAccount=(HPOP3ACCOUNT)lParam;
-
- if((DWORD)wParam==M_SHOWACTUAL)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read wait\n");
- #endif
- WaitToRead(ActualAccount); //we do not need to check if account is deleted. It is not deleted, because only thread that can delete account is this thread
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read enter\n");
- #endif
- CheckDlgButton(hDlg,IDC_CHECKST0,ActualAccount->StatusFlags & YAMN_ACC_ST0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST1,ActualAccount->StatusFlags & YAMN_ACC_ST1 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST2,ActualAccount->StatusFlags & YAMN_ACC_ST2 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST3,ActualAccount->StatusFlags & YAMN_ACC_ST3 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST4,ActualAccount->StatusFlags & YAMN_ACC_ST4 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST5,ActualAccount->StatusFlags & YAMN_ACC_ST5 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST6,ActualAccount->StatusFlags & YAMN_ACC_ST6 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST7,ActualAccount->StatusFlags & YAMN_ACC_ST7 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST8,ActualAccount->StatusFlags & YAMN_ACC_ST8 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST9,ActualAccount->StatusFlags & YAMN_ACC_ST9 ? BST_CHECKED : BST_UNCHECKED);
- ReadDone(ActualAccount);
- }
- else
- {
- CheckDlgButton(hDlg,IDC_CHECKST0,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST1,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST2,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST3,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST4,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST5,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST6,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST7,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST8,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST9,BST_CHECKED);
- }
- return TRUE;
-}
-BOOL DlgShowAccountPopup(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- HPOP3ACCOUNT ActualAccount=(HPOP3ACCOUNT)lParam;
-
- if((DWORD)wParam==M_SHOWACTUAL)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read wait\n");
- #endif
- WaitToRead(ActualAccount); //we do not need to check if account is deleted. It is not deleted, because only thread that can delete account is this thread
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read enter\n");
- #endif
- SetDlgItemInt(hDlg,IDC_EDITPOPS,ActualAccount->NewMailN.PopUpTime,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITNPOPS,ActualAccount->NoNewMailN.PopUpTime,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITFPOPS,ActualAccount->BadConnectN.PopUpTime,FALSE);
-
-
- CheckDlgButton(hDlg,IDC_CHECKPOP,ActualAccount->NewMailN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCOL,ActualAccount->NewMailN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNPOP,ActualAccount->NoNewMailN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNCOL,ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFPOP,ActualAccount->BadConnectN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFCOL,ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOPN,ActualAccount->Flags & YAMN_ACC_POPN ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOP1,ActualAccount->Flags & YAMN_ACC_POPN ? BST_UNCHECKED : BST_CHECKED);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read done\n");
- #endif
- ReadDone(ActualAccount);
- }
- else //default
- {
-
- SetDlgItemInt(hDlg,IDC_EDITPOPS,0,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITNPOPS,0,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITFPOPS,0,FALSE);
- CheckDlgButton(hDlg,IDC_CHECKPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCOL,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNCOL,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFCOL,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOPN,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOP1,BST_CHECKED);
- }
- return TRUE;
-}
-BOOL DlgShowAccount(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- HPOP3ACCOUNT ActualAccount=(HPOP3ACCOUNT)lParam;
- int i;
-
- if((DWORD)wParam==M_SHOWACTUAL)
- {
- TCHAR accstatus[256];
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read wait\n");
- #endif
- WaitToRead(ActualAccount); //we do not need to check if account is deleted. It is not deleted, because only thread that can delete account is this thread
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read enter\n");
- #endif
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITSERVER,(LPARAM)ActualAccount->Server->Name);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITNAME,(LPARAM)ActualAccount->Name);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITLOGIN,(LPARAM)ActualAccount->Server->Login);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITPASS,(LPARAM)ActualAccount->Server->Passwd);
- DlgSetItemTextW(hDlg,(WPARAM)IDC_EDITAPP,(LPARAM)ActualAccount->NewMailN.App);
- DlgSetItemTextW(hDlg,(WPARAM)IDC_EDITAPPPARAM,(LPARAM)ActualAccount->NewMailN.AppParam);
- SetDlgItemInt(hDlg,IDC_EDITPORT,ActualAccount->Server->Port,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITINTERVAL,ActualAccount->Interval/60,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITPOPS,ActualAccount->NewMailN.PopUpTime,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITNPOPS,ActualAccount->NoNewMailN.PopUpTime,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITFPOPS,ActualAccount->BadConnectN.PopUpTime,FALSE);
- for(i=0;i<=CPLENSUPP;i++)
- if((i<CPLENSUPP) && (CodePageNamesSupp[i].CP==ActualAccount->CP))
- {
- SendMessage(GetDlgItem(hDlg,IDC_COMBOCP),CB_SETCURSEL,(WPARAM)i,(LPARAM)0);
- break;
- }
- if(i==CPLENSUPP)
- SendMessage(GetDlgItem(hDlg,IDC_COMBOCP),CB_SETCURSEL,(WPARAM)CPDEFINDEX,(LPARAM)0);
-
- CheckDlgButton(hDlg,IDC_CHECK,ActualAccount->Flags & YAMN_ACC_ENA ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKSND,ActualAccount->NewMailN.Flags & YAMN_ACC_SND ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKMSG,ActualAccount->NewMailN.Flags & YAMN_ACC_MSG ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKICO,ActualAccount->NewMailN.Flags & YAMN_ACC_ICO ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKPOP,ActualAccount->NewMailN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCOL,ActualAccount->NewMailN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKAPP,ActualAccount->NewMailN.Flags & YAMN_ACC_APP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKKBN,ActualAccount->NewMailN.Flags & YAMN_ACC_KBN ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNPOP,ActualAccount->NoNewMailN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNCOL,ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNMSGP,ActualAccount->NoNewMailN.Flags & YAMN_ACC_MSGP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFSND,ActualAccount->BadConnectN.Flags & YAMN_ACC_SND ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFMSG,ActualAccount->BadConnectN.Flags & YAMN_ACC_MSG ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFICO,ActualAccount->BadConnectN.Flags & YAMN_ACC_ICO ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFPOP,ActualAccount->BadConnectN.Flags & YAMN_ACC_POP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFCOL,ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOPN,ActualAccount->Flags & YAMN_ACC_POPN ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOP1,ActualAccount->Flags & YAMN_ACC_POPN ? BST_UNCHECKED : BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKSSL,ActualAccount->Flags & YAMN_ACC_SSL23 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNOTLS,ActualAccount->Flags & YAMN_ACC_NOTLS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKAPOP,ActualAccount->Flags & YAMN_ACC_APOP ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_AUTOBODY,ActualAccount->Flags & YAMN_ACC_BODY ? BST_CHECKED : BST_UNCHECKED);
- /*CheckDlgButton(hDlg,IDC_CHECKST0,ActualAccount->StatusFlags & YAMN_ACC_ST0 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST1,ActualAccount->StatusFlags & YAMN_ACC_ST1 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST2,ActualAccount->StatusFlags & YAMN_ACC_ST2 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST3,ActualAccount->StatusFlags & YAMN_ACC_ST3 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST4,ActualAccount->StatusFlags & YAMN_ACC_ST4 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST5,ActualAccount->StatusFlags & YAMN_ACC_ST5 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST6,ActualAccount->StatusFlags & YAMN_ACC_ST6 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST7,ActualAccount->StatusFlags & YAMN_ACC_ST7 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST8,ActualAccount->StatusFlags & YAMN_ACC_ST8 ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST9,ActualAccount->StatusFlags & YAMN_ACC_ST9 ? BST_CHECKED : BST_UNCHECKED);*/
- Check0=ActualAccount->StatusFlags & YAMN_ACC_ST0;
- Check1=ActualAccount->StatusFlags & YAMN_ACC_ST1;
- Check2=ActualAccount->StatusFlags & YAMN_ACC_ST2;
- Check3=ActualAccount->StatusFlags & YAMN_ACC_ST3;
- Check4=ActualAccount->StatusFlags & YAMN_ACC_ST4;
- Check5=ActualAccount->StatusFlags & YAMN_ACC_ST5;
- Check6=ActualAccount->StatusFlags & YAMN_ACC_ST6;
- Check7=ActualAccount->StatusFlags & YAMN_ACC_ST7;
- Check8=ActualAccount->StatusFlags & YAMN_ACC_ST8;
- Check9=ActualAccount->StatusFlags & YAMN_ACC_ST9;
- CheckDlgButton(hDlg,IDC_CHECKSTART,ActualAccount->StatusFlags & YAMN_ACC_STARTS ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFORCE,ActualAccount->StatusFlags & YAMN_ACC_FORCE ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCONTACT,ActualAccount->NewMailN.Flags & YAMN_ACC_CONT ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCONTACTNICK,ActualAccount->NewMailN.Flags & YAMN_ACC_CONTNICK ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCONTACTNOEVENT,ActualAccount->NewMailN.Flags & YAMN_ACC_CONTNOEVENT ? BST_CHECKED : BST_UNCHECKED);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNT:ActualAccountSO-read done\n");
-#endif
- GetAccountStatus(ActualAccount,accstatus);
- SetDlgItemText(hDlg,IDC_STSTATUS,accstatus);
- ReadDone(ActualAccount);
- }
- else //default
- {
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITSERVER,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITNAME,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITLOGIN,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITPASS,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITAPP,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITAPPPARAM,(LPARAM)NULL);
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- SetDlgItemInt(hDlg,IDC_EDITPORT,110,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITINTERVAL,30,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITPOPS,0,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITNPOPS,0,FALSE);
- SetDlgItemInt(hDlg,IDC_EDITFPOPS,0,FALSE);
- SendMessage(GetDlgItem(hDlg,IDC_COMBOCP),CB_SETCURSEL,(WPARAM)CPDEFINDEX,(LPARAM)0);
- CheckDlgButton(hDlg,IDC_CHECK,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKSND,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKMSG,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKICO,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCOL,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKAPP,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCOL,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFSND,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFMSG,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFICO,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFPOP,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFCOL,BST_CHECKED);
- /*CheckDlgButton(hDlg,IDC_CHECKST0,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST1,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST2,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST3,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST4,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST5,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST6,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST7,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST8,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST9,BST_CHECKED);*/
- CheckDlgButton(hDlg,IDC_CHECKSTART,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKFORCE,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOPN,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_RADIOPOP1,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKSSL,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKNOTLS,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKAPOP,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_AUTOBODY,BST_UNCHECKED);
- CheckDlgButton(hDlg,IDC_CHECKCONTACT,BST_CHECKED);
-
- SetDlgItemText(hDlg,IDC_STSTATUS,TranslateT("No account selected"));
- }
- return TRUE;
-}
-
-BOOL DlgShowAccountColors(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- HPOP3ACCOUNT ActualAccount=(HPOP3ACCOUNT)lParam;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNTCOLORS:ActualAccountSO-read wait\n");
-#endif
- WaitToRead(ActualAccount); //we do not need to check if account is deleted. It is not deleted, because only thread that can delete account is this thread
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNTCOLORS:ActualAccountSO-read enter\n");
-#endif
- if(ActualAccount->NewMailN.Flags & YAMN_ACC_POPC)
- {
- SendDlgItemMessage(hDlg,IDC_CPB,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->NewMailN.PopUpB);
- SendDlgItemMessage(hDlg,IDC_CPT,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->NewMailN.PopUpT);
- }
- else
- {
- SendDlgItemMessage(hDlg,IDC_CPB,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_BTNFACE));
- SendDlgItemMessage(hDlg,IDC_CPT,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_WINDOWTEXT));
- }
- if(ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC)
- {
- SendDlgItemMessage(hDlg,IDC_CPFB,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->BadConnectN.PopUpB);
- SendDlgItemMessage(hDlg,IDC_CPFT,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->BadConnectN.PopUpT);
- }
- else
- {
- SendDlgItemMessage(hDlg,IDC_CPFB,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_BTNFACE));
- SendDlgItemMessage(hDlg,IDC_CPFT,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_WINDOWTEXT));
- }
- if(ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC)
- {
- SendDlgItemMessage(hDlg,IDC_CPNB,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->NoNewMailN.PopUpB);
- SendDlgItemMessage(hDlg,IDC_CPNT,CPM_SETCOLOUR,0,(LPARAM)ActualAccount->NoNewMailN.PopUpT);
- }
- else
- {
- SendDlgItemMessage(hDlg,IDC_CPNB,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_BTNFACE));
- SendDlgItemMessage(hDlg,IDC_CPNT,CPM_SETCOLOUR,0,(LPARAM)GetSysColor(COLOR_WINDOWTEXT));
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:SHOWACCOUNTCOLORS:ActualAccountSO-read done\n");
-#endif
- ReadDone(ActualAccount); //we do not need to check if account is deleted. It is not deleted, because only thread that can delete account is this thread
- return TRUE;
-}
-
-BOOL DlgSetItemText(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- if((TCHAR*)lParam==NULL)
- SetDlgItemText(hDlg,(UINT)wParam,_T(""));
- else
- SetDlgItemText(hDlg,(UINT)wParam,(TCHAR *)lParam);
- return TRUE;
-}
-
-BOOL DlgSetItemTextW(HWND hDlg,WPARAM wParam,LPARAM lParam)
-{
- if((WCHAR*)lParam==NULL)
- SetDlgItemTextW(hDlg,(UINT)wParam,(LPWSTR)L"");
- else
- SetDlgItemTextW(hDlg,(UINT)wParam,(LPWSTR)lParam);
- return TRUE;
-}
-
-BOOL CALLBACK DlgProcPOP3AccStatusOpt(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- static HPOP3ACCOUNT ActualAccount;
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput);
- if(ActualAccount != NULL)
- {
- DlgShowAccountStatus(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgEnableAccountStatus(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- }
- else
- {
- CheckDlgButton(hDlg,IDC_CHECKST0,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST1,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST2,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST3,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST4,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST5,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST6,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST7,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST8,BST_CHECKED);
- CheckDlgButton(hDlg,IDC_CHECKST9,BST_CHECKED);
- }
- TranslateDialogDefault(hDlg);
- SendMessage(GetParent(hDlg),PSM_UNCHANGED,(WPARAM)hDlg,0);
- return TRUE;
- break;
- }
- case WM_COMMAND:
- {
-
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- case IDOK:
- Check0=(IsDlgButtonChecked(hDlg,IDC_CHECKST0)==BST_CHECKED);
- Check1=(IsDlgButtonChecked(hDlg,IDC_CHECKST1)==BST_CHECKED);
- Check2=(IsDlgButtonChecked(hDlg,IDC_CHECKST2)==BST_CHECKED);
- Check3=(IsDlgButtonChecked(hDlg,IDC_CHECKST3)==BST_CHECKED);
- Check4=(IsDlgButtonChecked(hDlg,IDC_CHECKST4)==BST_CHECKED);
- Check5=(IsDlgButtonChecked(hDlg,IDC_CHECKST5)==BST_CHECKED);
- Check6=(IsDlgButtonChecked(hDlg,IDC_CHECKST6)==BST_CHECKED);
- Check7=(IsDlgButtonChecked(hDlg,IDC_CHECKST7)==BST_CHECKED);
- Check8=(IsDlgButtonChecked(hDlg,IDC_CHECKST8)==BST_CHECKED);
- Check9=(IsDlgButtonChecked(hDlg,IDC_CHECKST9)==BST_CHECKED);
- WindowList_BroadcastAsync(YAMNVar.MessageWnds,WM_YAMN_CHANGESTATUSOPTION,(WPARAM)0,(LPARAM)0);
- EndDialog(hDlg,0);
- DestroyWindow(hDlg);
- break;
-
- case IDCANCEL:
- EndDialog(hDlg,0);
- DestroyWindow(hDlg);
- break;
-
- default:
- break;
- }
- }
- default:
- break;
- }
- return FALSE;
-}
-
-
-INT_PTR CALLBACK DlgProcPOP3AccOpt(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- BOOL Changed=FALSE;
- static BOOL InList=FALSE;
- static HPOP3ACCOUNT ActualAccount;
- static UCHAR ActualStatus;
-// static struct CPOP3Options POP3Options;
-
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- int i;
-
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),FALSE);
-
- DlgEnableAccount(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- DlgShowAccount(hDlg,(WPARAM)M_SHOWDEFAULT,0);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read wait\n");
- #endif
- WaitToReadSO(POP3Plugin->AccountBrowserSO);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read enter\n");
- #endif
- //SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)""); //this was in YAMN.rc initialisation but seems to be useless
- if(POP3Plugin->FirstAccount!=NULL)
- for(ActualAccount=(HPOP3ACCOUNT)POP3Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=(HPOP3ACCOUNT)ActualAccount->Next)
- if(ActualAccount->Name!=NULL)
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)ActualAccount->Name);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read done\n");
- #endif
- ReadDoneSO(POP3Plugin->AccountBrowserSO);
- SendDlgItemMessage(hDlg,IDC_COMBOCP,CB_ADDSTRING,0,(LPARAM)TranslateT("Default"));
- for(i=1;i<CPLENSUPP;i++){
- CPINFOEX info; GetCPInfoEx(CodePageNamesSupp[i].CP,0,&info);
- size_t len = strlen(info.CodePageName+7);
- info.CodePageName[len+6]=0;
- SendDlgItemMessage(hDlg,IDC_COMBOCP,CB_ADDSTRING,0,(LPARAM)info.CodePageName+7);
- }
-
- SendMessage(GetDlgItem(hDlg,IDC_COMBOCP),CB_SETCURSEL,(WPARAM)CPDEFINDEX,(LPARAM)0);
- ActualAccount=NULL;
- TranslateDialogDefault(hDlg);
- SendMessage(GetParent(hDlg),PSM_UNCHANGED,(WPARAM)hDlg,0);
- return TRUE;
- }
-
- case WM_SHOWWINDOW:
- if((BOOL)wParam==FALSE)
- {
- WindowList_Remove(pYAMNVar->MessageWnds,hDlg);
- SendMessage(GetParent(hDlg),PSM_UNCHANGED,(WPARAM)hDlg,(LPARAM)0);
- }
- else
- WindowList_Add(pYAMNVar->MessageWnds,hDlg,NULL);
- return TRUE;
- case WM_YAMN_CHANGESTATUS:
- {
- char accstatus[256];
-
- if((HPOP3ACCOUNT)wParam!=ActualAccount)
- break;
- GetAccountStatus(ActualAccount,accstatus);
- SetDlgItemTextA(hDlg,IDC_STSTATUS,accstatus);
- return TRUE;
- }
-
- case WM_YAMN_CHANGESTATUSOPTION:
- {
- Changed=TRUE;
- SendMessage(GetParent(hDlg),PSM_CHANGED,0,0);
- return TRUE;
- }
-
- case WM_YAMN_CHANGETIME:
- if((HPOP3ACCOUNT)wParam==ActualAccount)
- {
- TCHAR Text[256];
- _stprintf(Text,Translate("Time left to next check [s]: %d"),(DWORD)lParam);
- SetDlgItemText(hDlg,IDC_STTIMELEFT,Text);
- }
- return TRUE;
- case WM_COMMAND:
- {
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- LONG Result;
- case IDC_COMBOACCOUNT:
- switch(wNotifyCode)
- {
- case CBN_EDITCHANGE :
- ActualAccount=NULL;
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
-
- if(GetDlgItemText(hDlg,IDC_COMBOACCOUNT,DlgInput,sizeof(DlgInput)/sizeof(TCHAR)))
- DlgEnableAccount(hDlg,(WPARAM)TRUE,(LPARAM)FALSE);
- else
- DlgEnableAccount(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- break;
- case CBN_KILLFOCUS:
- GetDlgItemText(hDlg,IDC_COMBOACCOUNT,DlgInput,sizeof(DlgInput)/sizeof(TCHAR));
- if(NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput)))
- {
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),FALSE);
- if(lstrlen(DlgInput))
- DlgEnableAccount(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- else
- DlgEnableAccount(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- }
- else
- {
- DlgShowAccount(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgEnableAccount(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),TRUE);
- }
- break;
- case CBN_SELCHANGE:
- if(CB_ERR!=(Result=SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETCURSEL,0,0)))
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETLBTEXT,(WPARAM)Result,(LPARAM)DlgInput);
-
- if((Result==CB_ERR) || (NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput))))
- {
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),FALSE);
- }
- else
- {
- DlgShowAccount(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgEnableAccount(hDlg,(WPARAM)TRUE,(LPARAM)FALSE);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),TRUE);
- }
- break;
- }
- break;
- case IDC_COMBOCP:
- {
- int sel = SendDlgItemMessage(hDlg,IDC_COMBOCP,CB_GETCURSEL,0,0);
- CPINFOEX info; GetCPInfoEx(CodePageNamesSupp[sel].CP,0,&info);
- DlgSetItemText(hDlg,(WPARAM)IDC_STSTATUS,(LPARAM)info.CodePageName);
- }
- case IDC_CHECK:
- case IDC_CHECKSND:
- case IDC_CHECKMSG:
- case IDC_CHECKICO:
- case IDC_CHECKFSND:
- case IDC_CHECKFMSG:
- case IDC_CHECKFICO:
- case IDC_CHECKST0:
- case IDC_CHECKST1:
- case IDC_CHECKST2:
- case IDC_CHECKST3:
- case IDC_CHECKST4:
- case IDC_CHECKST5:
- case IDC_CHECKST6:
- case IDC_CHECKST7:
- case IDC_CHECKST8:
- case IDC_CHECKST9:
- case IDC_CHECKSTART:
- case IDC_CHECKFORCE:
- case IDC_EDITAPPPARAM:
- case IDC_CHECKAPOP:
- case IDC_AUTOBODY:
- case IDC_CHECKCONTACTNICK:
- case IDC_CHECKCONTACTNOEVENT:
- case IDC_CHECKNOTLS:
- Changed=TRUE;
- break;
- case IDC_CHECKCONTACT:
- Changed=IsDlgButtonChecked(hDlg,IDC_CHECKCONTACT)==BST_CHECKED;
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCONTACTNICK),Changed);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCONTACTNOEVENT),Changed);
- Changed=TRUE;
- break;
- case IDC_CHECKSSL:
- {
- BOOL SSLC=(IsDlgButtonChecked(hDlg,IDC_CHECKSSL)==BST_CHECKED);
- SetDlgItemInt(hDlg,IDC_EDITPORT,SSLC ? 995 : 110,FALSE);
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNOTLS),SSLC?0:1);
- }
- Changed=TRUE;
- break;
- case IDC_CPB:
- case IDC_CPT:
- case IDC_CPFB:
- case IDC_CPFT:
- case IDC_CPNB:
- case IDC_CPNT:
- if(HIWORD(wParam)!=CPN_COLOURCHANGED)
- break;
- case IDC_CHECKKBN:
- Changed=TRUE;
- break;
- case IDC_CHECKAPP:
- Changed=TRUE;
- EnableWindow(GetDlgItem(hDlg,IDC_BTNAPP),IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITAPP),IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITAPPPARAM),IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED);
- break;
- case IDC_BTNSTATUS:
- {
- DialogBoxParamW(pYAMNVar->hInst,MAKEINTRESOURCEW(IDD_CHOOSESTATUSMODES),hDlg,(DLGPROC)DlgProcPOP3AccStatusOpt,(LPARAM)NULL);
- break;
- }
-
- case IDC_BTNADD:
- {
- int index=0;
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- DlgShowAccount(hDlg,(WPARAM)M_SHOWDEFAULT,0);
- DlgEnableAccount(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),FALSE);
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITNAME,(LPARAM)TranslateT("New Account"));
- index=SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)TranslateT("New Account"));
-
- if((index==CB_ERR) || (index==CB_ERRSPACE))
- break;
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_SETCURSEL,(WPARAM)index,(LPARAM)TranslateT("New Account"));
- break;
- }
-
- case IDC_BTNAPP:
- {
- OPENFILENAME OFNStruct;
-
- memset(&OFNStruct,0,sizeof(OPENFILENAME));
- OFNStruct.lStructSize=sizeof(OPENFILENAME);
- OFNStruct.hwndOwner=hDlg;
- TCHAR filter[MAX_PATH];
- mir_sntprintf(filter, SIZEOF(filter), _T("%s (*.exe;*.bat;*.cmd;*.com)%c*.exe;*.bat;*.cmd;*.com%c%s (*.*)%c*.*%c"), TranslateT("Executables"), 0, 0, TranslateT("All Files"), 0, 0);
- OFNStruct.lpstrFilter= filter;
- OFNStruct.nFilterIndex=1;
- OFNStruct.nMaxFile=MAX_PATH;
- OFNStruct.lpstrFile=new TCHAR[MAX_PATH];
- OFNStruct.lpstrFile[0]=(TCHAR)0;
- OFNStruct.lpstrTitle=Translate("Select executable used for notification");
- OFNStruct.Flags=OFN_FILEMUSTEXIST | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR;
- if(!GetOpenFileName(&OFNStruct))
- {
- if(CommDlgExtendedError())
- MessageBox(hDlg,_T("Dialog box error"),_T("Failed"),MB_OK);
- }
- else
- DlgSetItemText(hDlg,(WPARAM)IDC_EDITAPP,(LPARAM)OFNStruct.lpstrFile);
- delete[] OFNStruct.lpstrFile;
- break;
- }
- case IDC_BTNDEFAULT:
- DlgShowAccount(hDlg,(WPARAM)M_SHOWDEFAULT,0);
-// DlgShowAccountColors(hDlg,0,(LPARAM)ActualAccount);
- break;
- case IDC_BTNDEL:
- GetDlgItemText(hDlg,IDC_COMBOACCOUNT,DlgInput,sizeof(DlgInput)/sizeof(TCHAR));
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),FALSE);
- if((CB_ERR==(Result=SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETCURSEL,0,0)))
- || (NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput))))
- return TRUE;
-
- if(IDOK!=MessageBox(hDlg,Translate("Do you really want to delete this account?"),Translate("Delete account confirmation"),MB_OKCANCEL | MB_ICONWARNING))
- return TRUE;
-
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)Translate("Please wait while no account is in use."));
-
- if(ActualAccount->hContact != NULL)
- CallService(MS_DB_CONTACT_DELETE,(WPARAM)(HANDLE) ActualAccount->hContact, 0);
-
- CallService(MS_YAMN_DELETEACCOUNT,(WPARAM)POP3Plugin,(LPARAM)ActualAccount);
-
- //We can consider our account as deleted.
-
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_DELETESTRING,(WPARAM)Result,0);
- DlgSetItemText(hDlg,(WPARAM)IDC_COMBOACCOUNT,(LPARAM)NULL);
- DlgEnableAccount(hDlg,(WPARAM)FALSE,0);
- DlgShowAccount(hDlg,(WPARAM)M_SHOWDEFAULT,0);
-// Beep(100,50);
- break;
- case IDC_BTNRESET:
- if(ActualAccount!=NULL)
- ActualAccount->TimeLeft=ActualAccount->Interval;
- return 1;
- }
- if(HIWORD(wParam)==EN_CHANGE)
- Changed=TRUE;
- break;
- }
- case WM_NOTIFY:
- switch(((LPNMHDR)lParam)->idFrom)
- {
- case 0:
- switch(((LPNMHDR)lParam)->code)
- {
- case PSN_APPLY:
- {
- TCHAR Text[MAX_PATH];
- WCHAR TextW[MAX_PATH];
- BOOL Translated,NewAcc=FALSE,Check,CheckMsg,CheckSnd,CheckIco,CheckApp, CheckAPOP;
- BOOL CheckNMsgP,CheckFMsg,CheckFSnd,CheckFIco;
- BOOL CheckKBN, CheckContact,CheckContactNick,CheckContactNoEvent;
- BOOL CheckSSL, CheckABody, CheckNoTLS;
- //BOOL Check0,Check1,Check2,Check3,Check4,Check5,Check6,Check7,Check8,Check9,
- BOOL CheckStart,CheckForce;
- size_t Length,index;
- UINT Port,Interval;
-
- if(GetDlgItemText(hDlg,IDC_COMBOACCOUNT,Text,sizeof(Text)/sizeof(TCHAR)))
- {
- Check=(IsDlgButtonChecked(hDlg,IDC_CHECK)==BST_CHECKED);
- CheckSSL=(IsDlgButtonChecked(hDlg,IDC_CHECKSSL)==BST_CHECKED);
- CheckNoTLS=(IsDlgButtonChecked(hDlg,IDC_CHECKNOTLS)==BST_CHECKED);
- CheckAPOP=(IsDlgButtonChecked(hDlg,IDC_CHECKAPOP)==BST_CHECKED);
-
- CheckABody=(IsDlgButtonChecked(hDlg,IDC_AUTOBODY)==BST_CHECKED);
- CheckMsg=(IsDlgButtonChecked(hDlg,IDC_CHECKMSG)==BST_CHECKED);
- CheckSnd=(IsDlgButtonChecked(hDlg,IDC_CHECKSND)==BST_CHECKED);
- CheckIco=(IsDlgButtonChecked(hDlg,IDC_CHECKICO)==BST_CHECKED);
-
- CheckApp=(IsDlgButtonChecked(hDlg,IDC_CHECKAPP)==BST_CHECKED);
- CheckKBN=(IsDlgButtonChecked(hDlg,IDC_CHECKKBN)==BST_CHECKED);
- CheckContact=(IsDlgButtonChecked(hDlg,IDC_CHECKCONTACT)==BST_CHECKED);
- CheckContactNick=(IsDlgButtonChecked(hDlg,IDC_CHECKCONTACTNICK)==BST_CHECKED);
- CheckContactNoEvent=(IsDlgButtonChecked(hDlg,IDC_CHECKCONTACTNOEVENT)==BST_CHECKED);
-
- CheckFSnd=(IsDlgButtonChecked(hDlg,IDC_CHECKFSND)==BST_CHECKED);
- CheckFMsg=(IsDlgButtonChecked(hDlg,IDC_CHECKFMSG)==BST_CHECKED);
- CheckFIco=(IsDlgButtonChecked(hDlg,IDC_CHECKFICO)==BST_CHECKED);
-
- CheckNMsgP=(IsDlgButtonChecked(hDlg,IDC_CHECKNMSGP)==BST_CHECKED);
-
- Port=GetDlgItemInt(hDlg,IDC_EDITPORT,&Translated,FALSE);
- if(!Translated)
- {
- MessageBox(hDlg,Translate("This is not a valid number value"),Translate("Input error"),MB_OK);
- SetFocus(GetDlgItem(hDlg,IDC_EDITPORT));
- break;
- }
- Interval=GetDlgItemInt(hDlg,IDC_EDITINTERVAL,&Translated,FALSE);
- if(!Translated)
- {
- MessageBox(hDlg,Translate("This is not a valid number value"),Translate("Input error"),MB_OK);
- SetFocus(GetDlgItem(hDlg,IDC_EDITINTERVAL));
- break;
- }
-
- GetDlgItemText(hDlg,IDC_EDITAPP,Text,sizeof(Text)/sizeof(TCHAR));
- if(CheckApp && !(Length=_tcslen(Text)))
- {
- MessageBox(hDlg,TranslateT("Please select application to run"),TranslateT("Input error"),MB_OK);
- break;
- }
-
- GetDlgItemText(hDlg,IDC_COMBOACCOUNT,Text,sizeof(Text)/sizeof(TCHAR));
- if(!(Length=_tcslen(Text)))
- GetDlgItemText(hDlg,IDC_EDITNAME,Text,sizeof(Text)/sizeof(TCHAR));
- if(!(Length=_tcslen(Text)))
- break;
-
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)TranslateT("Please wait while no account is in use."));
-
- if(NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)Text)))
- {
- NewAcc=TRUE;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write wait\n");
- #endif
- WaitToWriteSO(POP3Plugin->AccountBrowserSO);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write enter\n");
- #endif
- if(NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_GETNEXTFREEACCOUNT,(WPARAM)POP3Plugin,(LPARAM)YAMN_ACCOUNTVERSION)))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write done\n");
- #endif
- WriteDoneSO(POP3Plugin->AccountBrowserSO);
- MessageBox(hDlg,Translate("Cannot allocate memory space for new account"),Translate("Memory error"),MB_OK);
- break;
- }
- }
- else
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write wait\n");
- #endif
- //We have to get full access to AccountBrowser, so other iterating thrads cannot get new account until new account is right set
- WaitToWriteSO(POP3Plugin->AccountBrowserSO);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write enter\n");
- #endif
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualAccountSO-write wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToWrite(ActualAccount))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualAccountSO-write wait failed\n");
- #endif
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualBrowserSO-write done\n");
- #endif
- WriteDoneSO(POP3Plugin->AccountBrowserSO);
-
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualAccountSO-write enter\n");
- #endif
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemText(hDlg,IDC_EDITNAME,Text,sizeof(Text)/sizeof(TCHAR));
- if(!(Length=_tcslen(Text)))
- break;
- if(NULL==ActualAccount->Name)
- ActualAccount->Name=new TCHAR[Length+1];
- _tcscpy(ActualAccount->Name,Text);
-
-
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemText(hDlg,IDC_EDITSERVER,Text,sizeof(Text)/sizeof(TCHAR));
- if(NULL!=ActualAccount->Server->Name)
- delete[] ActualAccount->Server->Name;
- ActualAccount->Server->Name=new TCHAR[_tcslen(Text)+1];
- _tcscpy(ActualAccount->Server->Name,Text);
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemText(hDlg,IDC_EDITLOGIN,Text,sizeof(Text)/sizeof(TCHAR));
- if(NULL!=ActualAccount->Server->Login)
- delete[] ActualAccount->Server->Login;
- ActualAccount->Server->Login=new TCHAR[_tcslen(Text)+1];
- _tcscpy(ActualAccount->Server->Login,Text);
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemText(hDlg,IDC_EDITPASS,Text,sizeof(Text)/sizeof(TCHAR));
- if(NULL!=ActualAccount->Server->Passwd)
- delete[] ActualAccount->Server->Passwd;
- ActualAccount->Server->Passwd=new TCHAR[_tcslen(Text)+1];
- _tcscpy(ActualAccount->Server->Passwd,Text);
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemTextW(hDlg,IDC_EDITAPP,TextW,sizeof(TextW)/sizeof(WCHAR));
- if(NULL!=ActualAccount->NewMailN.App)
- delete[] ActualAccount->NewMailN.App;
- ActualAccount->NewMailN.App=new WCHAR[wcslen(TextW)+1];
- wcscpy(ActualAccount->NewMailN.App,TextW);
-
-// Beep(1000,100);Sleep(200);
- GetDlgItemTextW(hDlg,IDC_EDITAPPPARAM,TextW,sizeof(TextW)/sizeof(WCHAR));
- if(NULL!=ActualAccount->NewMailN.AppParam)
- delete[] ActualAccount->NewMailN.AppParam;
- ActualAccount->NewMailN.AppParam=new WCHAR[wcslen(TextW)+1];
- wcscpy(ActualAccount->NewMailN.AppParam,TextW);
-
- ActualAccount->Server->Port=Port;
- ActualAccount->Interval=Interval*60;
-
-// Beep(1000,100);Sleep(200);
- if(CB_ERR==(index=SendDlgItemMessage(hDlg,IDC_COMBOCP,CB_GETCURSEL,0,0)))
- index=CPDEFINDEX;
- ActualAccount->CP=CodePageNamesSupp[index].CP;
-
-// Beep(1000,100);Sleep(200);
- if(NewAcc)
- ActualAccount->TimeLeft=Interval*60;
-
- CheckStart=(IsDlgButtonChecked(hDlg,IDC_CHECKSTART)==BST_CHECKED);
- CheckForce=(IsDlgButtonChecked(hDlg,IDC_CHECKFORCE)==BST_CHECKED);
-
- ActualAccount->Flags=
- (Check ? YAMN_ACC_ENA : 0) |
- (CheckSSL ? YAMN_ACC_SSL23 : 0) |
- (CheckNoTLS ? YAMN_ACC_NOTLS : 0) |
- (CheckAPOP ? YAMN_ACC_APOP : 0) |
- (CheckABody ? YAMN_ACC_BODY : 0) |
- (ActualAccount->Flags & YAMN_ACC_POPN);
-
- ActualAccount->StatusFlags=
- (Check0 ? YAMN_ACC_ST0 : 0) |
- (Check1 ? YAMN_ACC_ST1 : 0) |
- (Check2 ? YAMN_ACC_ST2 : 0) |
- (Check3 ? YAMN_ACC_ST3 : 0) |
- (Check4 ? YAMN_ACC_ST4 : 0) |
- (Check5 ? YAMN_ACC_ST5 : 0) |
- (Check6 ? YAMN_ACC_ST6 : 0) |
- (Check7 ? YAMN_ACC_ST7 : 0) |
- (Check8 ? YAMN_ACC_ST8 : 0) |
- (Check9 ? YAMN_ACC_ST9 : 0) |
- (CheckStart ? YAMN_ACC_STARTS : 0) |
- (CheckForce ? YAMN_ACC_FORCE : 0);
-
- ActualAccount->NewMailN.Flags=
- (CheckSnd ? YAMN_ACC_SND : 0) |
- (CheckMsg ? YAMN_ACC_MSG : 0) |
- (CheckIco ? YAMN_ACC_ICO : 0) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_POP) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_POPC) |
- (CheckApp ? YAMN_ACC_APP : 0) |
- (CheckKBN ? YAMN_ACC_KBN : 0) |
- (CheckContact ? YAMN_ACC_CONT : 0) |
- (CheckContactNick ? YAMN_ACC_CONTNICK : 0) |
- (CheckContactNoEvent ? YAMN_ACC_CONTNOEVENT : 0) |
- YAMN_ACC_MSGP; //this is default: when new mail arrives and window was displayed, leave it displayed.
-
- ActualAccount->NoNewMailN.Flags=
- (ActualAccount->NoNewMailN.Flags & YAMN_ACC_POP) |
- (ActualAccount->NoNewMailN.Flags & YAMN_ACC_POPC) |
- (CheckNMsgP ? YAMN_ACC_MSGP : 0);
-
- ActualAccount->BadConnectN.Flags=
- (CheckFSnd ? YAMN_ACC_SND : 0) |
- (CheckFMsg ? YAMN_ACC_MSG : 0) |
- (CheckFIco ? YAMN_ACC_ICO : 0) |
- (ActualAccount->BadConnectN.Flags & YAMN_ACC_POP) |
- (ActualAccount->BadConnectN.Flags & YAMN_ACC_POPC);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualAccountSO-write done\n");
- #endif
- WriteDone(ActualAccount);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write done\n");
- #endif
- WriteDoneSO(POP3Plugin->AccountBrowserSO);
-
- EnableWindow(GetDlgItem(hDlg,IDC_BTNDEL),TRUE);
-
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
-
-
- index = SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);
-
-
- HPOP3ACCOUNT temp = ActualAccount;
-
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_RESETCONTENT,0,(LPARAM)0);
- if(POP3Plugin->FirstAccount!=NULL)
- for(ActualAccount=(HPOP3ACCOUNT)POP3Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=(HPOP3ACCOUNT)ActualAccount->Next)
- if(ActualAccount->Name!=NULL)
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)ActualAccount->Name);
-
- ActualAccount = temp;
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_SETCURSEL,(WPARAM)index,(LPARAM)ActualAccount->Name);
-
-// if(0==WritePOP3Accounts())
-// Beep(500,100);
- WritePOP3Accounts();
- RefreshContact();
- return TRUE;
- }
- }
- break;
- }
- break;
- }
- break;
- }
- if(Changed)
- SendMessage(GetParent(hDlg),PSM_CHANGED,0,0);
- return FALSE;
-}
-
-INT_PTR CALLBACK DlgProcPOP3AccPopup(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
-{
- BOOL Changed=FALSE;
- static BOOL InList=FALSE;
- static HPOP3ACCOUNT ActualAccount;
- static UCHAR ActualStatus;
-// static struct CPOP3Options POP3Options;
-
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- DlgEnableAccountPopup(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- DlgShowAccountPopup(hDlg,(WPARAM)M_SHOWDEFAULT,0);
- //DlgShowAccountColors(hDlg,0,(LPARAM)ActualAccount);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read wait\n");
- #endif
- WaitToReadSO(POP3Plugin->AccountBrowserSO);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read enter\n");
- #endif
- if(POP3Plugin->FirstAccount!=NULL)
- for(ActualAccount=(HPOP3ACCOUNT)POP3Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=(HPOP3ACCOUNT)ActualAccount->Next)
- if(ActualAccount->Name!=NULL)
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)ActualAccount->Name);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:INITDIALOG:AccountBrowserSO-read done\n");
- #endif
- ReadDoneSO(POP3Plugin->AccountBrowserSO);
- ActualAccount=NULL;
-
-
- TranslateDialogDefault(hDlg);
- SendMessage(GetParent(hDlg),PSM_UNCHANGED,(WPARAM)hDlg,0);
- return TRUE;
- }
-
- case WM_SHOWWINDOW:
- if((BOOL)wParam==FALSE)
- {
- WindowList_Remove(pYAMNVar->MessageWnds,hDlg);
- SendMessage(GetParent(hDlg),PSM_UNCHANGED,(WPARAM)hDlg,(LPARAM)0);
- }
- else
- {
- WindowList_Add(pYAMNVar->MessageWnds,hDlg,NULL);
-
- int index = SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);
- HPOP3ACCOUNT temp = ActualAccount;
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_RESETCONTENT,0,(LPARAM)0);
-
- if(POP3Plugin->FirstAccount!=NULL)
- for(ActualAccount=(HPOP3ACCOUNT)POP3Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=(HPOP3ACCOUNT)ActualAccount->Next)
- if(ActualAccount->Name!=NULL)
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_ADDSTRING,0,(LPARAM)ActualAccount->Name);
-
- ActualAccount = temp;
-
- if(ActualAccount != NULL)
- {
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_SETCURSEL,(WPARAM)index,(LPARAM)ActualAccount->Name);
- DlgShowAccount(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgShowAccountColors(hDlg,0,(LPARAM)ActualAccount);
- DlgEnableAccountPopup(hDlg,(WPARAM)TRUE,(LPARAM)FALSE);
- }
- else
- {
- DlgShowAccountPopup(hDlg,(WPARAM)M_SHOWDEFAULT,0);
- DlgEnableAccountPopup(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- }
-
- }
- return TRUE;
-
- case WM_COMMAND:
- {
- WORD wNotifyCode = HIWORD(wParam);
- switch(LOWORD(wParam))
- {
- LONG Result;
- case IDC_COMBOACCOUNT:
- switch(wNotifyCode)
- {
-
- case CBN_KILLFOCUS:
- GetDlgItemText(hDlg,IDC_COMBOACCOUNT,DlgInput,sizeof(DlgInput)/sizeof(TCHAR));
- if(NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput)))
- {
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- if(lstrlen(DlgInput))
- DlgEnableAccountPopup(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- else
- DlgEnableAccountPopup(hDlg,(WPARAM)FALSE,(LPARAM)FALSE);
- }
- else
- {
- DlgShowAccount(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgShowAccountColors(hDlg,0,(LPARAM)ActualAccount);
- DlgEnableAccountPopup(hDlg,(WPARAM)TRUE,(LPARAM)TRUE);
- }
- break;
- case CBN_SELCHANGE:
- if(CB_ERR!=(Result=SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETCURSEL,0,0)))
- SendDlgItemMessage(hDlg,IDC_COMBOACCOUNT,CB_GETLBTEXT,(WPARAM)Result,(LPARAM)DlgInput);
- if((Result==CB_ERR) || (NULL==(ActualAccount=(HPOP3ACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)DlgInput))))
- {
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)NULL);
- }
- else
- {
- DlgShowAccount(hDlg,(WPARAM)M_SHOWACTUAL,(LPARAM)ActualAccount);
- DlgShowAccountColors(hDlg,0,(LPARAM)ActualAccount);
- DlgEnableAccountPopup(hDlg,(WPARAM)TRUE,(LPARAM)FALSE);
- }
- break;
- }
- break;
- case IDC_COMBOCP:
- {
- int sel = SendDlgItemMessage(hDlg,IDC_COMBOCP,CB_GETCURSEL,0,0);
- CPINFOEX info; GetCPInfoEx(CodePageNamesSupp[sel].CP,0,&info);
- DlgSetItemText(hDlg,(WPARAM)IDC_STSTATUS,(LPARAM)info.CodePageName);
- }
- case IDC_RADIOPOPN:
- case IDC_RADIOPOP1:
- Changed=TRUE;
- break;
- case IDC_CPB:
- case IDC_CPT:
- case IDC_CPFB:
- case IDC_CPFT:
- case IDC_CPNB:
- case IDC_CPNT:
- if(HIWORD(wParam)!=CPN_COLOURCHANGED)
- break;
- case IDC_CHECKCOL:
- case IDC_CHECKFCOL:
- case IDC_CHECKNCOL:
- EnableWindow(GetDlgItem(hDlg,IDC_CPB),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPT),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNB),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNT),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFB),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFT),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && (IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED) && wParam);
- Changed=TRUE;
- break;
-
- case IDC_PREVIEW:
- {
- POPUPDATA Tester;
- POPUPDATA TesterF;
- POPUPDATA TesterN;
- BOOL TesterC=(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED);
- BOOL TesterFC=(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED);
- BOOL TesterNC=(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED);
-
- ZeroMemory(&Tester,sizeof(Tester));
- ZeroMemory(&TesterF,sizeof(TesterF));
- ZeroMemory(&TesterF,sizeof(TesterN));
- Tester.lchContact=NULL;
- TesterF.lchContact=NULL;
- TesterN.lchContact=NULL;
- Tester.lchIcon=hYamnIcons[2];
- TesterF.lchIcon=hYamnIcons[3];
- TesterN.lchIcon=hYamnIcons[1];
-
- lstrcpy(Tester.lpzContactName,Translate("Account Test"));
- lstrcpy(TesterF.lpzContactName,Translate("Account Test (failed)"));
- lstrcpy(TesterN.lpzContactName,Translate("Account Test"));
- lstrcpy(Tester.lpzText,Translate("You have N new mail messages"));
- lstrcpy(TesterF.lpzText,Translate("Connection failed message"));
- lstrcpy(TesterN.lpzText,Translate("No new mail message"));
- if(TesterC)
- {
- Tester.colorBack=SendDlgItemMessage(hDlg,IDC_CPB,CPM_GETCOLOUR,0,0);
- Tester.colorText=SendDlgItemMessage(hDlg,IDC_CPT,CPM_GETCOLOUR,0,0);
- }
- else
- {
- Tester.colorBack=GetSysColor(COLOR_BTNFACE);
- Tester.colorText=GetSysColor(COLOR_WINDOWTEXT);
- }
- if(TesterFC)
- {
- TesterF.colorBack=SendDlgItemMessage(hDlg,IDC_CPFB,CPM_GETCOLOUR,0,0);
- TesterF.colorText=SendDlgItemMessage(hDlg,IDC_CPFT,CPM_GETCOLOUR,0,0);
- }
- else
- {
- TesterF.colorBack=GetSysColor(COLOR_BTNFACE);
- TesterF.colorText=GetSysColor(COLOR_WINDOWTEXT);
- }
- if(TesterNC)
- {
- TesterN.colorBack=SendDlgItemMessage(hDlg,IDC_CPNB,CPM_GETCOLOUR,0,0);
- TesterN.colorText=SendDlgItemMessage(hDlg,IDC_CPNT,CPM_GETCOLOUR,0,0);
- }
- else
- {
- TesterN.colorBack=GetSysColor(COLOR_BTNFACE);
- TesterN.colorText=GetSysColor(COLOR_WINDOWTEXT);
- }
- Tester.PluginWindowProc=(WNDPROC)NULL;
- TesterF.PluginWindowProc=(WNDPROC)NULL;
- TesterN.PluginWindowProc=(WNDPROC)NULL;
- Tester.PluginData=NULL;
- TesterF.PluginData=NULL;
- TesterN.PluginData=NULL;
-
- if(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED)
- CallService(MS_POPUP_ADDPOPUP,(WPARAM)&Tester,0);
- if(IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED)
- CallService(MS_POPUP_ADDPOPUP,(WPARAM)&TesterF,0);
- if(IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED)
- CallService(MS_POPUP_ADDPOPUP,(WPARAM)&TesterN,0);
- Changed=TRUE;
- }
- break;
- case IDC_CHECKKBN:
- Changed=TRUE;
- break;
- case IDC_CHECKPOP:
- Changed=TRUE;
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKCOL),IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPB),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPT),(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_RADIOPOPN),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED));
- EnableWindow(GetDlgItem(hDlg,IDC_RADIOPOP1),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED));
- EnableWindow(GetDlgItem(hDlg,IDC_EDITPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED));
- break;
- case IDC_CHECKFPOP:
- Changed=TRUE;
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKFCOL),IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFB),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPFT),(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITFPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED));
- break;
- case IDC_CHECKNPOP:
- Changed=TRUE;
- EnableWindow(GetDlgItem(hDlg,IDC_CHECKNCOL),IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNB),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_CPNT),(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED) && IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED);
- EnableWindow(GetDlgItem(hDlg,IDC_EDITNPOPS),(IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED));
- break;
-
- }
- if(HIWORD(wParam)==EN_CHANGE)
- Changed=TRUE;
- break;
- }
- case WM_NOTIFY:
- switch(((LPNMHDR)lParam)->idFrom)
- {
- case 0:
- switch(((LPNMHDR)lParam)->code)
- {
- case PSN_APPLY:
- {
- TCHAR Text[MAX_PATH];
- BOOL Translated,NewAcc=FALSE,CheckPopup,CheckPopupW;
- BOOL CheckNPopup,CheckNPopupW,CheckFPopup,CheckFPopupW;
- BOOL CheckPopN;
- UINT Time,TimeN,TimeF;
-
- if(GetDlgItemText(hDlg,IDC_COMBOACCOUNT,Text,sizeof(Text)/sizeof(TCHAR)))
- {
- CheckPopup=(IsDlgButtonChecked(hDlg,IDC_CHECKPOP)==BST_CHECKED);
- CheckPopupW=(IsDlgButtonChecked(hDlg,IDC_CHECKCOL)==BST_CHECKED);
-
- CheckFPopup=(IsDlgButtonChecked(hDlg,IDC_CHECKFPOP)==BST_CHECKED);
- CheckFPopupW=(IsDlgButtonChecked(hDlg,IDC_CHECKFCOL)==BST_CHECKED);
-
- CheckNPopup=(IsDlgButtonChecked(hDlg,IDC_CHECKNPOP)==BST_CHECKED);
- CheckNPopupW=(IsDlgButtonChecked(hDlg,IDC_CHECKNCOL)==BST_CHECKED);
-
- CheckPopN=(IsDlgButtonChecked(hDlg,IDC_RADIOPOPN)==BST_CHECKED);
-
-
- Time=GetDlgItemInt(hDlg,IDC_EDITPOPS,&Translated,FALSE);
- if(!Translated)
- {
- MessageBox(hDlg,Translate("This is not a valid number value"),Translate("Input error"),MB_OK);
- SetFocus(GetDlgItem(hDlg,IDC_EDITPOPS));
- break;
- }
- TimeN=GetDlgItemInt(hDlg,IDC_EDITNPOPS,&Translated,FALSE);
- if(!Translated)
- {
- MessageBox(hDlg,Translate("This is not a valid number value"),Translate("Input error"),MB_OK);
- SetFocus(GetDlgItem(hDlg,IDC_EDITNPOPS));
- break;
- }
- TimeF=GetDlgItemInt(hDlg,IDC_EDITFPOPS,&Translated,FALSE);
- if(!Translated)
- {
- MessageBox(hDlg,Translate("This is not a valid number value"),Translate("Input error"),MB_OK);
- SetFocus(GetDlgItem(hDlg,IDC_EDITFPOPS));
- break;
- }
-
-
- DlgSetItemText(hDlg,(WPARAM)IDC_STTIMELEFT,(LPARAM)Translate("Please wait while no account is in use."));
-
- ActualAccount->Flags=
- (ActualAccount->Flags & YAMN_ACC_ENA) |
- (ActualAccount->Flags & YAMN_ACC_SSL23) |
- (ActualAccount->Flags & YAMN_ACC_NOTLS) |
- (ActualAccount->Flags & YAMN_ACC_APOP) |
- (ActualAccount->Flags & YAMN_ACC_BODY) |
- (CheckPopN ? YAMN_ACC_POPN : 0);
-
- ActualAccount->NewMailN.Flags=
- (ActualAccount->NewMailN.Flags & YAMN_ACC_SND) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_MSG) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_ICO) |
- (CheckPopup ? YAMN_ACC_POP : 0) |
- (CheckPopupW ? YAMN_ACC_POPC : 0) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_APP) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_KBN) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_CONT) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_CONTNICK) |
- (ActualAccount->NewMailN.Flags & YAMN_ACC_CONTNOEVENT) |
- YAMN_ACC_MSGP;
-
- ActualAccount->NoNewMailN.Flags=
- (CheckNPopup ? YAMN_ACC_POP : 0) |
- (CheckNPopupW ? YAMN_ACC_POPC : 0) |
- (ActualAccount->NoNewMailN.Flags & YAMN_ACC_MSGP);
-
- ActualAccount->BadConnectN.Flags=
- (ActualAccount->BadConnectN.Flags & YAMN_ACC_SND) |
- (ActualAccount->BadConnectN.Flags & YAMN_ACC_MSG) |
- (ActualAccount->BadConnectN.Flags & YAMN_ACC_ICO) |
- (CheckFPopup ? YAMN_ACC_POP : 0) |
- (CheckFPopupW ? YAMN_ACC_POPC : 0);
-
- ActualAccount->NewMailN.PopUpB=SendDlgItemMessage(hDlg,IDC_CPB,CPM_GETCOLOUR,0,0);
- ActualAccount->NewMailN.PopUpT=SendDlgItemMessage(hDlg,IDC_CPT,CPM_GETCOLOUR,0,0);
- ActualAccount->NewMailN.PopUpTime=Time;
-
- ActualAccount->NoNewMailN.PopUpB=SendDlgItemMessage(hDlg,IDC_CPNB,CPM_GETCOLOUR,0,0);
- ActualAccount->NoNewMailN.PopUpT=SendDlgItemMessage(hDlg,IDC_CPNT,CPM_GETCOLOUR,0,0);
- ActualAccount->NoNewMailN.PopUpTime=TimeN;
-
- ActualAccount->BadConnectN.PopUpB=SendDlgItemMessage(hDlg,IDC_CPFB,CPM_GETCOLOUR,0,0);
- ActualAccount->BadConnectN.PopUpT=SendDlgItemMessage(hDlg,IDC_CPFT,CPM_GETCOLOUR,0,0);
- ActualAccount->BadConnectN.PopUpTime=TimeF;
-
-
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:ActualAccountSO-write done\n");
- #endif
- WriteDone(ActualAccount);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Options:APPLY:AccountBrowserSO-write done\n");
- #endif
- WriteDoneSO(POP3Plugin->AccountBrowserSO);
-
-// if(0==WritePOP3Accounts())
-// Beep(500,100);
- WritePOP3Accounts();
- RefreshContact();
- return TRUE;
- }
- }
- break;
- }
- break;
- }
- break;
- }
- if(Changed)
- SendMessage(GetParent(hDlg),PSM_CHANGED,0,0);
- return FALSE;
-}
-
diff --git a/yamn/proto/pop3/pop3opt.h b/yamn/proto/pop3/pop3opt.h
deleted file mode 100644
index 291ff03..0000000
--- a/yamn/proto/pop3/pop3opt.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef __OPTIONS_H
-#define __OPTIONS_H
-
-#define M_SHOWACTUAL 0
-#define M_SHOWDEFAULT 1
-
-
-//Enables account in options
-BOOL DlgEnableAccount(HWND hDlg,WPARAM wParam,LPARAM lParam);
-
-//Sets dialog controls to match current account
-BOOL DlgShowAccount(HWND hDlg,WPARAM wParam,LPARAM lParam);
-
-//Sets colors to match colors of actual account
-BOOL DlgShowAccountColors(HWND hDlg,WPARAM wParam,LPARAM lParam);
-
-//Sets dialog item text
-BOOL DlgSetItemText(HWND hDlg,WPARAM wParam,LPARAM lParam);
-
-//Sets dialog item text in Unicode
-BOOL DlgSetItemTextW(HWND hDlg,WPARAM wParam,LPARAM lParam);
-
-//Options dialog procedure
-INT_PTR CALLBACK DlgProcPOP3AccOpt(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
-//Options dialog procedure
-BOOL CALLBACK DlgProcPOP3AccStatusOpt(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
-//Options dialog procedure
-INT_PTR CALLBACK DlgProcYAMNOpt(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
-//Options dialog procedure
-INT_PTR CALLBACK DlgProcPOP3AccPopup(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
-//Initializes POP3 options for Miranda
-int POP3OptInit(WPARAM wParam,LPARAM lParam);
-
-#endif
diff --git a/yamn/protoplugin.cpp b/yamn/protoplugin.cpp
deleted file mode 100644
index e89b879..0000000
--- a/yamn/protoplugin.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * YAMN plugin export functions for protocols
- *
- * (c) majvan 2002-2004
- */
-
-#if !defined(_WIN64)
- #include "filter/simple/AggressiveOptimize.h"
-#endif
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-#include <newpluginapi.h>
-#include <m_database.h>
-#include "m_yamn.h"
-#include "m_protoplugin.h"
-#include "m_synchro.h"
-#include "debug.h"
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern WCHAR *UserDirectory; //e.g. "F:\WINNT\Profiles\UserXYZ"
-extern WCHAR *ProfileName; //e.g. "majvan"
-extern SWMRG *AccountBrowserSO;
-extern LPCRITICAL_SECTION PluginRegCS;
-extern YAMN_VARIABLES YAMNVar;
-//From synchro.cpp
-extern BOOL WINAPI SWMRGInitialize(PSWMRG,TCHAR *);
-extern void WINAPI SWMRGDelete(PSWMRG);
-extern DWORD WINAPI SWMRGWaitToWrite(PSWMRG pSWMRG,DWORD dwTimeout);
-extern void WINAPI SWMRGDoneWriting(PSWMRG pSWMRG);
-extern DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout);
-extern void WINAPI SWMRGDoneReading(PSWMRG pSWMRG);
-//From account.cpp
-extern int StopAccounts(HYAMNPROTOPLUGIN Plugin);
-extern int DeleteAccounts(HYAMNPROTOPLUGIN Plugin);
-extern int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin,BOOL GetAccountBrowserAccess);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-WCHAR FileName2[]=L"%s\\yamn-accounts.%s.%s.book"; //UserDirectory\\yamn-accounts.PluginName.UserProfileName.book
-PYAMN_PROTOPLUGINQUEUE FirstProtoPlugin=NULL;
-
-INT_PTR RegisterProtocolPluginSvc(WPARAM,LPARAM);
-
-//Removes plugin from queue and deletes registration structures
-INT_PTR UnregisterProtocolPlugin(HYAMNPROTOPLUGIN Plugin);
-
-INT_PTR UnregisterProtocolPluginSvc(WPARAM,LPARAM);
-
-//Removes plugins from queue and deletes registration structures
-INT_PTR UnregisterProtoPlugins();
-
-//Sets imported functions for an plugin and therefore it starts plugin to be registered and running
-// Plugin- plugin, which wants to set its functions
-// YAMNFcn- pointer to imported functions with accounts
-// YAMNFcnVer- version of YAMN_PROTOIMPORTFCN, use YAMN_PROTOIMPORTFCNVERSION
-// YAMNMailFcn- pointer to imported functions with mails
-// YAMNMailFcnVer- version of YAMN_MAILIMPORTFCN, use YAMN_MAILIMPORTFCNVERSION
-// returns nonzero if success
-int WINAPI SetProtocolPluginFcnImportFcn(HYAMNPROTOPLUGIN Plugin,PYAMN_PROTOIMPORTFCN YAMNFcn,DWORD YAMNFcnVer,PYAMN_MAILIMPORTFCN YAMNMailFcn,DWORD YAMNMailFcnVer);
-
-INT_PTR GetFileNameWSvc(WPARAM,LPARAM);
-INT_PTR GetFileNameASvc(WPARAM,LPARAM);
-INT_PTR DeleteFileNameSvc(WPARAM,LPARAM);
-
-struct CExportedFunctions ProtoPluginExportedFcn[]=
-{
- {YAMN_SETPROTOCOLPLUGINFCNIMPORTID,(void *)SetProtocolPluginFcnImportFcn},
-};
-
-struct CExportedServices ProtoPluginExportedSvc[]=
-{
- {MS_YAMN_REGISTERPROTOPLUGIN,RegisterProtocolPluginSvc},
- {MS_YAMN_UNREGISTERPROTOPLUGIN,UnregisterProtocolPluginSvc},
- {MS_YAMN_GETFILENAMEA,GetFileNameASvc},
- {MS_YAMN_GETFILENAMEW,GetFileNameWSvc},
- {MS_YAMN_DELETEFILENAME,DeleteFileNameSvc},
-};
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR RegisterProtocolPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- PYAMN_PROTOREGISTRATION Registration=(PYAMN_PROTOREGISTRATION)wParam;
- HYAMNPROTOPLUGIN Plugin;
-
- if(lParam!=YAMN_PROTOREGISTRATIONVERSION)
- return 0;
- if((Registration->Name==NULL) || (Registration->Ver==NULL))
- return (INT_PTR)NULL;
- if(NULL==(Plugin=new YAMN_PROTOPLUGIN))
- return (INT_PTR)NULL;
-
- Plugin->PluginInfo=Registration;
-
- Plugin->FirstAccount=NULL;
-
- Plugin->AccountBrowserSO=new SWMRG;
- SWMRGInitialize(Plugin->AccountBrowserSO,NULL);
-
- Plugin->Fcn=NULL;
- Plugin->MailFcn=NULL;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- new protocol registered: %0x (%s) :::\n",Plugin,Registration->Name);
-#endif
- return (INT_PTR)Plugin;
-}
-
-int WINAPI SetProtocolPluginFcnImportFcn(HYAMNPROTOPLUGIN Plugin,PYAMN_PROTOIMPORTFCN YAMNFcn,DWORD YAMNFcnVer,PYAMN_MAILIMPORTFCN YAMNMailFcn,DWORD YAMNMailFcnVer)
-{
- PYAMN_PROTOPLUGINQUEUE Parser;
-
- if(YAMNFcnVer!=YAMN_PROTOIMPORTFCNVERSION)
- return 0;
- if(YAMNMailFcnVer!=YAMN_MAILIMPORTFCNVERSION)
- return 0;
- if(YAMNFcn==NULL)
- return 0;
- if(YAMNMailFcn==NULL)
- return 0;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- protocol %0x import succeed :::\n",Plugin);
-#endif
- Plugin->Fcn=YAMNFcn;
- Plugin->MailFcn=YAMNMailFcn;
-
- EnterCriticalSection(PluginRegCS);
-//We add protocol to the protocol list
- for(Parser=FirstProtoPlugin;Parser!=NULL && Parser->Next!=NULL;Parser=Parser->Next);
- if(Parser==NULL)
- {
- FirstProtoPlugin=new YAMN_PROTOPLUGINQUEUE;
- Parser=FirstProtoPlugin;
- }
- else
- {
- Parser->Next=new YAMN_PROTOPLUGINQUEUE;
- Parser=Parser->Next;
- }
-
- Parser->Plugin=Plugin;
- Parser->Next=NULL;
-
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR UnregisterProtocolPlugin(HYAMNPROTOPLUGIN Plugin)
-{
- PYAMN_PROTOPLUGINQUEUE Parser,Found;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Entering UnregisterProtocolPlugin\n");
-#endif
- if(FirstProtoPlugin->Plugin==Plugin)
- {
- Found=FirstProtoPlugin;
- FirstProtoPlugin=FirstProtoPlugin->Next;
- }
- else
- {
- for(Parser=FirstProtoPlugin;(Parser->Next!=NULL) && (Plugin!=Parser->Next->Plugin);Parser=Parser->Next);
- if(Parser->Next!=NULL)
- {
- Found=Parser->Next;
- Parser->Next=Parser->Next->Next;
- }
- else
- Found=NULL;
- }
- if(Found!=NULL)
- {
- StopAccounts(Plugin);
- DeleteAccounts(Plugin);
- if(Plugin->Fcn->UnLoadFcn!=NULL)
- Plugin->Fcn->UnLoadFcn((void *)0);
-
- delete Found->Plugin->AccountBrowserSO;
- delete Found->Plugin;
- delete Found;
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"::: YAMN- protocol %0x unregistered :::\n",Plugin);
-#endif
- }
- else
- return 0;
- return 1;
-}
-
-INT_PTR UnregisterProtocolPluginSvc(WPARAM wParam,LPARAM lParam)
-{
- HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam;
-
- EnterCriticalSection(PluginRegCS);
- UnregisterProtocolPlugin(Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-
-}
-
-INT_PTR UnregisterProtoPlugins()
-{
- EnterCriticalSection(PluginRegCS);
-//We remove protocols from the protocol list
- while(FirstProtoPlugin!=NULL)
- UnregisterProtocolPlugin(FirstProtoPlugin->Plugin);
- LeaveCriticalSection(PluginRegCS);
- return 1;
-}
-
-INT_PTR GetFileNameWSvc(WPARAM wParam,LPARAM)
-{
- WCHAR *FileName;
-
- if(NULL==(FileName=new WCHAR[MAX_PATH]))
- return NULL;
- swprintf(FileName,FileName2,UserDirectory,(WCHAR *)wParam,ProfileName);
-// MessageBoxW(NULL,FileName,L"GetFileNameW",MB_OK);
- return (INT_PTR)FileName;
-}
-
-INT_PTR GetFileNameASvc(WPARAM wParam,LPARAM)
-{
- WCHAR *ConvertedInput;
- WCHAR *FileName;
-
- if(NULL==(FileName=new WCHAR[MAX_PATH]))
- return NULL;
- if(NULL==(ConvertedInput=new WCHAR[MAX_PATH]))
- {
- delete[] FileName;
- return NULL;
- }
-
-// Convert input string to unicode
- MultiByteToWideChar(CP_ACP,MB_USEGLYPHCHARS,(char *)wParam,-1,ConvertedInput,(int)strlen((char *)wParam)+1);
-
- swprintf(FileName,FileName2,UserDirectory,ConvertedInput,ProfileName);
-// MessageBoxW(NULL,FileName,L"GetFileNameA",MB_OK);
- delete[] ConvertedInput;
-
- return (INT_PTR)FileName;
-}
-
-INT_PTR DeleteFileNameSvc(WPARAM wParam,LPARAM)
-{
- if((WCHAR *)wParam!=NULL)
- delete[] (WCHAR *)wParam;
-
- return 0;
-}
diff --git a/yamn/resources/YAMN.rc b/yamn/resources/YAMN.rc
deleted file mode 100644
index 9269bf8..0000000
--- a/yamn/resources/YAMN.rc
+++ /dev/null
@@ -1,383 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// Neutral resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
-#ifdef _WIN32
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- IDD_DLGVIEWMESSAGES, DIALOG
- BEGIN
- LEFTMARGIN, 5
- RIGHTMARGIN, 455
- TOPMARGIN, 5
- BOTTOMMARGIN, 105
- END
-
- IDD_DLGBADCONNECT, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 179
- TOPMARGIN, 7
- BOTTOMMARGIN, 43
- END
-
- IDD_PLUGINOPT, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 312
- VERTGUIDE, 13
- VERTGUIDE, 85
- VERTGUIDE, 160
- VERTGUIDE, 307
- TOPMARGIN, 4
- HORZGUIDE, 5
- HORZGUIDE, 20
- HORZGUIDE, 147
- HORZGUIDE, 157
- HORZGUIDE, 173
- HORZGUIDE, 184
- HORZGUIDE, 207
- HORZGUIDE, 217
- END
-
- IDD_POP3ACCOUNTOPT, DIALOG
- BEGIN
- VERTGUIDE, 155
- VERTGUIDE, 236
- END
-
- IDD_CHOOSESTATUSMODES, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 219
- TOPMARGIN, 7
- BOTTOMMARGIN, 147
- END
-
- IDD_YAMNOPT, DIALOG
- BEGIN
- VERTGUIDE, 8
- END
-
- IDD_POP3ACCOUNTPOPUP, DIALOG
- BEGIN
- VERTGUIDE, 155
- VERTGUIDE, 236
- END
-END
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DLGVIEWMESSAGES DIALOG 50, 200, 460, 110
-STYLE DS_SETFONT | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "List4",IDC_LISTMAILS,"SysListView32",LVS_REPORT | LVS_EDITLABELS | WS_BORDER | WS_TABSTOP,5,5,450,70
- DEFPUSHBUTTON "",IDC_BTNOK,395,90,60,15
- PUSHBUTTON "",IDC_BTNAPP,263,90,114,15
- PUSHBUTTON "",IDC_BTNDEL,5,90,114,15
- LTEXT "",IDC_STSTATUS,5,75,450,10
- PUSHBUTTON "",IDC_BTNCHECKALL,150,91,92,14
-END
-
-IDD_DLGSHOWMESSAGE DIALOGEX 50, 200, 460, 132
-STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- CONTROL "List5",IDC_LISTHEADERS,"SysListView32",LVS_REPORT | LVS_EDITLABELS | WS_BORDER | WS_TABSTOP,5,5,450,70
- CONTROL "",IDC_SPLITTER,"Static",SS_ENHMETAFILE | WS_TABSTOP,0,80,187,2,WS_EX_STATICEDGE
- EDITTEXT IDC_EDITBODY,3,84,454,45,ES_MULTILINE | ES_READONLY | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL
-END
-
-IDD_DLGBADCONNECT DIALOG 0, 0, 186, 76
-STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-BEGIN
- DEFPUSHBUTTON "OK",IDC_BTNOK,69,55,50,14
- LTEXT "",IDC_STATICMSG,7,7,172,37
-END
-
-IDD_PLUGINOPT DIALOGEX 0, 0, 310, 231
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_BORDER
-EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- GROUPBOX "Installed plugins",IDC_STATIC,7,5,300,142
- COMBOBOX IDC_COMBOPLUGINS,13,14,287,58,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- LTEXT "Version:",IDC_STATIC,13,30,72,11
- EDITTEXT IDC_STVER,85,30,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | WS_GROUP
- LTEXT "Description:",IDC_STATIC,13,41,72,23
- EDITTEXT IDC_STDESC,85,41,215,23,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | WS_GROUP
- LTEXT "Copyright:",IDC_STATIC,13,64,72,10
- EDITTEXT IDC_STCOPY,85,63,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | WS_GROUP
- LTEXT "Contact:",IDC_STATIC,13,77,72,11
- EDITTEXT IDC_STMAIL,85,76,214,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | WS_GROUP
- LTEXT "WWW:",IDC_STATIC,13,101,72,11
- CONTROL "",IDC_STWWW,"Hyperlink",WS_TABSTOP,85,101,215,11
-END
-
-IDD_POP3ACCOUNTOPT DIALOGEX 0, 0, 310, 230
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE
-EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- COMBOBOX IDC_COMBOACCOUNT,4,6,106,65,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
- CONTROL "Check this account",IDC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,32,118,10,WS_EX_TRANSPARENT
- LTEXT "Check interval [min]:",IDC_STINTERVAL,168,56,94,8
- EDITTEXT IDC_EDITINTERVAL,259,53,20,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_TRANSPARENT
- GROUPBOX "Notifications",IDC_GBNEWMAIL,4,143,304,87
- CONTROL "Sound",IDC_CHECKSND,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,12,162,60,10
- CONTROL "Message",IDC_CHECKMSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,174,135,10
- CONTROL "Tray Icon",IDC_CHECKICO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,85,163,65,10
- CONTROL "Keyboard Flash",IDC_CHECKKBN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,186,132,9
- CONTROL "Execute Application",IDC_CHECKAPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,198,135,8
- PUSHBUTTON "...",IDC_BTNAPP,19,209,16,12
- EDITTEXT IDC_EDITAPP,41,209,65,12,ES_AUTOHSCROLL
- EDITTEXT IDC_EDITAPPPARAM,111,209,40,12,ES_AUTOHSCROLL
- CONTROL "Use contact notification for this account",IDC_CHECKCONTACT,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,166,107,138,10,WS_EX_TRANSPARENT
- CONTROL "Replace nick name",IDC_CHECKCONTACTNICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,117,117,10,WS_EX_TRANSPARENT
- CONTROL "Disable Events",IDC_CHECKCONTACTNOEVENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,128,115,10,WS_EX_TRANSPARENT
- LTEXT "",IDC_STSTATUS,218,9,88,8
- LTEXT "Server:",IDC_STSERVER,10,50,44,8
- EDITTEXT IDC_EDITSERVER,56,48,92,12,ES_AUTOHSCROLL | WS_GROUP
- LTEXT "User Name:",IDC_STLOGIN,10,82,44,8
- EDITTEXT IDC_EDITLOGIN,57,80,92,12,ES_AUTOHSCROLL | WS_GROUP
- LTEXT "Password:",IDC_STPASS,10,96,44,8
- EDITTEXT IDC_EDITPASS,57,94,92,12,ES_PASSWORD | ES_AUTOHSCROLL | WS_GROUP
- LTEXT "Codepage:",IDC_STCP,10,111,44,8
- COMBOBOX IDC_COMBOCP,57,108,92,130,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
- LTEXT "Port:",IDC_STPORT,10,65,44,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDITPORT,57,64,27,12,ES_AUTOHSCROLL | ES_NUMBER | WS_GROUP
- CONTROL "SSL",IDC_CHECKSSL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,87,66,27,10
- CONTROL "Disable STLS",IDC_CHECKNOTLS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,83,125,69,10
- CONTROL "Startup check",IDC_CHECKSTART,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,167,43,78,10
- CONTROL "Auto retrieve body",IDC_AUTOBODY,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,166,86,137,10
- CONTROL "Check from menu",IDC_CHECKFORCE,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,166,97,137,8
- PUSHBUTTON "Only check when ...",IDC_BTNSTATUS,195,69,81,13
- CONTROL "Sound notification if failed",IDC_CHECKFSND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,166,163,135,10
- CONTROL "Message notification if failed",IDC_CHECKFMSG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,166,174,135,10
- CONTROL "Tray icon notification if failed",IDC_CHECKFICO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,166,186,135,10
- PUSHBUTTON "Reset counter",IDC_BTNRESET,161,200,75,13
- PUSHBUTTON "-",IDC_BTNDEL,140,6,15,13
- PUSHBUTTON "Default",IDC_BTNDEFAULT,9,124,54,13
- LTEXT "",IDC_STTIMELEFT,163,216,141,8
- LTEXT "Status:",IDC_STATIC,175,9,34,9
- PUSHBUTTON "+",IDC_BTNADD,118,6,15,13
- GROUPBOX "Account",IDC_STATIC,4,22,151,120
- CONTROL "APOP",IDC_CHECKAPOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,66,34,10
- LTEXT "Name:",IDC_STATIC,10,34,44,10
- EDITTEXT IDC_EDITNAME,56,32,92,12,ES_AUTOHSCROLL
- GROUPBOX "Options",IDC_STATIC,161,22,147,120
- GROUPBOX "New Mail",IDC_STATIC,7,153,149,73
- GROUPBOX "Errors",IDC_STATIC,161,153,143,44
-END
-
-IDD_CHOOSESTATUSMODES DIALOG 0, 0, 226, 154
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Check while ..."
-FONT 8, "MS Shell Dlg"
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,112,133,50,14
- PUSHBUTTON "Cancel",IDCANCEL,169,133,50,14
- GROUPBOX "Choose modes",IDC_STATUSGROUP,7,7,212,119
- CONTROL "Offline",IDC_CHECKST0,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,15,19,70,9
- CONTROL "Online",IDC_CHECKST1,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,15,39,70,9
- CONTROL "Away",IDC_CHECKST2,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,15,62,70,9
- CONTROL "N/A",IDC_CHECKST3,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,15,83,70,9
- CONTROL "Occupied",IDC_CHECKST4,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,15,104,70,9
- CONTROL "DND",IDC_CHECKST5,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,134,19,70,9
- CONTROL "Free for chat",IDC_CHECKST6,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,134,39,70,9
- CONTROL "Invisible",IDC_CHECKST7,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,134,62,70,9
- CONTROL "On the phone",IDC_CHECKST8,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,134,83,70,9
- CONTROL "Out to lunch",IDC_CHECKST9,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,134,104,70,9
-END
-
-IDD_YAMNOPT DIALOGEX 0, 0, 310, 216
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_BORDER
-EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- CONTROL "HotKey1",IDC_HKFORCE,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,169,15,110,12
- LTEXT "Hotkey for mail check:",IDC_STATIC,7,16,153,10
- CONTROL "TopToolBar button ""Check mail""",IDC_CHECKTTB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,28,160,11
- GROUPBOX "YAMN General Options",IDC_STATIC,3,2,303,80
- CONTROL "Enable YAMN Main Menu (Require Restart)",IDC_MAINMENU,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,46,270,9
- GROUPBOX "MailBrowser Options",IDC_STATIC,3,91,151,61
- CONTROL "Enable Close on Delete Button",IDC_CLOSEONDELETE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,103,143,11
- CONTROL "Show long localised date",IDC_LONGDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,100,144,10
- CONTROL "Don't show today's date",IDC_SMARTDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,112,144,10
- GROUPBOX "Date/Time Representation",IDC_STATIC,166,91,141,61
- CONTROL "Don't show seconds",IDC_NOSECONDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,124,135,8
- CONTROL "Show YAMN as a Protocol (Require Restart)",IDC_YAMNASPROTO,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,63,270,9
-END
-
-IDD_POP3ACCOUNTPOPUP DIALOGEX 0, 0, 315, 230
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE
-EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Shell Dlg", 0, 0, 0x1
-BEGIN
- COMBOBOX IDC_COMBOACCOUNT,4,4,140,65,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
- GROUPBOX "Mail Notifications",IDC_GBNEWMAIL,5,23,300,76
- CONTROL "Popup",IDC_CHECKPOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,32,108,10
- CONTROL "Single popup",IDC_RADIOPOP1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,23,43,95,10
- CONTROL "Multi popup",IDC_RADIOPOPN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,23,55,95,10
- CONTROL "Use custom colour",IDC_CHECKCOL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,107,10
- CONTROL "",IDC_CPB,"ColourPicker",WS_TABSTOP,145,66,29,12
- CONTROL "",IDC_CPT,"ColourPicker",WS_TABSTOP,145,83,29,12
- EDITTEXT IDC_EDITPOPS,23,65,20,12,ES_AUTOHSCROLL
- GROUPBOX "No new mail notifications",IDC_GBNONEWMAIL,5,152,300,62
- CONTROL "Popup if no mail",IDC_CHECKNPOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,161,94,10
- CONTROL "Persistant message",IDC_CHECKNMSGP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,188,110,10
- CONTROL "Use custom colour",IDC_CHECKNCOL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,201,107,10
- CONTROL "",IDC_CPNB,"ColourPicker",WS_TABSTOP,145,181,29,12
- CONTROL "",IDC_CPNT,"ColourPicker",WS_TABSTOP,145,198,29,12
- EDITTEXT IDC_EDITNPOPS,23,173,20,12,ES_AUTOHSCROLL
- GROUPBOX "Connection failure notifications",IDC_GBBADCONNECT,5,101,300,49
- CONTROL "Popup notification if failed",IDC_CHECKFPOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,110,118,10
- CONTROL "Use custom colour",IDC_CHECKFCOL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,136,95,10
- CONTROL "",IDC_CPFB,"ColourPicker",WS_TABSTOP,145,118,29,12
- CONTROL "",IDC_CPFT,"ColourPicker",WS_TABSTOP,145,134,29,12
- EDITTEXT IDC_EDITFPOPS,23,121,20,12,ES_AUTOHSCROLL
- LTEXT "..s Popup duration",IDC_STATIC,45,67,70,8
- LTEXT "..s Popup duration",IDC_STATIC,45,176,70,8
- LTEXT "..s Popup duration",IDC_STATIC,45,122,70,8
- PUSHBUTTON "Preview",IDC_PREVIEW,255,215,49,13
- LTEXT "Background colour",IDC_STATIC,177,184,108,10
- LTEXT "Text colour",IDC_STATIC,177,200,107,10
- LTEXT "Background colour",IDC_STATIC,177,120,108,10
- LTEXT "Text colour",IDC_STATIC,177,136,107,10
- LTEXT "Background colour",IDC_STATIC,177,69,108,10
- LTEXT "Text colour",IDC_STATIC,177,85,107,10
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_ONLINE ICON "iconeutral.ico"
-IDI_OFFLINE ICON "icooffline.ico"
-IDI_NA ICON "icoyamn3.ico"
-IDI_OCCUPIED ICON "iconttbdown.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-IDB_ICONS BITMAP "yamn.bmp"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,1,2,5
- PRODUCTVERSION 0,1,2,5
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x40004L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "Comments", "Yet Another Mail Notifier"
- VALUE "FileDescription", "Yet Another Mail Notifier"
- VALUE "FileVersion", "0.1.2.5"
- VALUE "InternalName", "YAMN"
- VALUE "LegalCopyright", "Copyright © 2007"
- VALUE "OriginalFilename", "YAMN.dll"
- VALUE "ProductName", "YAMN tweety"
- VALUE "ProductVersion", "0.1.2.5"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END
-
-#endif // Neutral resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/yamn/resources/iconeutral.ico b/yamn/resources/iconeutral.ico
deleted file mode 100644
index 9304f43..0000000
--- a/yamn/resources/iconeutral.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/resources/iconttbdown.ico b/yamn/resources/iconttbdown.ico
deleted file mode 100644
index 206eba2..0000000
--- a/yamn/resources/iconttbdown.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/resources/icooffline.ico b/yamn/resources/icooffline.ico
deleted file mode 100644
index db5b2e1..0000000
--- a/yamn/resources/icooffline.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/resources/icoyamn3.ico b/yamn/resources/icoyamn3.ico
deleted file mode 100644
index ca11f0f..0000000
--- a/yamn/resources/icoyamn3.ico
+++ /dev/null
Binary files differ
diff --git a/yamn/resources/resource.h b/yamn/resources/resource.h
deleted file mode 100644
index bd9b48b..0000000
--- a/yamn/resources/resource.h
+++ /dev/null
@@ -1,130 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
-// Used by YAMN.rc
-//
-#define IDI_ONLINE 104
-#define IDI_OFFLINE 105
-#define IDD_DLGVIEWMESSAGES 107
-#define IDD_DLGSHOWMESSAGE 108
-#define IDI_ICOYAMN2 112
-#define IDI_ICOYAMN1 113
-#define IDD_DLGBADCONNECT 115
-#define IDD_POP3ACCOUNTOPT 121
-#define IDD_YAMNOPT 126
-#define IDB_ICONS 127
-#define IDI_NA 131
-#define IDI_ICOTTBUP 138
-#define IDD_PLUGINOPT 141
-#define IDI_OCCUPIED 159
-#define IDD_CHOOSESTATUSMODES 310
-#define IDD_OPTIONS 311
-#define IDD_POP3ACCOUNTPOPUP 312
-#define IDC_EDITSERVER 1000
-#define IDC_EDITPORT 1001
-#define IDC_EDITLOGIN 1002
-#define IDC_EDITPASS 1003
-#define IDC_COMBOACCOUNT 1005
-#define IDC_BTNDEFAULT 1006
-#define IDC_EDITINTERVAL 1007
-#define IDC_CHECKSND 1008
-#define IDC_CHECKMSG 1009
-#define IDC_CHECKAPP 1010
-#define IDC_BTNAPP 1011
-#define IDC_CHECKICO 1012
-#define IDC_CHECK 1013
-#define IDC_BTNDEL 1014
-#define IDC_STSERVER 1015
-#define IDC_CHECKFSND 1016
-#define IDC_CHECKFMSG 1017
-#define IDC_CHECKFICO 1018
-#define IDC_CHECKST0 1019
-#define IDC_CHECKST1 1020
-#define IDC_CHECKST2 1021
-#define IDC_CHECKST3 1022
-#define IDC_CHECKST4 1023
-#define IDC_CHECKST5 1024
-#define IDC_CHECKST6 1025
-#define IDC_CHECKST7 1026
-#define IDC_EDITAPP 1027
-#define IDC_CHECKST8 1028
-#define IDC_CHECKST9 1029
-#define IDC_CHECKCONTACT 1030
-#define IDC_CHECKCONTACTNICK 1031
-#define IDC_CHECKCONTACTNOEVENT 1032
-#define IDC_STTIMELEFT 1033
-#define IDC_LISTMAILS 1038
-#define IDC_LISTHEADERS 1039
-#define IDC_EDITAPPPARAM 1044
-#define IDC_BTNOK 1047
-#define IDC_COMBOCP 1050
-#define IDC_STCP 1055
-#define IDC_STATICMSG 1055
-#define IDC_STPORT 1056
-#define IDC_STLOGIN 1057
-#define IDC_STPASS 1058
-#define IDC_STINTERVAL 1059
-#define IDC_AUTOBODY 1062
-#define IDC_BTNRESET 1063
-#define IDC_CHECKSTART 1064
-#define IDC_STWCHECK 1065
-#define IDC_CHECKFORCE 1066
-#define IDC_RADIOPOP1 1068
-#define IDC_RADIOPOPN 1069
-#define IDC_CPB 1070
-#define IDC_CPNB 1071
-#define IDC_CHECKCOL 1073
-#define IDC_CPT 1074
-#define IDC_CPFB 1075
-#define IDC_CPFT 1076
-#define IDC_CHECKFCOL 1077
-#define IDC_CHECKNCOL 1078
-#define IDC_CPNT 1079
-#define IDC_HKFORCE 1081
-#define IDC_CHECKPOP 1087
-#define IDC_CHECKNPOP 1088
-#define IDC_CHECKFPOP 1089
-#define IDC_EDITPOPS 1090
-#define IDC_EDITNPOPS 1091
-#define IDC_EDITFPOPS 1092
-#define IDC_GBNEWMAIL 1094
-#define IDC_GBNONEWMAIL 1095
-#define IDC_GBBADCONNECT 1096
-#define IDC_STSTATUS 1102
-#define IDC_COMBOPLUGINS 1104
-#define IDC_STWWW 1111
-#define IDC_STMAIL 1113
-#define IDC_STCOPY 1114
-#define IDC_STDESC 1115
-#define IDC_STVER 1116
-#define IDC_CHECKTTB 1117
-#define IDC_CHECKSSL 1117
-#define IDC_CHECKNMSGP 1118
-#define IDC_CHECKNOTLS 1120
-#define IDC_CHECKKBN 1121
-#define IDC_BTNSTATUS 1123
-#define IDC_OPTIONSTAB 1124
-#define IDC_BTNCHECKALL 1125
-#define IDC_MAINMENU 1126
-#define IDC_CLOSEONDELETE 1127
-#define IDC_LONGDATE 1128
-#define IDC_SMARTDATE 1129
-#define IDC_NOSECONDS 1130
-#define IDC_YAMNASPROTO 1131
-#define IDC_CHECKAPOP 1200
-#define IDC_STATUSGROUP 1338
-#define IDC_SPLITTER 1400
-#define IDC_EDITBODY 1401
-#define IDC_PREVIEW 1402
-#define IDC_BTNADD 1403
-#define IDC_EDITNAME 1404
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 143
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1407
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/yamn/resources/yamn.bmp b/yamn/resources/yamn.bmp
deleted file mode 100644
index 91a9e34..0000000
--- a/yamn/resources/yamn.bmp
+++ /dev/null
Binary files differ
diff --git a/yamn/services.cpp b/yamn/services.cpp
deleted file mode 100644
index 60b24c2..0000000
--- a/yamn/services.cpp
+++ /dev/null
@@ -1,541 +0,0 @@
-
-#include "main.h"
-#include "yamn.h"
-// External icon var for icolib support
-
-
-//MessageWndCS
-//We want to send messages to all windows in the queue
-//When we send messages, no other window can register itself to the queue for receiving messages
-extern LPCRITICAL_SECTION MessageWndCS;
-
-//Plugin registration CS
-//Used if we add (register) plugin to YAMN plugins and when we browse through registered plugins
-extern LPCRITICAL_SECTION PluginRegCS;
-
-//AccountWriterCS
-//We want to store number of writers of Accounts (number of Accounts used for writing)
-//If we want to read all accounts (for saving to file) immidiatelly, we have to wait until no account is changing (no thread writing to account)
-extern SCOUNTER *AccountWriterSO;
-
-//NoExitEV
-//Event that is signaled when there's a request to exit, so no new pop3 check should be performed
-extern HANDLE ExitEV;
-
-//WriteToFileEV
-//If this is signaled, write accounts to file is performed. Set this event if you want to actualize your accounts and messages
-extern HANDLE WriteToFileEV;
-
-//extern HICON hYamnIconsOrg[];
-extern HICON hYamnIcons[];
-extern char *iconDescs[];
-extern char *iconNames[];
-extern HIMAGELIST CSImages;
-
-extern void __stdcall SSL_DebugLog( const char *fmt, ... );
-
-extern char *ProtoName;
-extern INT_PTR YAMN_STATUS;
-
-extern PYAMN_VARIABLES pYAMNVar;
-extern HYAMNPROTOPLUGIN POP3Plugin;
-
-static INT_PTR Service_GetCaps(WPARAM wParam, LPARAM lParam)
-{
- if(wParam==PFLAGNUM_4)
- return PF4_NOCUSTOMAUTH;
- if(wParam==PFLAG_UNIQUEIDTEXT)
- return (INT_PTR) Translate("Nick");
- if(wParam==PFLAG_MAXLENOFMESSAGE)
- return 400;
- if(wParam==PFLAG_UNIQUEIDSETTING)
- return (INT_PTR) "Id";
- if(wParam==PFLAGNUM_2)
- return PF2_ONLINE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND;
- if(wParam==PFLAGNUM_5)
- if(DBGetContactSettingByte(NULL, YAMN_DBMODULE, YAMN_SHOWASPROTO, 1))
- return PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND;
- else
- return PF2_ONLINE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND;
- return 0;
-}
-
-static INT_PTR Service_GetStatus(WPARAM wParam, LPARAM lParam)
-{
- return YAMN_STATUS;
-}
-
-static INT_PTR Service_SetStatus(WPARAM wParam,LPARAM lParam)
-{
- INT_PTR newstatus = (wParam!=ID_STATUS_OFFLINE)?ID_STATUS_ONLINE:ID_STATUS_OFFLINE;
- if (newstatus != YAMN_STATUS){
- INT_PTR oldstatus = YAMN_STATUS;
- YAMN_STATUS=newstatus;
- ProtoBroadcastAck(ProtoName,NULL,ACKTYPE_STATUS,ACKRESULT_SUCCESS,(HANDLE)oldstatus,newstatus);
- }
- return 0;
-
-}
-
-static INT_PTR Service_GetName(WPARAM wParam, LPARAM lParam)
-{
- lstrcpyn((char *) lParam, ProtoName, wParam);;
- return 0;
-}
-
-static INT_PTR Service_LoadIcon(WPARAM wParam,LPARAM lParam)
-{
- if ( LOWORD( wParam ) == PLI_PROTOCOL )
- return (INT_PTR)CopyIcon(hYamnIcons[0]); // noone cares about other than PLI_PROTOCOL
-
- return (INT_PTR)(HICON)NULL;
-
-}
-
-/*static*/ INT_PTR ClistContactDoubleclicked(WPARAM wParam, LPARAM lParam)
-{
- ContactDoubleclicked(((CLISTEVENT*)lParam)->lParam, lParam);
- return 0;
-}
-
-static int Service_ContactDoubleclicked(WPARAM wParam, LPARAM lParam)
-{
- ContactDoubleclicked(wParam, lParam);
- return 0;
-}
-
-static INT_PTR ContactApplication(WPARAM wParam, LPARAM lParam)
-{
- DBVARIANT dbv;
- char *szProto;
- HACCOUNT ActualAccount;
-
- szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0);
- if(szProto != NULL && strcmp(szProto, ProtoName)==0)
- {
- if(!DBGetContactSetting((HANDLE) wParam,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- if(ActualAccount != NULL)
- {
- PROCESS_INFORMATION pi;
- STARTUPINFOW si;
-
- ZeroMemory(&si,sizeof(si));
- si.cb=sizeof(si);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ContactApplication:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ContactApplication:ualAccountSO-read enter\n");
- #endif
- if(ActualAccount->NewMailN.App!=NULL)
- {
- WCHAR *Command;
- if(ActualAccount->NewMailN.AppParam!=NULL)
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+wcslen(ActualAccount->NewMailN.AppParam)+6];
- else
- Command=new WCHAR[wcslen(ActualAccount->NewMailN.App)+6];
-
- if(Command!=NULL)
- {
- lstrcpyW(Command,L"\"");
- lstrcatW(Command,ActualAccount->NewMailN.App);
- lstrcatW(Command,L"\" ");
- if(ActualAccount->NewMailN.AppParam!=NULL)
- lstrcatW(Command,ActualAccount->NewMailN.AppParam);
- CreateProcessW(NULL,Command,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
- delete[] Command;
- }
- }
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ContactApplication:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"ContactApplication:ActualAccountSO-read enter failed\n");
- #endif
- }
- DBFreeVariant(&dbv);
- }
- }
- return 0;
-}
-
-DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout);
-static INT_PTR AccountMailCheck(WPARAM wParam, LPARAM lParam){
- //This service will check/sincronize the account pointed by wParam
- HACCOUNT ActualAccount = (HACCOUNT)wParam;
- HANDLE ThreadRunningEV;
- DWORD tid;
- // copy/paste make mistakes
- if(ActualAccount != NULL)
- {
- //we use event to signal, that running thread has all needed stack parameters copied
- if(NULL==(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- return 0;
- //if we want to close miranda, we get event and do not run pop3 checking anymore
- if(WAIT_OBJECT_0==WaitForSingleObject(ExitEV,0))
- return 0;
- EnterCriticalSection(PluginRegCS);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"AccountCheck:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=SWMRGWaitToRead(ActualAccount->AccountAccessSO,0))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read wait failed\n");
- #endif
- }
- else
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read enter\n");
- #endif
- if((ActualAccount->Flags & YAMN_ACC_ENA) && ActualAccount->Plugin->Fcn->SynchroFcnPtr)
- {
- struct CheckParam ParamToPlugin={YAMN_CHECKVERSION,ThreadRunningEV,ActualAccount,lParam?YAMN_FORCECHECK:YAMN_NORMALCHECK,(void *)0,NULL};
- HANDLE NewThread;
-
- ActualAccount->TimeLeft=ActualAccount->Interval;
- if(NewThread=CreateThread(NULL,0,(YAMN_STANDARDFCN)ActualAccount->Plugin->Fcn->SynchroFcnPtr,&ParamToPlugin,0,&tid))
- {
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- else
- {
- //ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
-
- }
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- LeaveCriticalSection(PluginRegCS);
- CloseHandle(ThreadRunningEV);
- }
- return 0;
-}
-
-static INT_PTR ContactMailCheck(WPARAM wParam, LPARAM lParam)
-{
-
- DBVARIANT dbv;
- char *szProto;
- HACCOUNT ActualAccount;
- HANDLE ThreadRunningEV;
- DWORD tid;
-
- szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0);
- if(szProto != NULL && strcmp(szProto, ProtoName)==0)
- {
- if(!DBGetContactSetting((HANDLE) wParam,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- if(ActualAccount != NULL)
- {
- //we use event to signal, that running thread has all needed stack parameters copied
- if(NULL==(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- return 0;
- //if we want to close miranda, we get event and do not run pop3 checking anymore
- if(WAIT_OBJECT_0==WaitForSingleObject(ExitEV,0))
- return 0;
- EnterCriticalSection(PluginRegCS);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read wait failed\n");
- #endif
- }
- else
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read enter\n");
- #endif
- if((ActualAccount->Flags & YAMN_ACC_ENA) && (ActualAccount->StatusFlags & YAMN_ACC_FORCE)) //account cannot be forced to check
- {
- if(ActualAccount->Plugin->Fcn->ForceCheckFcnPtr==NULL)
- {
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- struct CheckParam ParamToPlugin={YAMN_CHECKVERSION,ThreadRunningEV,ActualAccount,YAMN_FORCECHECK,(void *)0,NULL};
-
- if(NULL==CreateThread(NULL,0,(YAMN_STANDARDFCN)ActualAccount->Plugin->Fcn->ForceCheckFcnPtr,&ParamToPlugin,0,&tid))
- {
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- else
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- }
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- LeaveCriticalSection(PluginRegCS);
- CloseHandle(ThreadRunningEV);
- }
- DBFreeVariant(&dbv);
- }
-
- }
- return 0;
-}
-
-
-void MainMenuAccountClicked(WPARAM wParam, LPARAM lParam)
-{
-
-}
-
-/*static*/ void ContactDoubleclicked(WPARAM wParam, LPARAM lParam)
-{
- DBVARIANT dbv;
- char *szProto;
- HACCOUNT ActualAccount;
-
- szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0);
- if(szProto != NULL && strcmp(szProto, ProtoName)==0)
- {
- if(!DBGetContactSetting((HANDLE) wParam,ProtoName,"Id",&dbv))
- {
- ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal);
- if(ActualAccount != NULL)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read enter\n");
- #endif
- YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,ActualAccount->NewMailN.Flags,ActualAccount->NoNewMailN.Flags,0};
-
- Param.nnflags=Param.nnflags | YAMN_ACC_MSG; //show mails in account even no new mail in account
- Param.nnflags=Param.nnflags & ~YAMN_ACC_POP;
-
- Param.nflags=Param.nflags | YAMN_ACC_MSG; //show mails in account even no new mail in account
- Param.nflags=Param.nflags & ~YAMN_ACC_POP;
-
- RunMailBrowserSvc((WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION);
-
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read done\n");
- #endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
- #ifdef DEBUG_SYNCHRO
- else
- DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read enter failed\n");
- #endif
-
- }
- DBFreeVariant(&dbv);
- }
-
- }
-}
-
-int IcoLibIconsChanged(WPARAM wParam, LPARAM lParam)
-{
- HICON temp;
- for (int i=0;i<ICONSNUMBER;i++){
- if (temp = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconNames[i]))hYamnIcons[i]=temp;
- }
- { CLISTMENUITEM mi = {0};
- extern HANDLE hMenuItemMain;
- extern HANDLE hMenuItemCont;
- extern HANDLE hMenuItemContApp;
-
- mi.cbSize = sizeof(mi);
- mi.flags = CMIM_ICON;
-
- mi.hIcon = hYamnIcons[5];
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuItemMain, (LPARAM)&mi);
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuItemCont, (LPARAM)&mi);
- mi.hIcon = hYamnIcons[4];
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuItemContApp, (LPARAM)&mi);
- }
- return 0;
-}
-
-int SystemModulesLoaded(WPARAM,LPARAM); //in main.cpp
-typedef struct { HANDLE hookHandle; const char *hookName; MIRANDAHOOK mirandaFunction;} HookDataType;
-static HookDataType hookData[]={
- {0,ME_TTB_MODULELOADED,AddTopToolbarIcon},
- {0,ME_SYSTEM_MODULESLOADED,SystemModulesLoaded}, //pop3 plugin must be included after all miranda modules are loaded
- {0,ME_OPT_INITIALISE,YAMNOptInitSvc},
- {0,ME_PLUGINUNINSTALLER_UNINSTALL,UninstallQuestionSvc},
- {0,ME_SYSTEM_PRESHUTDOWN,Shutdown},
- {0,ME_CLIST_DOUBLECLICKED, Service_ContactDoubleclicked},
- {0,ME_SKIN2_ICONSCHANGED, IcoLibIconsChanged},
- {0,0,0}//end marker
-};
-
-
-void HookEvents(void)
-{
- //We set function which registers needed POP3 accounts. This is a part of internal POP3 plugin.
- //Your plugin should do the same task in your Load fcn. Why we call it in MODULESLOADED? Because netlib
- //user can be registered after all modules are loaded (see m_netlib.h in Miranda)
- for (int i=0;hookData[i].hookName;i++){
- hookData[i].hookHandle = HookEvent(hookData[i].hookName,hookData[i].mirandaFunction);
- }
-}
-void UnhookEvents(void){
- for (int i=0;i<(sizeof(hookData)/sizeof(hookData[0]));i++){
- if (hookData[i].hookHandle) UnhookEvent(hookData[i].hookHandle);
- }
-}
-
-typedef struct { HANDLE serviceHandle; const char *serviceName; MIRANDASERVICE serviceFunction;} ServiceDataType;
-static ServiceDataType serviceData[]={
- {0,YAMN_DBMODULE PS_GETCAPS,Service_GetCaps},
- {0,YAMN_DBMODULE PS_GETSTATUS,Service_GetStatus},
- {0,YAMN_DBMODULE PS_SETSTATUS,Service_SetStatus},
- {0,YAMN_DBMODULE PS_GETNAME,Service_GetName},
- {0,YAMN_DBMODULE PS_LOADICON,Service_LoadIcon},
-
- //Function with which protocol plugin can register
- {0,MS_YAMN_GETFCNPTR,GetFcnPtrSvc},
-
- //Function returns pointer to YAMN variables
- {0,MS_YAMN_GETVARIABLES,GetVariablesSvc},
-
- //Function with which protocol plugin can register
- {0,MS_YAMN_REGISTERPROTOPLUGIN,RegisterProtocolPluginSvc},
-
- //Function with which protocol plugin can unregister
- {0,MS_YAMN_UNREGISTERPROTOPLUGIN,UnregisterProtocolPluginSvc},
-
- //Function creates an account for plugin
- {0,MS_YAMN_CREATEPLUGINACCOUNT,CreatePluginAccountSvc},
-
- //Function deletes plugin account
- {0,MS_YAMN_DELETEPLUGINACCOUNT,DeletePluginAccountSvc},
-
- //Finds account for plugin by name
- {0,MS_YAMN_FINDACCOUNTBYNAME,FindAccountByNameSvc},
-
- //Creates next account for plugin
- {0,MS_YAMN_GETNEXTFREEACCOUNT,GetNextFreeAccountSvc},
-
- //Function removes account from YAMN queue. Does not delete it from memory
- {0,MS_YAMN_DELETEACCOUNT,DeleteAccountSvc},
-
- //Function finds accounts for specified plugin
- {0,MS_YAMN_READACCOUNTSA,AddAccountsFromFileASvc},
-
- //Function that reads all plugin mails from file
- {0,MS_YAMN_READACCOUNTSW,AddAccountsFromFileWSvc},
-
- //Function that stores all plugin mails to one file
- {0,MS_YAMN_WRITEACCOUNTSA,WriteAccountsToFileASvc},
-
- //Function that stores all plugin mails to one file
- {0,MS_YAMN_WRITEACCOUNTSW,WriteAccountsToFileWSvc},
-
- //Function that returns user's filename
- {0,MS_YAMN_GETFILENAMEA,GetFileNameASvc},
-
- //Function that returns user's filename (unicode input)
- {0,MS_YAMN_GETFILENAMEW,GetFileNameWSvc},
-
- //Releases unicode string from memory
- {0,MS_YAMN_DELETEFILENAME,DeleteFileNameSvc},
-
- //Checks mail
- {0,MS_YAMN_FORCECHECK,ForceCheckSvc},
-
- //Runs YAMN's mail browser
- {0,MS_YAMN_MAILBROWSER,RunMailBrowserSvc},
-
- //Runs YAMN's bad conenction window
- {0,MS_YAMN_BADCONNECTION,RunBadConnectionSvc},
-
- //Function creates new mail for plugin
- {0,MS_YAMN_CREATEACCOUNTMAIL,CreateAccountMailSvc},
-
- //Function deletes plugin account
- {0,MS_YAMN_DELETEACCOUNTMAIL,DeleteAccountMailSvc},
-
- //Function with which filter plugin can register
- {0,MS_YAMN_REGISTERFILTERPLUGIN,RegisterFilterPluginSvc},
-
- //Function with which filter plugin can unregister
- {0,MS_YAMN_UNREGISTERFILTERPLUGIN,UnregisterFilterPluginSvc},
-
- //Function filters mail
- {0,MS_YAMN_FILTERMAIL,FilterMailSvc},
-
- //Function contact list double click
- {0,MS_YAMN_CLISTDBLCLICK,ClistContactDoubleclicked},
-
- //Function to check individual account
- {0,MS_YAMN_ACCOUNTCHECK,AccountMailCheck},
-
- //Function contact list context menu click
- {0,MS_YAMN_CLISTCONTEXT,ContactMailCheck},
-
- //Function contact list context menu click
- {0,MS_YAMN_CLISTCONTEXTAPP,ContactApplication},
-
- {0,0,0}//end marker
-};
-
-void CreateServiceFunctions(void)
-{
- for (int i=0;serviceData[i].serviceName;i++){
- serviceData[i].serviceHandle = CreateServiceFunction(serviceData[i].serviceName,serviceData[i].serviceFunction);
- }
-};
-
-void DestroyServiceFunctions(void)
-{
- for (int i=0;serviceData[i].serviceName;i++){
- if (serviceData[i].serviceHandle) DestroyServiceFunction(serviceData[i].serviceHandle);
- }
-};
-
-//Function to put all enabled contact to the Online status
-void RefreshContact(void)
-{
- HACCOUNT Finder;
-
- for(Finder=POP3Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next)
- {
- if(Finder->hContact != NULL)
- {
- if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT))
- {
- DBDeleteContactSetting(Finder->hContact, "CList", "Hidden");
- }
- else
- {
- DBWriteContactSettingByte(Finder->hContact, "CList", "Hidden", 1);
- }
- }
- else
- {
- if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT))
- {
- Finder->hContact =(HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0);
- CallService(MS_PROTO_ADDTOCONTACT,(WPARAM)Finder->hContact,(LPARAM)ProtoName);
- DBWriteContactSettingString(Finder->hContact,ProtoName,"Id",Finder->Name);
- DBWriteContactSettingString(Finder->hContact,ProtoName,"Nick",Finder->Name);
- DBWriteContactSettingString(Finder->hContact,"Protocol","p",ProtoName);
- DBWriteContactSettingWord(Finder->hContact, ProtoName, "Status", ID_STATUS_ONLINE);
- DBWriteContactSettingString(Finder->hContact, "CList", "StatusMsg", Translate("No new mail message"));
- }
-
- }
- }
-
-}
diff --git a/yamn/synchro.cpp b/yamn/synchro.cpp
deleted file mode 100644
index e791d5f..0000000
--- a/yamn/synchro.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * This code implements synchronization objects code between threads. If you want, you can include it to your
- * code. This file is not dependent on any other external code (functions)
- *
- * (c) majvan 2002-2004
- */
-#if !defined(_WIN64)
- #include "filter/simple/AggressiveOptimize.h"
-#endif
-#include <windows.h>
-#include "debug.h"
-#include "m_yamn.h"
-#include "m_synchro.h"
-#ifdef DEBUG_SYNCHRO
-#include <tchar.h>
-#include <stdio.h>
-#endif
-
-// Initializes a SWMRG structure. This structure must be
-// initialized before any writer or reader threads attempt
-// to wait on it.
-// The structure must be allocated by the application and
-// the structure's address is passed as the first parameter.
-// The lpszName parameter is the name of the object. Pass
-// NULL if you do not want to share the object.
-BOOL WINAPI SWMRGInitialize(PSWMRG pSWMRG,TCHAR *Name);
-
-// Deletes the system resources associated with a SWMRG
-// structure. The structure must be deleted only when
-// no writer or reader threads in the calling process
-// will wait on it.
-void WINAPI SWMRGDelete(PSWMRG pSWMRG);
-
-// A writer thread calls this function to know when
-// it can successfully write to the shared data.
-// returns WAIT_FINISH when we are in write-access or WAIT_FAILED
-// when event about quick finishing is set (or when system returns fail when waiting for synchro object)
-DWORD WINAPI SWMRGWaitToWrite(PSWMRG pSWMRG,DWORD dwTimeout);
-
-// A writer thread calls this function to let other threads
-// know that it no longer needs to write to the shared data.
-void WINAPI SWMRGDoneWriting(PSWMRG pSWMRG);
-
-// A reader thread calls this function to know when
-// it can successfully read the shared data.
-// returns WAIT_FINISH when we are in read-access or WAIT_FAILED
-// when event about quick finishing is set (or when system returns fail when waiting for synchro object)
-DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout);
-
-// A reader thread calls this function to let other threads
-// know when it no longer needs to read the shared data.
-void WINAPI SWMRGDoneReading(PSWMRG pSWMRG);
-
-// WaitToWriteFcn
-// is used to wait for write access with SWMRG SO, but it also increments counter if successfull
-// returns WAIT_FAILED or WAIT_FINISH
-// when WAIT_FAILED, we should not begin to access datas, we are not in write-access mode
-DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-
-// WriteDoneFcn
-// is used to release write access with SWMRG SO, but it also decrements counter if successfull
-void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-
-// WaitToReadFcn
-// is used to wait for read access with SWMRG SO, but it also increments counter if successfull
-// returns WAIT_FAILED or WAIT_FINISH
-// when WAIT_FAILED, we should not begin to access datas, we are not in read-access mode
-DWORD WINAPI WaitToReadFcn(PSWMRG SObject);
-
-// WriteDoneFcn
-// is used to release read access with SWMRG SO, but it also decrements counter if successfull
-void WINAPI ReadDoneFcn(PSWMRG SObject);
-
-// This functions is for export purposes
-// Plugin can call this function to manage SCOUNTER synchronization object
-
-// Gets number value stored in SCOUNTER SO
-// Note you must not read the number from memory directly, because
-// CPU can stop reading thread when it has read HI-Word, then another thread
-// can change the value and then OS starts the previous thread, that reads the
-// LO-WORD of DWORD. And the return value HI+LO-WORD is corrupted
-DWORD WINAPI SCGetNumberFcn(PSCOUNTER SCounter);
-
-// Increments SCOUNTER and unsets event
-// Returns Number after incrementing
-DWORD WINAPI SCIncFcn(PSCOUNTER SCounter);
-
-// Decrements SCOUNTER and sets event if zero
-// Returns Number after decrementing
-DWORD WINAPI SCDecFcn(PSCOUNTER SCounter);
-
-struct CExportedFunctions SynchroExportedFcn[]=
-{
- {YAMN_WAITTOWRITEID,(void *)WaitToWriteFcn},
- {YAMN_WRITEDONEID,(void *)WriteDoneFcn},
- {YAMN_WAITTOREADID,(void *)WaitToReadFcn},
- {YAMN_READDONEID,(void *)ReadDoneFcn},
- {YAMN_SCGETNUMBERID,(void *)SCGetNumberFcn},
- {YAMN_SCINCID,(void *)SCIncFcn},
- {YAMN_SCDECID,(void *)SCDecFcn},
-};
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-void WINAPI SWMRGDelete(PSWMRG pSWMRG)
-{
-// Destroys any synchronization objects that were
-// successfully created.
- if (NULL!=pSWMRG->hEventNoWriter)
- CloseHandle(pSWMRG->hEventNoWriter);
- if (NULL!=pSWMRG->hEventNoReaders)
- CloseHandle(pSWMRG->hEventNoReaders);
- if (NULL!=pSWMRG->hSemNumReaders)
- CloseHandle(pSWMRG->hSemNumReaders);
- if (NULL!=pSWMRG->hFinishEV)
- CloseHandle(pSWMRG->hFinishEV);
-}
-
-BOOL WINAPI SWMRGInitialize(PSWMRG pSWMRG,TCHAR *Name)
-{
- pSWMRG->hEventNoWriter=NULL;
- pSWMRG->hEventNoReaders=NULL;
- pSWMRG->hSemNumReaders=NULL;
- pSWMRG->hFinishEV=NULL;
-
-// Creates the automatic-reset event that is signalled when
-// no writer threads are writing.
-// Initially no reader threads are reading.
- if(Name!=NULL)
- Name[0]=(TCHAR)'W';
- pSWMRG->hEventNoWriter=CreateEvent(NULL,FALSE,TRUE,Name);
-
-// Creates the manual-reset event that is signalled when
-// no reader threads are reading.
-// Initially no reader threads are reading.
- if(Name!=NULL)
- Name[0]=(TCHAR)'R';
- pSWMRG->hEventNoReaders=CreateEvent(NULL,TRUE,TRUE,Name);
-
-// Initializes the variable that indicates the number of
-// reader threads that are reading.
-// Initially no reader threads are reading.
- if(Name!=NULL)
- Name[0]=(TCHAR)'C';
- pSWMRG->hSemNumReaders=CreateSemaphore(NULL,0,0x7FFFFFFF,Name);
-
- if(Name!=NULL)
- Name[0]=(TCHAR)'F';
- pSWMRG->hFinishEV=CreateEvent(NULL,TRUE,FALSE,Name);
-
-// If a synchronization object could not be created,
-// destroys any created objects and return failure.
- if((NULL==pSWMRG->hEventNoWriter) || (NULL==pSWMRG->hEventNoReaders) || (NULL==pSWMRG->hSemNumReaders) || (NULL==pSWMRG->hFinishEV))
- {
- SWMRGDelete(pSWMRG);
- return FALSE;
- }
- return TRUE;
-}
-
-DWORD WINAPI SWMRGWaitToWrite(PSWMRG pSWMRG,DWORD dwTimeout)
-{
- DWORD dw;
- HANDLE aHandles[2];
-
-// We can write if the following are true:
-// 1. No other threads are writing.
-// 2. No threads are reading.
-// But first we have to know if SWMRG structure is not about to delete
- aHandles[0]=pSWMRG->hEventNoWriter;
- aHandles[1]=pSWMRG->hEventNoReaders;
- if(WAIT_OBJECT_0==(dw=WaitForSingleObject(pSWMRG->hFinishEV,0)))
- return WAIT_FINISH;
- if(WAIT_FAILED==dw)
- return dw;
- dw=WaitForMultipleObjects(2,aHandles,TRUE,dwTimeout);
-// if a request to delete became later, we should not catch it. Try once more to ask if account is not about to delete
- if((dw!=WAIT_FAILED) && (WAIT_OBJECT_0==(WaitForSingleObject(pSWMRG->hFinishEV,0))))
- {
- SetEvent(pSWMRG->hEventNoWriter);
- return WAIT_FINISH;
- }
-
-// This thread can write to the shared data.
-// Automatic event for NoWriter sets hEventNoWriter to nonsignaled after WaitForMultipleObject
-
-// Because a writer thread is writing, the Event
-// should not be reset. This stops other
-// writers and readers.
- return dw;
-}
-
-void WINAPI SWMRGDoneWriting(PSWMRG pSWMRG)
-// Presumably, a writer thread calling this function has
-// successfully called WaitToWrite. This means that we
-// do not have to wait on any synchronization objects
-// here because the writer already owns the Event.
-{
-// Allow other writer/reader threads to use
-// the SWMRG synchronization object.
- SetEvent(pSWMRG->hEventNoWriter);
-}
-
-DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout)
-{
- DWORD dw;
- LONG lPreviousCount;
-
-// We can read if no threads are writing.
-// And there's not request to delete structure
- if(WAIT_OBJECT_0==(dw=WaitForSingleObject(pSWMRG->hFinishEV,0)))
- return WAIT_FINISH;
- if(WAIT_FAILED==dw)
- return dw;
- dw=WaitForSingleObject(pSWMRG->hEventNoWriter, dwTimeout);
-// if a request to delete became later, we should not catch it. Try once more to ask if account is not about to delete
- if((dw!=WAIT_FAILED) && (WAIT_OBJECT_0==(WaitForSingleObject(pSWMRG->hFinishEV,0))))
- {
- SetEvent(pSWMRG->hEventNoWriter);
- return WAIT_FINISH;
- }
-
- if(dw==WAIT_OBJECT_0)
- {
- // This thread can read from the shared data.
- // Increment the number of reader threads.
- // But there can't be more than one thread incrementing readers,
- // so this is why we use semaphore.
- ReleaseSemaphore(pSWMRG->hSemNumReaders,1,&lPreviousCount);
- if(lPreviousCount==0)
- // If this is the first reader thread,
- // set event to reflect this. Other reader threads can read, no writer thread can write.
- ResetEvent(pSWMRG->hEventNoReaders);
-
- // Allow other writer/reader threads to use
- // the SWMRG synchronization object. hEventNoWrite is still non-signaled
- // (it looks like writer is processing thread, but it is not true)
- SetEvent(pSWMRG->hEventNoWriter);
- }
-
- return(dw);
-}
-
-void WINAPI SWMRGDoneReading(PSWMRG pSWMRG)
-{
- HANDLE aHandles[2];
- LONG lNumReaders;
-
-// We can stop reading if the events are available,
-// but when we stop reading we must also decrement the
-// number of reader threads.
- aHandles[0]=pSWMRG->hEventNoWriter;
- aHandles[1]=pSWMRG->hSemNumReaders;
- WaitForMultipleObjects(2,aHandles,TRUE,INFINITE);
-
-// Get the remaining number of readers by releasing the
-// semaphore and then restoring the count by immediately
-// performing a wait.
- ReleaseSemaphore(pSWMRG->hSemNumReaders,1,&lNumReaders);
- WaitForSingleObject(pSWMRG->hSemNumReaders,INFINITE);
-
-// If there are no remaining readers,
-// set the event to relect this.
- if(lNumReaders==0)
- // If there are no reader threads,
- // set our event to reflect this.
- SetEvent(pSWMRG->hEventNoReaders);
-
-// Allow other writer/reader threads to use
-// the SWMRG synchronization object.
-// (it looks like writer is processing thread, but it is not true)
- SetEvent(pSWMRG->hEventNoWriter);
-}
-
-DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER SCounter)
-{
- DWORD EnterCode;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSO WaitToWrite: %x\n",SObject);
-#endif
- if(WAIT_OBJECT_0==(EnterCode=SWMRGWaitToWrite(SObject,INFINITE)))
- if(SCounter!=NULL)
- SCIncFcn(SCounter);
- return EnterCode;
-}
-
-void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER SCounter)
-{
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSO WriteDone: %x\n",SObject);
-#endif
- SWMRGDoneWriting(SObject);
- if(SCounter!=NULL)
- SCDecFcn(SCounter);
-}
-
-DWORD WINAPI WaitToReadFcn(PSWMRG SObject)
-{
- DWORD EnterCode;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSO WaitToRead: %x\n",SObject);
-#endif
- EnterCode=SWMRGWaitToRead(SObject,INFINITE);
- return EnterCode;
-}
-
-void WINAPI ReadDoneFcn(PSWMRG SObject)
-{
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tSO ReadDone: %x\n",SObject);
-#endif
- SWMRGDoneReading(SObject);
-}
-
-DWORD WINAPI SCGetNumberFcn(PSCOUNTER SCounter)
-{
- DWORD Temp;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tGetNumber-cs wait\n");
-#endif
- EnterCriticalSection(&SCounter->CounterCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tGetNumber-cs enter\n");
-#endif
- Temp=SCounter->Number;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tValue: %d\n",Temp);
- DebugLog(SynchroFile,"\tGetNumber-cs done\n");
-#endif
- LeaveCriticalSection(&SCounter->CounterCS);
- return Temp;
-}
-
-DWORD WINAPI SCIncFcn(PSCOUNTER SCounter)
-{
- DWORD Temp;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tIncrementValue-cs wait\n");
-#endif
- EnterCriticalSection(&SCounter->CounterCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tIncrementValue-cs enter\n");
-#endif
- Temp=++SCounter->Number;
- ResetEvent(SCounter->Event);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tValue: %d\n",Temp);
- DebugLog(SynchroFile,"\tIncrementValue-cs done\n");
-#endif
- LeaveCriticalSection(&SCounter->CounterCS);
- return Temp;
-}
-
-DWORD WINAPI SCDecFcn(PSCOUNTER SCounter)
-{
- DWORD Temp;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tDecrementValue-cs wait\n");
-#endif
- EnterCriticalSection(&SCounter->CounterCS);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tDecrementValue-cs enter\n");
-#endif
- if(!(Temp=--SCounter->Number))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tDecrementValue-zero ev set\n");
-#endif
- SetEvent(SCounter->Event);
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"\tValue: %d\n",Temp);
- DebugLog(SynchroFile,"\tDecrementValue-cs done\n");
-#endif
- LeaveCriticalSection(&SCounter->CounterCS);
- return Temp;
-}
diff --git a/yamn/version.h b/yamn/version.h
deleted file mode 100644
index e658cfe..0000000
--- a/yamn/version.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define YAMN_VERSION_H 0,1,2,5
-#define YAMN_VERSION PLUGIN_MAKE_VERSION( 0,1,2,5 )
-#define YAMN_VERSION_C "0.1.2.5"
diff --git a/yamn/yamn.cpp b/yamn/yamn.cpp
deleted file mode 100644
index 467f3d6..0000000
--- a/yamn/yamn.cpp
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * This code implements miscellaneous usefull functions
- *
- * (c) majvan 2002-2004
- */
-#include "m_yamn.h"
-#include "m_protoplugin.h"
-#include "m_messages.h"
-#include "m_synchro.h"
-#include "main.h"
-#include "yamn.h"
-#ifdef DEBUG_SYNCHRO
- #include <stdio.h>
-#endif
-
-//- imported ---------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-extern PYAMN_PROTOPLUGINQUEUE FirstProtoPlugin;
-extern YAMN_VARIABLES YAMNVar;
-
-extern char *ProtoName;
-
-extern HANDLE hTTButton; //TopToolBar button
-
-extern DWORD WriteAccountsToFile();
-extern DWORD WINAPI SWMRGWaitToRead(PSWMRG,DWORD);
-extern void WINAPI SWMRGDoneReading(PSWMRG);
-extern DWORD WINAPI WaitToReadFcn(PSWMRG);
-extern void WINAPI ReadDoneFcn(PSWMRG);
-
-//From protoplugin.cpp
-extern struct CExportedFunctions ProtoPluginExportedFcn[1];
-extern struct CExportedServices ProtoPluginExportedSvc[5];
-//From filterplugin.cpp
-extern struct CExportedFunctions FilterPluginExportedFcn[1];
-extern struct CExportedServices FilterPluginExportedSvc[2];
-//From synchro.cpp
-extern struct CExportedFunctions SynchroExportedFcn[7];
-//From account.cpp
-extern struct CExportedFunctions AccountExportedFcn[2];
-extern struct CExportedServices AccountExportedSvc[9];
-//From mails.cpp (MIME)
-extern struct CExportedFunctions MailExportedFcn[8];
-extern struct CExportedServices MailExportedSvc[5];
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-//MessageWndCS
-//We want to send messages to all windows in the queue
-//When we send messages, no other window can register itself to the queue for receiving messages
-LPCRITICAL_SECTION MessageWndCS;
-
-//Plugin registration CS
-//Used if we add (register) plugin to YAMN plugins and when we browse through registered plugins
-LPCRITICAL_SECTION PluginRegCS;
-
-//AccountWriterCS
-//We want to store number of writers of Accounts (number of Accounts used for writing)
-//If we want to read all accounts (for saving to file) immidiatelly, we have to wait until no account is changing (no thread writing to account)
-SCOUNTER *AccountWriterSO;
-
-//NoExitEV
-//Event that is signaled when there's a request to exit, so no new pop3 check should be performed
-HANDLE ExitEV;
-
-//WriteToFileEV
-//If this is signaled, write accounts to file is performed. Set this event if you want to actualize your accounts and messages
-HANDLE WriteToFileEV;
-
-//Returns pointer to YAMN exported function
-INT_PTR GetFcnPtrSvc(WPARAM wParam,LPARAM lParam);
-
-//Returns pointer to YAMN variables
-INT_PTR GetVariablesSvc(WPARAM wParam,LPARAM);
-
-// Thread running only to catch hotkeys
-DWORD WINAPI YAMNHotKeyThread(LPVOID Param);
-
-// Function every seconds decrements account counter of seconds and checks if they are 0
-// If yes, creates a POP3 thread to check account
-void CALLBACK TimerProc(HWND,UINT,UINT,DWORD);
-
-// Function called to check all accounts immidialtelly
-// no params
-INT_PTR ForceCheckSvc(WPARAM,LPARAM);
-
-//thread is running all the time
-//waits for WriteToFileEV and then writes all accounts to file
-//DWORD WINAPI FileWritingThread(PVOID);
-
-// Function is called when Miranda notifies plugin that it is about to exit
-// Ensures succesfull end of POP3 checking, sets event that no next checking should be performed
-// If there's no writer to account (POP3 thread), saves the results to the file
-//not used now, perhaps in the future
-
-
-//int ExitProc(WPARAM wParam,LPARAM lParam);
-
-//--------------------------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------------------------
-
-INT_PTR GetFcnPtrSvc(WPARAM wParam,LPARAM lParam)
-{
- register int i;
-
- for(i=0;i<sizeof(ProtoPluginExportedFcn)/sizeof(ProtoPluginExportedFcn[0]);i++)
- if(0==lstrcmp((char *)wParam,ProtoPluginExportedFcn[i].ID))
- return (INT_PTR)ProtoPluginExportedFcn[i].Ptr;
- for(i=0;i<sizeof(ProtoPluginExportedSvc)/sizeof(ProtoPluginExportedSvc[0]);i++)
- if(0==lstrcmp((char *)wParam,ProtoPluginExportedSvc[i].ID))
- return (INT_PTR)ProtoPluginExportedSvc[i].Ptr;
- for(i=0;i<sizeof(SynchroExportedFcn)/sizeof(SynchroExportedFcn[0]);i++)
- if(0==lstrcmp((char *)wParam,SynchroExportedFcn[i].ID))
- return (INT_PTR)SynchroExportedFcn[i].Ptr;
- for(i=0;i<sizeof(AccountExportedFcn)/sizeof(AccountExportedFcn[0]);i++)
- if(0==lstrcmp((char *)wParam,AccountExportedFcn[i].ID))
- return (INT_PTR)AccountExportedFcn[i].Ptr;
- for(i=0;i<sizeof(AccountExportedSvc)/sizeof(AccountExportedSvc[0]);i++)
- if(0==lstrcmp((char *)wParam,AccountExportedSvc[i].ID))
- return (INT_PTR)AccountExportedSvc[i].Ptr;
- for(i=0;i<sizeof(MailExportedFcn)/sizeof(MailExportedFcn[0]);i++)
- if(0==lstrcmp((char *)wParam,MailExportedFcn[i].ID))
- return (INT_PTR)MailExportedFcn[i].Ptr;
- for(i=0;i<sizeof(MailExportedSvc)/sizeof(MailExportedSvc[0]);i++)
- if(0==lstrcmp((char *)wParam,MailExportedSvc[i].ID))
- return (INT_PTR)MailExportedSvc[i].Ptr;
- for(i=0;i<sizeof(FilterPluginExportedFcn)/sizeof(FilterPluginExportedFcn[0]);i++)
- if(0==lstrcmp((char *)wParam,FilterPluginExportedFcn[i].ID))
- return (INT_PTR)FilterPluginExportedFcn[i].Ptr;
- for(i=0;i<sizeof(FilterPluginExportedSvc)/sizeof(FilterPluginExportedSvc[0]);i++)
- if(0==lstrcmp((char *)wParam,FilterPluginExportedSvc[i].ID))
- return (INT_PTR)FilterPluginExportedSvc[i].Ptr;
- return (INT_PTR)NULL;
-}
-
-INT_PTR GetVariablesSvc(WPARAM wParam,LPARAM)
-{
- return wParam==YAMN_VARIABLESVERSION ? (INT_PTR)&YAMNVar : (INT_PTR)NULL;
-}
-
-DWORD WINAPI YAMNHotKeyThread(LPVOID Param)
-{
- MSG WinMessage;
- WORD HotKey = LOWORD(Param);
- int HotKeyID;
-
-// register hotkey for main YAMN thread first
- if(!(HotKeyID=RegisterHotKey(NULL,(int)GlobalAddAtom(YAMN_HKCHECKMAIL),HIBYTE(HotKey),LOBYTE(HotKey))))
- return 0;
-
- while(1)
- {
- GetMessage(&WinMessage,NULL,WM_HOTKEY,WM_YAMN_CHANGEHOTKEY);
-
-// if we want to close miranda, we get event and do not run pop3 checking anymore
- if(WAIT_OBJECT_0==WaitForSingleObject(ExitEV,0))
- break;
-
- switch(WinMessage.message)
- {
-// user pressed hotkey
- case WM_HOTKEY:
- ForceCheckSvc((WPARAM)0,(LPARAM)0);
- break;
-// hotkey changed
- case WM_YAMN_CHANGEHOTKEY:
- UnregisterHotKey(NULL,HotKeyID);
- HotKeyID=RegisterHotKey(NULL,(int)GlobalAddAtom(YAMN_HKCHECKMAIL),WinMessage.wParam,WinMessage.lParam);
- break;
- }
- }
- return 1;
-}
-
-void CALLBACK TimerProc(HWND,UINT,UINT,DWORD)
-{
- PYAMN_PROTOPLUGINQUEUE ActualPlugin;
- HACCOUNT ActualAccount;
- HANDLE ThreadRunningEV;
- DWORD Status,tid;
-
-// we use event to signal, that running thread has all needed stack parameters copied
- if(NULL==(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- return;
-// if we want to close miranda, we get event and do not run checking anymore
- if(WAIT_OBJECT_0==WaitForSingleObject(ExitEV,0))
- return;
-// Get actual status of current user in Miranda
- Status=CallService(MS_CLIST_GETSTATUSMODE,0,0);
-
- EnterCriticalSection(PluginRegCS);
- for(ActualPlugin=FirstProtoPlugin;ActualPlugin!=NULL;ActualPlugin=ActualPlugin->Next)
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:AccountBrowserSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0!=SWMRGWaitToRead(ActualPlugin->Plugin->AccountBrowserSO,0)) //we want to access accounts immiadtelly
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:AccountBrowserSO-read enter failed\n");
-#endif
- LeaveCriticalSection(PluginRegCS);
- return;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:AccountBrowserSO-read enter\n");
-#endif
- for(ActualAccount=ActualPlugin->Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=ActualAccount->Next)
- {
- if(ActualAccount->Plugin==NULL || ActualAccount->Plugin->Fcn==NULL) //account not inited
- continue;
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read wait\n");
-#endif
- if(WAIT_OBJECT_0!=SWMRGWaitToRead(ActualAccount->AccountAccessSO,0))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read wait failed\n");
-#endif
- continue;
- }
-#ifdef DEBUG_SYNCHRO
-
- switch(Status)
- {
- case ID_STATUS_OFFLINE:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status offline\n");
- break;
- case ID_STATUS_ONLINE:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status online\n");
- break;
- case ID_STATUS_AWAY:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status away\n");
- break;
- case ID_STATUS_DND:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status dnd\n");
- break;
- case ID_STATUS_NA:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status na\n");
- break;
- case ID_STATUS_OCCUPIED:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status occupied\n");
- break;
- case ID_STATUS_FREECHAT:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status freechat\n");
- break;
- case ID_STATUS_INVISIBLE:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status invisible\n");
- break;
- case ID_STATUS_ONTHEPHONE:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status onthephone\n");
- break;
- case ID_STATUS_OUTTOLUNCH:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status outtolunch\n");
- break;
- default:
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read enter status unknown\n");
- break;
- }
-#endif
- BOOL isAccountCounting = 0;
- if(
- (ActualAccount->Flags & YAMN_ACC_ENA) &&
- (((ActualAccount->StatusFlags & YAMN_ACC_ST0) && (Status<=ID_STATUS_OFFLINE)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST1) && (Status==ID_STATUS_ONLINE)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST2) && (Status==ID_STATUS_AWAY)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST3) && (Status==ID_STATUS_DND)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST4) && (Status==ID_STATUS_NA)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST5) && (Status==ID_STATUS_OCCUPIED)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST6) && (Status==ID_STATUS_FREECHAT)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST7) && (Status==ID_STATUS_INVISIBLE)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST8) && (Status==ID_STATUS_ONTHEPHONE)) ||
- ((ActualAccount->StatusFlags & YAMN_ACC_ST9) && (Status==ID_STATUS_OUTTOLUNCH))))
- {
-
- if((!ActualAccount->Interval && !ActualAccount->TimeLeft) || ActualAccount->Plugin->Fcn->TimeoutFcnPtr==NULL)
- {
- goto ChangeIsCountingStatusLabel;
- }
- if(ActualAccount->TimeLeft){
- ActualAccount->TimeLeft--;
- isAccountCounting = TRUE;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:time left : %i\n",ActualAccount->TimeLeft);
-#endif
- WindowList_BroadcastAsync(YAMNVar.MessageWnds,WM_YAMN_CHANGETIME,(WPARAM)ActualAccount,(LPARAM)ActualAccount->TimeLeft);
- if(!ActualAccount->TimeLeft)
- {
- struct CheckParam ParamToPlugin={YAMN_CHECKVERSION,ThreadRunningEV,ActualAccount,YAMN_NORMALCHECK,(void *)0,NULL};
- HANDLE NewThread;
-
- ActualAccount->TimeLeft=ActualAccount->Interval;
- if(NULL==(NewThread=CreateThread(NULL,0,(YAMN_STANDARDFCN)ActualAccount->Plugin->Fcn->TimeoutFcnPtr,&ParamToPlugin,0,&tid)))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read done\n");
-#endif
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- continue;
- }
- else
- {
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- CloseHandle(NewThread);
- }
- }
-
- }
-ChangeIsCountingStatusLabel:
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:ActualAccountSO-read done\n");
-#endif
- if (((ActualAccount->isCounting)!=0)!=isAccountCounting){
- ActualAccount->isCounting=isAccountCounting;
- WORD cStatus = DBGetContactSettingWord(ActualAccount->hContact,ProtoName,"Status",0);
- switch (cStatus){
- case ID_STATUS_ONLINE:
- case ID_STATUS_OFFLINE:
- DBWriteContactSettingWord(ActualAccount->hContact, ProtoName, "Status", isAccountCounting?ID_STATUS_ONLINE:ID_STATUS_OFFLINE);
- default: break;
- }
- }
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"TimerProc:AccountBrowserSO-read done\n");
-#endif
- SWMRGDoneReading(ActualPlugin->Plugin->AccountBrowserSO);
- }
- LeaveCriticalSection(PluginRegCS);
- CloseHandle(ThreadRunningEV);
- return;
-}
-
-INT_PTR ForceCheckSvc(WPARAM,LPARAM)
-{
- PYAMN_PROTOPLUGINQUEUE ActualPlugin;
- HACCOUNT ActualAccount;
- HANDLE ThreadRunningEV;
- DWORD tid;
-
- //we use event to signal, that running thread has all needed stack parameters copied
- if(NULL==(ThreadRunningEV=CreateEvent(NULL,FALSE,FALSE,NULL)))
- return 0;
- //if we want to close miranda, we get event and do not run pop3 checking anymore
- if(WAIT_OBJECT_0==WaitForSingleObject(ExitEV,0))
- return 0;
- EnterCriticalSection(PluginRegCS);
- for(ActualPlugin=FirstProtoPlugin;ActualPlugin!=NULL;ActualPlugin=ActualPlugin->Next)
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:AccountBrowserSO-read wait\n");
- #endif
- SWMRGWaitToRead(ActualPlugin->Plugin->AccountBrowserSO,INFINITE);
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:AccountBrowserSO-read enter\n");
- #endif
- for(ActualAccount=ActualPlugin->Plugin->FirstAccount;ActualAccount!=NULL;ActualAccount=ActualAccount->Next)
- {
- if(ActualAccount->Plugin->Fcn==NULL) //account not inited
- continue;
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read wait\n");
- #endif
- if(WAIT_OBJECT_0!=WaitToReadFcn(ActualAccount->AccountAccessSO))
- {
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read wait failed\n");
- #endif
- continue;
- }
- #ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:ActualAccountSO-read enter\n");
- #endif
- if((ActualAccount->Flags & YAMN_ACC_ENA) && (ActualAccount->StatusFlags & YAMN_ACC_FORCE)) //account cannot be forced to check
- {
- if(ActualAccount->Plugin->Fcn->ForceCheckFcnPtr==NULL)
- {
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- continue;
- }
- struct CheckParam ParamToPlugin={YAMN_CHECKVERSION,ThreadRunningEV,ActualAccount,YAMN_FORCECHECK,(void *)0,NULL};
-
- if(NULL==CreateThread(NULL,0,(YAMN_STANDARDFCN)ActualAccount->Plugin->Fcn->ForceCheckFcnPtr,&ParamToPlugin,0,&tid))
- {
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- continue;
- }
- else
- WaitForSingleObject(ThreadRunningEV,INFINITE);
- }
- ReadDoneFcn(ActualAccount->AccountAccessSO);
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ForceCheck:AccountBrowserSO-read done\n");
-#endif
- SWMRGDoneReading(ActualPlugin->Plugin->AccountBrowserSO);
- }
- LeaveCriticalSection(PluginRegCS);
- CloseHandle(ThreadRunningEV);
- CallService(MS_TTB_SETBUTTONSTATE,(WPARAM)hTTButton,(LPARAM)TTBST_RELEASED);
- return 1;
-}
-/*
-int ExitProc(WPARAM wParam,LPARAM lParam)
-{
- THIS WILL BE IMPLEMENTED LATER
-// First, no thread must add or delete accounts. This is achieved by entering browsing through accounts
-// If any thread want to delete or add, it waits for write-access to browse accounts (so it waits infinite time)
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ExitProc:AccountBrowserSO-wait to obtain read access\n"));
-#endif
- if(WAIT_TIMEOUT==SWMRGWaitToRead(AccountBrowserSO,0))
- {
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ExitProc:AccountBrowserSO-read access obtain failed, I'll try later\n"));
-#endif
- return 1;
- }
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ExitProc:AccountBrowserSO-read access obtained\n"));
-#endif
-#ifdef DEBUG_SYNCHRO
- TCHAR Debug[100];
-
- _stprintf(Debug,_T("ExitProc:Writers: %d\n"),AccountWriterSO->GetNumber());
- DEBUG_SYNCHRO2F(Debug);
- DebugLog(SynchroFile,"ExitProc:NoWriterEV-test\n"));
-#endif
-// next, threads must not write to any account. This works like hFinishEV event in AccountAccessSO and MessagesAccessSO.
-// When hFinishEV is set, any beginning with reading and writing to account (messages) is failed.
-// This is similar, but the difference is, that we can finish the whole work (we can decide: if ExitEV is set, should we
-// end immidialtelly or should we continue (to end operation successfully)?
-// E.g. I decided that once we started checking account, we get all new mails and then we can end.
-// The second and more significant difference is, that ExitEV is signal to all accounts and messages, not only to one account.
-
- SetEvent(ExitEV);
- if(WAIT_TIMEOUT==WaitForSingleObject(AccountWriterSO->Event,0))
- {
-// There exists a thread writing to account, so we ca try later to write accounts to file, if no thread is writting
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ExitProc:NoWriterEV-writer(s) exists, I'll try later\n"));
-#endif
- SWMRGDoneReading(AccountBrowserSO);
- return 1;
- }
-
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"ExitProc:NoWriterEV-no writer, going to save!\n"));
-#endif
-// Save to file
- WriteAccountsToFile();
- SWMRGDoneReading(AccountBrowserSO);
-// Now, all is saved, we can safe exit from Miranda
- return 0;
-}
-*/
-/*
-DWORD WINAPI FileWritingThread(PVOID)
-{
- HACCOUNT ActualAccount=FirstAccount;
-
- while(1)
- {
- WaitForSingleObject(WriteToFileEV,INFINITE);
-#ifdef DEBUG_SYNCHRO
- DebugLog(SynchroFile,"FileWriting:WriteToFileEV-signaled\n"));
-#endif
-// now, write accounts and messages if it is possible. If it is not possible e.g. to read messages from one account,
-// function will wait until messages are not used and then writes messages
- WriteAccountsToFile();
- }
- return 0;
-}
-*/
diff --git a/yamn/yamn.h b/yamn/yamn.h
deleted file mode 100644
index b209b24..0000000
--- a/yamn/yamn.h
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef __YAMN_H
-#define __YAMN_H
-#ifndef _WIN32_IE
- #define _WIN32_IE 0x0400
-#endif
-#ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x0501
-#endif
-
-#if !defined(_WIN64)
- #include "filter/simple/AggressiveOptimize.h"
-#endif
-#include <wchar.h>
-#include <tchar.h>
-#include <windows.h>
-#include <stdio.h>
-#include <direct.h> //For _chdir()
-
-#define MIRANDA_VER 0x0600
-#define MIRANDA_CUSTOM_LP
-
-#include <commctrl.h> //For hotkeys
-#include "win2k.h"
-#include "newpluginapi.h" //CallService,UnHookEvent
-#include "m_utils.h" //window broadcasting
-#include "m_system.h"
-#include "m_skin.h"
-#include "m_langpack.h"
-#include "m_clist.h"
-#include "m_clui.h"
-#include "m_options.h"
-#include "m_database.h" //database
-#include "m_contacts.h" //contact
-#include "m_protocols.h" //protocols
-#include "m_protomod.h" //protocols module
-#include "m_protosvc.h"
-#include "include/m_uninstaller.h" //PluginUninstaller structures
-#include "m_toptoolbar.h"
-#include "m_icolib.h"
-#include "include/m_kbdnotify.h"
-#include "m_popup.h"
-#include "m_updater.h"
-#include "m_account.h" //Account structure and all needed structures to cooperate with YAMN
-#include "m_messages.h" //Messages sent to YAMN windows
-#include "mails/m_mails.h" //use YAMN's mails
-#include "mails/m_decode.h" //use decoding macros (needed for header extracting)
-#include "browser/m_browser.h" //we want to run YAMN mailbrowser, no new mail notification and bad connect window
-#include "resources/resource.h"
-#include "m_protoplugin.h"
-#include "m_filterplugin.h"
-#include "m_yamn.h" //Main YAMN's variables
-#include "m_protoplugin.h" //Protocol registration and so on
-#include "m_synchro.h" //Synchronization
-#include "debug.h"
-#include <m_folders.h>
-
-
-//icons definitions
-#define ICONSNUMBER 8
-#define ICONSDESCS "Neutral","YAMN","New Mail","Connect Fail","Launch Application","TopToolBar UP","TopToolBar Down","Offline"
-#define ICONSNAMES "YAMN_Neutral",iconDescs[1],"YAMN_NewMail","YAMN_ConnectFail","YAMN_ApplExec","YAMN_TopToolBarUp","YAMN_TopToolBarDown","YAMN_Offline"
-#define ICONSINDS IDI_ONLINE,IDI_ICOYAMN1,IDI_ICOYAMN2,IDI_NA,IDI_OCCUPIED,IDI_ICOTTBUP,IDI_OCCUPIED,IDI_OFFLINE
-
-//From services.cpp
-void CreateServiceFunctions(void);
-void DestroyServiceFunctions(void);
-void HookEvents(void);
-void UnhookEvents(void);
-void RefreshContact(void);
-void ContactDoubleclicked(WPARAM wParam,LPARAM lParam);
-INT_PTR ClistContactDoubleclicked(WPARAM wParam, LPARAM lParam);
-
-//From debug.cpp
-#undef YAMN_DEBUG
-#ifdef YAMN_DEBUG
-void InitDebug();
-void UnInitDebug();
-#endif
-
-//From synchro.cpp
-//struct CExportedFunctions SynchroExported[];
-
-//From yamn.cpp
-INT_PTR GetFcnPtrSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR GetVariablesSvc(WPARAM,LPARAM);
-//INT_PTR AddWndToYAMNWindowsSvc(WPARAM,LPARAM);
-//INT_PTR RemoveWndFromYAMNWindowsSvc(WPARAM,LPARAM);
-DWORD WINAPI YAMNHotKeyThread(LPVOID);
-void CALLBACK TimerProc(HWND,UINT,UINT,DWORD);
-INT_PTR ForceCheckSvc(WPARAM,LPARAM);
-// int ExitProc(WPARAM,LPARAM);
-
-//From account.cpp
-//struct CExportedFunctions AccountExported[];
-INT_PTR CreatePluginAccountSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR DeletePluginAccountSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR WriteAccountsToFileASvc(WPARAM wParam,LPARAM lParam);
-INT_PTR WriteAccountsToFileWSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR AddAccountsFromFileASvc(WPARAM,LPARAM);
-INT_PTR AddAccountsFromFileWSvc(WPARAM,LPARAM);
-INT_PTR DeleteAccountSvc(WPARAM,LPARAM);
-INT_PTR FindAccountByNameSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR GetNextFreeAccountSvc(WPARAM wParam,LPARAM lParam);
-
-//From protoplugin.cpp
-//struct CExportedFunctions ProtoPluginExported[];
-INT_PTR UnregisterProtoPlugins();
-INT_PTR RegisterProtocolPluginSvc(WPARAM,LPARAM);
-INT_PTR UnregisterProtocolPluginSvc(WPARAM,LPARAM);
-INT_PTR GetFileNameWSvc(WPARAM,LPARAM);
-INT_PTR GetFileNameASvc(WPARAM,LPARAM);
-INT_PTR DeleteFileNameSvc(WPARAM,LPARAM);
-
-//From filterplugin.cpp
-//struct CExportedFunctions FilterPluginExported[];
-INT_PTR UnregisterFilterPlugins();
-INT_PTR RegisterFilterPluginSvc(WPARAM,LPARAM);
-INT_PTR UnregisterFilterPluginSvc(WPARAM,LPARAM);
-INT_PTR FilterMailSvc(WPARAM,LPARAM);
-
-//From mails.cpp (MIME)
-//struct CExportedFunctions MailExported[];
-INT_PTR CreateAccountMailSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR DeleteAccountMailSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR LoadMailDataSvc(WPARAM wParam,LPARAM lParam);
-INT_PTR UnloadMailDataSvc(WPARAM wParam,LPARAM);
-INT_PTR SaveMailDataSvc(WPARAM wParam,LPARAM lParam);
-
-//From mime.cpp
-//void WINAPI ExtractHeaderFcn(char *,int,WORD,HYAMNMAIL); //already in MailExported
-struct _tcptable
-{
- char *NameBase,*NameSub;
- BOOLEAN isValid;
- unsigned short int CP;
-};
-extern struct _tcptable CodePageNamesAll[]; // in mime/decode.cpp
-extern int CPLENALL;
-extern struct _tcptable *CodePageNamesSupp; // in mime/decode.cpp
-extern int CPLENSUPP;
-//#define CPDEFINDEX 63 //ISO-8859-1
-#define CPDEFINDEX 0 //ACP
-
-//From pop3comm.cpp
-int RegisterPOP3Plugin(WPARAM,LPARAM);
-int UninstallPOP3(PLUGINUNINSTALLPARAMS* ppup); //to uninstall POP3 plugin with YAMN
-
-//From mailbrowser.cpp
-INT_PTR RunMailBrowserSvc(WPARAM,LPARAM);
-
-//From badconnect.cpp
-INT_PTR RunBadConnectionSvc(WPARAM,LPARAM);
-
-//From YAMNopts.cpp
-void WordToModAndVk(WORD,UINT *,UINT *);
-int YAMNOptInitSvc(WPARAM,LPARAM);
-
-//From main.cpp
-int PostLoad(WPARAM,LPARAM); //Executed after all plugins loaded YAMN reads mails from file and notify every protocol it should set its functions
-int Shutdown(WPARAM,LPARAM); //Executed before Miranda is going to shutdown
-int AddTopToolbarIcon(WPARAM,LPARAM); //Executed when TopToolBar plugin loaded Adds bitmap to toolbar
-void LoadPlugins(); //Loads plugins located in MirandaDir/Plugins/YAMN/*.dll
-int UninstallQuestionSvc(WPARAM,LPARAM); //Ask information when user wants to uninstall plugin
-
-//From synchro.cpp
-extern DWORD WINAPI WaitToWriteFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern void WINAPI WriteDoneFcn(PSWMRG SObject,PSCOUNTER SCounter=NULL);
-extern DWORD WINAPI WaitToReadFcn(PSWMRG SObject);
-extern void WINAPI ReadDoneFcn(PSWMRG SObject);
-extern DWORD WINAPI SCIncFcn(PSCOUNTER SCounter);
-extern DWORD WINAPI SCDecFcn(PSCOUNTER SCounter);
-//From mails.cpp
-extern void WINAPI DeleteMessageFromQueueFcn(HYAMNMAIL *From,HYAMNMAIL Which,int mode);
-extern void WINAPI SetRemoveFlagsInQueueFcn(HYAMNMAIL From,DWORD FlagsSet,DWORD FlagsNotSet,DWORD FlagsToSet,int mode);
-//From mime.cpp
-void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head);
-void DeleteHeaderContent(struct CHeader *head);
-//From account.cpp
-void WINAPI GetStatusFcn(HACCOUNT Which,char *Value);
-#endif