public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Tian, Feng" <feng.tian@intel.com>
To: "Wu, Hao A" <hao.a.wu@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Gao, Liming" <liming.gao@intel.com>
Cc: "Zeng, Star" <star.zeng@intel.com>, "Tian, Feng" <feng.tian@intel.com>
Subject: Re: [PATCH 2/3] MdeModulePkg: Use IsZeroGuid API for zero GUID checking
Date: Tue, 30 Aug 2016 02:43:18 +0000	[thread overview]
Message-ID: <7F1BAD85ADEA444D97065A60D2E97EE566D7E2B7@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <1472524574-17732-3-git-send-email-hao.a.wu@intel.com>

Reviewed-by: Feng Tian <feng.tian@Intel.com>

Thanks
Feng

-----Original Message-----
From: Wu, Hao A 
Sent: Tuesday, August 30, 2016 10:36 AM
To: edk2-devel@lists.01.org; Gao, Liming <liming.gao@intel.com>
Cc: Wu, Hao A <hao.a.wu@intel.com>; Tian, Feng <feng.tian@intel.com>; Zeng, Star <star.zeng@intel.com>
Subject: [PATCH 2/3] MdeModulePkg: Use IsZeroGuid API for zero GUID checking

Instead of comparing a GUID with gZeroGuid via the CompareGuid API, the commit uses the IsZeroGuid API to check if the given GUID is a zero GUID.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c   | 3 +--
 MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf | 1 -
 MdeModulePkg/Core/Dxe/DxeMain.h                                  | 1 -
 MdeModulePkg/Core/Dxe/DxeMain.inf                                | 1 -
 MdeModulePkg/Core/PiSmmCore/PiSmmCore.h                          | 1 -
 MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf                        | 1 -
 MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c         | 4 ++--
 MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h             | 1 -
 MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf   | 1 -
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHii.h                | 4 +---
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGenFromFv.c       | 6 +++---
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLib.inf           | 3 ---
 MdeModulePkg/Universal/SetupBrowserDxe/Expression.c              | 2 +-
 MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c            | 8 ++++----
 MdeModulePkg/Universal/SetupBrowserDxe/Setup.c                   | 4 ++--
 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c         | 5 ++---
 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf       | 1 -
 17 files changed, 16 insertions(+), 31 deletions(-)

diff --git a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c
index e82ee9c..14e8934 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c
@@ -27,7 +27,6 @@
 #include <Protocol/SmmCommunication.h>
 #include <Protocol/SmmAccess2.h>
 
-#include <Guid/ZeroGuid.h>
 #include <Guid/MemoryProfile.h>
 #include <Guid/PiSmmCommunicationRegionTable.h>
 
@@ -255,7 +254,7 @@ GetDriverNameString (
     return mNameString;
   }
 
-  if (!CompareGuid (&DriverInfo->FileName, &gZeroGuid)) {
+  if (!IsZeroGuid (&DriverInfo->FileName)) {
     //
     // Try to get the image's FFS UI section by image GUID
     //
diff --git a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
index c512a3f..4bb7a9d 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
@@ -52,7 +52,6 @@
   ## SOMETIMES_CONSUMES   ## GUID # Locate protocol
   ## SOMETIMES_CONSUMES   ## GUID # SmiHandlerRegister
   gEdkiiMemoryProfileGuid
-  gZeroGuid                            ## SOMETIMES_CONSUMES   ## GUID
   gEdkiiPiSmmCommunicationRegionTableGuid    ## SOMETIMES_CONSUMES ## SystemTable
 
 [Protocols]
diff --git a/MdeModulePkg/Core/Dxe/DxeMain.h b/MdeModulePkg/Core/Dxe/DxeMain.h index 60d85f0..aefeeb7 100644
--- a/MdeModulePkg/Core/Dxe/DxeMain.h
+++ b/MdeModulePkg/Core/Dxe/DxeMain.h
@@ -69,7 +69,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Guid/IdleLoopEvent.h>
 #include <Guid/VectorHandoffTable.h>
 #include <Ppi/VectorHandoffInfo.h>
-#include <Guid/ZeroGuid.h>
 #include <Guid/MemoryProfile.h>
 
 #include <Library/DxeCoreEntryPoint.h>
diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf b/MdeModulePkg/Core/Dxe/DxeMain.inf
index 450da57..13a2381 100644
--- a/MdeModulePkg/Core/Dxe/DxeMain.inf
+++ b/MdeModulePkg/Core/Dxe/DxeMain.inf
@@ -124,7 +124,6 @@
   gEventExitBootServicesFailedGuid              ## SOMETIMES_PRODUCES   ## Event
   gEfiVectorHandoffTableGuid                    ## SOMETIMES_PRODUCES   ## SystemTable
   gEdkiiMemoryProfileGuid                       ## SOMETIMES_PRODUCES   ## GUID # Install protocol
-  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## GUID
   gEfiPropertiesTableGuid                       ## SOMETIMES_PRODUCES   ## SystemTable
   gEfiMemoryAttributesTableGuid                 ## SOMETIMES_PRODUCES   ## SystemTable
   gEfiEndOfDxeEventGroupGuid                    ## SOMETIMES_CONSUMES   ## Event
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h
index 000864d..f46ee72 100644
--- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h
+++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h
@@ -36,7 +36,6 @@
 #include <Guid/Apriori.h>
 #include <Guid/EventGroup.h>
 #include <Guid/EventLegacyBios.h>
-#include <Guid/ZeroGuid.h>
 #include <Guid/MemoryProfile.h>
 
 #include <Library/BaseLib.h>
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
index f7e32c4..1f73cbb 100644
--- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
+++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
@@ -96,7 +96,6 @@
   gEdkiiMemoryProfileGuid
   ## SOMETIMES_PRODUCES   ## GUID # Install protocol
   gEdkiiSmmMemoryProfileGuid
-  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## GUID
 
 [UserExtensions.TianoCore."ExtraFiles"]
   PiSmmCoreExtra.uni
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c
index 1e68cbc..ddcee8b 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c
@@ -1,7 +1,7 @@
 /** @file
   Library functions which relates with driver health.
 
-Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>  This program and the accompanying materials @@ -446,7 +446,7 @@ BmRepairAllControllers (
   //
   // Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver health check.
   //
-  if (CompareGuid (PcdGetPtr (PcdDriverHealthConfigureForm), &gZeroGuid)) {
+  if (IsZeroGuid (PcdGetPtr (PcdDriverHealthConfigureForm))) {
     return;
   }
 
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
index 07ee45b..cb719e9 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
+++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
@@ -45,7 +45,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/VariableLock.h>
 #include <Protocol/RamDisk.h>
 
-#include <Guid/ZeroGuid.h>
 #include <Guid/MemoryTypeInformation.h>  #include <Guid/FileInfo.h>  #include <Guid/GlobalVariable.h> diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
index 5d0bd1d..8c3fd7f 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
@@ -87,7 +87,6 @@
   gEfiDiskInfoAhciInterfaceGuid                 ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoIdeInterfaceGuid                  ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoScsiInterfaceGuid                 ## SOMETIMES_CONSUMES ## GUID
-  gZeroGuid                                     ## CONSUMES ## GUID
 
 [Protocols]
   gEfiPciRootBridgeIoProtocolGuid               ## CONSUMES
diff --git a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHii.h b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHii.h
index d770785..a54b867 100644
--- a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHii.h
+++ b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHii.h
@@ -1,7 +1,7 @@
 /** @file
   Include file for Var Check Hii handler and bin.
 
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials  are licensed and made available under the terms and conditions of the BSD License  which accompanies this distribution.  The full text of the license may be found at @@ -22,8 +22,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/UefiBootServicesTableLib.h>
 #include <Library/MemoryAllocationLib.h>
 
-#include <Guid/ZeroGuid.h>
-
 #include <Protocol/HiiDatabase.h>
 #include <Protocol/FirmwareVolume2.h>
 #include <Protocol/FirmwareVolumeBlock.h> diff --git a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGenFromFv.c b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGenFromFv.c
index 21fc80e..71ece27 100644
--- a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGenFromFv.c
+++ b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGenFromFv.c
@@ -1,7 +1,7 @@
 /** @file
   Var Check Hii generation from FV.
 
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials  are licensed and made available under the terms and conditions of the BSD License  which accompanies this distribution.  The full text of the license may be found at @@ -372,7 +372,7 @@ CreateVfrDriverList (
   UINTN                         Index;
   VAR_CHECK_VFR_DRIVER_INFO     *VfrDriverInfo;
 
-  for (Index = 0; !CompareGuid (&DriverGuidArray[Index], &gZeroGuid); Index++) {
+  for (Index = 0; !IsZeroGuid (&DriverGuidArray[Index]); Index++) {
      DEBUG ((EFI_D_INFO, "CreateVfrDriverList: %g\n", &DriverGuidArray[Index]));
      VfrDriverInfo = InternalVarCheckAllocateZeroPool (sizeof (*VfrDriverInfo));
      ASSERT (VfrDriverInfo != NULL);
@@ -421,7 +421,7 @@ VarCheckHiiGenFromFv (
   //
   DriverGuidArray = (EFI_GUID *) PcdGetPtr (PcdVarCheckVfrDriverGuidArray);
 
-  if (CompareGuid (&DriverGuidArray[0], &gZeroGuid)) {
+  if (IsZeroGuid (&DriverGuidArray[0])) {
     //
     // No VFR driver will be parsed from FVs.
     //
diff --git a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLib.inf b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLib.inf
index 24d24c5..98e6983 100644
--- a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLib.inf
+++ b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLib.inf
@@ -46,9 +46,6 @@
   PcdLib
   VarCheckLib
 
-[Guids]
-  gZeroGuid                                 ## SOMETIMES_CONSUMES   ## GUID
-
 [Protocols]
   gEfiFirmwareVolume2ProtocolGuid           ## SOMETIMES_CONSUMES
   gEfiFirmwareVolumeBlock2ProtocolGuid      ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c b/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c
index 1938ff2..ec4d285 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c
@@ -2829,7 +2829,7 @@ EvaluateExpression (
         if (StrPtr != NULL) {
           FreePool (StrPtr);
         }
-      } else if (CompareGuid (&OpCode->Guid, &gZeroGuid) != 0) {
+      } else if (IsZeroGuid (&OpCode->Guid)) {
         if (!GetQuestionValueFromForm(NULL, FormSet->HiiHandle, &OpCode->Guid, Value->Value.u16, &QuestionVal)){
           Value->Type = EFI_IFR_TYPE_UNDEFINED;
           break;
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
index 56ae7b0..6856cc5 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
@@ -358,7 +358,7 @@ InitializeDisplayStatement (
   //
   // Create the refresh event process function.
   //
-  if (!CompareGuid (&Statement->RefreshGuid, &gZeroGuid)) {
+  if (!IsZeroGuid (&Statement->RefreshGuid)) {
     CreateRefreshEventForStatement (Statement);
   }
 
@@ -373,7 +373,7 @@ InitializeDisplayStatement (
   // Create the refresh guid hook event.
   // If the statement in this form has refresh event or refresh interval, browser will create this event for display engine.
   //
-  if ((!CompareGuid (&Statement->RefreshGuid, &gZeroGuid)) || (Statement->RefreshInterval != 0)) {
+  if ((!IsZeroGuid (&Statement->RefreshGuid)) || 
+ (Statement->RefreshInterval != 0)) {
     gDisplayFormData.FormRefreshEvent = mValueChangedEvent;
   }
 
@@ -628,7 +628,7 @@ AddStatementToDisplayForm (
   //
   // Create the refresh event process function for Form.
   //
-  if (!CompareGuid (&gCurrentSelection->Form->RefreshGuid, &gZeroGuid)) {
+  if (!IsZeroGuid (&gCurrentSelection->Form->RefreshGuid)) {
     CreateRefreshEventForForm (gCurrentSelection->Form);
     if (gDisplayFormData.FormRefreshEvent == NULL) {
       gDisplayFormData.FormRefreshEvent = mValueChangedEvent; @@ -1410,7 +1410,7 @@ ProcessGotoOpCode (
     CopyMem (&Selection->FormSetGuid,&Statement->HiiValue.Value.ref.FormSetGuid, sizeof (EFI_GUID));
     Selection->FormId = Statement->HiiValue.Value.ref.FormId;
     Selection->QuestionId = Statement->HiiValue.Value.ref.QuestionId;
-  } else if (!CompareGuid (&Statement->HiiValue.Value.ref.FormSetGuid, &gZeroGuid)) {
+  } else if (!IsZeroGuid (&Statement->HiiValue.Value.ref.FormSetGuid)) 
+ {
     if (Selection->Form->ModalForm) {
       return Status;
     }
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
index 00f4b41..3f368b5 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
@@ -181,7 +181,7 @@ UiFindMenuList (
     // Find the same FromSet.
     //
     if (MenuList->HiiHandle == HiiHandle) {
-      if (CompareGuid (&MenuList->FormSetGuid, &gZeroGuid)) {
+      if (IsZeroGuid (&MenuList->FormSetGuid)) {
         //
         // FormSetGuid is not specified.
         //
@@ -5689,7 +5689,7 @@ GetIfrBinaryData (
           //
           // Try to compare against formset GUID
           //
-          if (CompareGuid (FormSetGuid, &gZeroGuid) || 
+          if (IsZeroGuid (FormSetGuid) ||
               CompareGuid (ComparingGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {
             break;
           }
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
index fb16af3..2ceba37 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c
@@ -14,7 +14,7 @@
   VariableServiceSetVariable(), VariableServiceQueryVariableInfo(), ReclaimForOS(),
   SmmVariableGetStatistics() should also do validation based on its own knowledge.
 
-Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials  are licensed and made available under the terms and conditions of the BSD License  which accompanies this distribution.  The full text of the license may be found at @@ -35,7 +35,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/SmmMemLib.h>
 
 #include <Guid/SmmVariableCommon.h>
-#include <Guid/ZeroGuid.h>
 #include "Variable.h"
 
 extern VARIABLE_INFO_ENTRY                           *gVariableInfo;
@@ -373,7 +372,7 @@ SmmVariableGetStatistics (
 
   CopyGuid (&VendorGuid, &InfoEntry->VendorGuid);
 
-  if (CompareGuid (&VendorGuid, &gZeroGuid)) {
+  if (IsZeroGuid (&VendorGuid)) {
     //
     // Return the first variable info
     //
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
index 5f90172..ccfb6fc 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
@@ -114,7 +114,6 @@
   ## SOMETIMES_CONSUMES   ## Variable:L"VarErrorFlag"
   ## SOMETIMES_PRODUCES   ## Variable:L"VarErrorFlag"
   gEdkiiVarErrorFlagGuid
-  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## GUID
 
 [Pcd]
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize       ## CONSUMES
--
1.9.5.msysgit.0



  reply	other threads:[~2016-08-30  2:43 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-30  2:36 [PATCH 0/3] Use IsZeroGuid API for zero GUID checking Hao Wu
2016-08-30  2:36 ` [PATCH 1/3] IntelFrameworkModulePkg: " Hao Wu
2016-08-30  5:54   ` Fan, Jeff
2016-08-30  2:36 ` [PATCH 2/3] MdeModulePkg: " Hao Wu
2016-08-30  2:43   ` Tian, Feng [this message]
2016-08-30  2:36 ` [PATCH 3/3] SecurityPkg: " Hao Wu
2016-08-30  3:21   ` Zhang, Chao B

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7F1BAD85ADEA444D97065A60D2E97EE566D7E2B7@SHSMSX101.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox