2017-12-08  Andre Heinecke  <aheinecke@intevation.de>

	Update news

	Update german translation

	Auto update po files

	Minor cleanup

	Fix minor memleaks
	* src/mail.cpp (Mail::close_inspector): Release inspector.
	(Mail::check_attachments): Don't leak DisplayName.

	Fix handling of attachments without extension
	* src/common.c (get_tmp_outfile): Handle the case that
	fileext is NULL.

2017-12-05  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump

	Update NEWS for todays release

2017-12-02  Andre Heinecke  <aheinecke@intevation.de>

	Fix german localisation error

	Read Headers as stream
	* src/mapihelp.cpp (mapi_get_header): New helper.
	(mapi_get_message_content_type): Use it.

	Improve performance of beforeRead handling
	* src/mapihelp.cpp (string_to_type): New Helper.
	(mapi_get_message_type, mapi_change_message_class): Use it.
	(mapi_change_message_class): Take optional type retval.
	* src/inspectors.cpp, src/session-events.cpp,
	src/user-events.cpp, src/message.cpp: Udpate calls.

2017-11-30  Andre Heinecke  <aheinecke@intevation.de>

	Add warnings about unsupported G Sync actions
	* src/mail.cpp (Mail::update_oom_data): Save if account
	is gsync account.
	(Mail::encrypt_sign): Warn / Block actions for GSync accounts.
	* src/mimemaker.cpp (count_usable_attachments): Expose so that
	it can be used in Mail.

	Fix logic error in two options
	* src/main.c (read_options): Fix reading autoresolve and
	replyCrypt.

2017-11-29  Andre Heinecke  <aheinecke@intevation.de>

	Implement basic PGP/Inline support for Encryption
	* src/mail.cpp (Mail::encrypt_sign): Mark down if inline is
	requested.
	* src/mail.h (Mail::should_inline_crypt): New.
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Handle "MIME Inline" for our own sent messages.
	* src/mimemaker.cpp (finalize_message): Handle is_inline.
	(create_top_encryption_header): Handle is_inline to write
	text/plain header.
	(mime_encrypt): Support inline if no attachments exist.

	Supress error message if UID not found
	* src/oomhelp.cpp (get_pa_variant): Add an extra check
	before the error.

2017-11-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix sender fallbacks in update_oom_data
	* src/mail.cpp (Mail::update_oom_data): Fix sender fallbacks.

	Fix possible race bug of a crash observed
	* src/mail.cpp (Mail::close_all_mails): Check for valididy
	of mail object before closing.

	Handle ms-tnef classified PGP/Inline mails
	* src/mail.cpp (get_attachment_stream): Add fallback
	if attachment count is zero even if we think it's ciphered.
	* src/mapihelp.cpp (get_internetcharsetbody_tag): Not
	getting internet charset body happens for ms-tnef. Debug only.
	(get_msgcls_from_pgp_lines): Use mapi_get_body_as_stream.
	(change_message_class_ipm_note): Look into application/ms-tnef.

	Abort attachment open early if attachment count 0
	* src/mail.cpp (get_attachment): Abort earlier if
	attachment count is zero.

	Minor spacing issue in german translation
	* po/de.po: Fix minor spacing issue.

2017-11-27  Andre Heinecke  <aheinecke@intevation.de>

	Make it compile

	Add checks to avoid assigning NULL to std::string
	* src/mail.cpp (Mail::update_oom_data): Safeguard against
	NULL assignment to std::string.

	Improve error handling for signed only
	* src/mail.cpp (Mail::get_crypto_details): Add msg for
	verification error.
	* src/ribbon-callbacks.cpp (get_sig_stip): Get mails
	details for failed verification results.

	Restore body on verification error
	* src/mail.cpp (Mail::update_body): Restore body if verify
	fails.
	(Mail::decrypt_verify): Save original body.

2017-11-24  Andre Heinecke  <aheinecke@intevation.de>

	Fix multiple selection performance
	* src/ribbon-callbacks.cpp (get_mail_from_control): Treat
	multiselection like no mail is selected.

	Additional check for mail destruction before parse
	* src/mail.cpp (do_parsing): Check if mail was deleted while
	waiting for lock.

	Remove some disabled OL 2007 compat

	Improve / Fix UI Invalidation
	* src/explorers-events.cpp (EVENT_SINK_INVOKE): Don't cancel
	invalidation when preview is disabled. Call delayed_invalidate_ui.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Use
	delayed_invalidate_ui.
	* src/windowmessages.cpp (delayed_invalidate_ui): New.

2017-11-20  Andre Heinecke  <aheinecke@intevation.de>

	Launch Kleo/GPA in the background on start
	* src/engine-assuan.c (spawn_background): New.
	(op_assuan_init): Create background thread to launch kleo.

	Post release version bump

	Update NEWS for todays release

	Auto update PO files

	Add tracing in engine-assuan for T3401

	Bail out immediately on send if crypt not needed
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Break early
	in case mail is not encrypted.

2017-11-17  Andre Heinecke  <aheinecke@intevation.de>

	Add more fallbacks and error for body wipe
	* src/mail.cpp, src/mail.h (Mail::wipe): Add force parameter.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check for
	OOM wiped body and try again to wipe it in case there is
	something.

	Revert "Add some more tracing in mail"
	This reverts commit 8d5e9d19ecaf0f753b5204a70d72d2505b373048.

	Clarify comment about send event

2017-11-16  Andre Heinecke  <aheinecke@intevation.de>

	Use table view reading pane for OL <= 2013
	* src/explorer-events.cpp (EVENT_SINK_INVOKE),
	src/ribbon-callbacks.cpp (get_mail_from_control): Check
	version to determine codepath.

	Remove deleted file from potfiles

	Post release version bump

	Update NEWS

	Auto update translations

	Fix Outlook 2010 TabComposeTools error
	* src/gpgoladdin.cpp (GetCustomUI_mime): Handle OL2010
	differently.

	Add comment about ref counting in get_oom_obj

2017-11-15  Andre Heinecke  <aheinecke@intevation.de>

	Ugly fix for ugly crash when pasting recipients
	* src/mailitem-events.cpp (do_delayed_locate): Delay
	a RECIPIENT_ADDED Signal.
	(EVENT_SINK_INVOKE): Only trigger once per change. Invoke
	delayed thread.
	* src/windowmessages.cpp (gpgol_window_proc): Handle
	Recipient Added signal.

	Lock key lookup map
	* src/mail.cpp (do_locate): Comment out useless message.
	(Mail::locate_keys): Guard list access with lock.

	Fix ref leak of recipients obj
	* src/mail.cpp (get_recipients): Unref recipients obj.

	Typos and spelling in comment about last commit

	Workaround crash when accessing CurrentView
	* src/explorer-events.cpp (EVENT_SINK_INVOKE),
	src/ribbon-callbacks.cpp (get_mail_from_control): Use
	preview pane instead.

	Return correct charset for html
	* src/parsecontroller.cpp (get_html_charset): Do it.

2017-11-10  Andre Heinecke  <aheinecke@intevation.de>

	Fix reversion for S/MIME mails if S/MIME disabled
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Revert
	again if S/MIME is disabled but we parsed the mail.

	Fix handling of "own" S/MIME Mails
	* src/mimedataprovider.cpp (MimeDataProvider::collect_data):
	Expect headers if the first line of the data starts with MIME-Version.

	Add some more tracing in mail
	* src/mail.cpp (Mail::update_body): Add some traces.

	Fix build example by adding --enable-static

	Remove obsolete info from README

	Improve debug output in parsecontroller
	* src/parsecontroller.cpp: Debug detected type.

2017-10-16  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Update Portugese translations
	* po/pt.po: Update

2017-09-14  Andre Heinecke  <aheinecke@intevation.de>

	Post release updates

	Fix regression for multipart/signed mails
	* src/mapihelp.cpp (mapi_change_message_class): Call
	change_message_class_ipm_note_smime_multipartsigned even
	if S/MIME is disabled.

2017-09-12  Andre Heinecke  <aheinecke@intevation.de>

	Post release updates

	Release GpgOL 2.2.0

	Auto: Update translations
	* po: Auto update.

	Update german translation
	* po/de.po: Update translation.

	Increase Options dialog width
	* src/dialogs.rc (IDD_ADDIN_OPTIONS): Increase width by 20px

2017-09-04  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Fixing typo and consistency in addin-options dialogue

2017-08-28  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Update Portugese translations
	* po/pt.po: Update

2017-08-25  Andre Heinecke  <aheinecke@intevation.de>

	Only do debug output if enableDebug is set
	* src/common_indep.c (do_log): Abort if enable_debug is
	not set.

	Delete Body MAPI Props after MIME creation
	* src/mimemaker.cpp (finalize_message): Delete Body Props.

	Add more debug output during parsing
	* src/mail.cpp (Mail::decrypt_verify): Put out parser + subject.
	* src/parsecontroller.cpp (ParseController::parse): Add more debug.

	Fix compliance mode check
	* src/mail.cpp (in_de_vs_mode): Fix logic.

	Fix handling of inline PGP Mails with attachment
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Repeat check
	after attachment creation.

2017-08-21  Andre Heinecke  <aheinecke@intevation.de>

	Fix encoding error for unsigned / unencrypted
	* src/ribbon-callbacks.cpp (get_sig_stip): Use utf8-gettext.

	Be more relaxed if something is before PGP Marker
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Remove abort
	statement for text before message.

	Accept more inline PGP Messages
	* src/mapihelp.cpp (change_message_class_ipm_note): Accept
	html only and multipart/related to check for pgp lines.

	Add hack to replace doubled linefeeds
	* src/mail.cpp (Mail::update_body): Replace doubled linefeeds before
	a newline.
	(find_and_replace): New helper.

	Improve formatting if VS-NFD is active
	* src/mail.cpp (Mail::get_crypto_details): Add a linefeed.

	Fix message for unsigned mails
	* src/mail.cpp (Mail::get_crypto_details): Return earlier.

	Handle Symmetric encryption
	* src/mail.cpp (Mail::parsing_done, Mail::update_categories)
	(Mail::is_encrypted): Use decryptResult.isNull instead of numRecp.

2017-07-27  Andre Heinecke  <aheinecke@intevation.de>

	Update German translation

	Auto update po files

	Change VS to VS-NfD for deVS stuff
	* src/mail.cpp (Mail::get_crypto_details): Change VS to VS-NfD

2017-07-25  Andre Heinecke  <aheinecke@intevation.de>

	Do German translation
	* po/de.po: Translate.

	Auto: Update po files

	Ensure that the correct window is enabled again
	* src/mail.cpp (encrypt_sign): Store window handle.

2017-07-10  Andre Heinecke  <aheinecke@intevation.de>

	Add handling for de-vs compliant results
	* configure.ac: Bump required GPGME version to 1.9
	* src/mail.cpp (in_de_vs_mode): New helper.
	(Mail::get_crypto_details): Add texts about de-vs states.
	(Mail::get_signature_level): Only return 3 or 4 in vs-mode if
	the signature was actually de-vs compliant.

2017-05-14  Andre Heinecke  <aheinecke@intevation.de>

	Add deprecation warning for OL2003/2007
	* src/common_indep.h (opt.deprecation_shown): New option.
	* src/main.c (write_options, read_options): Handle new option.
	* src/olflange.cpp: Show warning for old versions.

	Make it possible to register locally as user
	* src/olflange.cpp (DllRegisterServer): Register depending on
	elevation level.

	Add UAC elevation check
	* src/common.c (is_elevated, has_high_integrity): New.
	* src/common.h (is_elevated): Exposed.

2017-05-08  Andre Heinecke  <aheinecke@intevation.de>

	Fix implicit vector include
	* src/mimedataprovider.cpp: Fix build with newer stdc++ lib.

	Fix misleading indentation warning
	* src/w32-gettext.c (internal_gettext): Fix misleading indentation
	warning.

2017-04-25  Andre Heinecke  <aheinecke@intevation.de>

	Add missing copyright statements
	* src/common.c,
	src/common.h,
	src/mimemaker.h,
	src/revert.cpp: Add copyright.

	Unify Copyright header indentation

	Change copyright from Intevation to BSI
	* src/Makefile.am,
	src/addin-options.cpp,
	src/addin-options.h,
	src/application-events.cpp,
	src/attachment.cpp,
	src/attachment.h,
	src/common_indep.c,
	src/common_indep.h,
	src/eventsink.h,
	src/eventsinks.h,
	src/exechelp.c,
	src/exechelp.h,
	src/explorer-events.cpp,
	src/explorers-events.cpp,
	src/gpgoladdin.cpp,
	src/gpgoladdin.h,
	src/gpgolstr.cpp,
	src/gpgolstr.h,
	src/icons/Makefile.am,
	src/mail.cpp,
	src/mail.h,
	src/mailitem-events.cpp,
	src/mimedataprovider.cpp,
	src/mimedataprovider.h,
	src/mimemaker.cpp,
	src/mlang-charset.cpp,
	src/mlang-charset.h,
	src/mymapi.h,
	src/oomhelp.cpp,
	src/oomhelp.h,
	src/parsecontroller.cpp,
	src/parsecontroller.h,
	src/rfc2047parse.c,
	src/rfc2047parse.h,
	src/ribbon-callbacks.cpp,
	src/ribbon-callbacks.h,
	src/windowmessages.cpp,
	src/windowmessages.h,
	tests/Makefile.am,
	tests/run-parser.cpp,
	tests/t-parser.cpp: Change copyright to BSI.

2017-03-23  Andre Heinecke  <aheinecke@intevation.de>

	Set the sender on verify / decrypt
	* src/mail.cpp (Mail::decrypt_verify): Set sender on parser.
	* src/parsecontroller.cpp (ParseController::setSender): Add API

2017-03-03  Andre Heinecke  <aheinecke@intevation.de>

	Add locate-keys option again
	* src/addin-options.cpp: Uncomment autoresolve.
	* src/dialogs.rc: Update accordingly.

	Improve german translation

2017-02-07  Werner Koch  <wk@gnupg.org>

	Assign maintainer

2017-01-17  Andre Heinecke  <aheinecke@intevation.de>

	Update translations and add german translation
	* po/de.po: Translate
	* po/fr.po, po/pt.po, po/sv.po, po/zh_CN.po, po/zh_TW.po: Auto update.

	Minor string improvements

2017-01-16  Andre Heinecke  <aheinecke@intevation.de>

	Programatically resize window after category set
	* src/mail.cpp (resize_active_window): New. Resize window by 1px
	and back.
	(Mail::update_categories): Use it.

	Handle non trustworthy or unknown CA better
	* src/mail.cpp (Mail::get_crypto_details): Add handling for
	unknown validity for S/MIME

2017-01-13  Andre Heinecke  <aheinecke@intevation.de>

	Add option to disable crypt reply selection
	* src/addin-options.cpp: Update accordingly.
	* src/dialogs.h, src/dialogs.rc: Add new option.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle option.
	* src/main.c (read_options, write_options): Handle new option.

	Improve decryption failed errors
	* src/parsecontroller.cpp (format_recipients): Add names to
	known recipients and add the GPGME Error.

	Disable explorer sigstatus icon if preview off
	* src/ribbon-callbacks.cpp (get_mail_from_control): Don't show
	wrong sigstatus when preview pane is disabled.

	Only invalidate UI when mail is not crypto mail
	* src/application-events.cpp (EVENT_SINK_INVOKE): Don't
	invalidate on every load.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Invalidate on
	Read.

	Reduce UI invalidations
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Only invalidate
	if the current explorer has a reading pane.

	Update po files

	Do not release the central application obj
	* src/oomhelp.cpp (get_active_hwnd): Do not release central
	application Object.

	Handle QueryInterface errors
	* src/oomhelp.cpp (get_oom_object): Handle QueryInterface errors.

2017-01-09  Andre Heinecke  <aheinecke@intevation.de>

	Treat marginal in WoT as lvel 2
	* src/mail.cpp (Mail::update_sigstate): Set marginal trust
	as level 2.

	Release attachments object earlier
	* src/mail.cpp (Mail::check_attachments): Release
	attachments object earlier.

	Deactive Outlook Window during encryption
	* src/mail.cpp (encrypt_sign): Deactivate Outlook Window.

	Disable button and fix msgs if no mail selected
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames)
	(GpgolRibbonExtender::Invoke, GetCustomUI_MIME): Update
	for get_is_details_enabled.
	* src/ribbon-callbacks.cpp (get_is_details_enabled): New.
	(get_mail_from_control): Extend with selection state.

	Add logo to options dialog

	Say PGP/Inline instead of inline-pgp
	* src/addion-options.cpp (set_labels): Change inline-pgp to
	PGP/Inline.

2017-01-06  Andre Heinecke  <aheinecke@intevation.de>

	Warn if partial crypto with attachments is found
	* src/mail.cpp (Mail::check_attachments): Check if
	all attachments are hidden and warn otherwise.
	(Mail::parsing_done): Call check_attachments.
	* src/mail.h: Update accordingly.
	* src/oomhelp.p: Add new DASL.

	Update crypto summary and lvl2 icon
	* src/dialogs.rc: Use the same icon for lvl2 and 3
	* src/mail.cpp (Mail::get_crypto_summary): Change wording.
	(Mail::get_crypto_summary): Fix comment.
	(Mail::get_crypto_one_line): New. Move one liner also into
	mail class.
	(Mail::get_crypto_details): Minor wording change.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_sig_ttip): Use one liner funct.

2017-01-05  Andre Heinecke  <aheinecke@intevation.de>

	Hide WKD Option for now

	Allow different UUIDs for the same mail
	* src/oomhelp.cpp (get_unique_id): Always create one if
	called with create parameter.

	Fix crash when sending plain text mails
	* src/mimemaker.cpp (add_body): Fix boundary handling.

2017-01-03  Andre Heinecke  <aheinecke@intevation.de>

	Fix encrypt icon name in EXTRA_DIST
	* src/icons/Makefile.am (EXTRA_DIST): Fix encrypt name.

2016-12-16  Andre Heinecke  <aheinecke@intevation.de>

	Fix direct trust handling
	* mail.cpp (level_4_check): Fix it.
	(Mail::get_crypto_details): Use it correctly.

	Improve some strings
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Change some strings.
	* src/mail.cpp(Mail::get_crypto_summary): Use trusted instead
	of trustworthy.
	(Mail::get_crypto_details): Update some strings.

	Update icons for level 2
	* src/icons: Update level2 icon
	* src/icons/level-3-enc.png: Reexport

	Handle button click for encrypted only mails
	* src/ribbon-callbacks.cpp (launch_cert_details): Handle
	the case were a mail is unsigned.

	Use signed and encrypted again in tooltip
	* src/ribbon-callbacks.cpp (get_sig_ttip): Use signed
	and encrypted again.

	Implement direct trust handling
	* src/mail.cpp (level_4_check): Do the actual check for direct
	trust.
	(Mail::get_crypto_details): Handle level 4 subcases with different
	details.
	* src/parsecontroller.cpp (ParseController::parse): Fetch
	ultimately trusted keys if a sig was fully or ultimately valid.
	(ParseController::get_ultimate_keys): New Helper function
	to cache the ultimately valid keys.
	* src/parsecontroller.h: Update accordingly.

2016-12-15  Andre Heinecke  <aheinecke@intevation.de>

	Don't add a dot after the tooltip
	* src/ribbon-callbacks.cpp (get_sig_ttip): Remove dot.

	Fix signature level for unencrypted mails
	* src/mail.cpp (Mail::get_signature_level): Don't always
	return 0 for unencrytped mails.

	Various string fixes for crypto_details
	* src/mail.cpp (Mail::get_crypto_details): Various string
	fixes.

	Invert category order
	* src/mail.cpp (Mail::update_categories): Invert order.

	Use insecure instead of signed to sum up lvl1
	* src/mail.cpp (Mail::get_crypto_summary): Use insecure instead
	of signed.

	Fix sigstate setting
	* src/mail.cpp (Mail::update_sigstate): Skip empty uids
	instead of non empty ones :-)

	Pass key by reference to get_uid
	* src/mail.cpp (get_uid_for_sender): Pass key by reference
	to avoid a copy.

	Always activate the GpgOL read button
	* src/gpgoladdin.cpp (getCustomUI_MIME): Always enable button.
	* src/ribbon-callbacks.cpp (launch_cert_details): Open
	the emailselfdefense infographic for unencrypted / unsigned
	mails.

	Handle opaque signed inline pgp messages
	* src/parsecontroller.cpp (ParseController::parse):
	Handle opaque signed PGP Messages.

2016-12-14  Andre Heinecke  <aheinecke@intevation.de>

	Fix / improve inline PGP decryption
	* src/mapihelp.cpp (change_message_class_ipm_note): Look for
	PGP Lines even without content type.
	* src/mimedataprovider.cpp (MimeDataProvider::write): Respect
	m_collect_everything.
	* src/parsecontroller.cpp (ParseController::ParseController): Don't
	expect MIME headers for inline pgp data.
	(expect_no_mime): New.

	Update copyright year

	Update signature status display
	* src/icons: Add new Icons, remove old icons.
	* src/icons/Makefile.am (EXTRA_DIST): Update accordingly.
	* src/dialogs.h: Define ids
	* src/dialogs.rc: Include new icons.
	* src/gpgoladdin.cpp: Update some function names.
	* src/mail.cpp (Mail::update_sigstate): Use tofu validity
	from gnupg.
	(Mail::get_valid_sig): Removed. Too confusing.
	(Mail::is_signed): Constify.
	(Mail::is_encrypted): New, similar to is_signed.
	(level_4_check): Helper to figure out the correct message
	for level 4.
	(Mail::get_crypto_summary): New. More differntiated title.
	(Mail::get_signature_level): New. defines levels.
	(Mail::get_crypto_details): New. Replacement for get_signature_status
	(Mail::get_crypto_icon_id): Use levels and new icons.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_is_crypto): Renamed from
	get_is_signed.
	(get_sig_label): Use get_crypto_summary.
	(get_sig_ttip): Use get_crypto_summary.
	(get_sig_stip): Use get_crypto_details.
	(get_crypto_icon): Use renamed function.
	* src/ribbon-callbacks.h: Update accordingly.

2016-12-09  Andre Heinecke  <aheinecke@intevation.de>

	Recuce Sign and Encrypt to single split button
	* src/dialogs.h: Add new icon ids.
	* src/ribbon-callbacks.h: Add new ids.
	* src/ribbon-callbacks.cpp (GpgolRibbonExtender::GetIDsOfNames),
	(GpgolRibbonExtender::Invoke): Handle new ids.
	(GetCustomUI_MIME): Use split button.
	* src/ribbon-callbacks.cpp (mark_mime_action): Invalidate ui.
	(get_crypt_pressed): Handle queries for multiple flags.

	Improve messagelist icon
	* encr-s.ico, encr-s.xcf: Imrpove 1bit alpha use by mixing more
	white into the still transparent colors. Remove line in the middle
	this was too small for 16x16

	Add new icons for sign / encrypt
	* src/icons/Makefile.am (EXTRA_DIST): Update accordingly.
	* encrypt-20.png, encrypt.svg, sign-20.png, sign-enc-40.png,
	sign-enc.svg, sign.svg: New.

2016-12-05  Andre Heinecke  <aheinecke@intevation.de>

	Fix multipart/alternative html mails
	* src/mimemaker.cpp (add_body_and_attachments): Properly
	handle the case when inner and outer boundary is null.

	Use MAPI message for mapi_get_uid
	* src/mapihelp.cpp, src/mapihelp.h (mapi_get_message):
	Change to take message as argument.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Update usage.

	Mention srcname / func in debug of invalidation
	* src/gpgoladdin.cpp (gpgoladdin_invalidate_ui): Put srcname
	and func in debug.

	Prepare OOM Event handler for OL 2007
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Set uuid
	on Open and pre_process in Read for OL 2007.

	Add send_seen as member variable to Mail object
	* src/mail.cpp, src/mail.h (Mail::needs_encrypt),
	(Mail::set_needs_encrypt): New.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Use new functions.

	Add fallback to create categories
	* src/oomhelp.cpp (ensure_category_exists): Fallback to
	Session.Categories.

	Always initialize execpinfo
	* src/oomhelp.cpp (get_oom_object, put_oom_string),
	(add_oom_attachment, get_pa_variant, invoke_oom_method_with_parms):
	Initialize execepinfo.

2016-12-01  Andre Heinecke  <aheinecke@intevation.de>

	Preselect sign / encrypt for reply / forward
	* src/mail.cpp (Mail::Mail): Initalize crypto flags.
	(Mail::get_crypto_flags): New.
	(Mail::parsing_done): Set crypto flags.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle reply, forward
	and ReplyAll.

	Fix Reply event ID
	* src/mailitem-events.cpp (MailEvent): Fix reply id.

	Add supertip for unsigned messages
	* src/ribbon-callbacks.cpp (get_sig_stip): Handle mail not found
	case.

	Fix crash when viewing unsigned mails
	* src/ribbon-callbacks.cpp (get_sig_label): Return early
	if mail not found.

	Add missing icon
	* src/icons/emblem-success-yellow-64.png: New.

	Remove some development debugs
	* src/mail.cpp (update_oom_data): Remove some development
	debug statements.

	Change wording to better distinguish fully trusted
	* src/mail.cpp (Mail::get_signature_status): Distinguish between
	trusted and fully trusted.
	* src/ribbon-callbacks.cpp (get_sig_label): Use three labels
	instead of two.

	Change wording in signature details
	* src/mail.cpp (Mail::get_signature_status): Change wording.
	* src/ribbon-callbacks.cpp (get_sig_label): Use trust instead
	verified.

	Log if a uid was skipped because of no email
	* src/mail.cpp (get_uid_for_sender): Log if mail is null.

	Change valid category to Trusted Sender Address
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Change
	category name.
	(Mail::remove_categories, Mail::update_categories): Use new
	name.

	Enable clearsigned support again for reading
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Enable clearsigned
	support.

	Add yellow checker for basic / marginal trust
	* src/dialogs.h, src/dialogs.rc: Update accordingly.
	* src/icons/emblem-success-yellow.svg,
	src/icons/emblem-success-yellow-64.png: New.
	* src/icons/Makefile.am (EXTRA_DIST): Add new icon and
	svg icons.
	* srC/mail.cpp (Mail::get_signature_icon_id): Use it.

2016-11-30  Andre Heinecke  <aheinecke@intevation.de>

	Support multipart/related reading
	* src/attachment.cpp (Attachment::set_content_id)
	(Attachment::get_content_id): New.
	* src/mail.cpp (get_attachment): Return last attachment on -1 pos
	(fixup_last_attachment): New. Set content id.
	(add_attachments): Call fixup.
	* src/oomhelp.h (PR_ATTACH_CONTENT_ID_DASL): New.
	* src/mimedataprovider.cpp (t2body): Parse content-id.
	(MimeDataProvider::create_attachment): Set content-id.

	Support sending embedded images(multipart/related)
	* src/mimemaker.cpp (add_body_and_attachments): New. Common
	multipart handling for the encrypt / sign functions.
	* src/mimemaker.cpp (mime_encrypt, do_mime_sign):
	Use add_body_and_attachments.
	(is_related): New. Check if we have a multipart/related.
	(write_attachments): Allow to filter out related attachments.
	(write_part): Write Content-ID if there is one.
	* src/mymapitags.h (PR_ATTACH_CONTENT_ID): New.

	Add content_id to our attach table
	* src/common_indep.h (mapi_attach_item_t): Extend with
	content_id.
	* src/mapihelp.cpp (get_attach_content_id): New.
	(mapi_create_attach_table): Use it.
	(mapi_release_attach_table): Free it.

	Fix content type detection
	* src/mimemaker.cpp (infer_content_type): Fix it.

2016-11-29  Andre Heinecke  <aheinecke@intevation.de>

	Fix mulipart/mixed with alternative content
	* src/mimemaker.cpp (add_body): Open new part if in mixed structure.

	Support HTML sending and fix sender updates
	* src/mail.cpp (Mail::Mail): Update init.
	(Mail::get_sender): Sender is now a string.
	(Mail::encrypt_sign): Update accordingly.
	(Mail::update_sender): Changed to update_oom_data.
	(Mail::update_oom_data): More generic. Caches BodyFormat,
	HTMLBody and sender. Changed order for sender retrieval
	when composing mails.
	(Mail::update_sigstate): Update accordingly.
	(Mail::is_html_alternative, Mail::get_cached_html_body): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update oom data
	on send.
	* src/mimemaker.cpp (create_mapi_attachment): Fix another use
	after free.
	(infer_content_type): is_mapibody now defines text/html or
	text/plain. The naive content deduction is removed.
	(add_body): Handler for the HTML / multipart body.
	(do_mime_sign, mime_encrypt): Use add_body.
	(mime_sign, mime_sign_encrypt): Pass on mail object.

	Ignore more property changes
	* src/mailitem-events.cpp (prop_blacklist): Add OutlookVersion
	and OutlookInternalVersion.

2016-11-28  Andre Heinecke  <aheinecke@intevation.de>

	Rework close and remove hacks for bad events
	* src/mail.cpp (Mail::close): Make it static to handle the
	case were close causes a mail deletion.
	(Mail::close_inspector): Make it static.
	(Mail::close_all_mails): Close inspector first. Handle
	map changes and object deletion.
	(Mail::~Mail): Don't delete event sink.
	(Mail::get_close_triggered, Mail::set_close_triggered): New.
	* src/mailitem-events.h (EVENT_SINK_INVOKE): Remove
	uneccessary Close hacks. Fix fallthrough from Open to
	before read. Fix fallthrough from Close to unload.
	Check if a close was triggered by us.
	(request_close, request_decrypt): Remvoed.
	* src/windowmessages.cpp, src/windowmessages.h (REQUEST_DECRYPT)
	(REQUEST_CLOSE): Removed.

	Don't close non-crypto mails
	* src/mail.cpp (Mail::close_all_mails): Ignore non crypto mails.
	Don't delete mail on error.

	Fix race between deletion and parser access
	* src/mail.cpp (Mail::~Mail): Lock destruction.
	(do_decrypt): Lock validity check and parser access.

	Use inline text as body if no body seen
	* src/mimedataprovider.cpp (t2body): Use first text
	attachment as body if it is an inline attachment.
	(MimeDataProvider::create_attachment): Log the attachment
	name.

	Handle detected attachments without filenames
	* src/mail.cpp (Mail::add_attachments): Ingore attachments without
	filenames.
	(Mail::parsing_done): Don't fail hard on attachment add failure.

2016-11-17  Andre Heinecke  <aheinecke@intevation.de>

	Ignoore WM_SYSCOMMAND / SC_CLOSE
	* src/windowmessages.cpp (gpgol_hook): Ignore WM_SYSCOMMAND
	SC_CLOSE.

	Improve wording in debug output for failed crypto

	Don't show MessageBox when encryption failed
	* src/message.cpp (sign_encrypt): Disable messagebox

	Start locate-keys when a recipient is added
	* src/mail.cpp (Mail::locate_keys): Check for recipient keys.
	(do_locate): New.
	(Mail::needs_crypto): Return flags.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle recipient
	changes and do locate_keys if necessary.

	Add autoresolve keys option for encryption
	* src/addin-options.cpp (set_labels): Improve wording.
	* src/dialogs.rc: Fix layout of autoresolve option.
	* src/main.c (read_options, write_options): Handle option.

	Sleep a bit in engine_wait
	* src/engine.c (engine_wait): Sleep in the busy wait loop.

	Fix minor memory leak in error condition
	* src/ommon_indep.c (qp_encode): Free outbuf on error.

2016-11-16  Andre Heinecke  <aheinecke@intevation.de>

	Add some NEWS

2016-11-15  Andre Heinecke  <aheinecke@intevation.de>

	Use undecoded body if charset unkown or not found
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Handle no charset.

	Add some more error messages to finalize_message
	* src/mimemaker.cpp (finalize_message): Add some more errors.

	Fix use after free in mimemaker
	* src/mimemaker.cpp (create_mapi_attachment),
	(finalize_message): Do not use GpgOLStr for assignments.

	Fix use after free & double free
	* src/mail.cpp (Mail::get_signature_status): Do not append / free
	buf as it is no longer set in the above block.

	Install forms for formpath forms
	* forms/Makefile.am (cfg): Add new forms.

	Ignore UnRead property change notification
	* src/mailitem-events.cpp: Ignore UnRead

	Fix check for gpgme-w32spawn
	* src/main.cpp (get_gpgme_w32_inst_dir): Fix name of
	gpgme-w32spawn.exe

	Remove buggy debug output warning
	* src/main.c (read_options): Don't show messagebox about
	debug output.

2016-11-14  Andre Heinecke  <aheinecke@intevation.de>

	Look for libgpgmepp in the right libdir
	* src/Makefile.am (libgpgmepp.a): Use correct prefix.

	Fix errors from 1b822ad2
	* src/mail.cpp: Fix utf8 macro.
	(Mail::get_signature_status): Fix typo.
	* src/mailitem-events.cpp: Fix utf8 macro.

	Update translations and translate german
	* po/POTFILES.in: Add all files containing gettext macros.
	* po/de.po: Update and translate.
	* po/fr.po, po/pt.po, po/sv.po, po/zh_CN.po, po/zh_TW.po: Autoupdate

	Improve some strings for l10n

	Make gpgme install dir selection more flexible
	* src/main.c (get_gpgme_w32_inst_dir): New.
	(DllMain): Use it.

2016-11-11  Andre Heinecke  <aheinecke@intevation.de>

	Next version will be 2.0.0
	* NEWS, configure.ac: Bump version

	Use _WIN64 instead of WIN64 to detect arch
	* common_indep.h, config-dialog.c, olflange-dlgs.cpp: Use
	_WIN64 instead of WIN64.

	Add automake test-driver
	* build-aux/test-driver: New. From debian jessie.

	Add property change warning
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Warn on property
	change done by the user.

	Add helper method to get active window handle
	* src/oomhelp.cpp, src/oomhelp.h (get_active_hwnd): New get the
	handle of the active window.

	Clean up some debug output
	* src/ribbon-callbacks.cpp (get_mail_from_control): Don't
	print the Subject

	Remove accidentally commited AddRef experiment
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Do not add
	another ref on read.

	Fix WM_CLOSE handling
	* src/windowmessages.h (add_explorer, remove_explorer): Use LPDISPATCH
	* src/windowmessages.cpp (add_explorer, remove_explorer): Update
	accordingly.
	(gpgol_hook): Use FindWindowEx to find all explorer windows.
	* src/gpgoladdin.cpp (install_explorer_sinks): Register explorer
	dispatch.
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Remove explorer
	on close.

	Fix UI Invalidation after selection change
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Invalidate again
	on selection change.
	(invalidate_ui): Delay invalidation.

	Ensure uuid's are always logged
	* src/mail.cpp (Mail::set_uuid): Log uuid changes.

	Fix sigstate code for multiple signatures
	* src/mail.cpp (Mail::update_sigstate): Fix signature selection code.

	Set uuid again in close
	* src/mail.cpp (Mail::close): Set uuid again.

	Remove old error message template
	* src/mail.cpp (HTML_TEMPLATE): Remove.
	(Mail::wipe): Just empty out body.

2016-11-08  Andre Heinecke  <aheinecke@intevation.de>

	Only decrypt / verify one mail at once
	* src/mail.cpp (do_parsing): Lock parsing

2016-11-07  Andre Heinecke  <aheinecke@intevation.de>

	Only close on WM_CLOSE of explorers
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Track explorers.
	* src/gpgoladdin.cpp (install_explorer_sinks): Install sinks.
	* src/windowmessages.cpp (add_explorer_window)
	(remove_explorer_window): New.
	(gpgol_hook): Only react to explorers.

	Remove the need to revert mails
	* src/application-events.cpp (EVENT_SINK_INVOKE): Remove comment.
	* src/gpgoladdin.cpp (GpgolAddin::OnDisconnection): Close instead
	revert.
	(GpgolAddin::OnStartupComplete): Create Window message hook.
	* src/mail.cpp (Mail::close_all_mails): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (request_close): New.
	src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update event
	handling to new logic. See comments.
	* src/windowmessages.cpp (gpgol_hook): New.
	(create_message_hook): New. Registers gpgol_hook.
	src/windowmessages.h: Update accordingly.

	Disable ui invalidation in explorers for now
	* src/explorer-events.cpp, src/explorers-events.cpp
	(EVENT_SINK_INVOKE): Disable ui invalidation.

	Always discard changes on close for now
	* src/mail.cpp, src/mail.h (Mail::close): Remove save changes
	parameter.

	Add request_close windowmessage
	* src/windowmessage.h (REQUEST_CLOSE): Declare.
	* src/windowmessages.cpp (gpgol_window_proc): Handle REQUEST_CLOSE.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Update to new
	get_unique_id signature.

	Use msgclass to determine if a mail is crypto
	* src/mail.cpp (is_crypto_mail): Use messageclass instead
	of processed.
	* src/mail.h: Update accordingly.

	Add IID and install functions for explorer sinks
	* src/eventsinks.h (install_ExplorerEvents_sink)
	(install_ExplorersEvents_sink): Declare.
	* src/oomhelp.h: Add missing uuids.

	Use shared_ptr for parser object
	* src/mail.cpp (m_parser): Change to shared_ptr
	(Mail::parsing_done): Check if parser already deleted.
	* src/mail.h: Update accordingly.

	Check for duplicates in mail map
	* src/mail.cpp (Mail::set_uuid): Check for duplicates in mail
	map and handle them.

	Fix build by adding new event handlers to Makefile
	* src/Makefile.am (gpgol_SOURCES): Add new files.

2016-11-03  Andre Heinecke  <aheinecke@intevation.de>

	Add explorer and explorers event handler
	* explorer-events.cpp: New. Invalidate ui on selection change.
	* explorers-events.cpp: New. Install event handler for new explorers.
	* gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release explorers event
	handler.
	(install_explorer_sinks): Install explorers and explorer event
	handler.
	(GpgolAddin::OnStartupComplete): call install_explorer_sinks

	Add mapi helpers for uuid retrieval
	* src/mapihelp.cpp, src/mapihelp.h: (get_gpgoluid_tag)
	(mapi_get_uid): New.

	Allow to reset uuid
	* src/mail.cpp (Mail::set_uuid): Set uuid even if the mail
	object already tracks a uuid.
	* src/oomhelp.cpp (get_unique_id): Extend with uuid param.
	* src/oomhelp.h: Update accordingly

	Add close function to Mails
	* src/mail.cpp (Mail::close): New, close a mail.

	Add extra debug output for mail destruction
	* src/mail.cpp (Mail::~Mail): Print uuid in dtor

2016-11-02  Andre Heinecke  <aheinecke@intevation.de>

	Disable revert all mails on quit
	* src/application-events.cpp (EVENT_SINK_INVOKE): Disable
	revert_all_mails.

2016-10-31  Andre Heinecke  <aheinecke@intevation.de>

	Install forms for InfoPath msg classes.
	* forms/gpgol-form-encrypted.cfg,
	 forms/gpgol-form-signed.cfg: New.
	* src/olflange.cpp (install_forms): Install new forms.
	* src/mimemaker.cpp (finalize_message): Use InfoPath msg classes.

2016-10-28  Andre Heinecke  <aheinecke@intevation.de>

	Follow Outlook preference in alt. text/html mails
	* src/gpgoladdin.cpp (check_html_preferred): New. Read Outlook's
	setting.
	(GpgolAddin::OnStartupComplete): Check html state
	* src/mail.cpp (Mail::decrypt_verify): Use plain placeholder
	if html disabled.
	(Mail::update_body): Use correct parts.
	* src/main.cpp (read_options): Don't read preferHTML.
	(write_options): Don't write preferHTML.
	* src/parsecontroller.cpp: Add plain text template.
	(format_error): Use it.
	(ParseController::parse): Use it.

	Don't confuse Outlook and GpgME Versions
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Print
	out proper version in debug output.

	Add int / string property accessor setters
	* src/oomhelp.cpp (put_pa_string, put_pa_int): New.
	(put_pa_variant): Generic version of put_pa_string.
	* src/oomhelp.h: Update accordingly.

	Pass Mail object to mimemaker

	Add some helper functions to Mail object
	* src/mail.cpp, src/mail.h (Mail::remove_attachments)
	(Mail::add_attachments, get_string, Mail::get_body)
	(Mail::get_html_body, Mail::get_recipients): New.

	Remove AfterWrite Windowmessage hack
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Call save in
	the send event to trigger the write and then send the mail.
	(request_send): Removed.
	* src/Windowmessages.cpp (request_send_mail): Removed.
	src/Windowmessages.h (REQUEST_SEND_MAIL): Removed.

	Revert "Implement encryption without MAPI data"
	This reverts commit 2b376a48241aaef927ab1ffd6e7d213480d6751e.

2016-10-27  Andre Heinecke  <aheinecke@intevation.de>

	Implement encryption without MAPI data
	* src/attachment.cpp (Attachment::get_data_string): New helper.
	* src/attachment.h: Declare get_data_string.
	* src/mail.cpp, src/mail.h (Mail::remove_attachments)
	(Mail::add_attachments, get_string, Mail::get_body)
	(Mail::get_html_body, Mail::get_recipients): New.
	* src/mailitem-events.cpp (request_send): Comment out for now.
	(EVENT_SINK_INVOKE): Encrypt in send event.
	* src/mimemaker.cpp (sink_data_write): New to work with GpgME::Data.
	(encrypt_sign_mail): New works based on Objects.

	Add options for inline pgp and recpt. autoresolve
	* src/addin-options.cpp (set_labels)
	(enable_disable_opts, options_window_proc): Handle
	new checkboxes.
	* src/common_indep.h: Extend opts.
	* src/main.c: Load / Save opts.
	* src/dialogs.rc: Update Layout.
	* src/dialogs.h: Add new ID's

2016-10-26  Andre Heinecke  <aheinecke@intevation.de>

	Ensure that the moss attachment stays hidden
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Hide attachment.

2016-10-24  Andre Heinecke  <aheinecke@intevation.de>

	Clarify and spellfix update_sigstate comments
	* src/mail.cpp (Mail::update_sigstate): Clarify comments and
	fix spelling.

2016-10-20  Andre Heinecke  <aheinecke@intevation.de>

	Convert mimemaker to cpp
	* src/Makefile.am (GpgOL_SOURCES): Update.
	* src/mimemaker.c: Removed.
	* src/mimemaker.cpp: New.

	Convert body encoding using mlang
	* src/mail.cpp (Mail::update_body): Convert bodies.

	Use const input ptr for mlang conversion
	* src/mlang-charset.cpp, src/mlang-charset.h (ansi_charset_to_utf8):
	Take input as const.

	Close thread handles immediately after creation

	Fix explorer display after mail was closed
	* src/mailitem-events.cpp (request_decrypt): New. Request a decypt.
	(EVENT_SINK_INVOKE(MailItemEvents)): Handle decrypt_after_write.
	Don't always unload in unload.
	* src/windowmessages.cpp: Handle REQUEST_DECRYPT.
	* src/windowmessages.h: Add REQUEST_DECRYPT.

	Revert all active mails on quit
	* src/application-events.cpp: Call revert_all_mails in quit event.

	Fix revert for new attachment code
	* src/revert.cpp (gpgol_mailitem_revert): Delete all attachments
	not markes as MOSS.

	Save mail after revert_all_mails
	* src/mail.cpp (Mail::revert_all_mails): Save afterwards.
	(Mail::revert): Mark the the mail no longer needs wipe.

	Ensure parser thread handle is closed
	* src/mail.cpp (Mail::parsing_done): CloseHandle.
	(Mail::~Mail): Ditto.
	(Mail::decrypt_verify): Store handle.
	* src/mail.h: Add new member for Handle.

2016-10-19  Andre Heinecke  <aheinecke@intevation.de>

	Add gimp variants of the new form icons
	* forms/encr-s.xcf, forms/ribbon.xcf: Add gimp variants.

	Fix multipart S/MIME handling
	* src/parsecontroller.cpp (ParseController::parse): Use
	gpgme_data_identify to figure out if our data is smime.

	Fix some double free's in oomhelp
	* src/oomhelp.cpp (get_oom_object): Fix double free on
	error.
	(put_pa_string): Fix double frees.

	Simplify / fix S/MIME data collection.
	* src/mimedataprovider.cpp: Copy everything if expect
	no headers is true.
	* src/parsecontroller.cpp (expect_no_headers): Only expect
	headers for multipart signed.

	Fix ignoring S/MIME if S/MIME disabled
	* src/mail.cpp (Mail::decrypt_verify): Ignore MSGTYPE_SMIME
	* src/mapihelp.cpp (mapi_change_message_class): Also ignore
	multipartsigned.

	tests: Check if file was opened before parsing.
	* tests/run-parser.cpp (main): Check fp_in.

	Remove categories on revert
	* src/mail.cpp (Mail::remove_categories): New.
	* src/mail.h: Update accordingly.
	* src/revert.cpp: Use it.

	Fix crash if not attachments found
	* src/mail.cpp (get_attachment_stream): Add safeguards.

	Update messagelist forms icons
	* forms/gpgol-cs.cfg, gpgol-ms.cfg, gpgol.cfg: Remove locale.
	* forms/encr-s.ico, forms/sign-s.ico: New.

	Move init code behind check for application
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete):
	Move init code together.

	Declare MAPIFormContainer
	* src/mymapi.h: Add stub declaration for mapiformcontainer.

	Remove localized forms
	* forms/Makefile.am: Update accordingly.
	* forms/gpgol-cs_en.cfg,
	forms/gpgol-cs_de.cfg,
	forms/gpgol-ms_en.cfg,
	forms/gpgol-ms_de.cfg,
	forms/gpgol_en.cfg,
	forms/gpgol_de.cfg: Removed.
	*forms/gpgol-cs.cfg,
	forms/gpgol-ms.cfg,
	forms/gpgol.cfg: New.

	* src/olflange.cpp: Use generic forms.

2016-10-18  Andre Heinecke  <aheinecke@intevation.de>

	Improve sigdetails button and verify caching
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames):
	(GpgolRibbonExtender::Invoke): Handle new icon callback.
	(GetCustomUI_MIME): Use new icon callback.
	* src/mail.cpp (Mail::Mail): New members for state caching.
	Rename m_uid to m_uuid to avoid confusion with the valid uid.
	(Mail::~Mail): Use renamed variables.
	(Mail::get_mail_for_uuid): Renamed.
	(Mail::decrypt_verify): Use renamed functions.
	(Mail::parsing_done): Add some traces for a crash.
	(Mail::update_sigstate): New. Called once after parsing done.
	(Mail::get_valid_sig): Use cached values.
	(Mail::is_valid_sig): Use cached values.
	(Mail::set_uuid): Renamed.
	(Mail::get_signature_status): Fix isOpenPGP
	(Mail::get_signature_icon_id): New. Use for new icons.
	(Mail::get_sig_fpr): New. Used for launch details.
	* src/mail.h: Update accordingly.
	* src/parsecontroller.cpp (ParseController::parse):
	Add some traces for a crash.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Use renamed
	functions.
	(HRESULT launch_cert_details): Launch kleopatra on details.
	(HRESULT get_sigstate_icon): Get the Icon of a signature.
	* src/ribbon-callbacks.h: Update accordingly.

	Add new icons for signature state
	* COPYING-ICONS,
	src/icons/Makefile.am,
	src/icons/README.icons,
	src/icons/emblem-information-64.png,
	src/icons/emblem-information.svg,
	src/icons/emblem-question-64.png,
	src/icons/emblem-question.svg,
	src/icons/emblem-success-64.png,
	src/icons/emblem-success.svg,
	src/icons/emblem-warning-64.png,
	src/icons/emblem-warning.svg: New.
	* src/dialogs.h, src/dialogs.rc: Add new ids / data.

	Minor updates for readme
	* README: Update copyright and some text.

	Move get_uiserver_name into common
	* src/common.c (get_uiserver_name): Added.
	* src/common.h: Add prototype.
	* src/engine-assuan.c (get_uiserver_name): Removed.

	Move icons into subdir

	Enable signature status in home tab
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Enable inline and
	Status icons.

	Extend signature status display
	* src/mail.cpp (get_uid_for_sender): Factored out of get_valid_sig.
	(Mail::get_valid_sig): Improve tofu handling.
	(Mail::get_signature_status): Handle more states.

	Also update key if a signature already has key
	* src/parsecontroller.cpp (ParseController::parse): Update key
	if a signature has a key.

2016-10-17  Andre Heinecke  <aheinecke@intevation.de>

	Add helper to format epoch time with windows
	* src/common.c (epoch_to_file_time): New.
	(format_date_from_gpgme): New.

	Handle Explorer context in mail from control
	* src/ribbon-callbacks.cpp (get_mail_from_control): Handle explorer.

	Fix memleak in get context dbg output
	* src/ribbon-callbacks (getContext): Release object name.

2016-10-14  Andre Heinecke  <aheinecke@intevation.de>

	Start implementation of ribbon base sigstate
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Register
	new names.
	(GpgolRibbonExtender::Invoke): Handle new names.
	(GetCustomUI_MIME): Reactivate Read code. Use new callbacks.
	(Mail::Mail): Do not cache sig validity.
	(Mail::get_valid_sig): Get Sig / UID pair of the valid sig.
	(Mail::is_valid_sig): Use get_valid_sig.
	(Mail::is_signed): Fix use of temporary parser object.
	(Mail::set_uid): Set uid to be identifyable from callbacks.
	(Mail::get_signature_status): Format string for supertip.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_crypt_status): Removed.
	(get_mail_from_control): New. Helper to resolve the Mail object.
	(MY_MAIL_GETTER): Helper macro for common task.
	(get_is_signed, get_sig_label, get_sig_ttip, get_sig_stip): New
	callbacks.
	(launch_cert_details): Dummy.

	Add UID to mails / mail objects
	* src/Makefile.am: Link librpcrt4 for uid functions.
	* src/mail.cpp (g_uid_map): New.
	(Mail::~Mail): Remove from uid map if added.
	(Mail::get_mail_for_uid): New. Get Mail object for uid.
	(Mail::is_mail_valid, Mail::is_valid_ptr): Renamd is_mail_valid
	to is_valid_ptr to avoid confusion.
	(Mail::decrypt_verify): Set uid.
	* src/mail.h: Update accordingly.
	* src/oomhelp.cpp (generate_uid, get_unique_id): New.
	(set_pa_variant): Changed to put_pa_string.
	* src/oomhelp.h: Update accordingly.
	(GPGOL_UID_DASL): Declare.
	* src/windowmessages.cpp (gpgol_window_proc): Use is_mail_valid.

	Dont fail if placeholder can't be inserted
	* src/mail.cpp (decrypt_verify): Don't fail if placeholder
	can't be inserted.

	Store decrypt / verify results in mail
	* src/mail.cpp (Mail::is_signed): New. Check if signed at all.
	(Mail::is_valid_sig): New. Check if signature is valid.
	(Mail::update_categories): Use member variables / new functions.
	(is_valid_sig): Removed.

	Add some more oom helpers
	* src/oomhelp.cpp (get_strong_reference): New obtain a strong
	reference through the application object.
	(invoke_oom_method_with_params): New. Useful helper.
	(invoke_oom_method): Use invoke_oom_method_with_params.

2016-10-12  Andre Heinecke  <aheinecke@intevation.de>

	Fix last line handling of text mails
	* src/mimedataprovider.cpp (t2body): Store if we have a html part.
	(t2body): Improve debug output.
	(get_html_body): Only fetch last line if we have seen an html part.

	tests: Add two more multipart-signed tests
	* tests/data/openpgp-signed-no-attach-gpgol.mbox,
	tests/data/openpgp-signed-no-attach-gpgol.plain,
	tests/data/openpgp-signed-two-attachments.mbox,
	tests/data/openpgp-signed-two-attachments.plain: New.
	* tests/t-parser.cpp: Use them.

	Change behavior of inline attachments
	* src/mimedataprovider.cpp (t2body): Treat inline attachments
	as attachments.

2016-10-11  Andre Heinecke  <aheinecke@intevation.de>

	Factor out is_valid check into own function
	* src/mail.cpp (is_valid_sig): New. Helper to check
	validity.

	Fix crash when mail is deleted while parsing
	* src/windowmessages.cpp (gpgol_window_proc): Make safeguard
	actually work.

	Add categories for crypto status and use them
	* src/gpgoladdin.cpp (OnStartupComplete): Create categories.
	* src/mail.cpp (Mail::update_categories): New. Set up categories
	based on trust.
	* src/mail.cpp (Mail::parsing_done): Update categories.
	* src/parsecontroller.cpp (ParseController::parse): Cache
	Signature keys in background thread.

	Add yet another way to lookup sender
	* src/mail.cpp (Mail::update_sender): Use SenderEmailAddress, too.

	Clarify that placeholder is used for verify, too
	* src/mail.cpp (Mail::decrypt_verify): Update string.

	Add safeground around parser start
	* src/mail.cpp (do_parsing): Safeguard against no parser.

	Free sender string on Mail deletion
	* src/mail.cpp (Mail::~Mail): Free sender.

	Add category helpers to oomhelp
	* src/oomhelp.cpp (ensure_category_exists, create_category),
	(add_category, remove_category): New.
	* src/oomhelp.h: Update accordingly.

	Define _FILE_OFFSET_BITS for gpgme data compat
	* src/Makefile.am (AM_CXXFLAGS): Add file offset bits.

2016-10-07  Andre Heinecke  <aheinecke@intevation.de>

	Make attachments work again
	* src/common.c (get_tmp_outfile): Add SHARE_DELETE
	* src/mail.cpp (get_attachment, get_cipherstream),
	(get_attachment_stream): Split get_cipherstream in two subfunctions.
	(copy_data_property): Add disabled experimental code.
	(copy_attachment_to_file): Copy attachment data to tmp file.
	(add_attachments): Use copy to file.
	(Mail::decrypt_verify): Update call according to new function.

	Clean up set_pa_info and add comment
	* src/oomhelp.cpp (set_pa_variant): Cleanup.
	* src/oomhelp.h (set_pa_variant): Document painful experiments.

	Add excepinfo init helper
	* src/oomhelp.cpp (init_excepinfo): New. Init the struct.

	Simplify Attachment code by using just Data
	* src/attachment.cpp (Attachment::get_data): Direct access
	to the underlying data structure.
	* src/attachment.h, src/mimedataprovider.cpp: Update accordingly.

2016-09-28  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add test for a mail created by us
	* tests/data/openpgp-encrypted-attachment-gpgol.mbox,
	 tests/data/openpgp-encrypted-attachment-gpgol.plain: New.
	* tests/t-parser.cpp: Use it.
	(main): Also check for zero attachment count.

	tests: Fix run-parser
	* tests/run-parser.cpp (main): Actually parse again.

	Simplify / Fix attachment collection
	* src/mimedataprovider.cpp (mime_context): Remove redundant
	collect_attachment.
	(t2body): Remove collect_attachment artifact. Infer from
	crypto data / bodies / nesting level.

	tests: Add test for data with no headers
	* tests/data/openpgp-encrypted-attachment-no-headers.mbox: New.
	* tests/t-parser: Use it. Correct some types.

	Add error handling for decryption errors
	* src/mail.cpp (update_body): New helper.
	* src/parsecontroller.cpp (format_error): New.
	(format_recipients): New.
	(ParseController::Parse): Store formatted error, change signature.
	(get_formatted_error): Get a HTML Formatted error.
	* tests/run-parser.cpp (main),
	tests/t-parser.cpp (main): Adjust to new API

	Fix handling of MIMEData without Headers
	* src/mimedataprovider.cpp (MimeDataProvider): Add ctor
	variants with no_headers field.
	* src/mimedataprovider.h: Update Accordingly.
	* src/parsecontroller.cpp (expect_no_headers): Expect
	no headers except for some messages.
	(decrypt_template): New to be used for status messages.

2016-09-27  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused variable
	* src/mimedataprovider.cpp (t2body): Remove smtype.

	tests: Add more S/MIME tests
	* tests/data/smime-encrypted.mbox,
	 tests/data/smime-encrypted.plain,
	 tests/data/smime-opaque-signed-encrypted-attachment.mbox,
	 tests/data/smime-opaque-signed-encrypted-attachment.plain: New.
	* tests/t-parser.cpp: Use new files.

	Handle smime encrypted signature
	* src/parsecontroller.cpp (is_opaque_signed): New. Check
	for opaque signed data with gpgme_data_identify.
	(ParseController::parse): Verify signed data.

2016-09-22  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add Opaque signed S/MIME mail

	Collect S/MIME Opaque as crypto data
	* src/mimedataprovider.cpp (t2body): Start collecting crypto
	data when encountering an smime attachment.

	tests: Add test mail with attachments

	tests: close plain data files and terminate strs
	* tests/t-parser.cpp (main): close files and ensure
	read strings end with 0.

	tests: Add new test for encrypted+signed

	tests: Add simple multiplart/signed test
	* tests/data/openpgp-signed-no-attach.mbox,
	 tests/data/openpgp-signed-no-attach.plain: New.
	* tests/t-parser.cpp: Test it.
	(main): Add charset test.

	Add .gitattributes to mark .mbox and .plain as bin
	* .gitattributes: New

	Add charset getters to parsecontroller
	* src/parsecontroller.cpp (ParseController::get_html_charset),
	(ParseController::get_body_charset): New.
	* src/parsecontroller.h: Update accordingly.

	tests: Improve run-parser output
	* tests/run-parser.cpp (main): Improve output.

	Do chained parsing for decrypted content with sigs
	* src/parsecontroller.cpp (ParseController::parse): Verify
	after a decrypt only if a signature was found.

	Save body charset in mimedataprovider
	* src/mimedataprovider.cpp (MimeDataProvider::get_html_charset),
	(MimeDataProvider::get_body_charset): New.
	(MimeDataProvider::collect_input_lines): Collect charset. Fix html
	collection.
	* src/mimedataprovider.h: Update accordingly.

	Fix collecting body when not collecting crypto
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Collect body correctly.

2016-09-15  Andre Heinecke  <aheinecke@intevation.de>

	Fix shared ptr leak in freed ctx
	* src/mimedataprovider.cpp (~MimeDataProvider): Set attachment
	to NULL to unref the shared pointer.

	Fix memory leaks in mimedataprovider
	* src/mimedataprovider.cpp (~MimeDataProvider): Fix memory leaks.

	Add simple test for multipart/encrypted
	* tests/data/openpgp-encrypted.mbox: New.
	* tests/data/openpgp-encrypted.plain: New.
	* tests/t-parser.cpp: Add test.

	Handle multipart/encrypted pgp mails
	* src/mimedataprovider.cpp (mime_context): Add field for is_encrypted.
	* src/parsecontroller.cpp (parse): Reset input stream.

	Add first real unit test for pgp/inline/encrypted
	* tests/Makefile.am: Update GNUPGHOME and data handling.
	* tests/data/inlinepgpencrypted.mbox: New.
	* tests/data/inlinepgpencrypted.plain: New.
	* tests/run-parser.cpp (main): Fix output of bodies.
	* tests/t-parser.cpp (main): Prepare generic tests.

	Use body to decrypt / verify inline msgs
	* src/parsecontroller.cpp (parse): Use body for inline msgs.

	Fix FILE read and enable write for mimedataprovider
	* src/mimedataprovider.cpp (isSupported): Add write.
	(collect_data(FILE*)): Fix fread call.
	(get_body, get_html_body): Fix truncated output when a mail
	body did not end with a newline.
	* src/mimedataprovider.h: Update accordingly.

	Add test gnupg_home from messagelib
	* tests/gnupg_home: New.

	tests: Add messagetypes as command line args
	* tests/run-parser.cpp (main): Add cmd line args for msgtype.

	Add parsertest for Linux
	* Makefile.am (SUBDIRS): Only include tests for linux.
	* configure.ac: Enable linux build. Check for stpcpy.
	* tests/Makefile.am: New.
	* tests/run-parser.cpp: New.
	* tests/t-parser.cpp: New.

	Fix linux build of mimedataprovider
	* src/mimedataprovider.cpp (collect_input_lines): Fix size_t format.
	(collect_data(FILE*)): Fix file read and size_t format.

	Handle context creation failures
	* src/parsecontroller.cpp (parse): Handle failure
	creating the Context.

	Expose verify / decrypt results in parser
	* src/parsecontroller.h (get_verify_result),
	(get_decrypt_result): New.

	Fix build of rfc2047parse for linux
	* src/rfc2047parse.c (tokenize_rfc2047_phrase): Use stdbools.
	(rfc2047_decode_tokens): Ifdef out charset conversion from mlang.

	Move more things into common_indep
	* src/common.h: Remove xmalloc include.
	* src/common_indep.c: Add logging functions.
	(do_log): Add support for logging to stderr and stdout.
	* src/common_indep.h (SIZE_T_FORMAT): Add linux support.
	(log_mutex): Declare as extern.
	* src/main.c: Remove logging functions now in common.

2016-09-14  Andre Heinecke  <aheinecke@intevation.de>

	Add FILE based functions for new parser
	* src/mimedataprovider.cpp,
	src/mimedataprovider.h,
	src/parsecontroller.cpp,
	src/parsecontroller.h: Add FILE based functions.

	Move generic typedefs into common_indep.h
	* src/common_indep.h (mapi_attach_item_t,
	attachtype_t, msgtype_t): Moved from mapihelp.
	* src/mapihelp.h: Update accordingly.

	Switch Attachment to memory based data
	* src/attachment.cpp, src/attachment.h: Use gpgme_data instead
	of mapi temporary file.

	Refactor util and common
	* src/Makefile.am: Update accordingly.
	* src/common.c: Reduced to platform depentent common code.
	* src/common.h: Add util stuff. Include platform indep.
	* src/gpgolstr.cpp,
	src/engine-assuan.c,
	src/gpgoladdin.cpp,
	src/mimedataprovider.cpp,
	src/mlang-charset.h,
	src/msgcache.h,
	src/parsecontroller.h,
	src/ribbon-callbacks.cpp,
	src/windowmessages.cpp: Update accordingly.
	* src/mapihelp.h: Include oomhelp to avoid indrection.
	* src/util.h: Removed.
	* src/common_indep.h, src/common_indep.cpp: New.

	Rename mailparser to parsecontroller
	* src/Makefile.am, src/mail.cpp, src/mail.h: Update accordingly.
	* src/mailparser.cpp, src/mailparser.h,
	src/parsecontroller.cpp, src/parsecontroller.h: Renamed.

	Start refactoring mimeparser into mimedataprovider
	* src/mail.cpp (Mail::parsing_done): Use new API.
	* src/mailparser.cpp: Move out body / attachment handling.
	* src/mailparser.h: Update accordingly.
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Fix return
	for multipart/signed.
	* src/mimedataprovider.cpp, src/mimedataprovider.h: Rework.

	Fix c++ linkage of rfc2047parse
	* src/rfc2047parse.h: Add Include Guard and c++ linkage.

2016-08-22  Andre Heinecke  <aheinecke@intevation.de>

	Add GPGME based async decryption
	* src/Makefile.am (gpgol_SOURCES): Add Mimedataprovider.
	* src/mail.cpp (Mail::m_moss_position): Store moss pos.
	(Mail::is_mail_valid): Helper to check for orphaned mail pointer.
	(Mail::pre_process_message): Store moss position.
	(get_cipherstream): Use stored moss position.
	(use_body): Removed. Always use MOSS.
	(do_parsing): Helper to run in different thread.
	(Mail::decrypt_verify): Insert placehoder, create parser,
	start parser thread.
	(Mail::parsing_done): Helper to insert plaintext in UI Thread.
	(Mail::revert_all_mails): Fix typo.
	(Mail::wipe_all_mails): Init err.
	(Mail::close_inspector): Helper to close current inspector
	with discard changes.
	* src/mail.h: Update accordingly.
	* src/mailparser.cpp (MailParser::MailParser): Use MimeDataProvider.
	(operation_for_type): Helper to figure out type of work and protocol.
	(MailParser::parse): Enable a fist version of decrypt.
	* src/mailparser.h: Update accordingly.
	* src/main.c (DllMain): Set w32-inst-dir for GpgME.
	* src/mimedataprovider.cpp: New. Copy stream into GpgME Data.
	* src/mimedataprovider.h: New.
	* src/util.h (log_mime_parser): New helper for logging.
	* src/windowmessages.cpp (gpgol_window_proc): Handle parsing
	done signal.
	* src/windowmessages.h (PARSING_DONE): New.
	* src/attachment.cpp: Implement DataProvider interface.
	* src/attachment.h: Update accordingly.

	Return MOSS attachment positon from mapihelp
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Return
	MOSS position.
	* src/mapihelp.h (mapi_mark_or_create_moss_attach): Update doc.

	Check for and depend on GpgMEpp
	* configure.ac: Check for GpgMEpp.
	* m4/gpgme.m4 (AM_PATH_GPGMEPP): New.
	* src/Makefile.am: Link GpgMEpp.
	(AM_CXXFLAGS): Add GpgMEpp flags.

	Bump required gpgme version to 1.7.0
	* configure.ac (NEED_GPGME_VERSION): 1.7.0

2016-08-16  Andre Heinecke  <aheinecke@intevation.de>

	Add first (dummy) version of C++ MailParser
	* src/mail.cpp (get_cipherstream): Use second
	attachment for now.
	(use_body): Small helper to detect if the body
	should be used.
	(Mail::decrypt_mime): Removed.
	(Mail::decrypt): Removed.
	(add_attachments): New helper to create OOM
	attachments from Attachment Objects.
	(Mail::decrypt_verify): Use MailParser.
	(Mail::get_subject): New helper.
	* src/mailparser.cpp, src/mailparser.h: New.

	Mark / create MOSS attachment in BeforeRead
	* src/mail.cpp (Mail::pre_process_message): Mark moss attach.

	Add Attachment helper class
	* src/attachment.cpp (Attachment): New helper class.
	* src/attachment.h (Attachment): Declare class.
	* src/mail.cpp (Mail::wipe): No longer encrypt attachments.

	Extend add_oom_attachment with display name
	* src/oomhelp.cpp (add_oom_attachment): Add display name-
	* src/oomhelp.h (add_oom_attachment): Update prototype.
	* src/ribbon-callbacks.cpp: Use new function.

	* src/mapihelp.cpp: New. * src/mapihelp.h: New. * src/message.cpp: New. Factor out code from message.cpp to mapihelp
	* src/mapihelp.cpp (mapi_body_to_attachment): New
	moved from message.cpp.
	(mapi_mark_or_create_moss_attach): New. Combination
	of moss handling from message_decrypt and message_verify.
	* src/mapihelp.h: Add protoype
	* src/message.cpp (pgp_body_to_attachment): Remove.

	Enable c++11
	* src/Makefile.am: Enable c++11.
	* src/olflange-dlgs.cpp: Fix compile error with c++11.

2016-08-15  Andre Heinecke  <aheinecke@intevation.de>

	Start mail handing restructuring
	* src/mail.cpp (Mail::process_message): Split out beforeRead
	parts into pre_process_message.
	(get_cipherstream): New helper to get OOM level attachment.
	(Mail::decrypt_mime): New. OOM based mime decryption.
	(Mail::decrypt): Dummy.
	(Mail::do_crypto): Rename to encrypt_sign.
	(Mail::decrypt_verify): New. Entry point for Read event.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp: Call new functions.

	Unify COM Release and add debugging
	* src/util.h (gpgol_release): New. Adds debugging for
	debug_oom_extra.
	* src/attached-file-events.cpp,
	src/attachment.cpp,
	src/attic.c,
	src/display.cpp,
	src/eventsink.h,
	src/explorers.cpp,
	src/ext-commands.cpp,
	src/inspectors.cpp,
	src/item-events.cpp,
	src/mailitem-events.cpp,
	src/mailitem.cpp,
	src/mapihelp.cpp,
	src/message-events.cpp,
	src/message.cpp,
	src/mlang-charset.cpp,
	src/olflange.cpp,
	src/oomhelp.cpp,
	src/oomhelp.h,
	src/revert.cpp,
	src/ribbon-callbacks.cpp: Use gpgol_release.

	WIP release debug
	* src/attachment.cpp: New.
	* src/gpgoladdin.cpp: New.
	* src/mail.cpp: New.
	* src/mailitem-events.cpp: New.
	* src/mapihelp.cpp: New.
	* src/oomhelp.cpp: New.
	* src/revert.cpp: New.
	* src/ribbon-callbacks.cpp: New.
	* src/util.h: New.

	Enable ASLR, DEP and Fortify Source
	* configure.ac (HARDENING): Add hardening flags.

	Fix missing field initializers and enable warning
	* configure.ac (CXXFLAGS, CFLAGS): Enable Wmissing-field-initalizers.
	* src/attachment.cpp (do_crypt_stream): Fix init.
	* src/main.c (write_options): Fix init.
	* src/windowmessages.cpp (do_in_ui_thread): Fix init.

	Fix sign only preselection
	* src/mailitem-events.cpp (MailItemEvents Open): Init draft_flags.

	Fix minor typo in eventsink debug
	* src/eventsink.h: tdor->dtor

2016-08-11  Andre Heinecke  <aheinecke@intevation.de>

	Fix loop logic error in new server name detection
	* src/engine-assuan.c (get_uiserver_name): Fix name loop.

2016-06-29  Andre Heinecke  <aheinecke@intevation.de>

	Ignore sent S/MIME Mails if S/MIME is disabled
	* src/mapihelp.cpp (mapi_change_message_class): Add check for
	S/MIME disabled.

2016-06-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix UI Server startup
	* src/common.c (get_gpg4win_dir): Fix stupid logic error in loop.
	Fix mem leak on error.
	* src/engine-assuan.c (get_uiserver_name): Prefer 2.3.x names to
	prefer the kleowrapped / gpgwrapped exectuables.

2016-03-30  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.4.0

	Print swdb info during make distcheck
	* Makefile.am (distcheck-hook): New.

2016-03-11  Andre Heinecke  <aheinecke@intevation.de>

	Add build instructions and update README
	* INSTALL: Replace with project specific information.
	* README: Note UIServer requirement.

2016-03-04  Andre Heinecke  <aheinecke@intevation.de>

	Unfuzz two strings in german translation
	* po/de.po: Unfuzz two strings.

	Automatic update of translations.
	* po: Auto update.

	Minor string fixes.
	* src/gpgoladdin.cpp (GetCustomUI_old, GetCustomUI_MIME): Fix
	 punctuation and a typo.

	Revert all mails on disable instead of wipe
	* src/gpgoladdin.cpp (GpgolAddin::OnDisconnection): Change
	 from wipe to revert. Unlocalize error.

	Add german translations
	* po/de.po: Translate new strings.

	Update Portugese translations
	* po/pt.po: Update and convert to utf-8

	Automatic update of translations.
	* po: Auto update.

	Change upcoming version down to 1.4.0
	* NEWS: Update accordingly.
	* configure.ac: Change version to 1.4.0

	Add option to switch from old to new UI
	* src/Makefile.am: Fix windres call to include config.h
	* src/addin-options.cpp (enable_disable_opts): Enable buttons
	 depending on mime_ui.
	 (options_window_proc): Add handling for mime_ui checkbox.
	* src/common.h (struct opts): Add mime_ui option.
	* src/dialogs.h (IDC_ENABLE_SMIME): Define.
	* src/dialogs.rc: Add checkbox for mime_ui.
	* src/gpgoladdin.cpp: Switch ui code depending on opt.mime_ui.
	* src/main.c (read_options, write_options): Handle mime_ui.
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Handle mime_ui.

2016-02-25  Andre Heinecke  <aheinecke@intevation.de>

	Search for uiserver more agressively
	This is supposed to work for both gpg4win 2.x and 3.x and the new
	install layout.

	* configure.ac (gpg4win-3-reg-keys): Remove option.
	* src/common.c (default_homedir): Fallback to Gpg4win 2 regkey.
	  (get_gpg4win_dir): New. Search at multiple places.
	  (get_data_dir): Use get_gpg4win_dir.
	* src/common.h (get_gpg4win_dir): Declare.
	  (GPG4WIN_REGKEY_2, GPG4WIN_REGKEY_3): New for old and ney keys.
	* src/engine-assuan.c (get_uiserver_name): Rewrite to look for more
	  names.
	* src/main.c (get_locale_dir): Use get_gpg4win_dir.

2016-01-07  Andre Heinecke  <aheinecke@intevation.de>

	Update NEWS with latest changes.
	* NEWS: Update.

2016-01-04  Andre Heinecke  <aheinecke@intevation.de>

	Fix crash when using Exchange Active Sync
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Do not crash when
	internetcharsetbody_tag is not available.

2015-12-18  Andre Heinecke  <aheinecke@intevation.de>

	Try to get exchange address from cache first.
	* src/mapihelp.cpp (resolve_ex_from_address): Try cache first.
	* src/mymapi.h (MAPI_CACHE_ONLY): Define.

	Add a way to resolve Exchange Address in MAPI
	* src/mapihelp.cpp (resolve_ex_from_address): New.
	 (mapi_get_from_address): Use it.

	Add helper to get MAPISession through OOM
	* src/oomhelp.cpp (get_oom_mapi_session): New.
	* src/oomhelp.h (get_oom_mapi_session): Declare.

	Make GpgolAddin class a singleton
	* src/gpgoladdin.cpp (GpgolAddin::get_instance): New.
	* src/gpgoladdin.h (GpgolAddin::get_instance): Declare.
	 (GpgolAddin::get_application): Expose application reference.

	Add more fallbacks for sender resolution
	* src/mail.cpp (Mail::update_sender): Add another Fallback
	 for Sender address resolution.

	Add disabled support for inline editors
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Map Ids.
	 (GpgolRibbonExtender::Invoke): Dispatch to correct functions.
	 (GpgolRibbonExtender::GetCustomUI): Add UI for this.
	* src/ribbon-callbacks.cpp (mark_mime_action, get_crypt_pressed):
	 Prepare to be called from explorer context.
	 (get_crypt_pressed): Return False on error.
	 (mime_sign, mime_encrypt): Removed.
	* src/ribbon-callbacks.h: Add Ids and update prototypes.

2015-12-16  Andre Heinecke  <aheinecke@intevation.de>

	Fix encrypt only when protocol is provided
	* src/engine-assuan.c (op_assuan_encrypt): Add codepath for
	 protocol provided and sign not set.

2015-12-11  Andre Heinecke  <aheinecke@intevation.de>

	Bump version to get 2.0 betas
	* NEWS: Add News so far.
	* configure.ac: Bump version.

2015-12-10  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused variable
	* src/addin-options.cpp (options_dialog_box): Remove unused variable.

	Fix x64 build by cleaning up debug statements.
	* src/addin-options.cpp: Remove some debug output

	Disable S/MIME support by default
	* src/main.c (read_options): Default to false for S/MIME support.

	Set protocol to OpenPGP if S/MIME is disabled
	* src/mail.cpp (do_crypto): Set protocol according to opts.

	Fix logic error in save avoidance
	* src/mailitem-events.cpp (Write): Only check for needs_save again.
	 (Read): Set needs save if a smime message should be reverted.

	Make default encrypt and default sign work
	* src/mailitem-events.cpp (Open): Set draft_info_flags according
	 to settings.

	Add Options control to ribbon and prep. Sigstat
	* src/gpgoladdin.cpp (getCustomUI): Add dialogBoxLauncher for opts.
	  (getCustomUI): Prepare for status in reader window.
	  (GpgolRibbonExtender::Invoke): Call the functions.
	  (GpgolRibbonExtender::GetIDsOfNames): New names.
	* src/mail.cpp (Mail::insert_plaintext): Invalidate ribbon.
	* src/ribbon-callbacks.cpp (get_crypt_status): New.
	* src/ribbon-callbacks.h: Add prototypes

	Remove unused definition of registry key
	* src/config-dialog.c (GNUPG_REGKEY): Removed.

	Add new options dialog for gpgol > 2010
	* src/Makefile.am: Add new files.
	* src/addin-options.cpp: New.
	* src/addin-options.h: New.
	* src/dialogs.h: Add ID's
	* src/dialogs.rc: Add Dialog layout.

	Reduce syncs by canceling writes
	* src/mail.cpp (is_smime, needs_save): New.
	* src/mail.h: Declare and add new properties.
	* src/mailitem-events.cpp (MailitemEvents::Invoke): Cancel most
	  writes.
	* src/revert.cpp (mailitem_revert): Use is_smime.

2015-12-09  Andre Heinecke  <aheinecke@intevation.de>

	Make sure config.h is included before gpg-error.h
	* src/application-events.cpp, src/exechelp.c, src/rfc2047parse.c:
	 Include config.h first.

	Add option to use Gpg4win-3 registry keys
	* configure.ac: Add --enable-gpg4win-3-reg-keys
	* src/common.h: Include config.h

2015-12-04  Andre Heinecke  <aheinecke@intevation.de>

	Use callbacks for toggle btn state and refresh ui
	* src/application-events.cpp (ApplicationEvents::Invoke): Invalidate
	  UI when a new Item is loaded.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::Invoke): Store RibbonUI
	  instances. Forward calls for new ID's.
	  (GpgolRibbonExtender::GetCustomUI): Add callbacks.
	  (GpgolRibbonExtender::GetIDsOfNames): Add CB ID's-
	  (gpgoladdin_invalidate_ui): Invalidate UI. Invalidate causes
	  all callback to be triggered again in their correct contexts.
	* src/gpgoladdin.h: Add prototype for gpgoladdin_invalidate_ui.
	* src/ribbon-callbacks.cpp (mark_mime_action): Work on base message.
	  (get_crypt_pressed): Callback for toggle buttons.
	* src/ribbon-callbacks.h: Add ids and prototypes

	Move blocking multitry save code into mapihelp
	* src/revert.cpp (finalize_mapi): Remove wait code.
	* src/mapihelp.cpp (mapi_do_save_changes): Try multiple times.

	Revert "Add Tracepoints for issue 1837"
	This reverts commit 7016fec9aef7be53f164829f7c76e28c6a83e228.

	* src/gpgoladdin.cpp (getCustomUI): Fix conflicts.

2015-12-03  Andre Heinecke  <aheinecke@intevation.de>

	Add Revert support for S/MIME mails.
	* src/revert.cpp (gpgol_mailitem_revert): Handle S/MIME mails.
	* src/mapihelp.h: Add missing prototype for get_gpgolmsgclass_tag.

	Try harder to save reverted mails
	* src/revert.cpp (finalize_mapi): Try several secons to store.

	Add revert support for mulitpart signed PGP MIME
	* src/mimemaker.c (restore_msg_from_moss): Don't set gpgol
	  msg_class.
	* src/revert.cpp (gpgol_mailitem_revert): Add support for
	  MULTIPART_SIGNED.

	Try yet another way to find sender address
	* src/mail.cpp (Mail::update_sender): Use SendUsingAccount.

	Try harder to match outlooks internal filename enc
	* src/common.c (qp_encode): New. Simple quoted printable encoder.
	  (b64_encode): Fix termination of return value.
	* src/common.h: Add prototype
	* src/mimemaker.c (utf8_to_rfc2047b): Use infer content encoding
	  to switch between base64 and quoted printable.

2015-12-02  Andre Heinecke  <aheinecke@intevation.de>

	Add revert support for PGP MulitpartEncrypted
	* src/mimemaker.c (restore_msg_from_moss): Create a mosstmpl
	  attachment. Currently only works for PGP MultipartEncrypted.
	* src/mimemaker.h: Add prototype.
	* src/oomhelp.h: Add DASL for attachment MIME tag.
	* src/revert.cpp (finalize_mapi): Dont restore message class.
	  (gpgol_mailitem_revert): Collect info first. Then work. Handle
	  MOSS attachments. Do Magic.

	Move some debug output into debug_oom
	* src/oomhelp.cpp (get_oom_object): Be quieter by default.

	Fix view of sent mails with S/MIME disabled
	* src/mapihelp.cpp (mapi_change_message_class): Respect overrides
	  even with S/MIME disabled.

2015-12-01  Andre Heinecke  <aheinecke@intevation.de>

	Disable MIME style support for clearsigned mails
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Disable clearsigned
	  detection for Outlook 2010 and later

	Activate MIME style handling for PGPMessages >OL14
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Remove check
	  for outlook version.

	Add revert to mail class and use it instead wipe
	* src/mail.cpp (Mail::revert_all_mails, Mail::revert): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (MailitemEvents::Invoke): Revert instead
	  of wipe.

	Add mail revert implementation that works on OOM
	* src/revert.cpp (gpgol_mailitem_revert): Revert mail in OOM.
	* src/revert.h: Add prototype.

	Add OOM PropertyAccessor helper methods
	* src/oomhelp.cpp (set_pa_variant): New. Set a property.
	  (get_pa_int): New. Get an int property.
	  (get_pa_variant): New. Get a generic property as variant.
	  (get_pa_string): Refactored to use get_pa_variant.
	* src/oomhelp.h: Add prototpyes and DASL defs.

2015-11-27  Andre Heinecke  <aheinecke@intevation.de>

	Fix reg key lookup for x64 and prep for new key
	* src/common.h (GNUPG_REGKEY): Use 32 bit key on 64 bit. Prepare
	  for gpg4win 3. Key layout

	Start UIServer on demand
	* src/engine-assuan.c (op_assuan_init): Don't test connection.

	Rework connect_uiserver call based on gpgex
	* src/engine-assuan.c (connect_uiserver): Use proper locking. Improve
	 retry handling.

	Add process spawning code from gpgex
	* src/common.c, src/common.h (gpgol_spawn_detached): New.
	* src/exechelp.h, src/exechelp.c: New.
	* src/Makefile.am: Add exechelp files.

	Generate libmapi32 for 64 bit systems corecctly
	* configure.ac: Add conditional for 64 bit build
	* src/Makefile.am: Add 64 bit flags for dlltool if necessary.
	* src/mapi32.def: Add C calling convention names where necessary.

	Fix size_t / unsigned int conversion for x64
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Fix call to
	 ConvertStringToUnicode to use unsigned int for size.

2015-11-24  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.3.0

	po: Auto-update

	Fix make distcheck.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Improve.

2015-11-23  Andre Heinecke  <aheinecke@intevation.de>

	News for 1.3.0 release
	* NEWS: Add some news.

	Be more tolerant when parsing RFC2047
	* src/rfc2047parse.c (G_MIME_RFC2047_WORKAROUNDS): Enable.

2015-11-22  Andre Heinecke  <aheinecke@intevation.de>

	Add gmime-table-private header
	* src/gmime-table-private.h: New, from GMime
	* src/Makefile.am: Update accordingly.

	Use mlang charset conversion in RFC2047 parser
	* src/rfc2047parse.c (rfc2047_decode_tokens): Use malang-charset
	  conversion.
	  (_rfc2047_token, rfc2047_token_new_encoded_word): Unconstify charset.
	  (rfc2047_token_free): New. Also free charset.
	  (rfc2047_tokens_free): Use token_free.
	  (g_mime_utils_header_decode_phrase): Cleanup redundant code.
	  (rfc2047_parse): Ditto.

	Fallback to content-type name if no cd/filename
	* src/mimeparser.c (t2body): Fallback to ct/name if cd/filename
	  not found or not parsed.

	Parse RFC2047 attachment names
	* src/mimeparser.c (start_attachment): Expect filename as utf8 and
	  set it as Unicode property in MAPI.
	  (t2body): Parse the attachment filename.

	Use RFC2047 for attachment names
	* src/mimemaker.c (utf8_to_rfc2047b): New. Convert utf8 to rfc2047
	  base64 encoding.

	Add base64 encoder
	* src/common.c, src/common.h (b64_encode): New.

	Add MIME language to UTF8 conversion code
	* src/mlang-charset.cpp, src/mlang-charset.h: New.
	* src/Makefile.am: Update accordingly.

	Add rfc2047 parser based on GMime
	* src/rfc2047parse.c, src/rfc2047parse.h: New.
	* src/Makefile.am: Update accordingly.

2015-11-19  Andre Heinecke  <aheinecke@intevation.de>

	Fix DllCanUnloadNow behavior
	* src/gpgoladdin.cpp (DllCanUnloadNow): Only return OK if the addin
	is not connected.

2015-11-13  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused include
	* src/attachment.cpp: Remove unused include.

	Use gpgrt_asprintf
	* src/attachment.cpp (do_crypt), src/gpgoladdin.cpp (GetCustomUI):
	  Use gpgrt_asprintf.

	Remove unsed vasprintf implementation
	* src/missing/vasprintf.c: Removed.

	Revert "Use libmapi32 from mingw"
	This reverts commit 6533170a34d9e6f7191e41b31045ad0b4b4af1df.

	Disable msgclass changing code for in Body Crypto
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Disable for
	  Outlook >= 2010.

	Check PGP Body tags for additional msgtypes
	* src/mapihelp.cpp (change_message_class_ipm_note),
	  (change_message_class_ipm_note_secure_cex): Also check
	  multipart/alternative and multipart/mixed.

2015-11-12  Andre Heinecke  <aheinecke@intevation.de>

	Add workaround for opaque signed encrypted data
	* src/ribbon-callbacks.cpp (do_reader_action): Only use the
	mime handling when there is no "BEGIN PGP MESSAGE" in body.

	Actually add French translation from afb7e445c

	Regenerate po files
	* de.po, pt.po, sv.po, zh_CN.po, zh_TW.po: Automatic update.

	Add traditional / simplified chinese localization
	* zh_CN.po, zh_TW.po: New.
	* po/LINGUAS: Update accordingly.

	Add French translation
	* LINGUAS: Add fr
	* po/fr.po: New.

	Remove deleted files from POTFILES.in
	* po/POTFILES.in: Remove deleted files

	Do not release eventsink when disabled
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Do not release
	m_appliactionEventSink when disabled. Use NULL guarded release.

	Fix double free when addin is disabled
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Do not release
	 RibbonExtender.

2015-11-04  Andre Heinecke  <aheinecke@intevation.de>

	Add mkinstalldirs script
	* build-aux/mkinstalldirs: New. Copied from gpgme.

	Use libmapi32 from mingw
	* Makefile.am: Remove our own libmapi32 creation
	* mapi32.def: Removed.

	Fix int to pointer cast when creating worker
	* src/engine-assuan.c (async_worker_thread): Expect parameter to be
	 a pointer instead of a value.
	 (op_assuan_init): Pass a reference instead.

	Handle handle to int casts
	 * src/engine-assuan.c (handle_to_int): New.
	  (send_options, op_assuan_init, op_assuan_encrypt),
	  (op_assuan_sign, op_assuan_decrypt, op_assuan_verify): Use it.

	Add format string macro for size_t
	* src/util.h (SIZE_T_FORMAT): Use a macro for a portable way of
	  printing size_t.
	* src/engine.c (engine_filter, engine_wait): Use it in debug output.

	Define out code that does not compile for x64
	* src/config-dialog.c (config_dialog_box): Define out for x64
	* src/olflange-dlgs.c (GPGOptionsDlgProc): Define out call to
	  SetWindowLong

	Fix pointer to int cast in debug output
	* src/oomhelp.cpp (dump_excepinfo): Fix deferredFill output format.

	Remove dead code
	* Makefile.am: Update gpgol_Sources accordingly.
	* main.c (init_options, read_options): Remove password_ttl setting.
	  (DllMain): No longer initialize passcache.
	* passcache.c, passcache.h, passphrase-dialog.c, recipient-dialog.c,
	  verify-dialog.c: Removed. This is handled by the uiserver now.

	Fix recipient lookup
	* src/message.cpp (get_recipients): Actually fallback to the
	  email property in case the smtp address property is not set.

2015-11-02  Andre Heinecke  <aheinecke@intevation.de>

	Wipe all decrypted mails on disconnect.
	* src/mail.cpp (wipe_all_mails): New.
	* src/gpgoladdin.cpp (~GpgOLAddin): Add more debug output.
	  (OnDisconnection): Call wipe all mails.

	Save mailitem on close
	* src/mail.h (Mail::is_crypto_mail): New.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Call Save on
	  Close.

	Add more debug output for msg wipes.
	* src/mail.cpp (Mail::insert_plaintext): Check if msg already
	  needs wipe and log it. Log plaintext with msg ptr.
	  (Mail::wipe): Log wipe error.

	Fix handling sent and exchange to exchange mails.
	* src/mail.cpp (Mail::process_message): Always change message class.

2015-10-30  Andre Heinecke  <aheinecke@intevation.de>

	Fix from address lookup for exchange
	* src/mapihelp.cpp (mapi_get_from_address): Try additional SMTP
	  tags before falling back to EMAIL tag.
	* src/mymapitags.h (PidTagSenderSmtpAddress_W),
	 (PR_SENT_REPRESENTING_SMTP_ADDRESS_W): Define property ids.

	Fix regression introduced by 383cb091
	* src/message.cpp (message_decrypt): Fix parenthesis.

	Release detached event sink.
	* src/mail.cpp (Mail::~Mail): Release detached mail event sink.

	Enable sender handling for Exchange Accounts
	* src/mail.cpp (Mail::update_sender): New. Updates sender address
	  from OOM.
	  (Mail::get_sender): New. Access the sender.
	  (Mail::do_crypt): Pass sender to crypto functions.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update sender on send
	  event.
	* src/message.cpp, src/message.h, src/mimemaker.c, src/mimemaker.h:
	  Add optional sender parameter to crypto functions and use it.

	Factor logic out of event handler
	* src/Makefile.am: Add mail.h and mail.cpp
	* src/mail.cpp, src/mail.h: New. Class containing information and
	  functionality to work with mails.
	* src/application-events.cpp (EVENT_SINK_INVOKE): Create mail objects
	  on ItemLoad event for Mailitems.
	* src/mailitem-events.cpp (HTML_TEMPLATE): Move to mail.cpp
	  (BEGIN_EVENT_SINK): Reduce member variables.
	  (MailItemEvents::MailItemEvents): Less initializations.
	  (MailItemEvents::handle_read): Moved to Mail::insert_plaintext.
	  (MailItemEvents::handle_before_read): Moved to Mail::process_message
	  (do_crypto_on_item): Moved to Mail::do_crypto
	  (needs_crypto): Moved to Mail::needs_crypto
	  (EVENT_SINK_INVOKE): Get reference to according mail object.
	  (EVENT_SINK_INVOKE): Call Mail methods according to events.
	  (EVENT_SINK_INVOKE): Wipe code moved to Mail::wipe

	Fix recipient lookup for SMTP addresses
	* src/message.cpp (get_recipients): Look for SMTP address property
	and also the EMAIL address property.

2015-10-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix recipient address lookup for Exchange addrs
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Store major version.
	* src/main.c: Define major version variable.
	* src/message.cpp (get_recipients): Use SMTP addr property for new
	  versions.
	* src/mymapitags.h: Define SMTP_ADDRESS property ids.
	* src/olflange.cpp (GpgolExt:Install): Store major version.
	* src/oomhelp.h: Rename PR_SMTP_ADDRESS URI to PR_STMP_ADDRESS_DASL.
	* src/oomhelp.cpp (get_oom_recipients): Update accordingly.
	* src/ribbon-callbacks.cpp (do_composer_action, do_reader_action),
	  (attachEncryptedFile): Update accordingly.
	* src/util.h: Declare major version variable.

2015-10-23  Werner Koch  <wk@gnupg.org>

	Move config files to build-aux and upodate autogen.sh.
	* autogen.rc: New.
	* Makefile.am (EXTRA_DIST): Add autogen.rc.
	* configure.ac: Update for new autogen.sh and moved config files.
	* build-aux/compile: New.
	* build-aux/depcomp: New.
	* build-aux/mdate-sh: New.
	* build-aux/texinfo.tex: New.

2015-10-22  Andre Heinecke  <aheinecke@intevation.de>

	Use utf8 gettext in inspectors
	* src/inspectors.cpp: Use utf8 gettext.

2015-10-21  Andre Heinecke  <aheinecke@intevation.de>

	Make old decrypt / verify buttons work with mime
	* src/ribbon-callbacks.cpp (verify_mime): New. Force message handling
	 again.
	 (do_reader_action): Call verify_mime on action and print info
	 on decrypt.

	Fix crash on attachment decryption
	* src/attachment.cpp (do_crypt): Check return value of mapiobject.

2015-10-20  Andre Heinecke  <aheinecke@intevation.de>

	More logging and error checking in App Events
	* src/application-events.cpp (ApplicationEvents::Invoke): Check
	 that parms is not NULL. Add more debug output.

	Log UTC time instead of tick count.
	* src/main.c (do_log): Log the current UTC time to allow
	 corellating debug output to Windows event logs.

2015-10-16  Andre Heinecke  <aheinecke@intevation.de>

	Add Tracepoints for issue 1837
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI),
	 src/ribbon-callbacks.cpp (getIcon): Add Tracepoints.

2015-10-15  Andre Heinecke  <aheinecke@intevation.de>

	Add information to body of encrypted messages
	* src/mailitem-events.cpp (HTML_TEMPLATE): A message to be shown in
	  the body of encrypted messages. Will become a template for l10n
	  later.
	* src/mailitem-events.cpp (Invoke): Use the message to wipe the body.
	  (handle_read): Use the message in case of failed decryption.

	Improve TRACEPOINT macro.
	* src/util.h (TRACEPOINT): Remove the while loop.

	Use UTF8 in addin localization.
	* src/w32-gettext.c, src/w32-gettext.h (utf8_gettext): New.
	  gettext that returns UTF8.
	* src/w32-gettext.c (internal_gettext): Helper that can return
	  either UTF8 or native encoding.
	* src/gpgoladdin.cpp: Use UTF8 gettext variants.

	Only define TRACEPOINT macro once.
	* src/util.h (TRACEPOINT): Define here.
	* src/attached-file-events.cpp,
	  src/engine-assuan.c,
	  src/engine.c,
	  src/ext-commands.cpp,
	  src/item-events.cpp,
	  src/mapihelp.cpp,
	  src/message-events.cpp,
	  src/message.cpp,
	  src/mimemaker.c,
	  src/mimeparser.c,
	  src/olflange.cpp,
	  src/passphrase-dialog.c,
	  src/property-sheets.cpp,
	  src/recipient-dialog.c,
	  src/revert.cpp,
	  src/session-events.cpp,
	  src/user-events.cpp: Remove unused macro.
	* src/gpgoladdin.cpp: Switch to new macro without useless braces.

	Check for result pointer in getIcon
	* src/ribbon-callbacks.cpp (getIcon): Check if result is NULL.

	Fix crash on unload.
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release ribbonextender
	  instead of deleting it.

	Install forms for addin
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Call
	  install_forms.

2015-10-14  Andre Heinecke  <aheinecke@intevation.de>

	Increase version to 1.3.0
	* configure.ac (mym4_version): Change to 1.3.0

	Make mime-send UI support optional.
	* configure.ac (enable-mime-send): New option to enable mime sending.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI): Add
	 old UI again.

	Use toggle Buttons for MIME sign and encrypt
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI): Use
	 toggle buttons.
	 (GpgolRibbonExtender::Invoke): Toggle button param 0 is the state.
	 1 the dispatch interface.
	* src/ribbon-callbacks.cpp (message_flag_status): Removed.
	  (mark_mime_action): Don't use flag status.

	Remove engine-gpgme.c from potfiles
	* POTFILES.in: Remove engine-gpgme.c

	Really fix msg merge failures.
	* src/Makefile.am: Do not link dialog.o into gpgol.dll. It's
	 already included in resource.o.
	* src/dialogs.h: Remove comment about not using the lower 4 bit.
	* src/oomhelp.cpp (put_oom_icon): Update accordingly. (To use +1 again)

	Remove unused g10 code logo.
	* logo.bmp: Removed.
	* Makefile.am (EXTRA_DIST), dialogs.h, dialogs.rc: Update accordingly.

	Fix unused bitmap removal
	* src/dialogs.rc: Do not reference the removed files.
	* src/Makefile.am (EXTRA_DIST): Do not include the removed files.

	Fix resource id's and remove unused resources.
	* dialogs.h: Only use the upper 28 bit for id's. Remove 32/64px ids.
	* oomhelp.cpp (put_oom_icon): Clarify comment and use new ids for mask.
	* explorers.cpp (add_explorer_controls),
	 inspectors.cpp (add_inspector_controls, update_crypto_info):
	  Use _16 id directly.
	* decrypt-32.bmp,
	 decrypt-32m.bmp,
	 decrypt-verify-32.bmp,
	 decrypt-verify-32m.bmp,
	 encrypt-32.bmp,
	 encrypt-32m.bmp,
	 key-manager-32.bmp,
	 key-manager-32m.bmp,
	 key-manager-64.bmp,
	 key-manager-64m.bmp,
	 sign-32.bmp,
	 sign-32m.bmp,
	 verify-32.bmp,
	 verify-32m.bmp: Removed

2015-10-13  Andre Heinecke  <aheinecke@intevation.de>

	Enable -Werror in maintainer-mode
	* configure.ac: Enable Werror in maintainer-mode.

	Cast gpgme callback functions to fix warning.
	* src/engine.c (engine_create_filter): Cast callback functions.

	Remove engine-gpgme
	* src/engine-gpgme.c, src/engine-gpgme.h: Remove historic code.
	* src/engine.c: Assume use_assuan and remove engine-gpgme calls.
	* src/Makefile.am: Update accordingly.

	Fix various warnings
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Add braces.
	* src/message.cpp (message_decrypt): Add braces.
	* src/oomhelp.cpp (dump_excepinfo): Remove additional format params.

	Release application event sink instead of deleting
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release instead
	  of delete.

	Fix unused variable warnings
	* src/eventsink.h (USE_INVOKE_ARGS): Also add dispid.
	* src/gpgoladdin.cpp (GpgolAddinFactory::CreateInstance): Unused punk.
	 (GpgolAddin::Invoke, GpgolRibbonExtender::Invoke): Use invoke args.
	* src/mailitem.cpp (GpgolItemEvents::Write): Remove want_html var.
	* src/ribbon-callbacks.cpp (message_flag_status): Remove window param.
	  (mark_mime_action): Update call accordingly.

	Don't check for stpcpy.
	* configure.ac: Don't check for stpcpy.
	* src/rfc822parse.c (my_stpcpy): Define our own stpcpy
	  unconditionally.

	Fix write-string warnings.
	* src/gpgolstr.cpp, src/gpgolstr.h: New. Small string wrapper.
	* src/Makefile.am: Add to sources.
	* src/display.cpp (open_inspector),
	 src/mapihelp.cpp (create_gpgol_tag, get_internetcharsetbody_tag),
	 src/ribbon-callbacks.cpp (do_composer_action, do_reader_action),
	 src/message.cpp (pgp_body_to_attachment): Use it.

	Fix compiler warnings in engine-assuan
	* src/engine-assuan.c: Don't redefine WINVER. Include windows.h
	  after assuan.h (because of winsock)
	  (async_worker_thread): Return 0 on success.
	  (start_command): Cast status callback to correct type.

	Log error in mimemaker write_attachments.
	* src/mimemaker.c (write_attachments): Log error.

	Fix body handling of sent mails.
	* src/mailitem-events.cpp (handle_read): Work on the base message.

2015-10-02  Andre Heinecke  <aheinecke@intevation.de>

	Remove mailitem event handler on unload
	* src/mailitem-events.cpp (invoke): Handle unload.

	Hopefully fix Ol 2016 crash on send
	* src/mailitem-events.cpp (request_send): Remove delay.

	Fix return value of invoke_oom_method
	* src/oomhelp.cpp (invoke_oom_method): Return false on success.

	Fix return value of mark_mime_action
	* src/ribbon-callbacks.cpp (mark_mime_action): Return S_OK when ok.

2015-10-01  Andre Heinecke  <aheinecke@intevation.de>

	Change ribbon UI for mime functionality.
	* gpgoladdin.cpp (GetIDsOfNames): Add ID's for mime actions.
	  (Invoke): Handle new actions.
	  (GetCustomUI): Remove most of the Ribbon UI only leave
	  encrypt / sign / start certificate manager buttons.
	* src/mailitem-events.cpp (sign_encrypt_item): Renamed to
	  do_crypto_on_item.
	  (do_crypto_on_item): Do crypto according to draft flags.
	  (needs_crypto): New. Check if the mailitem needs crypto at all.
	  (Invoke): Pass send when no crypto action is selected.
	* src/mapihelp.cpp (get_gpgol_draft_info_flags),
	  (set_gpgol_draft_info_flags): New helpers to work with draft info.
	* src/mapihelp.h: Declare above functions.
	* src/ribbon-callbacks.cpp (message_flag_status): Show a messagebox
	  to inform about crypto actions.
	  (mark_mime_action): New. Set the draft_info_flags.
	  (mime_sign, mime_encrypt): New. Callback functions for outlook.

2015-09-30  Andre Heinecke  <aheinecke@intevation.de>

	Update attachment size after modification
	* src/attachment.cpp (do_crypt_stream): Set stream size after modify.

2015-09-28  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'master' into mime-addin

2015-09-25  Andre Heinecke  <aheinecke@intevation.de>

	Enable addin for Outlook 2016
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Whitelist v. 16

2015-09-24  Andre Heinecke  <aheinecke@intevation.de>

	Do not send an item with encryption errors
	* mailitem-events.cpp (MailItemEvents::Invoke): Handle crypto errors.
	  (request_send): New. Sleep for 50ms and then request a send.
	  (sign_encrypt_item): Renamed from handle_after_write. Remove
	  not working context window lookup. Return errors.
	  (handle_before_read): Remove context window lookup.

	Add window message helper code.
	* Makefile.am: Add sources.
	* gpgoladdin.cpp (OnStartupComplete): Initialize responder.
	* windowmessages.cpp, windowmessages.h: New.

	Show exceptions in invoke_oom_method.
	* src/oomhelp.cpp (dump_excepinfo): Clean up dump style.
	  (invoke_oom_method): Add exception handling for better debugging.

2015-09-21  Andre Heinecke  <aheinecke@intevation.de>

	Add short text to processed messages.
	* src/mailitem-events.cpp (MailItemEvents::Invoke): Add info text
	instead of setting the message body to an empty string.

	Add proper Attachment handling for MIME messages.
	Attachments are now session decrypted in the read event and
	session encrypted again in the write event.

	* src/attachment.cpp, src/attachment.h: Functions for attachment
	Session encryption / decryption.
	* src/Makefile.am: Add new files.
	* src/mailitem-events.cpp (~MailItemEvents): Resolve Macro
	to avoid confusing bracing.
	(MailItemEvents::handle_read): Remove session encryption from
	attachments.
	(MailItemEvents::invoke): Track "wipe" status. Session encrypt
	attachments in write event.
	* src/mapihelp.cpp (get_gpgolattachtype): Unstatic.
	* src/mapihelp.h (get_gpgolattachtype): Expose.
	(attachtype_t): Define attachment type for temporary unprotected
	Attachments.

	Add helper method to invoke a function.
	* src/oomhelp.cpp, src/oomhelp.h (invoke_oom_method): Invoke
	a generic method without arguments with an optional return value.

	Show exception info in case put_oom_string fails.
	* src/oomhelp.cpp (put_oom_string): Show exception info.

	Log mailitem event handler installation
	* src/application-events.cpp (ApplicationEvents::Invoke): Log
	 for which message a sink is installed.

2015-09-17  Andre Heinecke  <aheinecke@intevation.de>

	Wipe the body of encrypted messages on write.
	* src/mailitem-events.cpp (Invoke): Wipe the body of messages
	 that were encrypted.

	Show body of MIME messages
	* src/mailitem-events.cpp (MailItemEvents::handle_after_write),
	  (MailItemEvents::handle_before_read): New. Moved out of Invoke.
	  (MailItemEvents::handle_read): New. Set the body to the decrypted /
	  verified content.

	Split get_oom_base message in two functions
	* src/oomhelp.cpp (get_oom_base_message_from_mapi): New.
	  (get_oom_message): Obtain the Mapi message from a Mail item.
	  (get_oom_base_message): Use both functions to do the same as
	  before.
	* src/oomhelp.h: Update accordingly.

2015-09-16  Andre Heinecke  <aheinecke@intevation.de>

	Split event handling code in different files.
	One file per class is better.

	* src/application-events.cpp: New. For the Application.
	* src/mailitem-events.cpp: New. For MailItems.
	* src/Makefile.am: Update accordingly.

	Add support for MIME encryption / signing
	This currently tries to encrypt / sign all mails sent.

	* src/eventsinks.cpp (MailItemEvents::Invoke): Sign/Encrypt
	  mails in AfterWrite event.

	Simplify ReadEvent handling
	* src/eventsinks.cpp (MailItemEvents::Invoke): Use
	  get_oom_base_message instead of doing this here.

	Add get_oom_base_message helper function.
	* src/oomhelp.cpp (get_oom_base_message): New. Extract base message
	  from MessageItem Object.
	* src/oomhelp.h (get_oom_base_message): Declare.

	Add MailItem Event dispids
	* src/eventsinks.cpp (MailItemEvents::MailItemEvent): Add dispids
	 for other events.

	Check parameter type in ItemLoad event.
	* src/eventsinks.cpp (ApplicationEvents::Invoke): Check parameter
	  type before using it.

	Add framework for mime decrypt / verify
	Add event handling for Application and MailItem
	events and use the message incoming handler in
	the before read event.

	* src/comhelp.h: Removed again. Macros moved to mymapi.h where
	  they are better placed.
	* src/eventsink.h: (EVENT_SINK_DEFAULT_DTOR_CODE): Release /
	  unadvise properly.
	  (USE_INVOKE_ARGS): New. Used to avoid unused parameter
	  warnings.
	  (debug_oom, debug_oom_extra): Moved to util.h.
	* src/eventsinks.h: New. Header to declare event sink install /
	  detach functions.
	* src/eventsinks.cpp: New. Event sinks for MailItem and Application.
	* src/oomhelp.h: Define GUID's necessary for the Event handlers.
	  (get_object_by_id): New. oomhelp API style wrapper around
	  QueryInterface.
	* src/oomhelp.cpp (get_object_by_id): New.
	* src/util.h (log_oom, log_oom_extra): New. Logging helper.
	* src/mymapi.h: Add Macros from comhelp.
	  (IMAPISecureMessage): Declare COM interface.
	* src/message.h: Add headers that were indirectly included
	  in other usages.
	* src/gpgoladdin.h (GpgolAddin): Add Application Event sink member.
	* src/gpgoladdin.cpp (OnStartupComplete): Install Application Event
	  sink.

2015-09-10  Andre Heinecke  <aheinecke@intevation.de>

	Purify COM interface declarations.
	* src/inspectors.h (IOOMInspectorEvents),
	  src/mailitem.h (IOOMItemEvents): Declare interface methods
	  as pure virtual.

	Correctly declare gpgoladding COM interfaces
	* src/gpgoladdin.h (IDTExtensibility2, IRibbonExtensibility)
	 (IRibbonCallback): Add IUnknown and IDispatch methods. Purify.

	Declare destructors of COM objects as virtual
	* src/attached-file-events.h (GpgolAttachedFileEvents),
	  src/eventsink.h (BEGIN_EVENT_SINK)
	  src/gpgoladdin.h (GpgolRibbonExtender GpgolAddin GpgolAddinFactory),
	  src/item-events.h (GpgolItemEvents),
	  src/message-events.h (GpgolMessageEvents),
	  src/property-sheets.h (GpgolPropertySheets),
	  src/session-events.h (GpgolSessionEvents),
	  src/user-events.h (GpgolUserEvents): Make dtors virtual.

	Add comhelp header for common COM definitions
	* src/comhelp.h: New. Add IUnknown and IDispatch defs.
	* src/mymapi.h: Use definitions from comhelp.

	Do not use ambigouis %S format character
	* src/gpgoladdin.cpp (getCustomUI): Do not use %S.

	Fix doc build with texinfo 5.2
	* gpl.texi: Update with version from gpgme 1.6.0
	* gpgol.texi: Fix itemx syntax errors.

2015-04-10  Werner Koch  <wk@gnupg.org>

	Fix last commit (35e6859)
	* src/rfc822parse.c (parse_field): Replace break by goto.

2015-04-09  Werner Koch  <wk@gnupg.org>

	Fix case of zero length continuation lines in mail parser.
	* src/rfc822parse.c (parse_field): Loop after continuation line.

2014-08-13  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.2.1

2014-07-25  Andre Heinecke  <aheinecke@intevation.de>

	Add fallback for sender email
	    In case the sender email addess is not an smtp address fall
	    back to the property accessor.

	    * src/ribbon-callbacks.cpp (do_reader_action): Use property
	    accessor for non smtp addresses.

2014-07-24  Andre Heinecke  <aheinecke@intevation.de>

	Fix sender lookup by also using get_pa_string
	    * src/oomhelp.cpp (get_pa_string): Add debug output.
	    (get_oom_recipients): Remove now redundant debug output.
	    * src/oomhelp.h (get_pa_string): Declare.
	    * src/ribbon-callbacks.cpp (do_composer_action, do_reader_action)
	    (attachEncryptedFile): Use get_pa_string to obtain sender.
	    * NEWS: Update accordingly

2014-07-22  Andre Heinecke  <aheinecke@intevation.de>

	Look up SMTP Address by property
	    Use the PropertyAccessor interface to look up the
	    "hidden" SMTP Address property.

	    * src/oomhelp.cpp (get_pa_string): New. Get a string using
	    the property accessor of an object.
	    (get_oom_recipients): Prefer the PR_SMTP_ADDRESS property over
	    the direct Address.
	    * src/oomhelp.h (PR_SMTP_ADDRESS): New define.
	    * NEWS: Mention this.

2013-08-19  Werner Koch  <wk@gnupg.org>

	Post release updates.

	Release 1.2.0.

	po: Auto updates.

	Minor configure.ac fixes for newer autoconfs.

	Update auto version numbering to the modern scheme.
	* configure.ac: Add git m4 magic.

2013-08-13  Andre Heinecke  <aheinecke@intevation.de>

	Update translations
	    * po/de.po: Update translated messages
	    * po/pt.po, po/sv.po: Update autogenerated files.
	    * src/gpgoladdin.cpp (getCustomUI): Minor message changes.

	Ensure sender address for verify
	    If the message has not been sent use the current sender
	    address for verification.

	    * src/ribbon-callbacks.cpp (do_reader_action): Check
	    for sender address if message was not sent before.

	Append signature after the message text
	    Do not replace the text anymore but add the signature below.

	    * src/ribbon-callbacks.cpp (do_composer_action): Append
	    signature to body.

	Add ui for verify in composer and Tooltips
	    * src/gpgoladdin.cpp (getCustomUI): Use tooltips and supertips
	    to explain some more whats happening.
	    (getCustomUI): Add verify action to the reader

	Statically link against compiler libraries
	    * src/Makefile.am (gpgol_LDFLAGS): New.

2013-08-08  Andre Heinecke  <aheinecke@intevation.de>

	Add verify action for opaque signatures
	    This is at least minimal signature support and the most
	    robust way because we can avoid data sanitizing.

	    * src/verify-48.png: New.
	    * src/Makefile.am (EXTRA_DIST): Add verify png
	    * src/dialogs.h, src/dialogs.rc: Add verify png
	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke, GetCustomUI):
	    Add and handle verify action to the reader.
	    * src/ribbon-callbacks.cpp (decryptInspector, do_reader_action):
	    Renamed. Do reader action now works similar to the
	    do_composer_action.
	    (do_composer_action): Add support for verify
	    (verifyBody): New.
	    * src/ribbon-callbacks.h: Update accordingly.

	Add Action to add encrypted attachment without sig
	    Adds a new Action to add an encrypted attachment
	    without the signature.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Add callback
	    handling.
	    (GetCustomUI): Add new UI for action.
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h
	    (addEncAttachment): New.

	Use correct filename for the signature
	    This uses the name of the encrypted file as the basename
	    for the signature and not the name of the original file.

	    * src/ribbon-callbacks.cpp (attachSignature, attachEncryptedFile):
	    Use correct filename for signature.

	Add signature support for files and text
	    For files a detached signature is created and additionally
	    attached. This also generalizes the encryptInspector and
	    uses it as a more generic interface to the message composer
	    context.

	    * src/common.c, src/common.h (get_pretty_attachment_name): Add
	    Parameter to query for the name of a detached signature.
	    * src/dialogs.h: Define ID for sign-48.png
	    * src/engine-assuan.c, src/engine-assuan.h (op_assuan_sign): Add
	    flags parameter to control signature options.
	    * src/engine.c (engine_sign_start): Create detached signatures
	    by default.
	    (engine_sign_opaque_start): New. Creates an opaque signature.
	    * src/engine.h (ENGINE_FLAG_DETACHED): New.
	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke, GetCustomUI): Add
	    sign Action.
	    * src/sign-48.png: New.
	    * src/Makefile.am (EXTRA_DIST): Add sing-48.png
	    * src/ribbon-callbacks.cpp (copyFileToSink): New. Helper function
	    to copy the contents of a file into a sink.
	    (attachSignature): New. Helper function to add a detached signature
	    of a File to a MailItem.
	    (encryptInspector, do_composer_action): Renamed. Actions and data is
	    now controled by flags. Added sign action.
	    (decryptInspector): Use subject as session title.
	    (attachEncryptedFile): New. Attaches an encrypted file. Optionally
	    also attaches the signature of that file.
	    * src/ribbon-callbacks.h: Update accordingly.

	Add icon for decrypt selection context action
	    * src/gpgoladdin.cpp (GetCustomUI): Add btnDecrypt to
	    decryptSelection action.

	Initialize output buffers for encrypt / decrypt
	    Fixes the uninialized data seen at the end of those actions
	    and makes the lastlinebreak hack uneccessary.

	    * src/ribbon-callbacks.cpp (decryptInspector, encryptInspector):
	    Initialize buffers to make sure they are terminated.

	Initialize strings in conflict handler
	    This fixes the name conflict handling as wcsncpy did not
	    terminate the string with \0. Also add the space for
	    the terminator in case our strings are MAX_PATH in length.

	    * src/common.c (get_tmp_outfile): Initialize buffer variables

2013-08-07  Andre Heinecke  <aheinecke@intevation.de>

	Share encrypted file for reading again.
	    * src/common.c (get_tmp_outfile): Share for reading

2013-08-06  Andre Heinecke  <aheinecke@intevation.de>

	Implement add encrypted attachment
	    Add a binary encrypted attachment to a Message object using
	    OOM. The binary option requires very recent Versions of
	    GPA or Kleopatra.

	    * src/common.c, src/common.h (get_pretty_attachment_name),
	    (get_tmp_outfile): New. Helper functions for attachments.
	    * src/engine-assuan.c (op_assuan_encrypt): Handle binary option.
	    * src/engine.h (ENGINE_FLAG_BINARY_OUTPUT): New.
	    * src/mimemaker.c, src/mimemaker.h (sink_file_write): New. Sink
	    to work on a file handle.
	    * src/oomhelp.cpp, src/oomhelp.h (add_oom_attachment): New.
	    Add an attachment to an Object with an Attachments collection.
	    * src/ribbon-callbacks.cpp (addEncSignedAttachment): Implment
	    adding an encrypted attachment.

2013-08-02  Andre Heinecke  <aheinecke@intevation.de>

	Fix possible crash in encryptInspector
	    The recipientAddr pointer got moved to an invalid location
	    before free.

	    * src/ribbons-callbacks.cpp (encryptInspector): Fix free of
	    recipients.

	Add some more initalization also for encryption
	    * src/ribbon-callbacks.cpp (encryptInspector): Initialize
	    dispatcher pointers

2013-08-01  Andre Heinecke  <aheinecke@intevation.de>

	Be more agressive in fix linebreaks
	    This now replaces all consecutive break indicating characters
	    by a single \n.

	    * src/common.c (fix_linebreaks): Replace all consecutive
	    linebreaks.

	Fix accessing uninitialized memory
	    When called to decrypt the full body the wordApplication,
	    wordEditor and selection would be uninitalized and
	    but when they are not NULL they would still be released in
	    the end.

	    * src/ribbon-callbacks.cpp (decryptInspector): Initialize
	    dispatcher pointers.

2013-07-31  Andre Heinecke  <aheinecke@intevation.de>

	Factor out recipient lookup and some cleanups
	    * src/oomhelp.cpp, src/oomhelp.h (get_oom_recipients): New.
	    * src/ribbon-callbacks.cpp (encrypt_inspector): Move out
	    recipient handling code. Fix indentation.
	    (decrypt_inspector): Clean up some comments.

	Enable Addin for Outlook 2013
	    * src/gpgoladdin.cpp (GpgolAddin::OnConnection): Do not disable
	    for major version 15

	Reanable GUI for adding an encrypted attachment
	    * src/gpgoladding.cpp (getCustomUI): Enable Add encrypted
	    attachment button.

	Add get_open_filename utility function
	    Can be used to open an existing file using the Windows
	    filedialog.

	    * src/common.c, src/common.h: Add get_open_filename.

	Factor out duplicated code and move to oomhelp
	    * src/oomhelp.cpp, src/oomhelp.h (get_oom_context_window): New.
	    * src/ribbon-callbacks.cpp (encryptInspector)
	    (decryptAttachments, decryptInspector, startCertManager): Use
	    get_oom_context_window.
	    * src/oomhelp.h, src/ribbon-callbacks.cpp (RELDISP): Move macro
	    from ribbon-callbacks.cpp to oomhelp.h

2013-07-15  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'outlook14'

	Handle attachments in the reader window.
	    Previously the UI was only shown in the Preview window (Explorer)

	    * src/gpgoladdin.cpp (GetCustomUI): Add contextualmenu and context
	    menu for attachments.

	Really fix gettext usage for the welcome message
	    * src/olflange.cpp (GpgolExt): Combine welcome message strings
	    with printf.

	Also hack of garbage at the end of OpenPGP stream
	    Testing showed that this can also happen for OpenPGP
	    encrypted messages. Need to investigate what is wrong.

	    * src/ribbon-callbacks.cpp (encryptInspector): Cut of garbage
	    at the end of OpenPGP stream, too.

	Fix welcome page translation and update PO's
	    The welcome text was changed to no longer include the
	    Version in the i18n text.

	    * po/de.po: Update translation
	    * po/pt.po, po/sv.po: Update generated files.
	    * src/olflange.cpp: Fix translation macro in welcome text.

2013-07-12  Andre Heinecke  <aheinecke@intevation.de>

	Fix operator priority
	    * src/ribbon-callbacks.cpp (decryptInspector): Fix operator
	    priorty in check for flags.

	Update translations
	    * po/de.po: Update German translations.
	    * po/pt.po, po/sv.po: Update generated files

	Add temporary Hack for strange encrypted data
	    When encrypting with SMIME there is some garbage added
	    to the end of the stream. Until we figure out where that
	    comes from. Cut it of.

	    * src/ribbon-callbacks.cpp (encryptInspector): Cut of
	    SMIME data after the last linebreak.

	Update UI to reflect implementation
	    Comment out add encrypted attachment selection and
	    the decrypt action in the explorer context.

	    * src/gpgoladdin.cpp (GetContext): Comment out code.

	Make decryptInspector work for Explorer Context
	    Beware: If you decrypt a Mail in the explorer context outlook
	    automatically saves it!

	    * src/ribbon-callbacks.cpp (decryptInspector): Handle explorer
	    context. Clean up variable names.

	Implement decryptBody command
	    Similar to the split in encryptSelection / encryptInspector.

	    * src/ribbon-callbacks.cpp (decryptInspector): New.
	    (decryptSelection, decryptBody): Wrapper around decryptInspector.

	Release dispatcher objects
	    QueryInterface adds a reference that has to be released.

	    * src/ribbon-callbacks.cpp (encryptInspector, decryptAttachments),
	    (startCertManager, decryptSelection): Release dispatcher.

	Implent encryptBody and add some dummy callbacks
	    The old encryptSelection is now split up into encryptInspector
	    and encryptSelection. encryptInspector accepts flags to control
	    it's behavior.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Handle command
	    callbacks
	    * src/ribbon-callbacks.cpp (encryptInspector): New. More
	    general version of encryptSelection.
	    (encryptBody): New. Calls encryptSelection with body flags.
	    (addEncSignedAttachment): New. Dummy.
	    (decryptBody): New. Dummy.
	    * src/ribbon-callbacks.h: Add new command ids

	Add ui for additional composer actions
	    Add dummy buttons for encrypt/decrypt body and adding of
	    an encrypted attachment.

	    * src/Makefile.am: Add new icon.
	    * src/encrypt-sign-file-48.png: New.
	    * src/gpgoladdin.cpp (GetCustomUI): Add UiXML for new actions
	    (Invoke, GetIDsOfNames): Handle new callbacks.
	    * src/ribbon-callbacks.h: Map new Icon.

	Handle fileextensions in save attachment dialog
	    If the filename has an extension add it as the first filter
	    entry.

	    * src/common.c (get_save_filename): Add file extension as Filter.
	    Generalize dialog title.

	Load png images from resource for RibbonUi
	    This uses gdiplus to convert the PNG data. It also
	    simplyfies the invoke as the size is now taken
	    from the resource file.

	    * src/Makefile.am: Link gdiplus
	    * src/gpgoladdin.cpp (Invoke): Just call getIcon for button
	    callbacks
	    * src/ribbon-callbacks.cpp (getIcon): Load images from resource
	    as PNG and convert them.
	    * src/ribbon-callbacks.h: Use png icons.

	Add png icons to be used in RibbonUI
	    * src/Makefile.am (extra_dist): Add added Icons
	    * src/README.icons: Add documentation
	    * src/decrypt-16.png, src/decrypt-48.png, src/encrypt-16.png,
	    src/encrypt-48.png, src/key-manager-64.png: New.
	    * src/dialogs.h, src/dialogs.rc: Add new Ressources

	Remove GpgolExt reference and check Version
	    The addin should only be used in Ol 14 otherwise
	    the old ExchangeExtension is used.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h (GpgolAddin): Remove
	    reference to GpgolExt Object.
	    (QueryInterface, ~GpgolAddin): Check if addin is enabled.
	    (OnConnection): Disable based on Version and handle
	    initialization.

	Update translation
	    * po/POTFILES.in: Add new files.
	    * po/de.po: Add new translations.
	    * po/pt.po, po/sv.po: Update generated content.

2013-07-11  Andre Heinecke  <aheinecke@intevation.de>

	Implement start certificate manager
	    Simple wrapper for engine_start_keymanager using the callback
	    interface.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Handle
	    startCertManager.
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h
	    (startCertManager): New.

	Add decrypt selection to reader context
	    * src/gpgoladdin.cpp (GetCustomUI): Add context menu actions
	    * src/ribbon-callbacks.cpp (decryptSelection): Show MessageBox
	    with text in case the selected Text can not be set.

	Encapsulate SMIME data in the message
	    This adds the same BEGIN and END lines as gnupg adds
	    when using the armor option.

	    * src/ribbon-callbacks.cpp (encrypt_selection): Encapsulate
	    encrypted data

	Fix crash in decryptAttachments
	    If the save file dialog was aborted it crashed.

	    * src/ribbon-callbacks.cpp (decryptAttachments): Continue
	    if get_save_file_name returns NULL.

	Change some user visible strings
	    * src/ribbon-callbacks.cpp: Change wording in some Messages.
	    Do not localize very unlikely errors.

	Localize ribbon UI
	    Using swprintf we can directly use gettext strings to include
	    UTF-8 encoded strings in the CustomUI XML code.

	    * src/gpgoladdin.cpp (getCustomUI): Add gettext usage.
	    (loadXMLResource): Removed.

	Handle OnDisconnect call
	    * src/gpgoladdin.cpp (OnDisconnect): Delete gpgolext object
	    * src/olflange.cpp (~GpgolExt): Shutdown also in case there
	    is no context set.

	Fix decryptSelection by handling \r breaks
	    * src/ribbon-callbacks.cpp (decryptSelection): Use fix_linebreaks.

	Add fix_linebreaks function
	    This tries to fix linebreaks to be unix \n breaks.

	    * src/common.c, src/util.h (fix_linebreaks): New.

	Include information source in comment
	    The referenced blog contains a good explanation about
	    changes in image handling the ribbonUI

	    * src/ribbon-callbacks.cpp (getIcon): Expand comment about
	    PNG's

2013-07-10  Andre Heinecke  <aheinecke@intevation.de>

	Add icon callbacks and decrypt selection action
	    This uses the same icons / icon ID's as the old extension
	    and does not handle transparency. There is some prepared
	    code to enable full alpha channel handling by using PNG included.

	    * src/gpgoladdin.cpp (GetIDsOfNames): Return dispID's for new
	    callbacks. Use new ID_MAPPER macro.
	    (Invoke): Resolve getIcon and decryptSelection calls.
	    (GetCustomUI): Add image callbacks and decrypt selection.
	    * src/ribbon-callbacks.cpp (encryptSelection): Add missing free.
	    (decryptSelection): New. Decrypt selected text and replace it
	    by plaintext if decryption was successful.
	    (getIcon): Create picturedispatcher on the queried ressource
	    bitmap.
	    * src/ribbon-callbacks.h: Add new ID's and prototypes

	Fix debug output in dump_excepinfo
	    One line was accidentally removed.

	    * src/oomhelp.cpp (dump_excepinfo): Add source line.

	Use CMS object detection from GPA
	    * src/common.c, src/common.h: Remove old tlv parser code which
	    was the base for the gpa implementation.
	    * src/mapihelp.cpp, src/mimeparser.c: Use new macro names
	    * src/parsetlv.c, src/parsetlv.h, src/filetype.c, src/filetype.h:
	    New. Taken from GPA revision 7a5b070
	    * src/Makefile.am: Add new files

2013-07-09  Andre Heinecke  <aheinecke@intevation.de>

	Add nohup option to decrypt command
	    Otherwise Outlook would block until the decryption
	    completes.

	    * src/engine-assuan.c (op_assuan_start_decrypt_files):
	    Add --nohup to decrypt files command

	Add encrypt selection command and improve for OL14
	    This implements a context menu action to encrypt selected
	    text when composing a mail. This also removes a crash
	    under some optimization circumstances because it no longer uses
	    the RibbonCallback interface directly.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h (decrypt_attachments):
	    Moved into ribbon-callbacks.cpp. Removed usage of
	    LPRIBBONCALLBACK as a structure.
	    * src/gpgoladdin.cpp (Invoke): Add support for encryptSelection
	    * src/gpgoladdin.cpp (GetCustomUI): Add ui prototype for
	    encryptSelection
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h: New.
	    Source files to handle the Ribbon UI actions.
	    (encryptSelection): New. Parse an Inspector context to replace
	    selected plain text with encrpyted text. Based on mimemaker code.
	    * src/Makefile.am: Add ribbon callbacks

	Excpose sink functions and structures
	    * src/mimemaker.c (write_buffer, sink_std_write),
	    (write_buffer_for_cb, sink_encryption_write): Remove staticness.
	    * src/mimemaker.h (write_buffer, sink_std_write),
	    (write_buffer_for_cb, sink_encryption_write): Add prototypes.
	    * src/mimemaker.c, src/mimemaker.h (sink_s, sink_t): Move
	    declaration into header.

	Improve debug output in get_oom_object
	    Sometimes there is some additional information hidden
	    in the execpinfo structure. So print it in case of an error.

	    * src/oomhelp.cpp (dump_excepinfo): New. Dumps an excepinfo
	    structure to log_debug.
	    (get_oom_object): Use exceptinfo from Invoke call.

2013-07-05  Andre Heinecke  <aheinecke@intevation.de>

	Add ContextualTab action for Attachments
	    Proof of concept how additional ui elements can be added.

	    * src/gpgoladdin.cpp (GetCustomUI): Add contextualTabs element,
	    add comment pointing to the documentation for this.
	    (decryptAttachments): Handle Explorer context additionally
	    to the AttachmentSelection context. Better error handling.

	Prototype Outlook 14 support
	    This adds a prototype "Save and decrypt" action for attachments.
	    The main advancement is that gpgOl can now interact with
	    Outlook 14 using the Ribbon extension interface.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h: New. Classes implementing
	    the COM Objects to interact with outlook.
	    * src/gpgoladdin.cpp, src/gpgol.def (DllGetClassObject),
	    (DllCanUnloadNow): New entry points into the library.
	    * src/olflange.cpp (DllRegisterServer, DllUnregisterServer):
	    Register / Unregister gpgOl as an Outlook Addin.
	    (GpgolExt): Use VERSION macro.
	    (install_sinks, install_forms): Expose for other classes.
	    * src/olflange.h: Move GUID and some string definitions into
	    header. Add function declarations.

	Add decrypt_files operation to the assuan engine
	    To be used to decrypt a list of filenames.

	    * src/common.c (percent_escape): New. Taken from gpgEx to escape
	    file names.
	    * src/engine-assuan.c (op_assuan_start_decrypt_files): New. Handles
	    the assuan transactions.
	    * src/engine-assuan.h, src/util.h: Add prototypes
	    * src/util.h (tohex_lower): New. Taken from gpgEx

	Update copyright year in resource file
	    * src/versioninfo.rc.in: Update copyright

2013-04-29  Werner Koch  <wk@gnupg.org>

	Changes to use the w64-mingw32 toolchain.
	* autogen.sh: Use i686-w64-mingw32 as default toolchain.
	* src/common.c (OEMRESOURCE): Add
	* src/ext-commands.cpp (_WIN32_IE): Define to 6.0

2011-12-27  Werner Koch  <wk@gnupg.org>

	Release version 1.1.3.

	Store gitCommit registry entry as hex number.
	* src/main.c (write_options): Write gitCommit as hex number.

	po: Remove line number comments.

	Use GIT commit ids instead of SVN revision numbers.
	* configure.ac: Remove SVN revision number tracking.  Replace by GIT
	commit ids.
	(GPGOL_FORMS_REVISION): New.
	(GIT_COMMIT_DECIMAL): New.
	(BUILD_TIMESTAMP): Base version number on the decimalised 4 hex digit
	commit id.
	* src/common.h (opt): s/svn_revision/git_commit/.
	* src/main.c (read_options): Read gitCommit instead of svnRevision.
	(write_options): Use git_commit.
	* src/olflange.cpp (GpgolExt): Use GPGOL_FORMS_REVISION to trigger
	forms installation.

	Generate the ChangeLog from commit logs.
	* build-aux/gitlog-to-changelog: New script.  Taken from libassuan.
	* build-aux/git-log-fix: New file.
	* doc/HACKING: New file.
	* ChangeLog: New file.
	* doc/Makefile.am (EXTRA_DIST): Add HACKING.
	* Makefile.am (gen-ChangeLog): New.
	(dist-hook): Run gen-ChangeLog.
	* autogen.sh: Install git hooks.

	Merge src/Changelog and ChangeLog to ChangeLog-2011 and keep the
	latter only in the GIT repo.

2011-12-23  Werner Koch  <wk@gnupg.org>

	Add gitignore file

	Fix data corruption during encryption.
	That extra write was plainly wrong.  I have no idea, how it slipped
	it.  The error comes up with attachments of certain lengths.  For
	example with a file length of 13859 bytes.

	* src/mimemaker.c (write_b64): Remove a stupid buffer write of 4
	bytes.

	Fix double free.
	This bug led to crashes unter OL2007 and Vista and W7.  See bug#1110.

	* src/attached-file-events.cpp (decrypt_and_write_file): Set BUF to
	NULL after free.

2010-07-21  Werner Koch  <wk@g10code.com>

	Release 1.1.2.

2010-07-21  Marco A.G.Pinto  <marcoagpinto@mail.telepac.pt>  (wk)

	* po/pt.po: New.
	* po/LINGUAS: Add pt.

2010-07-21  Werner Koch  <wk@g10code.com>

	* configure.ac: Require libgpg-error 1.9 due to gpg_err_deinit.

	* src/main.c (DllMain): Init and deinit libgpg-error which is now
	required due to our use of a static libgpg-error.

2010-04-21  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac (NEED_LIBASSUAN_API, NEED_LIBASSUAN_VERSION): Bump
	to 2/2.0.0.
	(_ASSUAN_ONLY_GPG_ERRORS): Remove.

	* src/engine-assuan.c (connect_uiserver): Update to new libassuan
	interface.

2010-01-13  Werner Koch  <wk@g10code.com>

	Release 1.1.1.

	* src/README.icons: Change instructions to better cope with alpha
	channels.

2010-01-12  Werner Koch  <wk@g10code.com>

	* src/decrypt-verify-16.bmp, decrypt-verify-16m.bmp: Update.
	* src/decrypt-verify-32.bmp, decrypt-verify-32m.bmp: Update.
	* src/verify-16.bmp, verify-16m.bmp: Update.
	* src/verify-32m.bmp, verify-32.bmp: Update.

	* po/POTFILES.in (explorers.cpp, inspectors.cpp, mailitem.cpp): New.

2010-01-08  Werner Koch  <wk@g10code.com>

	* forms/encr-s.ico, forms/sign-s.ico: Fix them.

	* src/README.icons: Fix instructions for forms icons.

2010-01-05  Werner Koch  <wk@g10code.com>

	Release 1.1.0.

2009-12-22  Werner Koch  <wk@g10code.com>

	* forms/encr-l.ico, forms/encr-s.ico: Update.
	* forms/sign-l.ico, forms/encr-l.ico: Update.

	* src/key-manager-16.bmp, key-manager-16m.bmp: Update.
	* src/key-manager-32.bmp, key-manager-32m.bmp: Update.
	* src/key-manager-64.bmp, key-manager-64m.bmp: New.
	* src/verify-16.bmp, verify-16m.bmp: Update.
	* src/verify-32.bmp, verify-32m.bmp: New.
	* src/sign-16.bmp, sign-16m.bmp: Update.
	* src/sign-32.bmp, sign-32m.bmp: New.
	* src/encrypt-16.bmp, encrypt-16m.bmp: Update.
	* src/encrypt-32.bmp, encrypt-32m.bmp: New.
	* src/decrypt-16.bmp, decrypt-16m.bmp: Update.
	* src/decrypt-32.bmp, decrypt-32m.bmp: New.
	* src/decrypt-verify-16.bmp, decrypt-verify-16m.bmp: Update.
	* src/decrypt-verify-32.bmp, decrypt-verify-32m.bmp: New.
	* src/Makefile.am (EXTRA_DIST): Add new bitmaps.
	* src/dialogs.rc: Add new bitmaps.

2009-12-01  Werner Koch  <wk@g10code.com>

	* src/README.icons: New.

2009-12-08  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (getinfo_pid_cb, prep_foo_status_cb): Change
	return type to gpg_error_t.

2009-11-30  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (OnReadComplete): Use GetInspector if
	none was found.
	* src/display.cpp (update_display): Print the window hierarchy in case
	of an error.
	* src/ext-commands.cpp (get_inspector): Add arg HWND.  First try
	get_inspector_from_hwnd.
	(get_crypto_flags, set_crypto_flags): Add arg HWND.
	(InstallCommands, DoCommand): Pass HWND to crypt_flags functions.

2009-11-27  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (get_crypto_flags): Replace EECB arg by HWND.
	(OnRead): Pass HWND to get_crypto_flags. Change all callers.
	(get_inspector): Remove.
	(get_crypto_flags, OnReadComplete): Use get_inspector_from_hwnd.

	* src/oomhelp.h (IID_IOleWindow): Define.
	* src/inspectors.cpp (find_ole_window): New.
	(struct inspector_info_s): Add field HWND.
	(register_inspector): Store it..
	(get_inspector_from_hwnd): New.

	* src/common.h (DBG_OOM_EXTRA): New.
	* src/main.c (read_options): Read new debug flag.
	* src/eventsink.h (debug_oom_extra): Use it.

2009-11-03  Werner Koch  <wk@g10code.com>

	* src/inspectors.cpp (deregister_inspector): Delete the buttons.
	(set_one_button): New.
	(set_inspector_composer_flags): Also set toolbar buttons.
	(toggle_button): Use set_one_button.
	(get_button_by_instid_and_tag): Remove.

	* src/oomhelp.cpp (del_oom_button): New.

2009-11-02  Werner Koch  <wk@g10code.com>

	* forms/Makefile.am (cfg_english): New.

	* src/mailitem.cpp, mailitem.h: New.

	* src/inspectors.cpp (get_message_from_button): New.
	(get_inspector_from_instid): New.
	(proc_inspector_button_click): Implement missing commands.

	* src/message.cpp (message_display_handler): Change to take an
	LPMESSAGE argument.
	* src/display.cpp (update_display): Replace the eecb arg by an
	inspector object.
	* src/message-events.cpp (OnReadComplete): Adjust for changes.

	* src/oomhelp.cpp (get_oom_iunknown): New.
	* src/revert.cpp (gpgol_folder_revert): Change to work without an eecb.

2009-10-30  Werner Koch  <wk@g10code.com>

	* forms/Makefile.am (icons): Udpate all icons.

	* src/oomhelp.cpp (get_oom_control_bytag): Fix silly bug.

	* src/inspectors.cpp (get_inspector_composer_flags): New.
	(set_inspector_composer_flags): New.
	* src/oomhelp.cpp (get_eecb_object): New.
	* src/message-events.cpp (get_inspector): New.
	(get_crypto_flags): New.
	(OnWrite, OnWriteComplete): Use new functions instead of the class
	members.  Use the new oom property functions.
	* src/ext-commands.cpp (get_inspector, get_crypto_flags): New.
	(DoCommand): Use new function.
	(set_crypto_flags): New.
	(InstallCommands): Use set_crypto_flags.
	(add_menu, check_menu, add_toolbar, struct toolbar_info_s): Remove.
	(QueryButtonInfo): Remove all code.
	(InstallCommands): Make use of get_eecb_object and put_oom_string.
	(DoCommand): Use get_eecb_object.
	* src/olflange.h (IExchExt): Remove m_protoSelection, m_gpgSign,
	m_gpgEncrypt and all related code.
	* src/olflange.cpp (Install): Use get_oom_string.
	* src/display.cpp (update_display): Ditto.
	* src/ol-ext-callback.h, ol-ext-callback.cpp: Remove.

2009-10-29  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp: Remove m_nCmdDebugN, m_nCmdRevertFolder,
	m_nCmdSign, m_nCmdEncrypt and all related code.  Now handled in
	inspectors.cpp.

2009-10-28  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp: Remove m_nCmdCryptoState and all related code;
	now handled in inspectors.cpp.  Remove m_nCmdKeyManager and all
	related code; now handled in cmdbarcontrols.cpp.

	* src/oomhelp.cpp, oomhelp.h, eventsink.h: New.
	* src/myexchext.h: Move generic COM+ stuff to oomhelp.h.
	* src/explorers.cpp, explorers.h: New.
	* src/inspectors.cpp, inspectors.h: New.
	* src/cmdbarcontrols.cpp cmdbarcontrols.h: New.
	* src/olflange.cpp (install_sinks): New.
	(Install): Call install_sinks.
	* src/main.c (DllMain): Call initialize_inspectors.

	* src/common.c (fatal_error): New.

2009-10-20  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (IID_IConnectionPoint)
	(IID_IConnectionPointContainer): Define.  There are missing in
	current wine  From ReactOS.

2009-10-19  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (show_event_object): Move to ..
	* src/ol-ext-callback.cpp (show_event_object): .. here.
	(show_preview_pane): Revert dispparms order to make it work.

	* src/common.c (mem2str): New.

2009-10-08  Werner Koch  <wk@g10code.com>

	* configure.ac (CFLAGS): Add -fno-strict-aliasing.

2009-10-07  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Comment out the protocol
	selection.
	(DoCommand, Help, QueryHelpText, QueryButtonInfo): Ditto.
	(update_protocol_menu): Comment out.
	* src/main.c (write_options): Do not write the default protocol.
	(read_options): Always set it to auto.
	* src/dialogs.rc: Remove openpgp-by-default and smime-by-default check
	boxes.
	* src/olflange-dlgs.cpp (set_labels): Likewise.
	(GPGOptionsDlgProc): Likewise.

2009-09-28  Werner Koch  <wk@g10code.com>

	Release 1.0.1.

2009-09-25  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Enable Smime by default.

2009-08-28  Werner Koch  <wk@g10code.com>

	* configure.ac [GCC]: Test for -Wno-pointer-sign.

	* src/mimemaker.c (do_mime_sign): Comment cleanup.

2009-08-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): Add hack for Kleopatra.

2009-08-21  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (async_worker_thread): Disable the use of
	MsgWaitForMultipleObjects.
	* src/common.h (struct compat): Add USE_MWFMO.
	* src/main.c (read_options): Read that flag.

2009-08-19  Werner Koch  <wk@g10code.com>

	* src/message.cpp (ul_release): Add arg LNR.  Change all callers.
	* src/ol-ext-callback.cpp (ul_release): Add args FUNC and LNR.  Change
	all callers.
	* src/item-events.cpp (ul_release): ditto.
	* src/session-events.cpp (ul_release): Ditto.

2009-07-21  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (create_gpgol_tag, get_internetcharsetbody_tag)
	(mapi_set_header): Release data returned from GetIDsFromNames.

	* src/engine.h (ENGINE_FLAG_SIGN_FOLLOWS): New macro.
	* src/engine.c (engine_encrypt_prepare): Add arg flags.  Change
	callers.
	* src/engine-assuan.c (op_assuan_encrypt): Ditto.  send PREP_ENCRYPT
	if the sign-follows flag is used.
	* src/mimemaker.c (mime_sign_encrypt): Pass new flag.

2009-06-18  Werner Koch  <wk@g10code.com>

	Release 1.0.0.

2009-06-18  Werner Koch  <wk@g10code.com>

	* src/common.h (struct opt): Add ANNOUNCE_NUMBER.
	* src/main.c (write_options, read_options): Store and load that number.

2009-02-27  Werner Koch  <wk@g10code.com>

	Release 0.10.19.

2009-02-26  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (start_attachment): Try to figure out a good file
	name suffix for the FILENAME property.

	* src/ext-commands.cpp (InstallCommands): Disable decrypt button for
	non GpgOl messages.

	* src/engine.c (engine_encrypt_prepare): Add arg SENDER.
	* src/engine-assuan.c (op_assuan_encrypt): Ditto.
	* src/mimemaker.c (do_mime_sign): Free sender string.
	(mime_encrypt): Pass the sender address to the engine.
	(mime_sign_encrypt): Ditto.

2009-02-25  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgoldraftinfo_tag): New.
	(mapi_get_gpgol_draft_info, mapi_set_gpgol_draft_info): New.
	* src/ext-commands.cpp (DoCommand): Save encryption selection.
	(InstallCommands): Get encryption selection from the draft info.
	* src/mimemaker.c (finalize_message): Delete the property.

2009-01-28  Werner Koch  <wk@g10code.com>

	Release 0.10.18.

	* po/de.po: s/Unterschrift/Signatur/.

	* src/mimeparser.c (t2body): Take care of x-pkcs7-mime as used by
	native OL signed messages.
	(mime_decrypt): Ditto.

2009-01-16  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (attach_thread_input_wndw_proc)
	(attach_thread_input): Enable code.
	(async_worker_thread): Replace WFMO by MsgWaitForMultipleObjects
	and add message dispatcher loops.

2008-11-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): Extract the CN name if available.

2008-11-26  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Don't show status icon for
	non-gpgol messages.

	* src/config-dialog.c (start_key_manager): Remove.
	* src/ext-commands.cpp (DoCommand): Do not use start_key_manager as a
	fallback.

	* src/olflange.cpp (GpgolExt): Show new version warning only once.

	* src/dialogs.rc: Do not display the logo.  Move version info around.
	* src/dialogs.h (IDC_G10CODE_STRING): New.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Active product page by a
	click on IDC_G10CODE_STRING.
	(set_labels): Remove the build date from the Version field.

2008-11-14  Werner Koch  <wk@g10code.com>

	* src/dialogs.rc: Remove preview-decrypt check button.
	* src/olflange-dlgs.cpp (set_labels): Ditto.

2008-11-13  Werner Koch  <wk@g10code.com>

	* src/engine.c (FILTER_BUFFER_SIZE): Increase from 4k to 128k.
	(switch_threads, clear_switch_threads): Remove.
	(engine_filter): Pulse event only if anything happened.  Break
	loop if input data has been put completely into the buffer.  Add a
	short delay for an idle loop.
	* src/engine-assuan.c (work_item_s): Increase buffer from 1k to 8k.
	(switch_threads, clear_switch_threads): Remove.

2008-11-10  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_init): Allow the user to try again if the
	server did not come up.
	* src/engine-assuan.c (connect_uiserver, op_assuan_init): Add a hack
	to reset the retry counter.

2008-11-03  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Add arg SESSION_NUMBER and pass it
	to the sign operation.  Set session title.
	(mime_sign): Create a new session number.
	(mime_sign_encrypt): Pass a session number and title to the engine.
	(mime_encrypt): Ditto.
	* src/engine-assuan.c (op_assuan_encrypt, op_assuan_sign): Send
	session info.

2008-10-29  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_filter): Collect more data in the in buffer.
	* src/mimemaker.c (write_b64): Buffer up to 2k of output.

2008-10-27  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (mime_encrypt): Check for an empty message before
	creating the filter.  Return a suitable error code.
	(do_mime_sign): Ditto.
	(mime_sign_encrypt): Ditto.
	(mime_sign): Return an error code.
	* src/message.cpp (sign_encrypt): Show an error message for empty
	messages.
	(message_sign): Ditto.

	* src/olflange.cpp (install_forms): Add gpgol-cs.

	* src/mapihelp.cpp (get_internetcharsetbody_tag): New.
	(mapi_get_body_as_stream): Try the new tag first.
	(get_msgcls_from_pgp_lines): Ditto.  Remove the simple access
	method.

2008-10-24  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (struct mime_context): Add flag
	MAY_BE_OPAQUE_SIGNED.
	(t2body): Set that flag.
	(is_cms_signed_data): New.
	(mime_decrypt): Try to verify if the content is opaque signed
	without proper MIME headers.

2008-10-23  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_delete_gpgol_body_attachment): New.
	* src/message-events.cpp (OnWriteComplete): Remove a body attachment.

	* src/message.cpp (message_display_handler): Do not display PGP
	clearsigned messages.
	(message_display_handler): Do not update GpgOLStatus; it is not
	used anyway.
	(pgp_mime_from_clearsigned): Fix bogus trailing white space
	removal code.  Insert an empty line.
	* src/mimeparser.c (mime_verify): Add arg MIMEHACK.
	(message_verify): Use it.

2008-10-17  Werner Koch  <wk@g10code.com>

	* src/recipient-dialog.c (load_rsetbox): Remove superfluous check on
	negativness for an unsigned variable.

	* src/mimeparser.c (mime_verify_opaque): Remove extra semicolon which
	shortcuted most of the code.  Why didn't gcc notice that?  Bug
	was introduced on 2008-06-12.

	* src/engine-assuan.c (create_io_pipe, send_options)
	(op_assuan_encrypt, op_assuan_sign, op_assuan_decrypt)
	(op_assuan_verify): Replace use of long in snprint by int to
	workaround a bug in mingw32. Doesn't matter on w32 anyway.

2008-10-16  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (start_attachment): Take care not to set the file
	name "smime.p7m".

	* src/mapihelp.cpp (is_really_cms_encrypted): Extend to detect unknown
	message types.
	(mapi_change_message_class): Adjust for this change.
	(mapi_change_message_class): Factor code out to ...
	(change_message_class_ipm_note)
	(change_message_class_ipm_note_smime)
	(change_message_class_ipm_note_smime_multipartsigned)
	(change_message_class_ipm_note_secure_cex): New.
	(get_first_attach_mime_tag): New.
	(change_message_class_ipm_note_secure_cex): Use it here for CexSig.
	(has_smime_filename): Also look at the long filename.

2008-10-15  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_sign): Send the new --protocol option
	to the server.

2008-09-30  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Special handling for
	MultipartSigned if S/MIME support is disabled.

2008-08-06  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Disable S/MIME notice.

2008-08-05  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Display protocolicons only
	for OL2007.
	* src/olflange.cpp (get_ol_main_version): New.

	* src/message.cpp (message_decrypt): Save a signature verification
	result.
	* src/mimeparser.c (mime_decrypt): Implement verification of included
	signatures.  This feature got lost during the removal of nested
	crypto operations.

2008-08-04  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (install_forms): New.
	(GpgolExt): Install forms if needed.
	* src/common.c (get_data_dir): New.
	* src/common.h (struct): Add field FORMS_REVISION.
	* src/main.c (read_options, write_options): Read and write that
	option.

2008-07-31  Werner Koch  <wk@g10code.com>

	* src/ext-commands.h (class GpgolExtCommands): Add m_nCmdRevertFolder.
	* src/ext-commands.cpp (GpgolExtCommands, InstallCommands): Ditto.
	(DoCommand): Implement RevertFolder command.

	* src/common.h (struct): Add variable DISABLE_GPGOL.
	* src/session-events.cpp (OnDelivery): Make use of that variable.
	* src/message.cpp (message_incoming_handler): Ditto.
	* src/user-events.cpp (OnSelectionChange): Ditto
	* src/message-events.cpp (OnRead, OnReadComplete, OnWrite)
	(OnWriteComplete): Ditto
	* src/mapihelp.cpp (mapi_get_int_prop): New.

	* src/olflange.cpp (Install): Improve version check.

	* src/revert.cpp, revert.h: New.
	* src/mapihelp.cpp (mapi_attachment_to_body): New.
	(mapi_get_old_message_class): New.
	(mapi_change_message_class): Do not release newvalue when saving
	the old class.
	* src/olflange.cpp (parse_version_number, parse_version_string)
	(compare_versions, gpgol_check_version): New.
	* src/ext-commands.cpp (DoCommand): Support a "revert message class"
	debug command.

2008-06-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgololdmsgclass_tag): New.
	(mapi_change_message_class): Save old message class.

2008-06-19  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Change S/MIME enabled
	message icon.
	* src/olflange.cpp (GpgolExt): Ditto for the new version installed
	notice.

2008-06-12  Werner Koch  <wk@g10code.com>

	* src/dialogs.rc: Add button for calling the engine's configuration.
	* src/dialogs.h (IDC_GPG_CONF): New.
	* src/engine.c (engine_start_confdialog): New.
	* src/engine-assuan.c (op_assuan_start_confdialog): New.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Act upon the button.

	* src/mapihelp.cpp (mapi_get_from_address): New.
	* src/engine.c (engine_decrypt_start, engine_verify_start): Add new
	arg FROM_ADDRESS.
	* src/engine-assuan.c (op_assuan_verify, op_assuan_decrypt): Ditto.
	* src/mimeparser.c (mime_verify, mime_verify_opaque, mime_decrypt):
	Pass FROM_ADDRESS to the backend.

	* src/olflange.cpp (DllUnregisterServer): Delete CLSIDs.

2008-06-05  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (mime_decrypt): Set session number and title.
	(mime_verify_opaque, mime_verify): Ditto.
	* src/mapihelp.cpp (mapi_get_subject): New.
	* src/engine.c (engine_set_session_number, engine_set_session_title)
	(engine_set_sender_address): New.
	(struct engine_filter_s): Add fields session_number, session_title
	and sender_address.
	(engine_private_get_session_number): New.
	(engine_private_get_session_title): New.
	(release_filter): Release them.
	(engine_new_session_number): New.
	* src/engine-assuan.c (send_session_info): New
	(op_assuan_decrypt, op_assuan_verify): Call it.
	(op_assuan_sign): Use the end-of-option option for the SENDER command.

2008-05-28  Werner Koch  <wk@g10code.com>

	* src/dialogs.h (IDC_BODY_AS_ATTACHMENT): New.
	* src/dialogs.rc: Add body-as-attachemnt checkbox to the otpion
	dialog.
	* src/olflange-dlgs.cpp (set_labels, GPGOptionsDlgProc): Add it.
	* src/main.c (write_options, read_options): Handle bodyAsAttachment
	registry key.
	* src/mimeparser.c (start_attachment): Do not set the hidden flag if
	the new option is used.
	* src/mapihelp.cpp (mapi_test_attach_hidden): New.
	(mapi_get_gpgol_body_attachment): Make use of that flag.

2008-05-23  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (struct sink_s): Add field ENC_COUNTER.
	(write_buffer_for_cb): Update that.
	(mime_encrypt): Bail out if no data has been encrypted.
	(mime_sign_encrypt): Ditto.

2008-05-07  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (t2body): Fix last change.

2008-05-02  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (t2body): Detect non-inline text parts.
	* src/rfc822parse.c (rfc822parse_query_parameter): Add special mode
	for an ATTR of NULL.

2008-04-16  Werner Koch  <wk@g10code.com>

	* src/message-events.h (class GpgolMessageEvents): Add M_GOTINSPECTOR.
	* src/message.cpp (message_incoming_handler): Change return type.

	* src/ext-commands.cpp (check_toolbar, check_menu_toolbar): New.
	(update_protocol_menu): Explicitly update the toolbar.

2008-04-15  Werner Koch  <wk@g10code.com>

	* src/Outlook.gpl: New.

2008-04-14  Werner Koch  <wk@g10code.com>

	* src/display.cpp (is_inspector_display): New.
	(find_message_window): Rewrote.

	* src/message-events.cpp (OnRead): Use it.
	* src/message.cpp (message_incoming_handler): Add arg FORCE.
	* src/message-events.cpp (OnRead): Pass false for FORCE.
	* src/item-events.cpp (OnOpen): Ditto.
	* src/ext-commands.cpp (DoCommand): Let CmdCryptoState process and
	display the current message again.
	(GpgolExtCommands): Remove m_nCmdCheckSig and m_nCmdDecrypt.

2008-04-10  Werner Koch  <wk@g10code.com>

	* src/ol-ext-callback.cpp (is_preview_pane_visible)
	(show_preview_pane): New.

	* src/display.cpp (update_display): Add arg IS_SENSITIVE and do not
	use the OOM method if this is set.

	* src/mapihelp.h (mapi_save_changes): New. Use if everywhere.
	(mapi_delete_body_props): Use it to delete body parts.
	* src/mapihelp.cpp (mapi_do_save_changes): New.
	* src/mimemaker.c (finalize_message): Do no delete body parts because
	mapi_save_changes does this now.

	* src/mimeparser.c (finish_message): Remove the body property in
	protect mode.

2008-04-04  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (worker_start_read, worker_check_read): Factor
	common code out to ..
	(write_to_callback): .. new.
	(async_worker_thread): Better comments and minor changes.
	(enqueue_callback): Add arg INACTIVE.
	(set_items_active): New.
	(start_command): Set items active.
	(op_assuan_encrypt): Create input and output items as inactive.
	(async_worker_thread): Handle the inactive flag.

	* src/common.c (gpgol_spawn_detached): Do not inherit handles.

2008-04-02  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (destroy_command): Add arg FORCE.
	(op_assuan_encrypt_bottom): Call destroy_command.

	* src/mimeparser.c (struct mime_context): Use parser_error to return
	gpg error codes.

	* src/main.c (read_options): Allow names for debug flags.
	* src/common.c (trim_spaces): New.

2008-03-31  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (struct work_item_s): Add SWITCH_COUNTER.
	(switch_threads, clear_switch_threads): New.
	(worker_start_write): Use it.
	* src/engine.c (struct engine_filter_s): Add SWITCH_COUNTER.
	(switch_threads, clear_switch_threads): New.
	(filter_gpgme_read_cb): Use it.

	* src/ext-commands.h (class GpgolExtCommands): Add m_nCmdCryptoState.
	* src/ext-commands.cpp (InstallCommands): Add a toolbar crypto state
	button.
	(DoCommand): Show a message when trying to select the disabled
	S/MIME protocol.

	* src/message.cpp (message_sign, message_verify, message_decrypt)
	(sign_encrypt): Display message boxes only in debug mode.

	* src/olflange-dlgs.cpp: Remove G-Data 2001 copyright because all that
	old code has gone.

	* src/dialogs.rc (IDD_EXT_OPTIONS): Remove option to select the key
	manager.
	(IDD_GPG_OPTIONS): Remove caching time, reorder options, add group
	boxes.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Clean up accordingly.
	* src/config-dialog.c (config_dlg_proc): Ditto.
	(get_open_file_name, does_file_exist, error_box): Remove.

	* src/ext-commands.cpp: Rename nCmdShowInfo to nCmdDebug0 and enable
	it only in debug mode.

2008-03-26  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (cleanup): Implement.
	(op_gpgme_init): Save thread handle.
	(waiter_thread): Check shutdown flags.

	* src/engine-assuan.c (get_uiserver_name): Fallback to GPA.

2008-03-19  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Look into
	multipart/mixed for PGP messages.

	* src/mapihelp.cpp (mapi_get_attach): Add arg UNPROTECT and changed
	all callers.
	* src/common.h (DBG_MIME_PARSER, DBG_MIME_DATA): New.
	* src/mimeparser.c (debug_mime_parser, debug_mime_data): New to
	replace DEBUG_PARSER.
	(struct mime_context): Add field is_opaque_signed.
	(t2body): Set it.
	(mime_decrypt): Handle an embedded opaque signed S/MIME part.
	(mime_verify_opaque): Add arg INBUFER, INBUFFERLEN and
	START_PART_COUNTER.

2008-03-18  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (message_cb): Clear all mimestruct fields.  Fixes
	segv introduced 2008-03-07.

	* src/engine-assuan.c (async_worker_thread): Handle broken pipe.

2008-03-13  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (message_cb): Skip the OPEN event in non-MIME mode.

	* src/rfc822parse.c (rfc822parse_open): Reset ERRNO.

2008-03-11  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_encrypt): Factor some code out to ..
	(op_assuan_encrypt_bottom): .. new.
	(engine_assuan_encstate_s): New.
	* src/engine.c (engine_encrypt_start): Split some code into ..
	(engine_encrypt_prepare): .. new.
	(engine_cancel): Cancel prepared encryption.
	* src/mimemaker.c (mime_encrypt): Use engine_encrypt_prepare and
	_start.
	(mime_sign_encrypt): Likewise, but do the _start only after
	completing the signing.

2008-03-10  Werner Koch  <wk@g10code.com>

	* src/engine.c (FILTER_BUFFER_SIZE): Increase to 4k.
	(engine_filter, engine_wait, engine_wait): Replace Sleep by
	SwitchToThread.
	* src/engine-assuan.c (struct work_item_s): Increase buffer to 1k.
	(worker_start_write, async_worker_thread): Replace Sleep by
	SwitchToThread.

2008-03-07  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): New.
	* src/mymapitags.h (PR_PRIMARY_SEND_ACCT): New.
	* src/mimemaker.c (do_mime_sign): Pass the sender to the engine.

	* src/common.h (opt): Add field SVN_REVISION.
	* src/main.c (read_options, write_options): Set it.
	* src/olflange.cpp (GpgolExt): Print a warning on program update.

	* src/engine.c (struct engine_filter_s): Add field ADD_EXTRA_LF.
	(engine_request_exra_lf): New.
	(engine_wait): Implement that.
	* src/mimeparser.c (mime_decrypt): Add arg SIMPLE_PGP and call
	engine_request_exra_lf.
	(struct mime_context): Add field NO_MAIL_HEADER.
	(message_cb): Implement it.
	* src/message.cpp (message_decrypt): Set that flag for old style PGP.

	* src/common.h (DBG_COMMANDS, debug_commands): New.
	* src/ext-commands.cpp: Use it.

2008-03-06  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Figure out the protocol to use.
	* src/engine.c (engine_sign_start): Add new args SENDER and R_PROTOCOL.
	* src/engine-assuan.c (op_assuan_sign): Ditto.  Send SENDER command.

2008-03-05  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Insert the debug registry key.
	(write_options): More debug output.

2008-02-28  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Fix initial setting of
	openpgp and smime state.  I wish C would haved used := for
	assignments.

2008-02-26  Werner Koch  <wk@g10code.com>

	* src/common.c (qp_decode): Add arg S_LBRK.
	* src/mimeparser.c (plaintext_handler, ciphertext_handler): Handle
	soft line breaks.

	* src/mapihelp.cpp (mapi_change_message_class): Handle opaque S/MIME
	messages without an smime-type parameter.

2008-02-25  Werner Koch  <wk@g10code.com>

	* src/message.cpp (message_verify): Show message boxes for non-signed
	messages.
	(message_decrypt): Likewise.

2008-02-19  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (get_uiserver_name): Change default uiserver
	path and remove work-around.

2008-02-18  Werner Koch  <wk@g10code.com>

	* src/message.cpp (pgp_body_to_attachment): New.
	(message_decrypt): Use it.
	(message_wipe_body_cruft): Also wipe already processed PGP
	encrypted messages.  Factor common code out to ...
	(do_wipe_body): .. new.
	* src/mapihelp.h (ATTACHTYPE_PGPBODY): New.

2008-02-15  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp: Remove code for IDC_ENCRYPT_WITH_STANDARD_KEY
	and IDC_ENCRYPT_TO.
	* src/dialogs.rc: Ditto.

2008-02-13  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgolcharset_tag, mapi_get_gpgol_charset)
	(mapi_set_gpgol_charset): New.
	(mapi_get_gpgol_body_attachment): Transcode from Latin-1.
	* src/mimeparser.c (start_attachment): Set the charset property.
	(struct mime_context): Remove is_utf8 field.

2008-02-11  Werner Koch  <wk@g10code.com>

	* src/common.h (tlvinfo_t): New.
	* src/common.c (parse_tlv): New.  Based on code from libksba.
	* src/mapihelp.cpp (has_smime_filename): New.
	(is_really_cms_encrypted): New.
	(mapi_change_message_class): Use this here to work around a
	CryptoEx bug.

2008-02-08  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Improve detecion of
	CryptoEx messages.

2008-02-07  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_verify_start): Enable opaque signature for the
	assuan backend.
	* src/engine-assuan.c (op_assuan_verify): New arg OUTDATA.  Add
	support for opaque signatures.

	* src/mimeparser.c (mime_verify_opaque): New.
	* src/message.cpp (message_verify): Handle opaque signed S/MIME.

	* src/message.cpp (message_wipe_body_cruft): Delete only encrypted
	messages.

2008-02-06  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (mime_decrypt): New arg IS_RFC822.
	* src/message.cpp (message_decrypt): Add code to see whether to use
	the new arg.

2008-02-01  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (ciphertext_handler, ciphermessage_cb)
	(ciphermessage_t2body): New.
	(mime_decrypt): Use an rfc822 parser to pass the message to the
	engine.

	* src/mapihelp.cpp (mapi_get_attach_as_stream): Add arg R_ATTACH.
	(mapi_set_attach_hidden): New.

2008-01-31  Werner Koch  <wk@g10code.com>

	* src/message.cpp (message_verify): Check that the body attachment is
	available before shortcutting the verification.
	* src/user-events.cpp (OnSelectionChange): Change SMIME message
	class.
	* src/mapihelp.cpp (mapi_change_message_class): Add arg
	SYNC_OVERRIDE. Changed all callers to pass false.
	(mapi_test_sig_status): Take care of sent messages.
	(mapi_get_gpgol_body_attachment): Change args to allow use as
	testing fucntion too.  Adjusted caller.

2008-01-29  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Set CTE for SMIME.
	(delete_all_attachments): Remove extra semicolon accidently
	inserted with revision 916.

2008-01-18  Marcus Brinkmann  <marcus@g10code.de>

	* src/mimeparser.c (mime_verify): New variable sig_len, and pass it on
	to engine_verify_start.
	* src/engine.h (engine_verify_start): Add new argument sig_len.
	* src/engine.c (engine_verify_start): Add new argument sig_len and
	pass it on to op_assuan_verify and op_gpgme_verify.
	* src/engine-assuan.h (op_asssuan_verify): Add new argument sig_len.
	* src/engine-gpgme.c (op_gpgme_verify): New argument sig_len and use
	it instead of string length of signature.
	* src/engine-assuan.c (op_assuan_verify): Likewise.

2008-01-11  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (finalize_message): Add args PROTOCOL and ENCRYPT
	and use them to set the override message class.
	(mime_sign, mime_encrypt, mime_sign_encrypt): Pass this info via
	the new args.
	(do_mime_sign): Set micalg to sha1 for CMS.

	* src/message.cpp (message_decrypt): Add hack fro seldgenerated
	messages.

2008-01-10  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgolmsgclass_tag, mapi_set_gpgol_msg_class):
	New.
	(mapi_change_message_class, mapi_get_message_type): Try override
	first.

	* src/message.cpp (message_incoming_handler): Remove arg MSGTYE and
	let the function retrieve it.  Changed all callers.  Retry after a
	sucessful message class change.
	* src/olflange.cpp (getMsgtype): Remove.  The caching might lead to
	problems and makes it all more complex.  Changed all callers to
	use mapi_get_message_type.

	* src/mimemaker.c (create_top_encryption_header) <SMIME>: Write empty
	line after header.

2008-01-09  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (finish_saved_body): New.
	(finish_attachment): Keep the body attachment open.
	(mime_decrypt, mime_verify): Close the saved body data.
	(t2body): Continue body attachments.

	* src/message.cpp (message_verify): Save changes.

	* src/mapihelp.cpp (mapi_change_message_class): Handle case of
	PGP/MIME signed with IPM.Note.  Save only of really needed, use
	FORCE_SAVE and keep it open for read and write.

2008-01-07  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (replace_dollar_s): Remove obsolete function.
	(get_quoted_socket_name): Remove obsolete function.
	(get_uiserver_name): Invoke GUI server with --daemon.  Fix buglet
	in assignment.
	(destroy_command): Change return type to void to suppress compiler
	warning.

2008-01-04  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (send_options): Call AllowSetForegroundWindow.

	* src/main.c (read_options): Allo other values than 1 for enableDebug.
	* src/common.h (DBG_IOWORKER, DBG_IOWORKER_EXTRA, DBG_FILTER)
	(DBG_FILTER): New.
	* src/engine.c (debug_filter): Turn it into a macro.
	(debug_filter_extra): New macro, used instead of checking the
	value of debug_filter.
	* src/engine-assuan.c (debug_ioworker, debug_ioworker_extra): new.
	Use them all over the file to enable debugging.
	* src/engine.c (engine_encrypt_start): Add arg HWND.
	(engine_sign_start, engine_decrypt_start, engine_verify_start)
	(engine_start_keymanager): Ditto.

	* src/mimemaker.c (mime_encrypt, mime_sign_encrypt, mime_sign)
	(do_mime_sign): Add arg HWND and pass it to the engine.
	* src/mimeparser.c (mime_verify, mime_decrypt): Pass HWND.
	* src/message.cpp (message_sign, sign_encrypt): Pass HWND.
	(message_incoming_handler, message_verify, message_decrypt): Add
	arg HWND and pass it on.
	* src/message-events.cpp (OnRead): Pass HWND to message function.
	* src/ext-commands.cpp (DoCommand):  Ditto.

2008-01-03  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (mime_sign_encrypt): Fix result test of do_mime_sign.
	(write_tempsign_attachment): Remove.
	(do_mime_sign): Change last ark to a sink_t.
	(mime_sign_encrypt): Rework to use a temporary stream instead of a
	temporary attachment.
	(create_mapi_attachment): Remove arg TEMPSIGN.

2007-12-18  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Limit check to the
	first 1 k and stop testing after the first PGP armor line.
	(mapi_get_message_type): Return MSGTYPE_SMIME.
	(mapi_change_message_class): Take care of CryptoEx signatures.
	* src/mapihelp.h (MSGTYPE_SMIME): New.
	* src/message.cpp (message_incoming_handler): Check message class for
	unknown and unchecked messages.  Take care MSGTYPE_SMIME.
	* src/ext-commands.cpp (DoCommand): Add debug command change
	message class.

2007-12-07  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Removed toolbar button fro
	decrypt as this is not anymore needed.  Fixes bug#860.
	(QueryHelpText): Ditto.

2007-11-12  Werner Koch  <wk@g10code.com>

	* src/olflange.h (class GpgolExt): Rename m_gpgSelectSmime to
	m_protoSelection.
	* src/message-events.cpp (OnWriteComplete): Use it accordingly.
	* src/main.c (write_options, read_options): Load and save it.
	* src/dialogs.rc: Add new check box for OpenPGP default protocol.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Adjust for above chnages.

2007-11-09  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): New option ENABLE_DEBUG to be enabled
	only using the Registry.
	(read_options): Show warning for certain option combinations.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Hide the Advanced options
	button unless in debug mode.

	* src/mapihelp.cpp (get_gpgollastdecrypted_tag): New.
	(mapi_test_last_decrypted): New.
	(mapi_has_last_decrypted): new.
	* src/mimeparser.c (finish_message): Update the Last Decrypted property.
	* src/message.cpp (message_decrypt): Use it here.
	(message_wipe_body_cruft): New.

	* src/main.c (do_log_window_hierarchy): Factor some code out to ..
	(do_log_window_info): .. this.
	(log_window_hierarchy): Log parent window info.
	(get_64bit_session_marker): New.
	(initialize_session_key): Init session marker.

	* src/Makefile.am (gpgol_SOURCES): Remove item-events.cpp
	* src/olflange.cpp (GpgolExt): Disable the GpgOLItemEvents as they can
	only be used with the undocumented ECF file.

2007-10-29  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (create_top_signing_header): Add arg FIRST.
	(mime_sign): Factor allmost all code out to ..
	(do_mime_sign): .. new function.
	(create_mapi_attachment): Add arg TEMPSIGN.
	(delete_all_attachments): Adjust for that.
	(mime_encrypt): Factor some code out to ..
	(create_top_encryption_header): .. new.
	(write_tempsign_attachment): New.
	(mime_sign_encrypt): Implement.

2007-10-22  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (connect_uiserver): Try to start the server.
	(get_uiserver_name, replace_dollar_s, get_quoted_socket_name): New.

	* src/main.c (REGKEY): Remove.
	* src/common.h (GNUPG_REGKEY): New.
	* src/common.c (default_homedir): Use it in place of a hard coded one.
	(get_locale_dir): Ditto.
	(gpgol_spawn_detached): New.

2007-10-18  Werner Koch  <wk@g10code.com>

	* src/common.c (get_system_check_bitmap): New.

	* src/decrypt.bmp, encrypt.bmp, sign.bmp, key_mana.bmp: Change
	background color to pink and voila Outlook presents them
	transparent.

	* src/logo.bmp: Cleaned up to use just one color.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Do not use LoadImage.

2007-10-16  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (EECMDID_): Add a few more of these constants.
	* src/ext-commands.cpp (check_menu): New.
	(toolbar_add_menu): Rename to ..
	(add_menu): .. this.
	(toolbar_from_tbe): Remove.
	(add_toolbar): New.
	(InstallCommands): Use new toolbar helper.
	(QueryButtonInfo): Changed to use new toolbar helper.
	(~GpgolExtCommands): New.

	* src/engine.c (engine_encrypt_start): Add arg R_PROTOCOL.
	* src/engine-assuan.c (op_assuan_encrypt): Add arg R_USED_PROTOCOL and
	ask the server for it.
	* src/mimemaker.c (sink_encryption_write_b64): New.
	(mime_encrypt): Add S/MIME support.

2007-10-15  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_start_keymanager): New.
	* src/engine.c (engine_start_keymanager): New.
	* src/ext-commands.cpp (DoCommand): Call it.

2007-10-12  Werner Koch  <wk@g10code.com>

	* src/gpgol-rsrcs.rc: Remove.
	* src/dialogs.rc: Renamed from olflange-rsrcs.rc.
	* src/dialogs.h: Rename for olflange-ids.h.  Changed all includers.
	* src/Makefile.am: Adjust accordingly.

	* src/verify-dialog.c (verify_dialog_box): Do not distinguish
	languages.
	(verify_dlg_set_labels): New.
	(verify_dlg_proc): Call it.

	* src/passphrase-dialog.c (passphrase_callback_box): Do not
	distinguish languages.
	(decrypt_key_dlg_set_labels): New.
	(decrypt_key_dlg_proc): Call it.
	(decrypt_key_ext_dlg_set_labels): New.
	(decrypt_key_ext_dlg_proc): Call it.

	* src/recipient-dialog.c (recipient_dialog_box): Do not distinguish
	languages.
	(recipient_dialog_box2): Ditto.
	(recipient_dlg_set_labels): New.
	(recipient_dlg_proc): Call it.

2007-10-11  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (toolbar_add_menu): USe "@" to indicate a
	separator and "" to ski the entry.  Changed callers.

	* src/common.h (struct): Remove AUTO_SIGN_ATTACH.  Add ENABLE_SMIME.
	* src/main.c (read_options, write_options): Save the new option.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Implement new option and
	print warning.
	* src/mapihelp.cpp (mapi_change_message_class): Take care of
	enable_smime.

	* src/olflange-ids.h: Renumbered.
	* src/olflange-rsrcs.rc: Keep only the english dialog and changed all
	text to dummy texts.
	* src/olflange-dlgs.cpp (set_labels): New.
	(GPGOptionsDlgProc): Call it.
	* src/property-sheets.cpp (GetPages): Do not distinguish languages.
	* src/config-dialog.c (config_dialog_box): Ditto.
	(config_dlg_set_labels): New.
	* src/gpgol-rsrcs.rc (IDD_OPT): Move to olflange-rsrcs.rc and rename
	to IDD_EXT_OPTIONS.
	(IDD_OPT_DE): Remove.

2007-10-10  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Remove saveDecryptedAttachment.  Add
	smimeDefault.

2007-10-08  Werner Koch  <wk@g10code.com>

	* src/main.c (do_log): Remove trailing LF from w32 error message and
	also print the numeric error code.

2007-09-25  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Link against libassuan.

	* src/util.h (DIM, DIMof): New.

	* src/engine.c (filter_gpgme_read_cb): Implement nonblock feature.
	(filter_gpgme_write_cb): Ditto.

2007-09-24  Werner Koch  <wk@g10code.com>

	* src/common.c (standard_homedir, default_homedir): New.
	(w32_shgetfolderpath): Make static.

2007-09-21  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (build_mimeinfo): New.
	(finish_message): Store the mime structure.
	* src/mapihelp.cpp (mapi_get_message_class): New.
	(mapi_get_sig_status): New.
	(get_gpgolprotectiv_tag, get_gpgolsigstatus_tag)
	(get_gpgolattachtype_tag): Factored code out to ...
	(create_gpgol_tag): .. New.
	(get_gpgolmimeinfo_tag): New.
	(mapi_get_mime_info): New.

2007-09-20  Werner Koch  <wk@g10code.com>

	* src/user-events.cpp, user-events.h:  New.
	* src/olflange.h (class GpgolExt): Add member for it.
	* src/olflange.cpp (QueryInterface): Hook it in.

2007-09-19  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_has_sig_status): Return true if any sig
	status is present.
	(mapi_test_sig_status): New. Take semantics of the former
	mapi_has_sig_status.  Changed all callers.
	(mapi_change_message_class): Set sign status to n/a for other
	message classed.
	* src/mimemaker.c (finalize_message): Mark created messages.
	(write_buffer_for_cb): Rename from write_buffer_voidarg and return
	number of bytes written.
	(collect_signature): Return number of bytes written.

	* src/mapihelp.h (struct mapi_attach_item_s): New member
	PRIVATE_MAPITABLE.
	* src/mapihelp.cpp (mapi_create_attach_table)
	(mapi_release_attach_table): Keep the mapi table oben and put
	PR_ATATCH_NUM into the MAPIPOS member.
	(mapi_get_gpgol_body_attachment): Use PR_ATATCH_NUM.

	* src/mimeparser.c (finish_message): New.
	(mime_decrypt, mime_verify): Call it.

2007-09-17  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp: Print gpgme version.

2007-09-14  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c: Rewrote most of it.

2007-09-13  Werner Koch  <wk@g10code.com>

	* src/common.c (xrealloc): New.

2007-09-11  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_encrypt_data): New.

2007-09-08  Werner Koch  <wk@g10code.com>

	* src/engine.c: New.
	* src/engine.h: Rewrite.  Factor existing stuff out to ..
	* src/engine-gpgme.h: .. new.
	* src/engine-assuan.h, engine-assuan.c: New.

2007-09-07  Werner Koch  <wk@g10code.com>

	* src/common.c (qp_decode): Handle softe line breaks.

2007-09-06  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_body): New.

	* src/mimeparser.c (protocol_t): Move to .. common.h.

2007-09-05  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c, mimemaker.h: New.

2007-08-31  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_set_header): New.
	* src/message.cpp (pgp_mime_from_clearsigned): New.
	(message_verify): Use it.
	* src/main.c: Call srand ().
	* src/util.h (trailing_ws_p): New.
	* src/common.c (generate_boundary): New.

2007-08-30  Werner Koch  <wk@g10code.com>

	* src/message-events.h (class GpgolMessageEvents): Rename M_IS_SMIME
	to M_PROCESSED.
	* src/message-events.cpp (OnRead, OnReadComplete): Ditto.
	(OnReadComplete): Remove preview decryption stuff.
	(OnWriteComplete): Remove GpgMsg based code.
	* src/ext-commands.cpp (DoCommand): Ditto
	(InstallCommands): Do not init the watcher.
	* src/olflange.cpp (GpgolExt): Do not init the watcher.
	(GpgolExt): Do not clanup the watcher.
	* src/main.c (DllMain): Ditto.
	* src/gpgmsg.cpp, gpgmsg.hh: Remove.
	* src/watcher.cpp: Remove
	* src/pgpmime.c, pgpmime.h: Remove.

	* src/mapihelp.h (MSGTYPE_GPGOL_CLEAR_SIGNED)
	(MSGTYPE_GPGOL_PGP_MESSAGE): New.
	* src/mapihelp.cpp (mapi_get_message_type): Map them.
	(get_msgcls_from_pgp_lines): New.
	(mapi_change_message_class): Detect old old style PGP messages.
	(mapi_get_body_as_stream): New.
	* src/message.cpp (message_verify, message_decrypt): Handle them.
	* src/message-events.cpp (OnRead): Ditto.

2007-08-29  Werner Koch  <wk@g10code.com>

	* src/ext-commands.h (class GpgolExtCommands): Add members
	M_NCMDKEYMANAGER and M_NCMDDECRYPT.
	* src/ext-commands.cpp (GpgolExtCommands): Initialize it.
	(InstallCommands): Use them here instead of reusing another variable.
	(DoCommand, Help, QueryHelpText, QueryButtonInfo): Restructured
	for better readibility.

2007-08-21  Werner Koch  <wk@g10code.com>

	* src/w32-gettext.c (SUBLANG_BENGALI_BANGLADESH): Fix to 2 as per MSDN.
	(SUBLANG_PUNJABI_PAKISTAN): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_MOLDOVA): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_ROMANIA): Change to value 1 as per MSDN.

2007-08-13  Marcus Brinkmann  <marcus@g10code.de>

	* src/Makefile.am (gpgol_SOURCES): Add common.h.

2007-08-06  Werner Koch  <wk@g10code.com>

	Lots of changes to support S/MIME and to revamp most of the old
	code.  More changes to follow.  The list of changes below is not
	complete as it does not identfy all newly written code.

	* src/mimeparser.c: New. Based on pgpmime.c

	* src/display.cpp (update_display): Removed unused arg MSG.
	(update_display): Set the body to an empty string even if it is
	not HTML.

	* src/olflange.cpp (Install): Print OL version only once.

	* src/verify-dialog.c (verify_dialog_box): Add arg PROTOCOL.
	(load_sigbox): Ditto.
	(verify_dlg_proc): Changed title acccording to used protocol.

	* src/Makefile.am (gpgol_LDADD): Add libadvapi due to our use of
	CryptGenRandom.

	* src/main.c (get_crypt_random, initialize_session_key): New.
	(DllMain): Initialize the session key.
	(get_128bit_session_key, create_initialization_vector): New.

	* src/serpent.c: New.  Taken from libgcrypt 1.3.0 and stripped down to
	fit our needs.  Add CFB encryption API.
	* src/serpent.h: New.

	* src/mapihelp.cpp (mapi_mark_moss_attach): New.
	* src/mymapitags.h (PR_ATTACHMENT_HIDDEN): New.

	* src/display.cpp (open_inspector): New.

	* src/mapihelp.cpp (mapi_get_binary_prop): New.

	* src/engine-gpgme.c (op_verify_detached_sig_gpgme): Add arg
	PROTOCOL.  Changed all callers to pass the OPENPGP protocol.

	* src/common.c (b64_decode): Renamed from base64_decode and use new
	type for the context.
	(b64_init): New.
	* src/pgpmime.c (qp_decode, base64_decode): Move to common.c and make
	public.

	* src/common.h (STRICT): Remove.
	* src/intern.h: Rename to common.h.

2007-07-20  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (IOutlookExtItemEvents.): New.
	* src/item-events.h, item-events.cpp: New.
	* src/olflange.cpp (GpgolExt, QueryInterface): Hook it in.

2007-07-19  Werner Koch  <wk@g10code.com>

	* src/attached-file-events.cpp: Renamed from attach.c.
	* src/attached-file-events.h: Renamed from attach.h.  Removed some
	inlines to the impl file.

	* src/Makefile.am (gpgol_LDADD): Add libole32.

2007-07-18  Werner Koch  <wk@g10code.com>

	* src/mapihelp.c (log_mapi_property): Support STRIGN8 and UNICODE.

	* src/myexchext.h (IExchExtUserEvents, IExchExtSessionEvents): New
	declarations.
	* src/session-events.cpp, session-events.h: New.
	* src/olflange.cpp (GpgolExt, QueryInterface): Hook session-events in.

	* src/olflange.cpp (DllRegisterServer): Register only for interfaces
	we really use.
	(ext_context_name): New. Factored out from several places.
	(Install): Initialize for Session context.

	Renamed all CGPGExchExt* src/classes to Gpgol*.

	* src/olflange.h, olflange.cpp: Factor most code out to ..
	* src/ext-commands.cpp, ext-commands.h, message-events.cpp
	* src/message-events.h, property-sheets.cpp, property-sheets.h
	* src/ol-ext-callback.cpp, ol-ext-callback.h: .. New.

2007-07-17  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Add ws2_32.

	* src/main.c (log_window_hierarchy, do_log_window_hierarchy): New.
	* src/olflange.cpp (show_window_hierarchy): Replace by
	log_window_hierarchy.
	(g_initdll): Make static.
	(InstallCommands): Factor some code out to ..
	(toolbar_from_tbe, toolbar_add_menu): .. new.

	* src/mapihelp.c, mapihelp.h: New.
	* src/olflange.cpp (show_mapi_property): Factor out to mapihelp.c
	and rename to log_mapi_property.

2007-04-10  Werner Koch  <wk@g10code.com>

	* src/display.cpp (find_message_window): Add arg LEVEL for debugging.
	Ignore MsoCommand* src/Windows.  Fixes bug 735.

2006-10-14  Timo Schulz  <ts@g10code.de>

	* src/recipient-dialog.c (lv_get_item_param): New.
	(copy_item): Use it here to copy the opaque param.
	(recipient_dlg_proc): And here to avoid the hidden column.
	(initialize_rsetbox): Localize column names.

	* src/olflange.cpp (get_outlook_property): Free returned BSTR.
	(InstallCommands): Likewise.

2009-09-06  Timo Schulz  <ts@g10code.de>

	* src/recipient-dialog.c (recipient_dialog2): Do not free
	key array here.

2008-11-14  Werner Koch  <wk@g10code.com>

	Release 0.10.17.

2008-11-11  Werner Koch  <wk@g10code.com>

	Release 0.10.16.

2008-10-27  Werner Koch  <wk@g10code.com>

	* forms/gpgol-cs_de.cfg: New.

2008-08-21  Timo Schulz  <ts@g10code.de>

	* src/engine-gpgme.c (op_lookup_keys): Only add useable keys
	and add all invalid keys to unknown.
	* src/recipient-dialog.c (copy_item): Rewritten.
	(initialize_keybox): Add comment to clarify use of fnd_keys.
	(recipient_dialog_box): Simplified.
	(find_item): Support partial search.

2008-08-06  Werner Koch  <wk@g10code.com>

	Release 0.10.15.

	* forms/sign-l.ico, forms/sign-s.ico: New.
	* forms/encr-l.ico, forms/encr-s.ico: New

2008-08-04  Werner Koch  <wk@g10code.com>

	* Makefile.am (SUBDIRS): Add forms.
	* forms/Makefile.am: New.
	* forms/gpgol_de.cfg, forms/gpgol-ms_de.cfg: New.

2008-06-04  Werner Koch  <wk@g10code.com>

	* doc/gpgol.texi (Assuan Protocol): Remove protocol specs.  They
	are now part of the GPGME manual.

2008-05-28  Werner Koch  <wk@g10code.com>

	* Release 0.10.14.

2008-05-06  Werner Koch  <wk@g10code.com>

	* Release 0.10.13.

2008-04-16  Werner Koch  <wk@g10code.com>

	* Release 0.10.12.

2008-04-04  Werner Koch  <wk@g10code.com>

	* Release 0.10.11.

2008-04-02  Werner Koch  <wk@g10code.com>

	* Release 0.10.10.

2008-04-01  Werner Koch  <wk@g10code.com>

	* configure.ac (AC_INIT): Fix quoting.

2008-03-19  Werner Koch  <wk@g10code.com>

	* Release 0.10.9.

2008-03-18  Werner Koch  <wk@g10code.com>

	* Release 0.10.8.

2008-03-11  Werner Koch  <wk@g10code.com>

	* Release 0.10.7.

2008-03-10  Werner Koch  <wk@g10code.com>

	* Release 0.10.6.

2008-03-07  Werner Koch  <wk@g10code.com>

	* configure.ac (SVN_REVISION): New AC_DEFINE.

2008-03-06  Werner Koch  <wk@g10code.com>

	* doc/gpgol.texi (SIGN): Extend the SIGNER command to allow
	suggestion of a protocol.

2008-02-18  Werner Koch  <wk@g10code.com>

	Release 0.10.5 development version.

2008-02-15  Werner Koch  <wk@g10code.com>

	* po/de.po: Describe more explicit on how to start the UI-server.

2008-02-06  Werner Koch  <wk@g10code.com>

	Released 0.10.4 development version.

2006-12-13  Werner Koch  <wk@g10code.com>

	* po/LINGUAS: Added sv.

2007-12-10  Werner Koch  <wk@g10code.com>

	Released 0.10.3 development version.

2007-11-12  Werner Koch  <wk@g10code.com>

	Released 0.10.2 development version.

2007-10-22  Werner Koch  <wk@g10code.com>

	Released 0.10.1 development version.

2007-10-12  Werner Koch  <wk@g10code.com>

	* po/POTFILES.in: Add more files.

2007-10-11  Werner Koch  <wk@g10code.com>

	Released 0.10.0 development version.

2007-10-05  Werner Koch  <wk@g10code.com>

	* doc/: New.
	* doc/Makefile.am: New.
	* doc/gpgol.texi: New.
	* doc/gpl.texi: New.

2007-09-25  Werner Koch  <wk@g10code.com>

	* configure.ac: Check for libassuan.

2007-09-17  Werner Koch  <wk@g10code.com>

	* autogen.sh (FORCE): Add --force option.

2007-08-13  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac (svn_revision): Update to latest version from gnupg.

2006-12-13  Daniel Nylander <po@danielnylander.se>  (wk)

	* po/sv.po: New.

2006-10-13  Werner Koch  <wk@g10code.com>

	Released 0.9.91.

2006-08-28  Werner Koch  <wk@g10code.com>

	Released 0.9.90.

2006-08-19  Timo Schulz  <ts@g10code.de>

	* src/olflange-rsrcs.rc: Correct some dialog sizes.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Automatically
	select the secret key if only one is available.
	* src/config-dialog.c (GPGOptionsDlgProc): Passphrase cache
	time is now requested in minutes but still internally
	stored as seconds.

2006-08-15  Timo Schulz  <ts@g10code.de>

	* src/decrypt.bmp, encrypt.bmp: Restore format.
	* src/olflange.cpp (OnWriteComplete): Correct exit code handling.
	* src/recipient-dialog.c (initialize_rsetbox): Correct column width.
	(recipient_dlg_proc): Do not show the cancel error any longer.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Likewise.
	(decrypt_key_ext_dlg_proc): Ditto.
	* src/olgpgcore.def: Deleted unused file.

2006-06-14  Timo Schulz  <ts@g10code.com>

	* src/gpgol-rscs.rc (IDD_OPT): The English version of the dialog
	has no log file item. Add it.

2006-05-22  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_sigbox): A sigsum of 0 also indicates
	a valid (good) signature.

2006-04-25  Werner Koch  <wk@g10code.com>

	Released 0.9.10.

	* src/xmalloc.h: New.  Moved prototypes from util.h
	* src/w32-gettext.h:  Include it.
	* src/common.c (utf8_to_wincp): Removed and replaced all callers by
	utf8_to_native.
	* src/common.c (wchar_to_utf8, utf8_to_wchar): Moved to ..
	* src/w32-gettext.c: .. here.
	(utf8_to_native): Make sure that we always return
	a string and never NULL.
	(native_to_utf8): New.
	(native_to_wchar): New.
	* src/gpgmsg.cpp (decrypt): Use native_to_utf8 for i18n strings
	expected to be utf-8.
	* src/pgpmime.c (pgpmime_decrypt, pgpmime_verify): Ditto.

2006-04-24  Werner Koch  <wk@g10code.com>

	Released 0.9.9.

	* configure.ac: Use M4 macros to get the actual SVN revision.

	* src/gpgmsg.cpp (decrypt): New arg INFO_ONLY.
	* src/olflange.cpp (OnReadComplete): Add code to call decrypt but with
	INFO_ONLY if preview decryption has not been requested.
	* src/main.c (read_options): New compatibility option no_preview_info.

	* src/gpgmsg.cpp (getRecipients): Don't add the default key here.
	(encrypt_and_sign): But do it here.
	* src/engine-gpgme.c (op_get_one_key): New.

2006-04-22  Timo Schulz  <ts@g10code.com>

	* src/common.c (utf8_to_wincp): Corrected utf8 decoding.
	* src/passphrase-dialog.c (load_recipbox): Likewise.
	* src/olflange-dlg.cpp (GPGOptionsDlgProc): Activate the
	'confirm' button when the dialog state has been changed.
	* src/olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Change description.

2006-03-28  Werner Koch  <wk@g10code.com>

	* src/olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Add new control box.
	(IDD_GPG_OPTIONS): Updated to match German version.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Ditto.
	* src/gpgmsg.cpp (decrypt): Implemented PREFER_HTML option.
	(get_long_attach_data): New.

2006-03-27  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_verify_detached_sig_gpgme): New.

	* src/pgpmime.c (pgpmime_verify): New. First take on a PGP/MIME
	signature verification.

	* src/gpgmsg.cpp (is_pgpmime): Renamed to is_pgpmime_enc.
	(class GpgMsgImpl): Niew members media_type. media_subtype and
	ct_protocol.
	(get_msg_content_type): New.
	(decrypt): Show a warning for PGP/MIME signed messages.

2006-03-26  Werner Koch  <wk@g10code.com>

	* src/intern.h: New option PREFER_HTML.
	* src/main.c (write_options, read_options): Ditto.

2006-03-21  Werner Koch  <wk@g10code.com>

	Released 0.9.7.

2006-03-20  Werner Koch <wk@g10code.com>

	* src/olflange.cpp (Install): Also check major part of build version.

2006-03-17  Timo Schulz  <ts@g10code.com>

	* src/w32-gettext.c (utf8_to_native): Make it global.
	* src/config-dialog.c (get_open_file_name): Make sure the selected
	file really exists.
	* src/passphrase-dialog.c (decrypt_dlg_proc): UTF8 conversion.
	(passphrase_callback_box): Likewise.
	* src/recipient-dialog.c (recipient_dlg_proc): Likewise.
	* src/verify-dialog.c (load_akalist): Likewise.
	(load_sigbox): Likewise.
	* src/common.c (utf8_to_wincp): New.

2006-03-15  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (Install): Print gpgol version for debugging.

2006-03-14  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_dlg_proc): When used
	as a signing key selection dialog, use a different title.
	* src/gpgol-rsrcs.rc: Use German titles for German dialog versions.

2006-02-23  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Set default caching time to 10 minutes.

2006-01-26  Werner Koch  <wk@g10code.com>

	Released 0.9.6.

2006-01-16  Werner Koch  <wk@g10code.com>

	* src/verify-dialog.c (load_sigbox): Give a hint in case of a bad
	signature.

	* src/gpgol-rsrcs.rc (IDD_ENC_DE): Add an informational header.

2005-12-07  Werner Koch  <wk@g10code.com>

	Released 0.9.5.

2005-12-07  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (Install): Check the version and print a warning.

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Simplified the default
	key code.

	* src/config-dialog.c (store_config_value): Create key if it does not
	exists.
	(load_config_value_ext): Removed.

2005-12-06  Werner Koch  <wk@g10code.com>

	Released 0.9.4.

2005-12-06  Werner Koch  <wk@g10code.com>

	* src/config-dialog.c (start_key_manager): Don't pass the options to
	access.

2005-12-06  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (getRecipients): Add the default key to the list of
	recipients.
	* src/recipient-dialog.c (recipient_dlg_proc): Add the already found
	keys to the selected ones.

	* src/olflange.cpp (OnWriteComplete): Need to disable the deleting of
	HTML bodys.

2005-12-05  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Add -loleaut32.
	* src/engine-gpgme.c (op_verify_detached_sig_mem): New.
	* src/olflange.cpp (OnWriteComplete): Pass HTML flag to sign call.
	(put_outlook_property): Need to use a BSTR for the sake of putting
	HTMLBody.
	* src/gpgmsg.cpp (sign): Add arg WANT_HTML.
	(free_attach_info): New.  Use it in the destructor.
	(createHtmlAttachment): New.
	(encrypt_and_sign, sign): Use it here.
	(writeAttestation): Don't write an empty attestation.

2005-12-02  Werner Koch  <wk@g10code.com>

	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New.

	* src/verify-dialog.c (verify_dialog_box): Actually allow for German
	dialog.
	* src/recipient-dialog.c (recipient_dialog_box)
	(recipient_dialog_box2): Ditto.
	* src/passphrase-dialog.c (signer_dialog_box)
	(passphrase_callback_box): Ditto.

	* src/intern.h (struct): New field PREVIEW_DECRYPT.  Use it instead os
	the old compatibility flags.
	* src/main.c (write_options, read_options): Store/load preview decrypt.
	* src/config-dialog.c (config_dlg_proc): Removed homedir and gpgbinary
	options as they are deprecated. Put logfile entry here.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Remove logfile entry. Add
	preview-decrypt checkbox.
	* src/olflange.cpp (InstallCommands): Remove experimental preview
	command.

	* src/w32-gettext.c (gettext_localename): New.
	* src/config-dialog.c (config_dialog_box): Use it here to match the
	gettext behaviour.
	(GetPages): Ditto.

2005-12-01  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_decrypt_stream_to_gpgme, decrypt_stream)
	(op_decrypt): Add arg PREVIEW_MODE.
	* src/pgpmime.c (pgpmime_decrypt): New arg PREVIEW_MODE.
	(struct pgpmime_context): New field PREVIEW.
	(message_cb, plaintext_handler): Handle preview mode.
	* src/gpgmsg.cpp (class GpgMsgImpl): Renamed SILENT to PREVIEW.
	(setSilent): Renamed to ..
	(setPreview): .. this.
	(decrypt): Handle preview mode.  Display a string while decrypting
	PGP/MIME messages.

	* src/display.cpp (update_display): New arg TEXT.
	* src/gpgmsg.cpp (class GpgMsgImpl): Removed BODY_PLAIN and BODY.
	(getDisplayText): Removed.
	(loadBody): Changes to return the allocated body.
	(getOrigText): Removed.
	(getMessageType): Rewritten to take the body text as argument.
	(decrypt): Pass plaintext directly to update_display.  Free
	plaintext.
	(sign, encrypt_and_sign): Likewise.

	* src/olflange.cpp (OnWriteComplete): Always delete PR_BODY on error.

2005-11-30  Werner Koch  <wk@g10code.com>

	* po/de.po: New.

	* po/: New; created by autopoint.
	* po/Makevars: New.
	* m4/Makefile.am: Add new m4 files.
	* autogen.sh: Detect gettext.
	* configure.ac: Check for gettext.

	* src/gpgmsg.cpp: Made more strings translatable.
	* src/olflange.cpp: Replaced all LoadStrings by gettext calls.
	* src/olflange-ids.h: Removed the IDS_ constants.
	* src/olflange-rsrcs.rc: Removed the stringtables.

	* src/common.c (get_root_key, read_w32_registry_string): New.  Taken
	for libgpg-error.
	* src/main.c (i18n_init): New.
	(DllMain): Call it.
	(get_locale_dir, drop_locale_dir): New.

	* src/w32-gettext.c, w32-gettext.h: New.  Taken form libgpg-error.
	Slightly modified due to the fact that gpgol is W32-only.
	* src/util.h (_, N_): Define standard i18n macros.

	* src/display.cpp (set_message_body): Do not delete a RTF property.

	* src/util.h (SRCNAME): New.  Changed all __FILE__ to this.
	* src/main.c (log_srcname): New.

2005-11-20  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (loadBody): For HTML try to read the HTMLBody from
	the OOM as a last resort.
	* src/olflange.cpp (get_outlook_property): New.
	(put_outlook_property_int): New.

2005-11-15  Werner Koch  <wk@g10code.com>

	* configure.ac (BUILD_TIMESTAMP): Include SVN revision.
	(AM_INIT_AUTOMAKE): Fixed invocation.

	* src/Makefile.am (gpgol_LDADD): Remove -lintl for now.

	* src/olflange.cpp (OnWriteComplete): Make sure that we don't sent out
	unencrypted stuff on error.
	* src/display.cpp (set_message_body): Add arg IS_HTML.
	(update_display): Ditto.

	* src/gpgmsg.cpp (loadBody): New arg WANT_HTML.
	(getOrigText): Ditto.

	* src/olflange.h (class CGPGExchExtMessageEvents): Add M_WANT_HTML.
	* src/olflange.cpp (OnWrite): Set it.
	(OnWriteComplete): Pass its value to the encrypt functions.

2005-11-10  Werner Koch  <wk@g10code.com>

	* configure.ac: Use MS style bitfields.

	* src/config-dialog.c (start_key_manager): Changed invocation of
	default keymanager.

2005-10-21  Marcus Brinkmann  <marcus@g10code.de>

	* m4/gpg-error.m4: New file.
	* configure.ac: Also check for gpg-error.

	* src/Makefile.am (libgpgme.a, libgpgme.a): New targets.
	(gpgol_DEPENDENCIES): Add libgpgme.a and libgpg-error.a.
	(clean-local): Likewise.
	(gpgol_LDADD): Link to these local versions statically.

2005-10-20  Marcus Brinkmann  <marcus@g10code.de>

	* src/mapi32.def: New file.
	* src/Makefile.am (gpgol_DEPENDENCIES): New variable.
	(libmapi32.a): New target.
	(gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".
	(clean-local): New target.

2005-10-19  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (sign, encrypt_and_sign): Don't set the body first to
	empty. If this is really required we should do this in
	set_message_body.
	(sign): Save changes. Set content type to text/plain.
	(encrypt_and_sign): Save changes also for empty bodies.

2005-10-06  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac: Change AC_CONFIG_SRCDIR argument to src/gpgol.def.

2005-10-06  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (writeAttestation): Use gpgme_free for BUFFER.
	* src/engine-gpgme.c (data_to_file): Ditto.

2005-10-06  Marcus Brinkmann  <marcus@g10code.de>

	* src/Makefile.am (gpgol_DEPENDENCIES): New variable.
	(libmapi32.a): New target.
	(gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".

	* src/Makefile.am (gpgol_LDADD): Prefix gpgol.def and mapi32.dll with
	$(srcdir).

	* src/Makefile.am (.rc.o): Invoke windres with "-I .".

	* src/Makefile.am (.rc.o): Invoke windres with -I $(srcdir).

	* src/Makefile.am (gpgol_SOURCES): Add util.h.

2005-09-29  Werner Koch  <wk@g10code.com>

	Released 0.9.3.

2005-09-29  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (encrypt_and_sign): Pass signing key to encryption
	function.

	* src/passphrase-dialog.c (signer_dialog_box): New arg encrypting.

	* src/gpgmsg.cpp (encrypt_and_sign): Set content type.

	* src/engine-gpgme.c (op_lookup_keys): Fixed multiple key detection.

2005-09-28  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (DoCommand): Catch close command and resend to
	avoid the "save changes?".

	* src/display.cpp (update_display): Take care of utf-8 issues.
	* src/common.c (latin1_to_utf8): New.
	* src/pgpmime.c (latin1_data_write): New.
	(plaintext_handler): Use it here.
	(message_cb): Detect utf-8 encoding.

	* src/main.c (read_options): Make sure that compat flags are always
	properly initialized.

	* src/display.cpp (find_message_window): First try to find the window
	by class name.

	* src/common.c (wchar_to_utf8_2): New.

2005-09-27  Werner Koch  <wk@g10code.com>

	* src/pgpmime.c (pgpmime_decrypt): Pass a pseduo filename to the
	decryption function.

	* src/verify-dialog.c (load_sigbox): Get key direct from gpgme.
	* src/passphrase-dialog.c (load_secbox, load_recipbox): Reworked.
	(decrypt_key_dlg_proc, decrypt_key_ext_dlg_proc): Reworked.
	(count_keys, release_keyarray): New.
	(signer_dialog_box, passphrase_callback_box): Adjusted to above
	changes.
	* src/engine-gpgme.c (op_deinit): Remove keycache cleanup.
	* src/Makefile.am (gpgol_SOURCES): Removed keycache.c, keycache.h.
	* src/keycache.c, keycache.h: Removed.

	* src/recipient-dialog.c (recipient_dialog_box)
	(recipient_dialog_box2): Rewritten and changed interface.
	(load_rsetbox): Removed keycache stuff and rewrote to make use of
	the keyarray.
	(copy_item, initialize_keybox, recipient_dlg_proc): Ditto.
	(keycache_to_key_array): Removed.
	* src/engine-gpgme.c (op_lookup_keys): Rewritten, changed interface.
	* src/gpgmsg.cpp (count_recipients): Renamed to ..
	(count_strings): .. this.
	(count_keys): New.
	(free_recipient_array): Renamed to ..
	(free_string_array): .. this.
	(encrypt_and_sign): Adjusted for changes in op_lookup_keys and
	recipient_dialog_box2.

2005-09-26  Werner Koch  <wk@g10code.com>

	* src/passphrase-dialog.c (get_pubkey_algo_str): Add DSA and old
	Elgamal.

	* src/gpgmsg.cpp (gatherAttachmentInfo): Ignore attachments we can't
	open.

	* src/main.c (write_options): Print message on error.  Rearranged to
	make use of a table for all options.

2005-09-23  Werner Koch  <wk@g10code.com>

	* src/recipient-dialog.c (recipient_dlg_proc): Removed
	IDC_ENC_OPTARMOR stuff; it was not used.
	(load_rsetbox): Fixed detection of encryption capability.

	* src/gpgol-ids.h, gpgol-rsrcs.rc: Ditto.

2005-09-22  Werner Koch  <wk@g10code.com>

	Released 0.9.2.

2005-09-22  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (decrypt_stream): Use gpgme_op_decrypt_verify.

	* src/gpgmsg.cpp (gatherAttachmentInfo): Ignore attestations when
	checking for pgp/mime.

	* src/pgpmime.c (pgpmime_decrypt): Added arg HWND.
	(message_cb, plaintext_handler): Write attachments.
	* src/pgpmime.c (base64_decode): New.
	* src/rfc822parse.c (parse_field): Treat Content-Disposition special.

	* src/gpgmsg.cpp (get_save_filename): Moved to ..
	* src/common.c (get_save_filename): .. here.

2005-09-20  Timo Schulz  <ts@g10code.com>

	* src/attach.c: New.
	* src/attach.h: New.
	* src/olflange.cpp (CGPGExchExt): Allocate class for
	attached file events.
	(QueryInterface): Return interface pointer for
	attached file events.
	* src/passphrase-dialog.c (load_secbox): Use new GPGME
	interface.
	(get_pubkey_algo_str): New.
	* src/verify-dialog.c (load_sigbox): Likewise.
	* src/recipient-dialog.c (load_recipbox): Likewise.

2005-09-19  Werner Koch  <wk@g10code.com>

	Released 0.9.1.

2005-09-19  Werner Koch  <wk@g10code.com>

	* src/msgcache.c (flush_if_needed): New.
	(msgcache_put): use it.
	* src/intern.h (opt): New compatibility flags AUTO_DECRYPT and
	NO_ATTESTATION.
	* src/olflange.cpp (InstallCommands): Use watcher stuff only when this
	option has been enabled.
	* src/gpgmsg.cpp (decrypt): Take care of NO_ATTESTATION.
	* src/main.c (DllMain): Removed debug output; this should not be
	used before initialization!
	* src/watcher.cpp: Include config.h.  Removed weird line endings.
	* src/gpgmsg.cpp (encrypt_and_sign): Call SaveChanges.

2005-09-15  Timo Schulz  <ts@g10code.com>

	* src/util.h: Provider watcher prototypes.
	* src/watcher.cpp (watcher_init_hook): New.
	(watcher_free_hook): New.
	(watcher_set_callback_ctx): New.
	(cbt_proc): New.
	* src/display.cpp (find_message_window): Removed GpgMsg param.
	Changed all callers.

2005-09-15  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (OnWriteComplete): Take care of EEME_FAILED.
	(OnWrite): Check that we are encrypting only plain text messages.

	* src/myexchext.h: Add flags used by OnReadComplete.

2005-09-14  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (writeAttestation): Add a content type.
	(gatherAttachmentInfo): Detect whether we already have an attestation.
	(decrypt): Don't create duplicate attestations.
	(writeAttestation): Translate LF to CRLF.

2005-09-13  Werner Koch  <wk@g10code.com>

	* src/pgpmime.c (pgpmime_decrypt): New arg ATTESTATION.
	* src/engine-gpgme.c (add_verify_attestation): New.
	(op_decrypt, op_verify_detached_sig, op_verify_detached_sig)
	(op_verify_detached_sig): Add new arg ATTESTATION.  Changed all
	callers.
	(at_sig_summary, at_sig_validity, add_verify_attestation): New.
	The code has been taken and modified from Mutt's crypt-gpgme.c and
	entirely been writen by g10 Code.
	(at_fingerprint): Ditto.

	* src/gpgmsg.cpp (class GpgMsgImpl): New member ATTESTATION.  Use it
	in all calls to the functions above.

	* src/gpgmsg.cpp (decryptAttachment, decrypt): Save plaintext back
	into the MAPI if desired.

2004-09-08  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (lod_recipbox): Use gpgme directly
	to resolve the keyids to userids.
	* src/usermap.c, usermap.h: Removed.
	* src/HashTable.cpp, HashTable.h: Removed.

2005-09-07  Timo Schulz  <ts@g10code.com>

	* src/common.c: Removed unused code.
	* src/intern.h: Likewise.

2005-09-07  Timo Schulz  <ts@g10code.com>

	* src/olflange.cpp (ul_release): New. Wrapper with error checking
	around UlRelease.
	(InstallCommands): Separate test for type and if string is empty.

2005-09-06  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_decrypt_stream): Factored most code out to ..
	(decrypt_stream): .. new.
	(op_decrypt_stream_to_buffer): Simplified accordingly.  Fixed
	possible buffer overflow when trying to make it a string.
	(op_decrypt_stream_to_gpgme): New.

	* src/pgpmime.c, pgpmime.h: New.
	* src/rfc822parse.h, rfc822parse.c: New.  Taken from GnuPG 1.9.

2005-09-06  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (get_open_file_name): Correctly terminated filter.
	New parameter for the title. Changed all callers.
	(get_folder): Likewise.

2005-09-04  Werner Koch  <wk@g10code.com>

	Released 0.9.0.

2005-09-01  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (get_pgp_armor_type): New.
	(gatherAttachmentInfo):  Enhanced to detect text/plain pgp.
	(verify): Removed.
	(decrypt): Do clearsig verification here.

	* src/gpgmsg.cpp (decrypt): Kludge to workaround OL not updating a
	window.
	* src/msgcache.c (msgcache_get_from_mapi): New.
	* src/display.cpp (find_message_window): Don't use the GpgMsg function
	to to the string compare.
	* src/gpgmsg.cpp (matchesString): Removed.

	* src/msgcache.c (msgcache_set_active): Removed.
	(msgcache_get): Rewritten.
	(msgcache_put): Now uses PR_CONVERSATION_INDEX as key.  Update
	existing entries.

	* src/olflange.cpp (OnRead): Removed msgcache_set_active.
	(InstallCommands): Now uses the ConversationIndex to match the
	reply with the message.

2005-08-31  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (DllRegisterServer): Define a CLSID and set the
	ThreadingModel.

2005-08-30  Werner Koch  <wk@g10code.com>

	Renamed project from "outlgpg" to "gpgol".

	More or less finished this major rewrite.

2005-08-26  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp, MapiGPGME.h: Removed.
	* src/display.cpp, display.h: New.

2005-08-23  Werner Koch  <wk@g10code.com>

	* src/msgcache.c, msgcache.h: New.

2005-08-22  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp: Major cleanups and partly rewrites.

2005-08-18  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp, gpgmsg.hh: New.

2005-08-17  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (setMessageAccess): Removed as it was only used at
	one place.
	(setRTFBody): Use the above code here directly..
	(setWindow, setMessage): Removed.  We can't use that because there
	is only one instance of this class.
	(decrypt): Add args HWND and MSG.  Changed caller.
	(getBody): Changed to ..
	(get_body): .. plain function and add new arg MSG.  Changed all
	callers.
	(isHtmlMessage): Likewise changed to ..
	(is_html_message): .. plain function and add new arg MSG.
	(doCmd): Removed.

	* src/common.c (utf8_to_wchar): New.

	* src/MapiGPGME.cpp (passphraseCallback): Removed.
	(getPassphrase, clearPassphrase, storePassphrase): Removed.
	(add_html_line_endings): Rewritten.

	* src/engine-gpgme.c (op_sign_encrypt_start): Removed because it is
	not used anywhere.
	(op_sign): Renamed to ..
	(do_sign): .. this and made local.

2005-08-16  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (signAttachment): Simplified.
	* src/engine-gpgme.c (op_sign_file): Add arg TTL.
	(op_sign_file_ext): Removed.
	(op_sign_file_next): Renamed to ..
	(do_sign_file): .. this and made local.
	(do_sign_file): Updated to use new passphrase callback
	semantics.
	(op_decrypt_file): Ditto.
	(free_recipients): Need to use gpgme_key_release and not just
	free.

	* src/engine-gpgme.c (do_decrypt): Factored some code out to ..
	(update_passphrase_cache): .. new.
	(op_sign_encrypt_file): Updated to use new passphrase callback
	semantics.

	* src/MapiGPGME.cpp (getBody): Properly distinguish property types.
	(delete_buf): Removed macro.  We now use malloc for the body
	string.  Changed other places to use delete directly for clarity.
	(fail_if_null): Removed.  Replaced by direct tests and a call to
	out_of_core.
	(setDefaultKey): Now use malloc/free instead of new/delete.
	Changed at other places too.
	(getDefaultKey): Changed to return a const char *.

	* src/common.c (wchar_to_utf8): New.
	(out_of_core): Made global and call abort after displaying the
	message box.

2005-08-14  Werner Koch  <wk@g10code.com>

	* configure.ac: Build src/versioninfo.rc.

2005-08-14  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (log_debug_w32): New.
	(do_log): New arg W32ERR.  Make sure to print a trailing LF.

	* src/passphrase-dialog.c (passphrase_callback_box): Revamped.
	(free_decrypt_key): Wipe out a passphrase.  Remove superfluous
	variable clearing.
	* src/util.h (wipememory2, wipememory): New.
	(wipestring): New.
	* src/engine-gpgme.c (op_decrypt): Renamed to ..
	(do_decrypt): .. this and made local.
	(clear_error_if_cancel): Removed as we inlined the code.
	(do_decrypt): Cleaned up.
	* src/main.c (DllMain): Initialize passcaching subsystem.
	* src/passcache.c, passcache.h: New.
	* src/intern.h: Include it here.
	* src/util.h: New.

	* src/olflange.cpp (DllRegisterServer): Remove key for the old
	versions of this plugin.

	Merged olgpgmain.dll and olgpgcore.dll into outlgpg.dll.

	* src/Makefile.am: Renamed target to outlgpg. Added required files.
	* src/olflange.cpp, olflange.h: Renamed from GPGExch.cpp and
	GPGExch.h.  Removed all the MFC cruft as it is not required - it
	was only used to get hands on the hInstance of the DLL; chnaged
	that to use the glob_hinst which gets set by DllMain.
	* src/outlgpg.def: New.
	* src/olflange-def.h: New.
	* src/olflange-dlgs.cpp: Renamed from GPGOptionsDlgs.cpp.
	* src/olflange-ids.h: Renamed from ../olflange/resource.h
	* src/olflange-rsrcs.rc: Renamed from ..olflange/olgpgmaindlgs.rc and
	stripped off unneedded stuff.
	* src/olgpgcoredlgs.rc: Renamed to ..
	* src/outlgpg-rsrcs.rc: .. this and stripped of cruft.
	* src/olgpgcoredlgs.h: Renamed to ..
	* src/outlgpg-ids.h: .. this.
	* src/versioninfo.rc.in: New.

2005-08-12  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (sotre_extension_value, load_extension_value):
	Adjust registry key.

2005-08-12  Werner Koch  <wk@g10code.com>

	* src/intern.h: Moved keycache prototypes to keycache.h.
	* src/MapiGPGME.cpp (lock_log, unlock_log): New.
	* src/engine-gpgme.c (op_init): Check GPGME version.
	* src/main.c (outlook_gpg_get_version): Removed as it is now derived
	from config.h.
	(DllMain): Initializes gpgme and mapigpgme.
	* src/MapiGPGME.cpp (initialize_mapi_gpgme): New.

	* src/config-dialog.c (store_extension_value, load_extension_value):
	Changed key to "OutlGPG".

	* src/MapiGPGME.h (class MapiGPGME): New methods versionString and
	showVersion.  Breaks ABI but it doesn't matter as we are also
	going to change the name of the project.

	* src/Makefile.am: Renamed target to olgpgcore.
	* src/resource.h: Renamed to ...
	* src/olgpgcoredlgs.h: .. and removed cruft from generator.
	* src/gpgmedlgs.rc: Renamed to ..
	* src/olgpgcoredlgs.rc: ... and removed cruft.
	* src/libgpgmedlgs.def: Renamed to ..
	* src/olgpgcore.def: .. this.

2005-08-11  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (log_debug): New.  Rewrote the whole log stuff.
	It is not anymore per instance.
	(logDebug): New version with va_list arg.

	* src/MapiGPGME.cpp (passphraseCallback): Use gpgme_error_t becuase
	C++ enforces enum types.

	* src/engine-gpgme.c (op_lookup_keys): s/id/names/.  id is a reved
	word Obj-C and it is good style not to use it in plain C code.
	(op_sign_file_next): Use gpgme_passphrase_cb_t in declaration.
	(op_decrypt_next): Ditto.

	* src/MapiGPGME.cpp (count_recipients): Renamed from countRecipients
	method, made local and changed both callers.
	(log_key_info): Changed output format.  New arg PREFIX. Changed
	callers.
	(add_html_line_endings): Renamed from addHtmlLineEndings method
	and made local.
	(logDebug): Open in text mode.  Removed all superfluous "\r" from
	callers.

2005-08-10  Werner Koch  <wk@g10code.com>

	* configure.ac: Check for and define DLLTOOL.

2005-08-09  Timo Schulz  <ts@g10code.com>

	* src/main.c (outlook_gpg_get_version): New.
	Use same version as the Outlook GPG plugin.

	* src/MapiGPGME.cpp [!__MINGW32__]: Changed sequence of include files.

2005-08-09  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (userid_from_key, keyid_from_key): New. Changed
	all calls to the deprecated gpgme_key_get_string_attr function by
	these.

	* src/MapiGPGME.h, MapiGPGME.cpp: Splitted into interace and
	implementation.
	* src/HashTable.h (class HashTable): No need to dll export anything.

2005-08-08  Werner Koch  <wk@g10code.com>

	* src/common.c (w32_shgetfolderpath): Added.
	* src/config-dialog.c (load_config_value_ext): use it here.

2005-07-21  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (decrypt): Only return if no valid PGP
	data was found and the message has no attachments.
	* src/engine-gpgme.c (op_encrypt): Use --textmode to fix
	problems when the recipient OS has different line endings.
	For example Win32->Linux.

2005-07-20  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (addHtmlLineEndings): New.
	(encrypt):Use it here.
	(signEncrypt): Likewise. Free memory in case of errors.
	(decrypt): Free memory in case of the verify procedure.
	Issue a warning when the text of the mail could not be
	updated.
	(isMessageEncrypted): New.
	(countAttachments): Check for null pointers.
	(clearPassphrase): Likewise.
	* src/config-dialog.c (store_config_value): Support '%val%' input.
	* src/verify-dialog.c (load_akalist): Return the number of user-ids
	which were added.
	* src/passphrase-dialog.c (load_secbox): Make sure we really start
	to add the item data at the begin.
	* src/intern.h: Fixed GCC compiler problem.

2005-07-19  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (encrypt): Handle cancel.
	(encryptAttachments): If no attachments exist, close the table.
	(decryptAttachments): Likewise.
	(signAttachments): Likewise.
	(isHtmlBody): New.
	(isHtmlMessage): New.
	(setBody): Html support.
	(encrypt): Figure out if message is html and encode the right body.
	(signEncrypt): Likewise.
	(verify): Always use the non-html body for GPG input.
	(decrypt): Likewise.

	* src/engine-gpgme.c (recipient_dialog_box2): Set cancel flag.
	(op_sign_start): Handle cancel.
	(recipient_dlg_proc): Make sure there is at least one selected
	key. Disable armor checkbox.

2005-07-19  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (~MapiGPGME): After releasing the
	memory, set all pointers to NULL. It seems that NT5
	bases operating systems are more pedantic with such
	issues than 9X based systems.
	(freeUnknownKeys): Likewise.
	(freeRecipients): Likewise.
	(encrypt): Outlook 2003 returns a body string which
	is not NULL but \0 with a length of 0. Handle it.
	(sign): Likewise.
	(signEncrypt): Likewise.

	* src/engine-gpgme.c (free_recipients): New.
	(op_encrypt_start): Handle cancel and free memory.


2005-07-18  Timo Schulz  <ts@g10code.com>

	* src/gpgmedlgs.rc: Native language support for German.

2005-07-14  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp: Add some missing MAPI constants.
	(passphrase_callback_box): Repair cancel button.
	(decrypt): If the user cancels the operation, do not
	alter the message text.
	* src/config-dialog.c (expand_path): New. From WinPT.
	(load_config_value): Support for REG_EXPAND_SZ.
	Suggested by Sebastian.

2005-07-13  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (sign): Ignore empty bodies.
	(signEncrypt): Likewise. Free recipient memory.
	(encrypt): Modify code so it really works.
	(attachPublicKey): New.
	* src/engine-gpgme.c (op_export_keys): New.

2005-07-12  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (displayError): New.
	(writeOptions): Use it here. Simplify the code.
	(signAttachments): New.
	(sign): Sign attachments. Noted by Ralf.
	(processAttachment): Support for sign-only.

2005-07-08  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (setEnableLogging): New.
	(getEnableLogging): New.
	(logDebug): Move all logging code to this function.
	(readOptions): Automatically enable logging if the
	'LogFile' registry entry is valid.
	(prepareLogging): New.
	(readOptions): Properly handle ""-strings.
	* src/config-dialog.c (does_file_exist): Allow to have
	parameters like '--keymanager' and cut them off before
	checking the existence.
	(start_key_manager): Free memory.
	(config_dlg_proc): Initialize pointer to 'NULL'.
	(SHFree): New. Special function to handle shell memory.
	(get_folder): Free memory.
	(does_folder_exist): New.

2005-07-06  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp: s/ATTR_/ATT_.
	(saveDecryptedAttachment): Cut off the prefix.
	(clearConfig): New.
	(clearObject): New.
	(MapiGPGME): Use it here.

	Use ATT_PREFIX instead of a hardcoded string.

	* src/engine-gpgme.c
	(op_sign_file_next): New.
	(op_sign_file): Call op_sign_file2.
	(op_sign_file_ext): New.

2005-07-05  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (readOptions, writeOptions):
	Support for the new 'auto sign attachment' flag.
	(signAttachment): New.
	(setSignAttachments): New.
	(getSignAttachments): New.
	* src/engine-gpgme.c (op_sign_file): Enable armor.

2005-07-03  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Implement
	the decryption part and only use it if the 'save
	decrypted attachment' flag is set.
	(saveDecryptedAttachment): New.
	(writeOptions): Save 'decrypt attachment' flag.
	(readOptions): Load it here.
	(cleanupTempFiles): Check handle.
	(encrypt): If the message has no body skip the
	procedure.
	(op_decrypt_file): Set recipient callback.
	(decryptAttachments): We do not alter the attachment
	so there is no need to release it again.

	Replace all 'free' with 'xfree'.

2005-07-01  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Check that
	the file has a valid PGP extension before we try
	to decrypt the attachment.
	(checkAttachmentExtension): Check if the file
	extension is a vliad PGP extension.


2005-06-30  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Use a unique
	temp name to make a cleanup at the end easier.
	(cleanupTempFiles): Delete possible left over
	temp files.
	(~MapiGPGME): Use it here.

2005-06-22  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Close attachment
	before we delete it.
	(streamOnFile): Directly use the attachment.
	(streamFromFile): Likewise.
	(closeAttachment): Renamed to..
	(releaseAttachment): ..this.

2005-06-21  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (getMessageType): Support all types.
	(streamOnFile): More straight forward now.
	(encryptAttachments): Get the attachment table first.
	(getAttachPathname): New.
	(processAttachment): Add new parameter for the position
	of the attachment.
	(streamFromFile): New.
	(generateTempname): New.
	* src/engine-gpgme.c (op_sign_encrypt_file): New.

2005-06-17  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (MapiGPGME): Initialize all attachment
	components to zero. Thanks to Sebstian for pointing this out.

2005-06-16  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (check_encrypt_result): New. Check if
	the encrypt procedure returned some invalid recipients.
	(op_encrypt): Use it here.
	(op_encrypt_file): Likewise.
	(op_sign_encrypt): Likewise.
	* src/missing.h: Removed unused constants.
	* src/verify-dialog.c (load_sigbox): Handle v3 RSA keys.
	* src/passphrase-dialog.c (load_secbox): Make sure the index
	from the first loop matche the second. Which means skip
	all invalid keys also.

2005-06-13  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (writeOptions): New Option 'defaultKey'.
	(readOptions): Likewise. Force overwrite 'addDefaultKey'.

2005-06-07  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Add a
	reference to the key object so it will be still valid
	after the dialog is destroyed.
	* src/MapiGPGME.cpp (freeUnknownKeys): Do not try to free
	the context if no keys are available. Fixed a segv.
	(signEncrypt): The new code now gets a persistent pointer
	to the key.
	* src/engine-gpgme.c (op_sign_encrypt): Load the right
	dialog to request the passphrase.

2005-06-05  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (load_recipbox): Check ctx if null.
	(passphrase_callback_box): Different dialogs for sign
	and decrypt.
	(signer_dialog_box): Do not zero the context too early.
	* src/keycache.c (enum_gpg_seckeys): Also reload if ctx
	is NULL.
	* src/MapiGPGME.cpp (signEncrypt): Return if the user
	cancelled the signer selection dialog.
	* src/recipient-dialog.c (recipient_dlg_proc): Check 'Text Mode'
	button.
	* src/keycache.c (enum_gpg_keys, enum_gpg_seckeys): Fully
	reset the keycache initializing it again. Thanks to Ralf.

2005-06-04  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_sigbox): Only issue a warning
	if the key exists but is not valid.
	Get pkalgo from the signature.
	Fixed format string problem s/%d/%s.
	* src/config-dialog.c (load_config_value): Close reg handle.
	(config_dlg_proc): Show error if the values could not
	be written to the registry.

2005-06-03  Timo Schulz  <ts@g10code.com>

	* src/mapuser.c (new_usermap): New.
	(free_usermap): New.
	* src/engine-gpgme.c (op_decrypt): Return 'No_Seckey' if
	appropriate and not just 'Decrypt_Failed'.
	Set the gpgme_ctx_t object in the callback to allow
	to list the 'encrypt_to' entries.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Make sure
	we only warn when there is a valid callback context.
	(load_secbox): New parameter 'ctlid'. Changed all callers.
	(load_recipbox): New. Use usermap to lookup user-id's.
	(decrypt_key_ext_dlg_proc): New dialog procedure for
	the callback mode.
	* src/HashTable.cpp (HashTable_new): New. C-interface.
	(HashTable_free): Likewise.
	(HashTable_get): Likewise.
	(HashTable_put): Likewise.
	(HashTable_get_i): Likewise.
	(HashTable_size): Likewise.

2005-05-29  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Warning
	if the user cancels the signing process.
	Make the passphrase field invisible if the key is used
	in selection mode.
	(recipient_dlg_proc): Likewise.
	(signer_dialog_box): Return -1 if the user cancelled the
	dialog.
	* src/engine-gpgme.c (op_sign): Set flags to '1' to indicate
	signing process.
	* src/config-dialog.c (does_file_exist): Use appropriate
	length for xmalloc. Noted by Sebastian.

2005-05-24  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (setXHeader): New.
	(getXHeader): New.
	* src/engine-gpgme.c (op_sign_file): Implemented.

2005-05-22  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (createAttachment): New.
	(deleteAttachment): New.
	(encryptAttachments): New.
	(encrypt): Also encrypt the attachments if possible.
	(signEncrypt): Likewise.
	(setEncodingFormat): New.
	(getEncodingFormat): New.
	(readOptions, writeOptions): Store encoding format.
	(MapiGPGME): The default encoding is 'CLASSIC'.

2005-05-21  Timo Schulz  <ts@g10code.com>

	* src/HashTable.h: Export functions.
	* src/MapiGPGME.cpp (freeAttachments): New.
	(getAttachments): New.
	(openAttachment): New.
	(closeAttachment): New.
	(processAttachment): New.
	(hasAttachments): New.
	(countAttachments): New.
	(doCmdFile): New. Can handle files.
	(doCmdAttach): New. Can handle attachment action types.
	(signEncrypt): Release locusr key.
	* src/engine-gpgme.c (op_sign_file): New. Dummy.
	(op_sign_encrypt_file): New. Dummy.

2005-05-11  Timo Schulz  <ts@g10code.com>

	* src/common.c (cache_item_new): New.
	(cache_item_free): New.
	* src/engine-gpgme.c (op_decrypt_start_ext): Return an cache item and
	not just the passphrase. Changed all caller.
	* src/MapiGPGME.cpp (passphraseCallback): Support caching.
	(decrypt): Likewise.
	(storePassphrase): Likewise.
	(getPassphrase): Likewise.
	* src/HashTable.cpp: New.

2005-05-10  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Reset 'hide state'.
	Show some text when the user entered a wrong passphrase.
	* src/MapiGPGME.cpp (findMessageWindow): New.
	(setRTFBody): New.
	(decrypt): Just change the window text, not the MAPI object.
	Call verify() if this is a clearsigned message.
	(getMessageType): New.
	(getAttachmentExtension): New.
	(verify): Extract text and set it.
	* src/engine-gpgme.c (op_decrypt): Spawn verify dialog if the text
	was also signed.
	(op_decrypt_file): New.
	* src/verify-dialog.c (load_sigbox): Avoid key cache and give more
	information.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Handle 'x' clicks.
	* src/logging.c (log_debug): Disable it for release versions.

2005-05-08  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (readOptions): Handle logfile.
	(writeOptions): Likewise.
	(storePassphrase): New.
	(clearPassphrase): New.
	(passphraseCallback): New. Needs to be static...
	(decrypt): Store passphrase if requested.
	(~MapiGPGME): Free memory.
	(streamOnFile): New.
	(getAttachMethod): New.
	(getAttachFilename): New.
	(setAttachMethod): New.
	(getAttachFilename): New.
	(getMessageHasAttachments): New.
	(getMessageFlags): New.

	* src/engine-gpgme.c (op_decrypt): New. Factoured out
	code from...
	(op_decrypt_start): ..here. Now call op_decrypt
	with standard parameters.
	(op_decrypt_next): Allow to use a pre-defined
	passphrase callback. Needed for caching.

2005-05-02  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (fail_if_null, delete_buf): New
	(doCmd): New.
	(setBody): If the body to set is empty, do nothing.
	(freeKeyArray): New.
	(readOptions): New.
	(writeOptions): New.
	Implement all getters and setters for the config code.

	* src/keycache.c: Now that we use a DLL, we create a
	shared data segment for static data.
	(load_keycache_objects): New.

2005-05-01  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (rtfSync): New.
	* src/logging.c (log_debug): New.
	* src/common.c (xfree): New.
	* src/engine-gpgme.c (op_lookup_keys): Corrected offsets.

2005-04-29  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (op_encrypt_file): New.

2005-04-27  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (config_dialog_box): Add dialog
	item to select a GUI key manager.
	Check that the entered files really exist.
	(config_dlg_proc): Likewise.
	(does_file_exist): New.

2005-04-24  Timo Schulz  <ts@g10code.com>

	* src/main.c (DllMain): New. With a static library it was not
	possible to have a separate resource file. Thus we use a
	DLL now which contains all needed dialogs.
	* src/common.c (set_global_hinstance): New.
	* src/libgpgmedlgs.def: New.

2005-04-18  Timo Schulz  <ts@g10code.com>

	* src/recipient-dialog.c (recipient_dialog_box2): New
	way to show pre-selected keys.
	(copy_item): New paramenter for the pos.
	(find_item): Do not select the item.

	* src/gpgmedlgs.rc (IDD_ENC): New label to describe
	the listbox.

2005-04-15  Timo Schulz  <ts@g10code.com>

	* src/common.c (xmalloc, xcalloc, xstrdup): New.
	(out_of_core): New.
	* src/recipient-dialog.c (initialize_keybox): New.
	(find_item): New.
	* src/MapiGPGME.cpp (freeUnknownKeys): New.
	(signEncrypt): Show dialog to select a key if no
	default key was set.

	* src/Replace all std-c alloc functions with x equivalents.

2005-04-13  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (do_init): Alloc keycache objects.
	(do_deinit): Cleanup the mess.
	(op_lookup_keys): New. Allow to find keys via the email.

	* src/GPGME.cpp (MapiGPGME): New. MAPI interface.

2005-04-07  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_akalist): New.
	(load_sigbox): Handle bad signatures.
	* src/keycache.c (enum_gpg_keys): Allow to reset the
	enum context.
	* src/config-dialog.c (get_open_file_name): Use MAX_PATH.
	(get_folder): Likewise.
	* src/recipient-dialog.c (load_rsetbox): Modify code to
	add the last keycache item.
	* src/passphrase-dialog.c (load_secbox): Likewise.

 Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 g10 Code GmbH

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This file is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
