<div dir="ltr">Overall I like the concept of this patch, and I think it should get merged.<div><br></div><div>I'm not entirely convinced that redirecting people using the chromiumos branch to a separate list will significantly reduce the traffic on this list though. AFAICT most people who report issues are trying to flash manually with upstream flashrom (or a version bundled with their distro) and encounter issues with the ME or some such.</div>


<div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 21, 2014 at 1:16 AM, Stefan Tauner <span dir="ltr"><<a href="mailto:stefan.tauner@alumni.tuwien.ac.at" target="_blank">stefan.tauner@alumni.tuwien.ac.at</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Use it throughout the source to allow for printing alternative support email<br>
addresses (e.g. for distributions, chromiumos or other 3rd parties).<br>
Also, fix some indentions on the way.<br>
<br>
Signed-off-by: Stefan Tauner <<a href="mailto:stefan.tauner@alumni.tuwien.ac.at" target="_blank">stefan.tauner@alumni.tuwien.ac.at</a>><br>
---<br>
<br>
This of course only makes sense if someone uses it (and in the case of<br>
chromium port it to their tree... and set up some kind of community<br>
mailing list or something?). Therefore I would like to hear your thoughts<br>
about it. Would you use it?<br>
<br>
 Makefile         |  3 +++<br>
 bitbang_spi.c    |  2 +-<br>
 board_enable.c   | 12 ++++++------<br>
 chipset_enable.c | 16 ++++++----------<br>
 cli_common.c     |  2 +-<br>
 dediprog.c       | 10 +++++-----<br>
 flashrom.c       | 50 +++++++++++++++++++++-----------------------------<br>
 jedec.c          |  2 +-<br>
 opaque.c         |  2 +-<br>
 pcidev.c         | 10 +++++-----<br>
 physmap.c        |  6 ++----<br>
 print.c          |  2 +-<br>
 programmer.c     |  2 +-<br>
 sb600spi.c       |  8 ++++----<br>
 sfdp.c           |  5 ++---<br>
 spi.c            |  6 +++---<br>
 spi25.c          |  6 +++---<br>
 17 files changed, 66 insertions(+), 78 deletions(-)<br>
<br>
diff --git a/Makefile b/Makefile<br>
index 98230a5..1e85f41 100644<br>
--- a/Makefile<br>
+++ b/Makefile<br>
@@ -19,6 +19,7 @@<br>
 #<br>
<br>
 PROGRAM = flashrom<br>
+SUPPORT_EMAIL = <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a><br>
<br>
 ###############################################################################<br>
 # Defaults for the toolchain.<br>
@@ -723,6 +724,8 @@ endif<br>
<br>
 FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "UTSNAME := yes" .features && printf "%s" "-D'HAVE_UTSNAME=1'")<br>
<br>
+FEATURE_CFLAGS += -D'SUPPORT_EMAIL="$(SUPPORT_EMAIL)"'<br>
+<br>
 # We could use PULLED_IN_LIBS, but that would be ugly.<br>
 FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps && printf "%s" "-lz")<br>
<br>
diff --git a/bitbang_spi.c b/bitbang_spi.c<br>
index 0b27a67..9a0441c 100644<br>
--- a/bitbang_spi.c<br>
+++ b/bitbang_spi.c<br>
@@ -94,7 +94,7 @@ int register_spi_bitbang_master(const struct bitbang_spi_master *master)<br>
            (master->request_bus && !master->release_bus) ||<br>
            (!master->request_bus && master->release_bus)) {<br>
                msg_perr("Incomplete SPI bitbang master setting!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n");<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n");<br>
                return ERROR_FLASHROM_BUG;<br>
        }<br>
<br>
diff --git a/board_enable.c b/board_enable.c<br>
index 1235bb8..6606a59 100644<br>
--- a/board_enable.c<br>
+++ b/board_enable.c<br>
@@ -335,7 +335,7 @@ void probe_superio_winbond(void)<br>
                        }<br>
                        msg_pinfo("Active config mode, unknown reg 0x20 ID: %02x.\n", model);<br>
                        msg_pinfo("Please send the output of \"flashrom -V -p internal\" to \n"<br>
-                                 "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> with W836xx: your board name: flashrom -V\n"<br>
+                                 SUPPORT_EMAIL " with W836xx: your board name: flashrom -V\n"<br>
                                  "as the subject to help us finish support for your Super I/O. Thanks.\n");<br>
                        continue;<br>
                }<br>
@@ -620,7 +620,7 @@ int it8705f_write_enable(uint8_t port)<br>
                        /* The data sheet contradicts itself about max size. */<br>
                        max_rom_decode.parallel = 1024 * 1024;<br>
                        msg_pinfo("IT8705F with very unusual settings.\n"<br>
-                                 "Please send the output of \"flashrom -V -p internal\" to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n"<br>
+                                 "Please send the output of \"flashrom -V -p internal\" to " SUPPORT_EMAIL "\n"<br>
                                  "with \"IT8705: your board name: flashrom -V\" as the subject to help us finish\n"<br>
                                  "support for your Super I/O. Thanks.\n");<br>
                        ret = 1;<br>
@@ -2479,7 +2479,7 @@ int selfcheck_board_enables(void)<br>
                const struct board_match *b = &board_matches[i];<br>
                if (b->vendor_name == NULL || b->board_name == NULL) {<br>
                        msg_gerr("ERROR: Board enable #%d does not define a vendor and board name.\n"<br>
-                                "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", i);<br>
+                                "Please report a bug at " SUPPORT_EMAIL "\n", i);<br>
                        ret = 1;<br>
                        continue;<br>
                }<br>
@@ -2488,7 +2488,7 @@ int selfcheck_board_enables(void)<br>
                    ((b->lb_vendor == NULL) ^ (b->lb_part == NULL)) ||<br>
                    (b->max_rom_decode_parallel == 0 && b->enable == NULL)) {<br>
                        msg_gerr("ERROR: Board enable for %s %s is misdefined.\n"<br>
-                                "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                                "Please report a bug at " SUPPORT_EMAIL "\n",<br>
                                 b->vendor_name, b->board_name);<br>
                        ret = 1;<br>
                }<br>
@@ -2553,7 +2553,7 @@ static const struct board_match *board_match_name(const char *vendor, const char<br>
                if (partmatch) {<br>
                        /* More than one entry has a matching name. */<br>
                        msg_perr("Board name \"%s\":\"%s\" and PCI IDs matched more than one board enable "<br>
-                                "entry. Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", vendor, model);<br>
+                                "entry. Please report a bug at " SUPPORT_EMAIL "\n", vendor, model);<br>
                        return NULL;<br>
                }<br>
                partmatch = board;<br>
@@ -2636,7 +2636,7 @@ static int board_enable_safetycheck(const struct board_match *board)<br>
                return 1;<br>
        }<br>
        msg_pwarn("NOTE: Running an untested board enable procedure.\n"<br>
-                 "Please report success/failure to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>.\n");<br>
+                 "Please report success/failure to " SUPPORT_EMAIL ".\n");<br>
        return 0;<br>
 }<br>
<br>
diff --git a/chipset_enable.c b/chipset_enable.c<br>
index dd4e0ea..8334866 100644<br>
--- a/chipset_enable.c<br>
+++ b/chipset_enable.c<br>
@@ -1393,7 +1393,7 @@ static int enable_flash_mcp6x_7x(struct pci_dev *dev, const char *name)<br>
                internal_buses_supported = BUS_NONE;<br>
                msg_pwarn("Flash bus type is unknown (none)\n");<br>
                msg_pinfo("Please send the log files created by \"flashrom -p internal -o logfile\" to \n"<br>
-                         "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> with \"your board name: flashrom -V\" as the subject to\n"<br>
+                         SUPPORT_EMAIL " with \"your board name: flashrom -V\" as the subject to\n"<br>
                          "help us finish support for your chipset. Thanks.\n");<br>
                return ERROR_NONFATAL;<br>
        }<br>
@@ -1791,14 +1791,10 @@ int chipset_flash_enable(void)<br>
                if (!dev)<br>
                        continue;<br>
                if (ret != -2) {<br>
-                       msg_pwarn("Warning: unexpected second chipset match: "<br>
-                                   "\"%s %s\"\n"<br>
-                                 "ignoring, please report lspci and board URL "<br>
-                                   "to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n"<br>
-                                 "with \'CHIPSET: your board name\' in the "<br>
-                                   "subject line.\n",<br>
-                               chipset_enables[i].vendor_name,<br>
-                                       chipset_enables[i].device_name);<br>
+                       msg_pwarn("Warning: unexpected second chipset match: \"%s %s\"\n"<br>
+                                 "ignoring, please report lspci and board URL to " SUPPORT_EMAIL "\n"<br>
+                                 "with \'CHIPSET: your board name\' in the subject line.\n",<br>
+                                 chipset_enables[i].vendor_name, chipset_enables[i].device_name);<br>
                        continue;<br>
                }<br>
                msg_pinfo("Found chipset \"%s %s\"",<br>
@@ -1815,7 +1811,7 @@ int chipset_flash_enable(void)<br>
                                  "flashrom *and* were (not) able to "<br>
                                  "successfully update your firmware with it,\n"<br>
                                  "then please email a report to "<br>
-                                 "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> including a verbose "<br>
+                                 SUPPORT_EMAIL " including a verbose "<br>
                                  "(-V) log.\nThank you!\n");<br>
                }<br>
                msg_pinfo("Enabling flash write... ");<br>
diff --git a/cli_common.c b/cli_common.c<br>
index 71cc2dd..1cae546 100644<br>
--- a/cli_common.c<br>
+++ b/cli_common.c<br>
@@ -107,7 +107,7 @@ void print_chip_support_status(const struct flashchip *chip)<br>
                }<br>
                msg_cinfo("The test status of this chip may have been updated in the latest development\n"<br>
                          "version of flashrom. If you are running the latest development version,\n"<br>
-                         "please email a report to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> if any of the above operations\n"<br>
+                         "please email a report to " SUPPORT_EMAIL " if any of the above operations\n"<br>
                          "work correctly for you with this flash chip. Please include the flashrom log\n"<br>
                          "file for all operations you tested (see the man page for details), and mention\n"<br>
                          "which mainboard or programmer you tested in the subject line.\n"<br>
diff --git a/dediprog.c b/dediprog.c<br>
index 71a9f8b..676248b 100644<br>
--- a/dediprog.c<br>
+++ b/dediprog.c<br>
@@ -219,8 +219,8 @@ static int dediprog_spi_bulk_read(struct flashctx *flash, uint8_t *buf,<br>
                                        (chunksize >> 8) & 0xff};<br>
<br>
        if ((start % chunksize) || (len % chunksize)) {<br>
-               msg_perr("%s: Unaligned start=%i, len=%i! Please report a bug "<br>
-                        "at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__, start, len);<br>
+               msg_perr("%s: Unaligned start=%i, len=%i! Please report a bug at " SUPPORT_EMAIL "\n",<br>
+                        __func__, start, len);<br>
                return 1;<br>
        }<br>
<br>
@@ -326,13 +326,13 @@ static int dediprog_spi_bulk_write(struct flashctx *flash, const uint8_t *buf, u<br>
         */<br>
        if (chunksize != 256) {<br>
                msg_perr("%s: Chunk sizes other than 256 bytes are unsupported, chunksize=%u!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__, chunksize);<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n", __func__, chunksize);<br>
                return 1;<br>
        }<br>
<br>
        if ((start % chunksize) || (len % chunksize)) {<br>
-               msg_perr("%s: Unaligned start=%i, len=%i! Please report a bug "<br>
-                        "at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__, start, len);<br>
+               msg_perr("%s: Unaligned start=%i, len=%i!\nPlease report a bug at " SUPPORT_EMAIL "\n",<br>
+                        __func__, start, len);<br>
                return 1;<br>
        }<br>
<br>
diff --git a/flashrom.c b/flashrom.c<br>
index 93b292b..1148fd4 100644<br>
--- a/flashrom.c<br>
+++ b/flashrom.c<br>
@@ -558,8 +558,7 @@ char *extract_param(const char *const *haystack, const char *needle, const char<br>
<br>
        needlelen = strlen(needle);<br>
        if (!needlelen) {<br>
-               msg_gerr("%s: empty needle! Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+               msg_gerr("%s: empty needle! Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
                return NULL;<br>
        }<br>
        /* No programmer parameters given. */<br>
@@ -780,8 +779,7 @@ int need_erase(const uint8_t *have, const uint8_t *want, unsigned int len, enum<br>
                result = 0;<br>
                break;<br>
        default:<br>
-               msg_cerr("%s: Unsupported granularity! Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+               msg_cerr("%s: Unsupported granularity! Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
        }<br>
        return result;<br>
 }<br>
@@ -842,8 +840,7 @@ static unsigned int get_next_write(const uint8_t *have, const uint8_t *want, uns<br>
                stride = 1056;<br>
                break;<br>
        default:<br>
-               msg_cerr("%s: Unsupported granularity! Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+               msg_cerr("%s: Unsupported granularity! Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
                /* Claim that no write was needed. A write with unknown<br>
                 * granularity is too dangerous to try.<br>
                 */<br>
@@ -1119,7 +1116,7 @@ int probe_flash(struct registered_master *mst, int startchip, struct flashctx *f<br>
<br>
                        msg_cinfo(" we need to add them manually.\n"<br>
                                  "You can help us by mailing us the output of the following command to "<br>
-                                 "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>:\n"<br>
+                                 SUPPORT_EMAIL ":\n"<br>
                                  "'flashrom -VV [plus the -p/--programmer parameter]'\n"<br>
                                  "Thanks for your help!\n"<br>
                                  "===\n");<br>
@@ -1278,19 +1275,17 @@ static int selfcheck_eraseblocks(const struct flashchip *chip)<br>
                        /* Blocks with zero size are bugs in flashchips.c. */<br>
                        if (eraser.eraseblocks[i].count &&<br>
                            !eraser.eraseblocks[i].size) {<br>
-                               msg_gerr("ERROR: Flash chip %s erase function "<br>
-                                       "%i region %i has size 0. Please report"<br>
-                                       " a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
-                                       chip->name, k, i);<br>
+                               msg_gerr("ERROR: Flash chip %s erase function %i region %i has size 0.\n"<br>
+                                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
+                                        chip->name, k, i);<br>
                                ret = 1;<br>
                        }<br>
                        /* Blocks with zero count are bugs in flashchips.c. */<br>
                        if (!eraser.eraseblocks[i].count &&<br>
                            eraser.eraseblocks[i].size) {<br>
-                               msg_gerr("ERROR: Flash chip %s erase function "<br>
-                                       "%i region %i has count 0. Please report"<br>
-                                       " a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
-                                       chip->name, k, i);<br>
+                               msg_gerr("ERROR: Flash chip %s erase function %i region %i has count 0.\n"<br>
+                                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
+                                        chip->name, k, i);<br>
                                ret = 1;<br>
                        }<br>
                        done += eraser.eraseblocks[i].count *<br>
@@ -1303,11 +1298,9 @@ static int selfcheck_eraseblocks(const struct flashchip *chip)<br>
                if (!done)<br>
                        continue;<br>
                if (done != chip->total_size * 1024) {<br>
-                       msg_gerr("ERROR: Flash chip %s erase function %i "<br>
-                               "region walking resulted in 0x%06x bytes total,"<br>
-                               " expected 0x%06x bytes. Please report a bug at"<br>
-                               " <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", chip->name, k,<br>
-                               done, chip->total_size * 1024);<br>
+                       msg_gerr("ERROR: Flash chip %s erase function %i region walking resulted in "<br>
+                                "0x%06x bytes total, expected 0x%06x bytes. Please report a bug at"<br>
+                                SUPPORT_EMAIL "\n", chip->name, k, done, chip->total_size * 1024);<br>
                        ret = 1;<br>
                }<br>
                if (!eraser.block_erase)<br>
@@ -1319,10 +1312,9 @@ static int selfcheck_eraseblocks(const struct flashchip *chip)<br>
                for (j = k + 1; j < NUM_ERASEFUNCTIONS; j++) {<br>
                        if (eraser.block_erase ==<br>
                            chip->block_erasers[j].block_erase) {<br>
-                               msg_gerr("ERROR: Flash chip %s erase function "<br>
-                                       "%i and %i are identical. Please report"<br>
-                                       " a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
-                                       chip->name, k, j);<br>
+                               msg_gerr("ERROR: Flash chip %s erase function %i and %i are identical.\n"<br>
+                                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
+                                        chip->name, k, j);<br>
                                ret = 1;<br>
                        }<br>
                }<br>
@@ -1518,7 +1510,7 @@ static void nonfatal_help_message(void)<br>
        if (programmer == PROGRAMMER_INTERNAL)<br>
                msg_gerr("This means we have to add special support for your board, programmer or flash\n"<br>
                         "chip. Please report this on IRC at <a href="http://chat.freenode.net" target="_blank">chat.freenode.net</a> (channel #flashrom) or\n"<br>
-                        "mail <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>, thanks!\n"<br>
+                        "mail " SUPPORT_EMAIL ", thanks!\n"<br>
                         "-------------------------------------------------------------------------------\n"<br>
                         "You may now reboot or simply leave the machine running.\n");<br>
        else<br>
@@ -1526,7 +1518,7 @@ static void nonfatal_help_message(void)<br>
                msg_gerr("Please check the connections (especially those to write protection pins) between\n"<br>
                         "the programmer and the flash chip. If you think the error is caused by flashrom\n"<br>
                         "please report this on IRC at <a href="http://chat.freenode.net" target="_blank">chat.freenode.net</a> (channel #flashrom) or\n"<br>
-                        "mail <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>, thanks!\n");<br>
+                        "mail " SUPPORT_EMAIL ", thanks!\n");<br>
 }<br>
<br>
 static void emergency_help_message(void)<br>
@@ -1535,13 +1527,13 @@ static void emergency_help_message(void)<br>
 #if CONFIG_INTERNAL == 1<br>
        if (programmer == PROGRAMMER_INTERNAL)<br>
                msg_gerr("Get help on IRC at <a href="http://chat.freenode.net" target="_blank">chat.freenode.net</a> (channel #flashrom) or\n"<br>
-                       "mail <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> with the subject \"FAILED: <your board name>\"!\n"<br>
+                       "mail " SUPPORT_EMAIL " with the subject \"FAILED: <your board name>\"!\n"<br>
                        "-------------------------------------------------------------------------------\n"<br>
                        "DO NOT REBOOT OR POWEROFF!\n");<br>
        else<br>
 #endif<br>
                msg_gerr("Please report this on IRC at <a href="http://chat.freenode.net" target="_blank">chat.freenode.net</a> (channel #flashrom) or\n"<br>
-                        "mail <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>, thanks!\n");<br>
+                        "mail " SUPPORT_EMAIL ", thanks!\n");<br>
 }<br>
<br>
 /* The way to go if you want a delimited list of programmers */<br>
@@ -1755,7 +1747,7 @@ int selfcheck(void)<br>
                        if (chip->vendor == NULL || chip->name == NULL || chip->bustype == BUS_NONE) {<br>
                                ret = 1;<br>
                                msg_gerr("ERROR: Some field of flash chip #%d (%s) is misconfigured.\n"<br>
-                                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", i,<br>
+                                        "Please report a bug at " SUPPORT_EMAIL "\n", i,<br>
                                         chip->name == NULL ? "unnamed" : chip->name);<br>
                        }<br>
                        if (selfcheck_eraseblocks(chip)) {<br>
diff --git a/jedec.c b/jedec.c<br>
index 358b850..fa02c7b 100644<br>
--- a/jedec.c<br>
+++ b/jedec.c<br>
@@ -669,7 +669,7 @@ static int changelock_regspace2_block(const struct flashctx *flash, chipaddr off<br>
<br>
        if (new_bits & ~REG2_MASK) {<br>
                msg_cerr("Invalid locking change 0x%02x requested at 0x%0*" PRIxPTR "! "<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
                         new_bits, PRIxPTR_WIDTH, offset);<br>
                return -1;<br>
        }<br>
diff --git a/opaque.c b/opaque.c<br>
index a5a829c..5bf6737 100644<br>
--- a/opaque.c<br>
+++ b/opaque.c<br>
@@ -56,7 +56,7 @@ int register_opaque_master(const struct opaque_master *mst)<br>
<br>
        if (!mst->probe || !mst->read || !mst->write || !mst->erase) {<br>
                msg_perr("%s called with incomplete master definition. "<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
                         __func__);<br>
                return ERROR_FLASHROM_BUG;<br>
        }<br>
diff --git a/pcidev.c b/pcidev.c<br>
index 2c78063..6023438 100644<br>
--- a/pcidev.c<br>
+++ b/pcidev.c<br>
@@ -146,7 +146,7 @@ uintptr_t pcidev_readbar(struct pci_dev *dev, int bar)<br>
                addr &= PCI_ROM_ADDRESS_MASK;<br>
                break;<br>
        case TYPE_UNKNOWN:<br>
-               msg_perr("BAR type unknown, please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n");<br>
+               msg_perr("BAR type unknown, please report a bug at " SUPPORT_EMAIL "\n");<br>
        }<br>
<br>
        return (uintptr_t)addr;<br>
@@ -156,7 +156,7 @@ static int pcidev_shutdown(void *data)<br>
 {<br>
        if (pacc == NULL) {<br>
                msg_perr("%s: Tried to cleanup an invalid PCI context!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
        pci_cleanup(pacc);<br>
@@ -167,7 +167,7 @@ int pci_init_common(void)<br>
 {<br>
        if (pacc != NULL) {<br>
                msg_perr("%s: Tried to allocate a new PCI context, but there is still an old one!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
        pacc = pci_alloc();     /* Get the pci_access structure */<br>
@@ -225,7 +225,7 @@ struct pci_dev *pcidev_init(const struct dev_entry *devs, int bar)<br>
                        if (devs[i].status == NT)<br>
                                msg_pinfo("===\nThis PCI device is UNTESTED. Please report the 'flashrom -p "<br>
                                          "xxxx' output \n"<br>
-                                         "to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> if it works for you. Please add the name "<br>
+                                         "to " SUPPORT_EMAIL " if it works for you. Please add the name "<br>
                                          "of your\n"<br>
                                          "PCI device to the subject. Thank you for your help!\n===\n");<br>
<br>
@@ -274,7 +274,7 @@ int undo_pci_write(void *p)<br>
        struct undo_pci_write_data *data = p;<br>
        if (pacc == NULL) {<br>
                msg_perr("%s: Tried to undo PCI writes without a valid PCI context!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
        msg_pdbg("Restoring PCI config space for %02x:%02x:%01x reg 0x%02x\n",<br>
diff --git a/physmap.c b/physmap.c<br>
index ca5afd0..6fb5e3b 100644<br>
--- a/physmap.c<br>
+++ b/physmap.c<br>
@@ -308,8 +308,7 @@ void physunmap_unaligned(void *virt_addr, size_t len)<br>
 {<br>
        /* No need to check for zero size, such mappings would have yielded ERROR_PTR. */<br>
        if (virt_addr == ERROR_PTR) {<br>
-               msg_perr("Trying to unmap a nonexisting mapping!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n");<br>
+               msg_perr("Trying to unmap a nonexisting mapping!\nPlease report a bug at " SUPPORT_EMAIL "\n");<br>
                return;<br>
        }<br>
<br>
@@ -322,8 +321,7 @@ void physunmap(void *virt_addr, size_t len)<br>
<br>
        /* No need to check for zero size, such mappings would have yielded ERROR_PTR. */<br>
        if (virt_addr == ERROR_PTR) {<br>
-               msg_perr("Trying to unmap a nonexisting mapping!\n"<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n");<br>
+               msg_perr("Trying to unmap a nonexisting mapping!\nPlease report a bug at " SUPPORT_EMAIL "\n");<br>
                return;<br>
        }<br>
        tmp = (uintptr_t)virt_addr;<br>
diff --git a/print.c b/print.c<br>
index 243aa49..de9f85f 100644<br>
--- a/print.c<br>
+++ b/print.c<br>
@@ -522,7 +522,7 @@ int print_supported(void)<br>
                        break;<br>
                default:<br>
                        msg_gerr("\n%s: %s: Uninitialized programmer type! Please report a bug at "<br>
-                                "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__, <a href="http://prog.name" target="_blank">prog.name</a>);<br>
+                                SUPPORT_EMAIL "\n", __func__, <a href="http://prog.name" target="_blank">prog.name</a>);<br>
                        break;<br>
                }<br>
        }<br>
diff --git a/programmer.c b/programmer.c<br>
index fd634b2..c88e9b5 100644<br>
--- a/programmer.c<br>
+++ b/programmer.c<br>
@@ -103,7 +103,7 @@ int register_par_master(const struct par_master *mst,<br>
            !mst->chip_writen || !mst->chip_readb || !mst->chip_readw ||<br>
            !mst->chip_readl || !mst->chip_readn) {<br>
                msg_perr("%s called with incomplete master definition. "<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
                         __func__);<br>
                return ERROR_FLASHROM_BUG;<br>
        }<br>
diff --git a/sb600spi.c b/sb600spi.c<br>
index 69fad65..381254e 100644<br>
--- a/sb600spi.c<br>
+++ b/sb600spi.c<br>
@@ -106,8 +106,8 @@ static void determine_generation(struct pci_dev *dev)<br>
                        msg_pdbg("SB8xx/SB9xx/Hudson-1 detected.\n");<br>
                } else {<br>
                        msg_pwarn("SB device found but SMBus revision 0x%02x does not match known values.\n"<br>
-                                 "Assuming SB8xx/SB9xx/Hudson-1. Please send a log to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
-                                  rev);<br>
+                                 "Assuming SB8xx/SB9xx/Hudson-1. Please send a log to " SUPPORT_EMAIL "\n",<br>
+                                 rev);<br>
                        amd_gen = CHIPSET_SB89XX;<br>
                }<br>
        } else if (dev->device_id == 0x780e) {<br>
@@ -146,13 +146,13 @@ static void determine_generation(struct pci_dev *dev)<br>
                        msg_pdbg("Yangtze detected.\n");<br>
                } else {<br>
                        msg_pwarn("FCH device found but SMBus revision 0x%02x does not match known values.\n"<br>
-                                 "Please report this to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> and include this log and\n"<br>
+                                 "Please report this to " SUPPORT_EMAIL " and include this log and\n"<br>
                                  "the output of lspci -nnvx, thanks!.\n", rev);<br>
                }<br>
 #endif<br>
        } else<br>
                msg_pwarn("%s: Unknown LPC device %" PRIx16 ":%" PRIx16 ".\n"<br>
-                         "Please report this to <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a> and include this log and\n"<br>
+                         "Please report this to " SUPPORT_EMAIL " and include this log and\n"<br>
                          "the output of lspci -nnvx, thanks!\n",<br>
                          __func__, dev->vendor_id, dev->device_id);<br>
 }<br>
diff --git a/sfdp.c b/sfdp.c<br>
index bc69dd0..ed22392 100644<br>
--- a/sfdp.c<br>
+++ b/sfdp.c<br>
@@ -89,8 +89,7 @@ static int sfdp_add_uniform_eraser(struct flashchip *chip, uint8_t opcode, uint3<br>
<br>
        if (erasefn == NULL || total_size == 0 || block_size == 0 ||<br>
            total_size % block_size != 0) {<br>
-               msg_cdbg("%s: invalid input, please report to "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+               msg_cdbg("%s: invalid input, please report to " SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
<br>
@@ -120,7 +119,7 @@ static int sfdp_add_uniform_eraser(struct flashchip *chip, uint8_t opcode, uint3<br>
                return 0;<br>
        }<br>
        msg_cinfo("%s: Not enough space to store another eraser (i=%d)."<br>
-                 " Please report this at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                 " Please report this at " SUPPORT_EMAIL "\n",<br>
                  __func__, i);<br>
        return 1;<br>
 }<br>
diff --git a/spi.c b/spi.c<br>
index 894f73f..102e9b5 100644<br>
--- a/spi.c<br>
+++ b/spi.c<br>
@@ -82,7 +82,7 @@ int default_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start,<br>
        if (max_data == MAX_DATA_UNSPECIFIED) {<br>
                msg_perr("%s called, but SPI read chunk size not defined "<br>
                         "on this hardware. Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
        return spi_read_chunked(flash, buf, start, len, max_data);<br>
@@ -94,7 +94,7 @@ int default_spi_write_256(struct flashctx *flash, const uint8_t *buf, unsigned i<br>
        if (max_data == MAX_DATA_UNSPECIFIED) {<br>
                msg_perr("%s called, but SPI write chunk size not defined "<br>
                         "on this hardware. Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "" SUPPORT_EMAIL "\n", __func__);<br>
                return 1;<br>
        }<br>
        return spi_write_chunked(flash, buf, start, len, max_data);<br>
@@ -174,7 +174,7 @@ int register_spi_master(const struct spi_master *mst)<br>
            ((mst->command == default_spi_send_command) &&<br>
             (mst->multicommand == default_spi_send_multicommand))) {<br>
                msg_perr("%s called with incomplete master definition. "<br>
-                        "Please report a bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n",<br>
+                        "Please report a bug at " SUPPORT_EMAIL "\n",<br>
                         __func__);<br>
                return ERROR_FLASHROM_BUG;<br>
        }<br>
diff --git a/spi25.c b/spi25.c<br>
index 673bdf5..5cb9632 100644<br>
--- a/spi25.c<br>
+++ b/spi25.c<br>
@@ -835,7 +835,7 @@ erasefunc_t *spi_get_erasefn_from_opcode(uint8_t opcode)<br>
                return &spi_block_erase_db;<br>
        default:<br>
                msg_cinfo("%s: unknown erase opcode (0x%02x). Please report "<br>
-                         "this at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__, opcode);<br>
+                         "this at " SUPPORT_EMAIL "\n", __func__, opcode);<br>
                return NULL;<br>
        }<br>
 }<br>
@@ -1101,7 +1101,7 @@ int default_spi_write_aai(struct flashctx *flash, const uint8_t *buf, unsigned i<br>
        /* The data sheet requires a start address with the low bit cleared. */<br>
        if (start % 2) {<br>
                msg_cerr("%s: start address not even! Please report a bug at "<br>
-                        "<a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "" SUPPORT_EMAIL "\n", __func__);<br>
                if (spi_chip_write_1(flash, buf, start, start % 2))<br>
                        return SPI_GENERIC_ERROR;<br>
                pos += start % 2;<br>
@@ -1119,7 +1119,7 @@ int default_spi_write_aai(struct flashctx *flash, const uint8_t *buf, unsigned i<br>
        /* The data sheet requires total AAI write length to be even. */<br>
        if (len % 2) {<br>
                msg_cerr("%s: total write length not even! Please report a "<br>
-                        "bug at <a href="mailto:flashrom@flashrom.org" target="_blank">flashrom@flashrom.org</a>\n", __func__);<br>
+                        "bug at " SUPPORT_EMAIL "\n", __func__);<br>
                /* Do not return an error for now. */<br>
                //return SPI_GENERIC_ERROR;<br>
        }<br>
<span><font color="#888888">--<br>
Kind regards, Stefan Tauner<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>David Hendricks (dhendrix)<br>Systems Software Engineer, Google Inc.
</div></div>