From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: quintela@redhat.com, peterx@redhat.com, farosas@suse.de,
leobras@redhat.com
Subject: [PATCH 23/71] hw/audio: Constify VMState
Date: Sun, 5 Nov 2023 22:57:39 -0800 [thread overview]
Message-ID: <20231106065827.543129-24-richard.henderson@linaro.org> (raw)
In-Reply-To: <20231106065827.543129-1-richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
hw/audio/ac97.c | 4 ++--
hw/audio/asc.c | 4 ++--
hw/audio/cs4231.c | 2 +-
hw/audio/cs4231a.c | 2 +-
hw/audio/es1370.c | 4 ++--
hw/audio/gus.c | 2 +-
hw/audio/hda-codec.c | 8 ++++----
hw/audio/intel-hda.c | 4 ++--
hw/audio/lm4549.c | 2 +-
hw/audio/marvell_88w8618.c | 2 +-
hw/audio/pcspk.c | 2 +-
hw/audio/pl041.c | 8 ++++----
hw/audio/sb16.c | 2 +-
hw/audio/wm8750.c | 2 +-
14 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
index 6a7a2dc80c..3f0053f94d 100644
--- a/hw/audio/ac97.c
+++ b/hw/audio/ac97.c
@@ -1094,7 +1094,7 @@ static const VMStateDescription vmstate_ac97_bm_regs = {
.name = "ac97_bm_regs",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(bdbar, AC97BusMasterRegs),
VMSTATE_UINT8(civ, AC97BusMasterRegs),
VMSTATE_UINT8(lvi, AC97BusMasterRegs),
@@ -1142,7 +1142,7 @@ static const VMStateDescription vmstate_ac97 = {
.version_id = 3,
.minimum_version_id = 2,
.post_load = ac97_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_PCI_DEVICE(dev, AC97LinkState),
VMSTATE_UINT32(glob_cnt, AC97LinkState),
VMSTATE_UINT32(glob_sta, AC97LinkState),
diff --git a/hw/audio/asc.c b/hw/audio/asc.c
index 0f36b4ce9b..87b5624326 100644
--- a/hw/audio/asc.c
+++ b/hw/audio/asc.c
@@ -555,7 +555,7 @@ static const VMStateDescription vmstate_asc_fifo = {
.name = "apple-sound-chip.fifo",
.version_id = 0,
.minimum_version_id = 0,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT8_ARRAY(fifo, ASCFIFOState, ASC_FIFO_SIZE),
VMSTATE_UINT8(int_status, ASCFIFOState),
VMSTATE_INT32(cnt, ASCFIFOState),
@@ -575,7 +575,7 @@ static const VMStateDescription vmstate_asc = {
.version_id = 0,
.minimum_version_id = 0,
.post_load = asc_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_STRUCT_ARRAY(fifos, ASCState, 2, 0, vmstate_asc_fifo,
ASCFIFOState),
VMSTATE_UINT8_ARRAY(regs, ASCState, ASC_REG_SIZE),
diff --git a/hw/audio/cs4231.c b/hw/audio/cs4231.c
index aefc3edea1..967caa7fcb 100644
--- a/hw/audio/cs4231.c
+++ b/hw/audio/cs4231.c
@@ -142,7 +142,7 @@ static const VMStateDescription vmstate_cs4231 = {
.name ="cs4231",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32_ARRAY(regs, CSState, CS_REGS),
VMSTATE_UINT8_ARRAY(dregs, CSState, CS_DREGS),
VMSTATE_END_OF_LIST()
diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 3aa105748d..9ef57f042d 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -637,7 +637,7 @@ static const VMStateDescription vmstate_cs4231a = {
.minimum_version_id = 1,
.pre_load = cs4231a_pre_load,
.post_load = cs4231a_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32_ARRAY (regs, CSState, CS_REGS),
VMSTATE_BUFFER (dregs, CSState),
VMSTATE_INT32 (dma_running, CSState),
diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c
index 91c47330ad..ee498b37f2 100644
--- a/hw/audio/es1370.c
+++ b/hw/audio/es1370.c
@@ -760,7 +760,7 @@ static const VMStateDescription vmstate_es1370_channel = {
.name = "es1370_channel",
.version_id = 2,
.minimum_version_id = 2,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32 (shift, struct chan),
VMSTATE_UINT32 (leftover, struct chan),
VMSTATE_UINT32 (scount, struct chan),
@@ -803,7 +803,7 @@ static const VMStateDescription vmstate_es1370 = {
.version_id = 2,
.minimum_version_id = 2,
.post_load = es1370_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_PCI_DEVICE (dev, ES1370State),
VMSTATE_STRUCT_ARRAY (chan, ES1370State, NB_CHANNELS, 2,
vmstate_es1370_channel, struct chan),
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index 6c2b586ca7..4beb3fd74e 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -209,7 +209,7 @@ static const VMStateDescription vmstate_gus = {
.name = "gus",
.version_id = 2,
.minimum_version_id = 2,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_INT32 (pos, GUSState),
VMSTATE_INT32 (left, GUSState),
VMSTATE_INT32 (shift, GUSState),
diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c
index b9ad1f4c39..de0cd7afab 100644
--- a/hw/audio/hda-codec.c
+++ b/hw/audio/hda-codec.c
@@ -799,7 +799,7 @@ static const VMStateDescription vmstate_hda_audio_stream_buf = {
.name = "hda-audio-stream/buffer",
.version_id = 1,
.needed = vmstate_hda_audio_stream_buf_needed,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_BUFFER(buf, HDAAudioStream),
VMSTATE_INT64(rpos, HDAAudioStream),
VMSTATE_INT64(wpos, HDAAudioStream),
@@ -812,7 +812,7 @@ static const VMStateDescription vmstate_hda_audio_stream_buf = {
static const VMStateDescription vmstate_hda_audio_stream = {
.name = "hda-audio-stream",
.version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(stream, HDAAudioStream),
VMSTATE_UINT32(channel, HDAAudioStream),
VMSTATE_UINT32(format, HDAAudioStream),
@@ -824,7 +824,7 @@ static const VMStateDescription vmstate_hda_audio_stream = {
VMSTATE_BUFFER(compat_buf, HDAAudioStream),
VMSTATE_END_OF_LIST()
},
- .subsections = (const VMStateDescription * []) {
+ .subsections = (const VMStateDescription * const []) {
&vmstate_hda_audio_stream_buf,
NULL
}
@@ -834,7 +834,7 @@ static const VMStateDescription vmstate_hda_audio = {
.name = "hda-audio",
.version_id = 2,
.post_load = hda_audio_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_STRUCT_ARRAY(st, HDAAudioState, 4, 0,
vmstate_hda_audio_stream,
HDAAudioStream),
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 78ff9f9a68..9c54e60b71 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -1158,7 +1158,7 @@ static int intel_hda_post_load(void *opaque, int version)
static const VMStateDescription vmstate_intel_hda_stream = {
.name = "intel-hda-stream",
.version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(ctl, IntelHDAStream),
VMSTATE_UINT32(lpib, IntelHDAStream),
VMSTATE_UINT32(cbl, IntelHDAStream),
@@ -1174,7 +1174,7 @@ static const VMStateDescription vmstate_intel_hda = {
.name = "intel-hda",
.version_id = 1,
.post_load = intel_hda_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_PCI_DEVICE(pci, IntelHDAState),
/* registers */
diff --git a/hw/audio/lm4549.c b/hw/audio/lm4549.c
index e7bfcc4b9f..a4a77c8dc6 100644
--- a/hw/audio/lm4549.c
+++ b/hw/audio/lm4549.c
@@ -329,7 +329,7 @@ const VMStateDescription vmstate_lm4549_state = {
.version_id = 1,
.minimum_version_id = 1,
.post_load = lm4549_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(voice_is_active, lm4549_state),
VMSTATE_UINT16_ARRAY(regfile, lm4549_state, 128),
VMSTATE_UINT16_ARRAY(buffer, lm4549_state, LM4549_BUFFER_SIZE),
diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c
index e6c09bdb8e..cc285444bc 100644
--- a/hw/audio/marvell_88w8618.c
+++ b/hw/audio/marvell_88w8618.c
@@ -273,7 +273,7 @@ static const VMStateDescription mv88w8618_audio_vmsd = {
.name = "mv88w8618_audio",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(playback_mode, mv88w8618_audio_state),
VMSTATE_UINT32(status, mv88w8618_audio_state),
VMSTATE_UINT32(irq_enable, mv88w8618_audio_state),
diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c
index fe7f07ced2..a4b89f1768 100644
--- a/hw/audio/pcspk.c
+++ b/hw/audio/pcspk.c
@@ -208,7 +208,7 @@ static const VMStateDescription vmstate_spk = {
.version_id = 1,
.minimum_version_id = 1,
.needed = migrate_needed,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT8(data_on, PCSpkState),
VMSTATE_UINT8(dummy_refresh_clock, PCSpkState),
VMSTATE_END_OF_LIST()
diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c
index 868dffbfd3..b435208c24 100644
--- a/hw/audio/pl041.c
+++ b/hw/audio/pl041.c
@@ -571,7 +571,7 @@ static const VMStateDescription vmstate_pl041_regfile = {
.name = "pl041_regfile",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
#define REGISTER(name, offset) VMSTATE_UINT32(name, pl041_regfile),
#include "pl041.hx"
#undef REGISTER
@@ -583,7 +583,7 @@ static const VMStateDescription vmstate_pl041_fifo = {
.name = "pl041_fifo",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(level, pl041_fifo),
VMSTATE_UINT32_ARRAY(data, pl041_fifo, MAX_FIFO_DEPTH),
VMSTATE_END_OF_LIST()
@@ -594,7 +594,7 @@ static const VMStateDescription vmstate_pl041_channel = {
.name = "pl041_channel",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_STRUCT(tx_fifo, pl041_channel, 0,
vmstate_pl041_fifo, pl041_fifo),
VMSTATE_UINT8(tx_enabled, pl041_channel),
@@ -613,7 +613,7 @@ static const VMStateDescription vmstate_pl041 = {
.name = "pl041",
.version_id = 1,
.minimum_version_id = 1,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32(fifo_depth, PL041State),
VMSTATE_STRUCT(regs, PL041State, 0,
vmstate_pl041_regfile, pl041_regfile),
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index 18f6d252db..bf7f35a42b 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -1324,7 +1324,7 @@ static const VMStateDescription vmstate_sb16 = {
.version_id = 1,
.minimum_version_id = 1,
.post_load = sb16_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT32 (irq, SB16State),
VMSTATE_UINT32 (dma, SB16State),
VMSTATE_UINT32 (hdma, SB16State),
diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c
index 57954a6314..ec2c4e1374 100644
--- a/hw/audio/wm8750.c
+++ b/hw/audio/wm8750.c
@@ -592,7 +592,7 @@ static const VMStateDescription vmstate_wm8750 = {
.minimum_version_id = 0,
.pre_save = wm8750_pre_save,
.post_load = wm8750_post_load,
- .fields = (VMStateField[]) {
+ .fields = (const VMStateField[]) {
VMSTATE_UINT8_ARRAY(i2c_data, WM8750State, 2),
VMSTATE_INT32(i2c_len, WM8750State),
VMSTATE_INT32(enable, WM8750State),
--
2.34.1
next prev parent reply other threads:[~2023-11-06 7:02 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 6:57 [PATCH 00/71] *: Constify VMState Richard Henderson
2023-11-06 6:57 ` [PATCH 01/71] migration: Make VMStateDescription.subsections const Richard Henderson
2023-11-06 11:17 ` Juan Quintela
2023-11-06 11:48 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 02/71] target/arm: Constify VMState in machine.c Richard Henderson
2023-11-06 11:54 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 03/71] targt/arm: Constify hvf/hvf.c Richard Henderson
2023-11-06 11:54 ` Philippe Mathieu-Daudé
2023-11-08 10:15 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 04/71] target/alpha: Constify VMState in machine.c Richard Henderson
2023-11-06 6:57 ` [PATCH 05/71] target/avr: " Richard Henderson
2023-11-06 11:53 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 06/71] target/cris: " Richard Henderson
2023-11-08 10:12 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 07/71] target/hppa: " Richard Henderson
2023-11-08 10:13 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 08/71] target/i386: " Richard Henderson
2023-11-06 6:57 ` [PATCH 09/71] target/loongarch: " Richard Henderson
2023-11-06 6:57 ` [PATCH 10/71] target/m68k: " Richard Henderson
2023-11-06 6:57 ` [PATCH 11/71] target/microblaze: " Richard Henderson
2023-11-06 6:57 ` [PATCH 12/71] target/mips: " Richard Henderson
2023-11-06 11:49 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 13/71] target/openrisc: " Richard Henderson
2023-11-06 6:57 ` [PATCH 14/71] target/ppc: " Richard Henderson
2023-11-06 6:57 ` [PATCH 15/71] target/riscv: " Richard Henderson
2023-11-06 9:28 ` Alistair Francis
2023-11-06 6:57 ` [PATCH 16/71] target/s390x: " Richard Henderson
2023-11-06 6:57 ` [PATCH 17/71] target/sparc: " Richard Henderson
2023-11-06 22:05 ` Mark Cave-Ayland
2023-11-06 6:57 ` [PATCH 18/71] hw/arm: Constify VMState Richard Henderson
2023-11-06 11:53 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 19/71] hw/core: " Richard Henderson
2023-11-06 11:49 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 20/71] hw/9pfs: " Richard Henderson
2023-11-06 7:53 ` Greg Kurz
2023-11-06 11:44 ` Christian Schoenebeck
2023-11-06 6:57 ` [PATCH 21/71] hw/acpi: " Richard Henderson
2023-11-06 6:57 ` [PATCH 22/71] hw/adc: " Richard Henderson
2023-11-08 10:13 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` Richard Henderson [this message]
2023-11-06 6:57 ` [PATCH 24/71] hw/block: " Richard Henderson
2023-11-06 6:57 ` [PATCH 25/71] hw/char: " Richard Henderson
2023-11-06 6:57 ` [PATCH 26/71] hw/display: " Richard Henderson
2023-11-06 6:57 ` [PATCH 27/71] hw/dma: " Richard Henderson
2023-11-06 6:57 ` [PATCH 28/71] hw/gpio: " Richard Henderson
2023-11-06 6:57 ` [PATCH 29/71] hw/hyperv: " Richard Henderson
2023-11-06 6:57 ` [PATCH 30/71] hw/i2c: " Richard Henderson
2023-11-06 6:57 ` [PATCH 31/71] hw/i386: " Richard Henderson
2023-11-06 6:57 ` [PATCH 32/71] hw/ide: " Richard Henderson
2023-11-06 6:57 ` [PATCH 33/71] hw/input: " Richard Henderson
2023-11-06 6:57 ` [PATCH 34/71] hw/intc: " Richard Henderson
2023-11-06 6:57 ` [PATCH 35/71] hw/ipack: " Richard Henderson
2023-11-06 6:57 ` [PATCH 36/71] hw/ipmi: " Richard Henderson
2023-11-06 6:57 ` [PATCH 37/71] hw/isa: " Richard Henderson
2023-11-08 10:14 ` Philippe Mathieu-Daudé
2023-11-06 6:57 ` [PATCH 38/71] hw/loongarch: " Richard Henderson
2023-11-06 6:57 ` [PATCH 39/71] hw/m68k: " Richard Henderson
2023-11-06 6:57 ` [PATCH 40/71] hw/misc: " Richard Henderson
2023-11-06 6:57 ` [PATCH 41/71] hw/net: " Richard Henderson
2023-11-06 6:57 ` [PATCH 42/71] hw/nvram: " Richard Henderson
2023-11-06 6:57 ` [PATCH 43/71] hw/openrisc: " Richard Henderson
2023-11-06 6:58 ` [PATCH 44/71] hw/pci: " Richard Henderson
2023-11-06 6:58 ` [PATCH 45/71] hw/pci-bridge: " Richard Henderson
2023-11-06 6:58 ` [PATCH 46/71] hw/pci-host: " Richard Henderson
2023-11-06 11:52 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 47/71] hw/ppc: " Richard Henderson
2023-11-06 6:58 ` [PATCH 48/71] hw/riscv: " Richard Henderson
2023-11-06 9:26 ` Alistair Francis
2023-11-06 6:58 ` [PATCH 49/71] hw/rtc: " Richard Henderson
2023-11-08 10:14 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 50/71] hw/s390x: " Richard Henderson
2023-11-06 6:58 ` [PATCH 51/71] hw/scsi: " Richard Henderson
2023-11-06 6:58 ` [PATCH 52/71] hw/sd: " Richard Henderson
2023-11-06 11:50 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 53/71] hw/sensor: " Richard Henderson
2023-11-06 11:55 ` Philippe Mathieu-Daudé
2023-11-06 16:08 ` Richard Henderson
2023-11-06 6:58 ` [PATCH 54/71] hw/sparc: " Richard Henderson
2023-11-06 6:58 ` [PATCH 55/71] hw/ssi: " Richard Henderson
2023-11-06 6:58 ` [PATCH 56/71] hw/timer: " Richard Henderson
2023-11-06 6:58 ` [PATCH 57/71] hw/tpm: " Richard Henderson
2023-11-06 6:58 ` [PATCH 58/71] hw/usb: " Richard Henderson
2023-11-06 6:58 ` [PATCH 59/71] hw/vfio: " Richard Henderson
2023-11-06 6:58 ` [PATCH 60/71] hw/virtio: " Richard Henderson
2023-11-06 6:58 ` [PATCH 61/71] hw/watchdog: " Richard Henderson
2023-11-06 6:58 ` [PATCH 62/71] hw/misc/macio: " Richard Henderson
2023-11-06 6:58 ` [PATCH 63/71] audio: " Richard Henderson
2023-11-06 6:58 ` [PATCH 64/71] backends: " Richard Henderson
2023-11-06 6:58 ` [PATCH 65/71] cpu-target: " Richard Henderson
2023-11-08 10:16 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 66/71] migration: " Richard Henderson
2023-11-06 11:18 ` Juan Quintela
2023-11-06 6:58 ` [PATCH 67/71] system: " Richard Henderson
2023-11-06 11:51 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 68/71] replay: " Richard Henderson
2023-11-06 6:58 ` [PATCH 69/71] util/fifo8: " Richard Henderson
2023-11-08 10:16 ` Philippe Mathieu-Daudé
2023-11-06 6:58 ` [PATCH 70/71] tests/unit/test-vmstate: " Richard Henderson
2023-11-06 11:24 ` Juan Quintela
2023-11-06 6:58 ` [PATCH 71/71] docs: Constify VMstate in examples Richard Henderson
2023-11-06 11:24 ` Juan Quintela
2023-11-06 11:51 ` Philippe Mathieu-Daudé
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-all 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=20231106065827.543129-24-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=farosas@suse.de \
--cc=leobras@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).