/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef _XMLOFF_XMLNUMFE_HXX #define _XMLOFF_XMLNUMFE_HXX #include "sal/config.h" #include "xmloff/dllapi.h" #include "sal/types.h" #include #include #include #define XML_WRITTENNUMBERSTYLES "WrittenNumberStyles" class Color; class LocaleDataWrapper; class CharClass; class SvXMLExport; class SvXMLNamespaceMap; class SvXMLAttributeList; class SvNumberFormatter; class SvNumberformat; class SvXMLNumUsedList_Impl; class SvXMLEmbeddedTextEntryArr; class XMLOFF_DLLPUBLIC SvXMLNumFmtExport { private: SvXMLExport& rExport; OUString sPrefix; SvNumberFormatter* pFormatter; OUStringBuffer sTextContent; SvXMLNumUsedList_Impl* pUsedList; CharClass* pCharClass; LocaleDataWrapper* pLocaleData; SAL_DLLPRIVATE void AddCalendarAttr_Impl( const OUString& rCalendar ); SAL_DLLPRIVATE void AddStyleAttr_Impl( sal_Bool bLong ); SAL_DLLPRIVATE void AddTextualAttr_Impl( sal_Bool bText ); SAL_DLLPRIVATE void AddLanguageAttr_Impl( sal_Int32 nLang ); SAL_DLLPRIVATE void AddToTextElement_Impl( const OUString& rString ); SAL_DLLPRIVATE void FinishTextElement_Impl(); SAL_DLLPRIVATE void WriteColorElement_Impl( const Color& rColor ); SAL_DLLPRIVATE void WriteNumberElement_Impl( sal_Int32 nDecimals, sal_Int32 nInteger, const OUString& rDashStr, sal_Bool bVarDecimals, sal_Bool bGrouping, sal_Int32 nTrailingThousands, const SvXMLEmbeddedTextEntryArr& rEmbeddedEntries ); SAL_DLLPRIVATE void WriteScientificElement_Impl( sal_Int32 nDecimals, sal_Int32 nInteger, sal_Bool bGrouping, sal_Int32 nExp ); SAL_DLLPRIVATE void WriteFractionElement_Impl( sal_Int32 nInteger, sal_Bool bGrouping, sal_Int32 nNumeratorDigits, sal_Int32 nDenominatorDigits, sal_Int32 nDenominator ); SAL_DLLPRIVATE void WriteCurrencyElement_Impl( const OUString& rString, const OUString& rExt ); SAL_DLLPRIVATE void WriteBooleanElement_Impl(); SAL_DLLPRIVATE void WriteTextContentElement_Impl(); SAL_DLLPRIVATE void WriteDayElement_Impl( const OUString& rCalendar, sal_Bool bLong ); SAL_DLLPRIVATE void WriteMonthElement_Impl( const OUString& rCalendar, sal_Bool bLong, sal_Bool bText ); SAL_DLLPRIVATE void WriteYearElement_Impl( const OUString& rCalendar, sal_Bool bLong ); SAL_DLLPRIVATE void WriteEraElement_Impl( const OUString& rCalendar, sal_Bool bLong ); SAL_DLLPRIVATE void WriteDayOfWeekElement_Impl( const OUString& rCalendar, sal_Bool bLong ); SAL_DLLPRIVATE void WriteWeekElement_Impl( const OUString& rCalendar ); SAL_DLLPRIVATE void WriteQuarterElement_Impl( const OUString& rCalendar, sal_Bool bLong ); SAL_DLLPRIVATE void WriteHoursElement_Impl( sal_Bool bLong ); SAL_DLLPRIVATE void WriteMinutesElement_Impl( sal_Bool bLong ); SAL_DLLPRIVATE void WriteSecondsElement_Impl( sal_Bool bLong, sal_uInt16 nDecimals ); SAL_DLLPRIVATE void WriteAMPMElement_Impl(); SAL_DLLPRIVATE void WriteMapElement_Impl( sal_Int32 nOp, double fLimit, sal_Int32 nKey, sal_Int32 nPart ); SAL_DLLPRIVATE void WriteRepeatedElement_Impl( sal_Unicode ch ); SAL_DLLPRIVATE sal_Bool WriteTextWithCurrency_Impl( const OUString& rString, const ::com::sun::star::lang::Locale& rLocale ); SAL_DLLPRIVATE void ExportPart_Impl( const SvNumberformat& rFormat, sal_uInt32 nKey, sal_uInt16 nPart, sal_Bool bDefPart ); SAL_DLLPRIVATE void ExportFormat_Impl( const SvNumberformat& rFormat, sal_uInt32 nKey ); public: SvXMLNumFmtExport( SvXMLExport& rExport, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& rSupp ); SvXMLNumFmtExport( SvXMLExport& rExport, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& rSupp, const OUString& rPrefix ); virtual ~SvXMLNumFmtExport(); // core API void Export( sal_Bool bIsAutoStyle); // mark number format as used void SetUsed( sal_uInt32 nKey ); // get the style name that was generated for a key OUString GetStyleName( sal_uInt32 nKey ); void GetWasUsed(com::sun::star::uno::Sequence& rWasUsed); void SetWasUsed(const com::sun::star::uno::Sequence& rWasUsed); // two methods to allow the field import/export to treat system languages // properly: /// obtain number format with system languange for a given key sal_uInt32 ForceSystemLanguage( sal_uInt32 nKey ); /// determine whether number format uses system language bool IsSystemLanguage( sal_uInt32 nKey ); }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 2 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-05-11loplugin:ostr in svxNoel Grandin
Change-Id: Ia765a03e033acb82e367873380d289587ea87d6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167449 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-02-18ITEM: Rename for more control over SlotID usagesArmin Le Grand (allotropia)
Change-Id: I51585f1c15984a066262023184f668662853d20f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163556 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-21Remove DeleteItemOnIdlexArmin Le Grand (allotropia)
There are some CrashReports in 7.6 which have DeleteItemOnIdle on the stack, but there is nothing reproducable. So I took a look... I first thought it's a MCGR regression, due to classes on the stack. But the Item involved is just random, can happen with any Item. Then I thought it may have to do with ITEM refactorings, but it happens with DeleteItemOnIdle involved, so also not the case. I already saw DeleteItemOnIdle when doing these and qualified as 'hack' in the way. already It is only on Windows and DeleteItemOnIdle is involved. This again (took a deeper look now) is an old hack to keep an SfxPoolItem 'alive' for some 'time'. For that, it triggers an async reschedule which then deletes the Item when being called. If the Item will be used after that is pure coincidence - seems to work in most cases. It seems as if for Windows the timing slightly changed for some scenarios, so a reschedule is too early. This can happen with this hack anytime. DeleteItemOnIdle is used in scenarios where SfxPoolItem* is e.g. returned, but is *not* anchored, so e.g. not member of an SfxItemSet. Or in short: Lifetime is not safe. DeleteItemOnIdle exists since 1st import, but was changed to AsyncEvent ca. 4 months ago (see 57145acf9ec47c23e307b7a5c0029d21d937cc35), so that may have caused it. It is possible that these errors happen on Windows since then. Before something more complicated was used to delete it late, but surely also not really safe. Due to ITEM refactor I have the knowledge/tooling to solve this. It will not be a 1-5 lines fix, but it is a hack and in the way for further ITEM refactor anyways. What we have nowadays is a SfxPoolItemHolder -> it's like an SfxItemSet for a single Item. It safely holds/ controls the lifetime of an SfxPoolItem. It is already used in quite some places. It helps to solve many hacks, also the ones putting Items directly to the Pool - due to there never was an alternative for that. In principle the ItemPool/ItemSet/Item paradigm was never complete without SfxPoolItemHolder. Thus I started to fix that (and remove that hack for good, sooo many changes over the years, sigh), but as said is not straightforward. Will have to change retvals of involved stuff to SfxPoolItemHolder - it's just two pointers and designed to be copied (one is a Pool, needed to cleanup when destructing). CopyConstruct/destroy just counts the RefCnt up/down, so cheap. 1st version compiling, let's check on gerrit... Corrected one error in QueryState for securitypage, also added some security features/asserts. Change-Id: Ida49fd35ca88ead84b11d93e18b978cb9e395090 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161083 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2022-12-16svx: check SfxViewFrame::Current()Caolán McNamara
these ones look potentially worth backporting Change-Id: Ie7325cd5548c0c10c6b6df9c1a771d24b029b635 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144274 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-05-03Just use Any ctor instead of makeAny in svxStephan Bergmann
Change-Id: I59b1b3f817a9028f132456ea5094f38f88674d00 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133768 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-03-14add TypedWhichId version of QueryStateNoel Grandin
Change-Id: I95b86fc081847da01e06f50a1b2c7e7f5456c638 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131529 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-02-01related tdf#111733 svx: SfxVoidItem != SvxKerningItemJustin Luth
When selecting text containing several different kerning values, the pItem returned is a VoidItem. This was showing up as random numbers in the TextCharacterSpacingControl spinbutton. Change-Id: I94cfc566daa42e0d8c3d403eb08af659f01e6d5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129270 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2022-02-01tdf#111733 TextCharacterSpacingControl::GrabFocus kerning spinbuttonJustin Luth
When the kerning menu opens, it defaulted to very tight, regardless of what the current setting was. However, the current value can easily be connected to the menu options, so lets do that. This depends on increasing the spinbutton range beyond -2.0, done via LO 7.4 commit 2334561bf15ec9b061636919efbd0e2a7b89e29b Change-Id: I0be0956bf1cc3604faecc691aeac70a5bbba807b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128909 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com> Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2021-05-20move some headers inside modulesNoel Grandin
Change-Id: I2baa9e9334850cf72e8ea1e96a2177a1c052e589 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115868 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-10-26switching long to a 64-bit type on 64-bit windowsNoel
(*) create a rewriting plugin to do most of the work, heavily based on the fakebool plugin (*) but there are still a number of "long"s in the codebase that will need to be done by hand (*) the plugin needs lots of handholding, due to needing to add #include and update macros Change-Id: I8184d7000ca482c0469514bb73178c3a1123b1e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104203 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-03-02tdf#42949 Fix IWYU warnings in svx/source/s*/*cxxGabor Kelemen
Except for already done svx/source/sdr/ Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I1c4b34cf42aa9faa2f7de36fe1602059460c6c1f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89656 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-01-31loplugin:singlevalfieldsNoel Grandin
Change-Id: I77ccf3f36363e182a644b98cdf720f1381a5cceb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87766 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-14remove some unneeded includesCaolán McNamara
Change-Id: I798230983b612ee2b9a0f6cc17751a3a5d703e9f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86744 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-01-13weld TextCharacterSpacingControlCaolán McNamara
Change-Id: Id0789c8c590a120efa8585d45fe7f5cdb0077cbb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86694 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-01-13rework TextCharacterSpacingPopup to be a PopupWindowControllerCaolán McNamara
Change-Id: I3db8f93b99157f7ee8d6095f7dfc5c2b2e6890e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86690 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2019-12-17loplugin:expandablemethodsNoel Grandin
Change-Id: Ifc269d9996928085a3ab78033788465b4f029368 Reviewed-on: https://gerrit.libreoffice.org/85255 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-05-03Use hasElements to check Sequence emptiness in sfx2..svxArkadiy Illarionov
Similar to clang-tidy readability-container-size-empty Change-Id: Icabd773f3b924d465b33e8581175f1fcf70c282e Reviewed-on: https://gerrit.libreoffice.org/71704 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-04-01tdf#42949 Fix IWYU warnings in include/sfx2/[sS]*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I4a3baffa8944b522b16b50975185759081662020 Reviewed-on: https://gerrit.libreoffice.org/69945 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-28tdf#42949 Fix IWYU warnings in include/sfx2/[e-M]*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I6e97c7ed6c0211dfafee83b9bdbea672e415fc49 Reviewed-on: https://gerrit.libreoffice.org/69715 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-03-25tdf#42949 Fix IWYU warnings in include/sfx2/[a-D]*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I444cb71bc3d045072a4b1f9eed279ed7e425a0d4 Reviewed-on: https://gerrit.libreoffice.org/69481 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-11-28drop some unnecessary includesCaolán McNamara
Change-Id: I474b5762e6a07982fddc0315a67181399ea4c30e Reviewed-on: https://gerrit.libreoffice.org/64156 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-10-24remove more rtl::OUString and OString prefixesNoel Grandin
which seem to have snuck back in since the great rounds of removals. Change-Id: I85f7f5f4801c0b48dae8b50f51f83595b286d6a1 Reviewed-on: https://gerrit.libreoffice.org/62229 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-04-25tdf#42949 Remove unnecessary localization headers of svxGabor Kelemen
Found by searching for the header names and the localization functions: git grep -l -e \<svx/dialmgr.hxx\> -e \<svx/strings.hrc\> -e svdglob.hxx | xargs grep -c -e SvxResId -e SvxResLocale -e ImpGetResStr | grep :0$ | grep -v /pch Change-Id: I45c979589165086288030031e713d536005a9833 Reviewed-on: https://gerrit.libreoffice.org/53241 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-01-12More loplugin:cstylecast: svxStephan Bergmann
auto-rewrite with <https://gerrit.libreoffice.org/#/c/47798/> "Enable loplugin:cstylecast for some more cases" plus solenv/clang-format/reformat-formatted-files Change-Id: I100e6c14cbf1d780f0e5ebca6b0c9e71ce1caaf7
2017-10-23loplugin:includeform: svxStephan Bergmann
Change-Id: I4057fe05983fb2b63b592ffd325894c12b9cb5b2
2017-10-01Wayland: Make various popups work in the overflow toolbarMaxim Monastirsky
Were failing to show, with this warning: Gdk-WARNING **: Tried to map a popup with a non-top most parent Change-Id: Ib68b5fc9b3edb3d25a23b66397c13833a4d080ac Reviewed-on: https://gerrit.libreoffice.org/42936 Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com> Tested-by: Maxim Monastirsky <momonasmon@gmail.com>
2017-07-21de-hrc various thingsCaolán McNamara
e.g. helpid[s].hrc -> helpids.h and insert include guards where missing move "ordinary" defines into .hxx files remove .hrc entries that are used as arguments to dialog factory when a dedicated method can be added instead Change-Id: I792fb8eb0adfaa63cf354e6e57401fc943e9196e
2017-07-21migrate to boost::gettextCaolán McNamara
* all .ui files go from <interface> to <interface domain="MODULE"> e.g. vcl * all .src files go away and the english source strings folded into the .hrc as NC_("context", "source string") * ResMgr is dropped in favour of std::locale imbued by boost::locale::generator pointed at matching MODULE .mo files * UIConfig translations are folded into the module .mo, so e.g. UIConfig_cui goes from l10n target to normal one, so the res/lang.zips of UI files go away * translation via Translation::get(hrc-define-key, imbued-std::locale) * python can now be translated with its inbuilt gettext support (we keep the name strings.hrc there to keep finding the .hrc file uniform) so magic numbers can go away there * java and starbasic components can be translated via the pre-existing css.resource.StringResourceWithLocation mechanism * en-US res files go away, their strings are now the .hrc keys in the source code * remaining .res files are replaced by .mo files * in .res/.ui-lang-zip files, the old scheme missing translations of strings results in inserting the english original so something can be found, now the standard fallback of using the english original from the source key is used, so partial translations shrink dramatically in size * extract .hrc strings with hrcex which backs onto xgettext -C --add-comments --keyword=NC_:1c,2 --from-code=UTF-8 --no-wrap * extract .ui strings with uiex which backs onto xgettext --add-comments --no-wrap * qtz for gettext translations is generated at runtime as ascii-ified crc32 of content + "|" + msgid * [API CHANGE] remove deprecated binary .res resouce loader related uno apis com::sun::star::resource::OfficeResourceLoader com::sun::star::resource::XResourceBundleLoader com::sun::star::resource::XResourceBundle when translating strings via uno apis com.sun.star.resource.StringResourceWithLocation can continue to be used Change-Id: Ia2594a2672b7301d9c3421fdf31b6cfe7f3f8d0a
2017-06-27loplugin:oncevar in svxNoel Grandin
Change-Id: I22a3a13e059ac7d3479f12860564fe3eb1b55e44 Reviewed-on: https://gerrit.libreoffice.org/39282 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-03-29convert EViewType to scoped enumNoel Grandin
Change-Id: I5b10aada64408897a56a5932aa28486d7562d617 Reviewed-on: https://gerrit.libreoffice.org/35822 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-03-22loplugin:redundantcast find redundant c-style enum castsNoel Grandin
Change-Id: I2dab376d87804521aed6b6bd41ad7762830fa349 Reviewed-on: https://gerrit.libreoffice.org/35467 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-20loplugin:expandablemethodds in svxNoel Grandin
Change-Id: I45447b6f5cf7e17d6e81e8c931b07b26d41b9a8c Reviewed-on: https://gerrit.libreoffice.org/30057 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-06drop now unused sfx2/sidebar/ResourceDefinitions.hrcCaolán McNamara
Change-Id: I151a37a37435a44e7331d957bd9d36f84cdf8677
2016-10-05convert MapUnit to scoped enumNoel Grandin
I left a prefix on the names "Map" so that I would not have to re-arrange each name too much, since I can't start identifiers with digits like "100thMM" And remove RSC_EXTRAMAPUNIT, which doesn't seem to be doing anything anymore. Change-Id: I5187824aa87e30caf5357b51b5384b5ab919d224 Reviewed-on: https://gerrit.libreoffice.org/29096 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-10-05Remove _TYPED suffix from tools/link.hxx macrosStephan Bergmann
...which was introduced with 3ead3ad52f9bb2f9d1d6cf8dfc73a0a25e6778ed "Gradually typed Link" to distinguish the new, typed versions from the old, untyped ones, but is no longer necessary since 382eb1a23c390154619c385414bdbe6f6e461173 "remove untyped Link<>" removed the old versions. Change-Id: I494025df486a16a45861fcd8192dfe0275b1103c
2016-08-19Resolves: coverity#705366 Mixing enum typesCaolán McNamara
and coverity#705367 Mixing enum types coverity#705371 Mixing enum types coverity#982694 Mixing enum types coverity#1027717 Mixing enum types coverity#1371228 Mixing enum types coverity#1371242 Mixing enum types coverity#1371280 Mixing enum types coverity#1371310 Mixing enum types MapUnit and SfxMapUnit share the same values and are freely cast from one to the other. Now that commit d30a4298bdb5ba53cd1fe659f2b742f218a2e527 Date: Thu Aug 11 15:02:19 2016 +0200 loplugin:unusedenumconstants in package..svtools removed the SfxMapUnit entries that were directly unused, they don't match anymore and casting from one to the other is dangerous. Why there was two of these anyway escapes me, get rid of SfxMapUnit and just use MapUnit universally Change-Id: I4db5dcd04b59be2f85b62b728f96c90afe00c57e Reviewed-on: https://gerrit.libreoffice.org/28234 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>