public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 00/47] edk2: centralize and adopt ARRAY_SIZE()
@ 2016-10-26 19:04 Laszlo Ersek
  2016-10-26 19:04 ` [PATCH 01/47] MdeModulePkg/RegularExpressionDxe: guard the definition of ARRAY_SIZE Laszlo Ersek
                   ` (51 more replies)
  0 siblings, 52 replies; 98+ messages in thread
From: Laszlo Ersek @ 2016-10-26 19:04 UTC (permalink / raw)
  To: edk2-devel-01
  Cc: Ard Biesheuvel, Cecil Sheng, Chao Zhang, Dandan Bi,
	Daryl McDaniel, David Wei, Eric Dong, Feng Tian, Gary Lin,
	Jaben Carsey, Jeff Fan, Jiaxin Wu, Jordan Justen, Liming Gao,
	Michael D Kinney, Ruiyu Ni, Siyuan Fu, Star Zeng, Tim He

I'm sure most of us have wished at some point that ARRAY_SIZE()
had existed in a central header file, like it does in many other
open source projects. This series implements that.

Patches 01-04 round up the modules that #define ARRAY_SIZE() just
for themselves, and wrap their definitions in #ifndef ARRAY_SIZE.

Patch 05 defines ARRAY_SIZE() in "MdePkg/Include/Base.h". This
flips the previously modified modules to MdePkg's macro definition.

Patches 06-09 modify the same set of modules as patches 01-04 do; this
time the (now unused) module-local ARRAY_SIZE() macro definitions are
eliminated.

The rest of the patches (10-47) migrate the edk2 tree to ARRAY_SIZE(),
covering the most obvious open-coded ARRAY_SIZE() expressions. These
expressions were located and converted with the following shell
pipeline:

  git ls-files \
  | xargs --no-run-if-empty -- \
      sed --regexp-extended --in-place \
        --expression='s,sizeof \(([a-zA-Z0-9_]+)\) / sizeof \((\*\1|\1\[0\])\),ARRAY_SIZE (\1),g' \
        --

This pipeline lists all tracked files with "git". The pathnames are then
composed with "xargs" into maximal length "sed" command lines, and those
"sed" commands are run.

Here the "sed" stream editor filters and modifies all the listed files
in place. The extended regular expression replaces the following two
patterns:

  sizeof (ArrayName) / sizeof (*ArrayName)
  sizeof (ArrayName) / sizeof (ArrayName[0])

with

  ARRAY_SIZE (ArrayName)

The regexp uses a backreference in the match, ensuring that the sizeof
operator in the dividend and the sizeof operator in the divisor both
refer to the same ArrayName. If there are multiple occurrences on the
same line, the sed command replaces all of them.

I collected the changes into patches manually, and I reviewed them all.

I test-built all of the modified packages, repeating the command

  build -a X64 -t GCC48 -b DEBUG -p FooPkg/FooPkg.dsc

as many times as necessary. Two packages were impossible to build like
this: Nt32Pkg and Vlv2TbltDevicePkg, so I couldn't build-test them.

I did some light-weight testing with OVMF: boot with Secure Boot
enabled, S3 suspend/resume with and without SMM. I also booted
ArmVirtQemu once.

Repository: https://github.com/lersek/edk2.git
Branch:     array_size

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Cecil Sheng <cecil.sheng@hpe.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Daryl McDaniel <edk2-lists@mc2research.org>
Cc: David Wei <david.wei@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Gary Lin <glin@suse.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Siyuan Fu <siyuan.fu@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Tim He <tim.he@intel.com>

Thanks
Laszlo

Laszlo Ersek (47):
  MdeModulePkg/RegularExpressionDxe: guard the definition of ARRAY_SIZE
  NetworkPkg/IpsecConfig: guard the definition of ARRAY_SIZE
  OvmfPkg/PlatformBootManagerLib: guard the definition of ARRAY_SIZE
  OvmfPkg/XenBusDxe: guard the definition of ARRAY_SIZE
  MdePkg/Include/Base.h: introduce the ARRAY_SIZE() function-like macro
  MdeModulePkg/RegularExpressionDxe: remove module-local ARRAY_SIZE
    macro
  NetworkPkg/IpsecConfig: remove module-local ARRAY_SIZE macro
  OvmfPkg/PlatformBootManagerLib: remove module-local ARRAY_SIZE macro
  OvmfPkg/XenBusDxe: remove module-local ARRAY_SIZE macro
  ArmVirtPkg/NorFlashQemuLib: rebase to ARRAY_SIZE()
  DuetPkg/DuetBdsLib: rebase to ARRAY_SIZE()
  EdkCompatibilityPkg/FrameworkHiiOnUefiHiiThunk: rebase to ARRAY_SIZE()
  EdkCompatibilityPkg/Sample/Tools: rebase to ARRAY_SIZE()
  FatPkg/EnhancedFatDxe: rebase to ARRAY_SIZE()
  IntelFrameworkModulePkg/LegacyBootManagerLib: rebase to ARRAY_SIZE()
  IntelFrameworkModulePkg/BdsDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/MemoryProfileInfo: rebase to ARRAY_SIZE()
  MdeModulePkg/PciBusDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/PciHostBridgeDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/UsbBusDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Core/Dxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Core/PiSmmCore: rebase to ARRAY_SIZE()
  MdeModulePkg/BootMaintenanceManagerUiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/BootManagerUiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/UefiBootManagerLib: rebase to ARRAY_SIZE()
  MdeModulePkg/VarCheckHiiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/Logo: rebase to ARRAY_SIZE()
  MdeModulePkg/BdsDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/DisplayEngineDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/EbcDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Tcp4Dxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Variable/RuntimeDxe: rebase to ARRAY_SIZE()
  NetworkPkg/IScsiDxe: rebase to ARRAY_SIZE()
  NetworkPkg/TcpDxe: rebase to ARRAY_SIZE()
  Nt32Pkg/WinNtSerialIoDxe: rebase to ARRAY_SIZE()
  OptionRomPkg/AtapiPassThruDxe: rebase to ARRAY_SIZE()
  OvmfPkg/QemuBootOrderLib: rebase to ARRAY_SIZE()
  OvmfPkg/QemuVideoDxe: rebase to ARRAY_SIZE()
  PerformancePkg/Dp_App: rebase to ARRAY_SIZE()
  SecurityPkg/AuthVariableLib: rebase to ARRAY_SIZE()
  ShellPkg/UefiDpLib: rebase to ARRAY_SIZE()
  ShellPkg/UefiShellLevel2CommandsLib: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/FirmwareUpdate: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformInitPei: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformPei: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformSetupDxe: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/SmBiosMiscDxe: rebase to ARRAY_SIZE()

 ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.c                          |  2 +-
 DuetPkg/Library/DuetBdsLib/BdsPlatform.c                                      |  2 +-
 EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/OpcodeCreation.c |  2 +-
 EdkCompatibilityPkg/Sample/Tools/Source/EfiRom/EfiRom.c                       |  4 ++--
 EdkCompatibilityPkg/Sample/Tools/Source/HiiPack/IfrParse.c                    |  2 +-
 FatPkg/EnhancedFatDxe/DirectoryManage.c                                       |  4 ++--
 FatPkg/EnhancedFatDxe/FileName.c                                              |  4 ++--
 FatPkg/EnhancedFatDxe/Hash.c                                                  |  4 ++--
 IntelFrameworkModulePkg/Library/LegacyBootManagerLib/LegacyBm.c               |  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c                           |  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BBSsupport.c               |  4 ++--
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c                |  8 ++++----
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootOption.c               |  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/ConsoleOption.c            |  6 +++---
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c               | 10 +++++-----
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Variable.c                 |  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c               |  2 +-
 MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c                |  6 +++---
 MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c                                       |  2 +-
 MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c                         |  2 +-
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c                                       |  4 ++--
 MdeModulePkg/Core/Dxe/Mem/Pool.c                                              |  2 +-
 MdeModulePkg/Core/PiSmmCore/Pool.c                                            |  2 +-
 MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c                              |  6 +++---
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c            |  8 ++++----
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/ConsoleOption.c              |  8 ++++----
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c                 | 12 ++++++------
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/Variable.c                   |  2 +-
 MdeModulePkg/Library/BootManagerUiLib/BootManager.c                           |  6 +++---
 MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c                   |  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c                           |  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c                            |  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c                        |  4 ++--
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c                          |  4 ++--
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLibNullClass.c                 |  2 +-
 MdeModulePkg/Logo/Logo.c                                                      |  2 +-
 MdeModulePkg/Universal/BdsDxe/BdsEntry.c                                      |  2 +-
 MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c                         |  4 ++--
 MdeModulePkg/Universal/DisplayEngineDxe/InputHandler.c                        |  6 +++---
 MdeModulePkg/Universal/EbcDxe/EbcExecute.c                                    |  2 +-
 MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Output.c                           |  2 +-
 MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.h            |  2 --
 MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c                         |  2 +-
 MdePkg/Include/Base.h                                                         | 13 +++++++++++++
 NetworkPkg/Application/IpsecConfig/IpSecConfig.h                              |  2 --
 NetworkPkg/IScsiDxe/IScsiConfig.c                                             |  4 ++--
 NetworkPkg/IScsiDxe/IScsiDriver.c                                             |  2 +-
 NetworkPkg/IScsiDxe/IScsiMisc.c                                               |  6 +++---
 NetworkPkg/TcpDxe/TcpOutput.c                                                 |  2 +-
 Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIo.c                                      |  2 +-
 OptionRomPkg/AtapiPassThruDxe/AtapiPassThru.c                                 |  4 ++--
 OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c                          |  5 -----
 OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c                           | 12 ++++++------
 OvmfPkg/QemuVideoDxe/Initialize.c                                             |  4 ++--
 OvmfPkg/XenBusDxe/XenStore.c                                                  |  1 -
 PerformancePkg/Dp_App/Dp.c                                                    |  2 +-
 PerformancePkg/Dp_App/DpTrace.c                                               | 10 +++++-----
 SecurityPkg/Library/AuthVariableLib/AuthVariableLib.c                         |  4 ++--
 ShellPkg/Library/UefiDpLib/DpTrace.c                                          | 10 +++++-----
 ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c                        |  2 +-
 Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.c                 |  2 +-
 Vlv2TbltDevicePkg/PlatformInitPei/FlashMap.c                                  |  2 +-
 Vlv2TbltDevicePkg/PlatformPei/BootMode.c                                      |  6 +++---
 Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c                         |  2 +-
 Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c                     |  2 +-
 65 files changed, 131 insertions(+), 128 deletions(-)

-- 
2.9.2



^ permalink raw reply	[flat|nested] 98+ messages in thread

end of thread, other threads:[~2016-10-28 10:20 UTC | newest]

Thread overview: 98+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-26 19:04 [PATCH 00/47] edk2: centralize and adopt ARRAY_SIZE() Laszlo Ersek
2016-10-26 19:04 ` [PATCH 01/47] MdeModulePkg/RegularExpressionDxe: guard the definition of ARRAY_SIZE Laszlo Ersek
2016-10-26 19:04 ` [PATCH 02/47] NetworkPkg/IpsecConfig: " Laszlo Ersek
2016-10-27  1:59   ` Fu, Siyuan
2016-10-27  2:30   ` Wu, Jiaxin
2016-10-26 19:04 ` [PATCH 03/47] OvmfPkg/PlatformBootManagerLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 04/47] OvmfPkg/XenBusDxe: " Laszlo Ersek
2016-10-27  3:15   ` Gary Lin
2016-10-26 19:04 ` [PATCH 05/47] MdePkg/Include/Base.h: introduce the ARRAY_SIZE() function-like macro Laszlo Ersek
2016-10-26 22:13   ` Kinney, Michael D
2016-10-26 22:25     ` Laszlo Ersek
2016-10-27  2:21       ` Kinney, Michael D
2016-10-26 19:04 ` [PATCH 06/47] MdeModulePkg/RegularExpressionDxe: remove module-local ARRAY_SIZE macro Laszlo Ersek
2016-10-26 19:04 ` [PATCH 07/47] NetworkPkg/IpsecConfig: " Laszlo Ersek
2016-10-27  1:59   ` Fu, Siyuan
2016-10-27  2:31   ` Wu, Jiaxin
2016-10-26 19:04 ` [PATCH 08/47] OvmfPkg/PlatformBootManagerLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 09/47] OvmfPkg/XenBusDxe: " Laszlo Ersek
2016-10-27  3:16   ` Gary Lin
2016-10-26 19:04 ` [PATCH 10/47] ArmVirtPkg/NorFlashQemuLib: rebase to ARRAY_SIZE() Laszlo Ersek
2016-10-27  7:30   ` Ard Biesheuvel
2016-10-26 19:04 ` [PATCH 11/47] DuetPkg/DuetBdsLib: " Laszlo Ersek
2016-10-27  8:16   ` Laszlo Ersek
2016-10-27  9:04     ` Ni, Ruiyu
2016-10-27  9:12       ` Laszlo Ersek
2016-10-26 19:04 ` [PATCH 12/47] EdkCompatibilityPkg/FrameworkHiiOnUefiHiiThunk: " Laszlo Ersek
2016-10-27  1:20   ` Gao, Liming
2016-10-26 19:04 ` [PATCH 13/47] EdkCompatibilityPkg/Sample/Tools: " Laszlo Ersek
2016-10-27  1:20   ` Gao, Liming
2016-10-26 19:04 ` [PATCH 14/47] FatPkg/EnhancedFatDxe: " Laszlo Ersek
2016-10-27  1:53   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 15/47] IntelFrameworkModulePkg/LegacyBootManagerLib: " Laszlo Ersek
2016-10-27  3:09   ` Fan, Jeff
2016-10-26 19:04 ` [PATCH 16/47] IntelFrameworkModulePkg/BdsDxe: " Laszlo Ersek
2016-10-27  3:12   ` Fan, Jeff
2016-10-26 19:04 ` [PATCH 17/47] MdeModulePkg/MemoryProfileInfo: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 18/47] MdeModulePkg/PciBusDxe: " Laszlo Ersek
2016-10-27  1:53   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 19/47] MdeModulePkg/PciHostBridgeDxe: " Laszlo Ersek
2016-10-27  1:49   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 20/47] MdeModulePkg/UsbBusDxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 21/47] MdeModulePkg/Core/Dxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 22/47] MdeModulePkg/Core/PiSmmCore: " Laszlo Ersek
2016-10-27  2:20   ` Kinney, Michael D
2016-10-26 19:04 ` [PATCH 23/47] MdeModulePkg/BootMaintenanceManagerUiLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 24/47] MdeModulePkg/BootManagerUiLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 25/47] MdeModulePkg/UefiBootManagerLib: " Laszlo Ersek
2016-10-27  1:50   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 26/47] MdeModulePkg/VarCheckHiiLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 27/47] MdeModulePkg/Logo: " Laszlo Ersek
2016-10-27  1:53   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 28/47] MdeModulePkg/BdsDxe: " Laszlo Ersek
2016-10-27  1:50   ` Ni, Ruiyu
2016-10-27  1:50   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 29/47] MdeModulePkg/DisplayEngineDxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 30/47] MdeModulePkg/EbcDxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 31/47] MdeModulePkg/Tcp4Dxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 32/47] MdeModulePkg/Variable/RuntimeDxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 33/47] NetworkPkg/IScsiDxe: " Laszlo Ersek
2016-10-27  1:59   ` Fu, Siyuan
2016-10-26 19:04 ` [PATCH 34/47] NetworkPkg/TcpDxe: " Laszlo Ersek
2016-10-27  2:00   ` Fu, Siyuan
2016-10-27  2:31   ` Wu, Jiaxin
2016-10-26 19:04 ` [PATCH 35/47] Nt32Pkg/WinNtSerialIoDxe: " Laszlo Ersek
2016-10-27  1:49   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 36/47] OptionRomPkg/AtapiPassThruDxe: " Laszlo Ersek
2016-10-27  1:47   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 37/47] OvmfPkg/QemuBootOrderLib: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 38/47] OvmfPkg/QemuVideoDxe: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 39/47] PerformancePkg/Dp_App: " Laszlo Ersek
2016-10-26 19:04 ` [PATCH 40/47] SecurityPkg/AuthVariableLib: " Laszlo Ersek
2016-10-27  9:07   ` Laszlo Ersek
2016-10-27  9:09     ` Zeng, Star
2016-10-27  9:12       ` Laszlo Ersek
2016-10-28  8:36     ` Zhang, Chao B
2016-10-28 10:20       ` Laszlo Ersek
2016-10-26 19:04 ` [PATCH 41/47] ShellPkg/UefiDpLib: " Laszlo Ersek
2016-10-27  1:47   ` Ni, Ruiyu
2016-10-26 19:04 ` [PATCH 42/47] ShellPkg/UefiShellLevel2CommandsLib: " Laszlo Ersek
2016-10-27  1:47   ` Ni, Ruiyu
2016-10-26 19:05 ` [PATCH 43/47] Vlv2TbltDevicePkg/FirmwareUpdate: " Laszlo Ersek
2016-10-27  7:08   ` Guo, Mang
2016-10-26 19:05 ` [PATCH 44/47] Vlv2TbltDevicePkg/PlatformInitPei: " Laszlo Ersek
2016-10-27  7:10   ` Guo, Mang
2016-10-26 19:05 ` [PATCH 45/47] Vlv2TbltDevicePkg/PlatformPei: " Laszlo Ersek
2016-10-27  7:12   ` Guo, Mang
2016-10-26 19:05 ` [PATCH 46/47] Vlv2TbltDevicePkg/PlatformSetupDxe: " Laszlo Ersek
2016-10-27  7:14   ` Guo, Mang
2016-10-26 19:05 ` [PATCH 47/47] Vlv2TbltDevicePkg/SmBiosMiscDxe: " Laszlo Ersek
2016-10-27  7:14   ` Guo, Mang
2016-10-26 21:48 ` [PATCH 00/47] edk2: centralize and adopt ARRAY_SIZE() Carsey, Jaben
2016-10-27  1:17 ` Tian, Feng
2016-10-27  2:37   ` Zeng, Star
2016-10-27  4:43 ` Gary Lin
2016-10-27  7:52   ` Laszlo Ersek
2016-10-27  6:05 ` Jordan Justen
2016-10-27  8:49   ` Laszlo Ersek
2016-10-27  9:27 ` Laszlo Ersek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox