diff --git a/buspirate_spi.c b/buspirate_spi.c
index 4dceca5..e0683ec 100644
--- a/buspirate_spi.c
+++ b/buspirate_spi.c
@@ -101,14 +101,14 @@
 	char *speed = NULL;
 	int spispeed = 0x7;
 
-	dev = extract_param(&programmer_param, "dev", ",:");
+	dev = extract_programmer_param("dev");
 	if (!dev || !strlen(dev)) {
 		msg_perr("No serial device given. Use flashrom -p "
 			"buspirate_spi:dev=/dev/ttyUSB0\n");
 		return 1;
 	}
 
-	speed = extract_param(&programmer_param, "spispeed", ",:");
+	speed = extract_programmer_param("spispeed");
 	if (speed) {
 		for (i = 0; spispeeds[i].name; i++)
 			if (!strncasecmp(spispeeds[i].name, speed,
diff --git a/chipset_enable.c b/chipset_enable.c
index 855cd2b..5c16259 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -300,7 +300,7 @@
 	int max_decode_fwh_decode = 0;
 	int contiguous = 1;
 
-	idsel = extract_param(&programmer_param, "fwh_idsel", ",:");
+	idsel = extract_programmer_param("fwh_idsel");
 	if (idsel && strlen(idsel)) {
 		fwh_conf = (uint32_t)strtoul(idsel, NULL, 0);
 
diff --git a/dummyflasher.c b/dummyflasher.c
index 456e22d..5f88fc4 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -37,7 +37,7 @@
 
 	msg_pspew("%s\n", __func__);
 
-	bustext = extract_param(&programmer_param, "bus", ",:");
+	bustext = extract_programmer_param("bus");
 	msg_pdbg("Requested buses are: %s\n", bustext ? bustext : "default");
 	if (!bustext)
 		bustext = strdup("parallel+lpc+fwh+spi");
diff --git a/flash.h b/flash.h
index 4e3c9b9..351505c 100644
--- a/flash.h
+++ b/flash.h
@@ -570,7 +570,6 @@
 };
 extern struct decode_sizes max_rom_decode;
 extern int programmer_may_write;
-extern char *programmer_param;
 extern unsigned long flashbase;
 extern int verbose;
 extern const char * const flashrom_version;
@@ -585,6 +584,7 @@
 int min(int a, int b);
 int max(int a, int b);
 char *extract_param(char **haystack, char *needle, char *delim);
+char *extract_programmer_param(char *param_name);
 int check_erased_range(struct flashchip *flash, int start, int len);
 int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, char *message);
 int need_erase(uint8_t *have, uint8_t *want, int len, enum write_granularity gran);
diff --git a/flashrom.c b/flashrom.c
index db15ae5..fc78198 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -89,7 +89,7 @@
 ;
 #endif
 
-char *programmer_param = NULL;
+static char *programmer_param = NULL;
 
 /* Supported buses for the current programmer. */
 enum chipbustype buses_supported;
@@ -641,6 +641,11 @@
 	return opt;
 }
 
+char *extract_programmer_param(char *param_name)
+{
+	return extract_param(&programmer_param, param_name, ",");
+}
+
 /* start is an offset to the base address of the flash chip */
 int check_erased_range(struct flashchip *flash, int start, int len)
 {
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 0245c53..1dd2e0c 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -80,7 +80,7 @@
 	enum ftdi_interface ft2232_interface = INTERFACE_B;
 	char *arg;
 
-	arg = extract_param(&programmer_param, "type", ",:");
+	arg = extract_programmer_param("type");
 	if (arg) {
 		if (!strcasecmp(arg, "2232H"))
 			ft2232_type = FTDI_FT2232H;
@@ -93,7 +93,7 @@
 		}
 	}
 	free(arg);
-	arg = extract_param(&programmer_param, "port", ",:");
+	arg = extract_programmer_param("port");
 	if (arg) {
 		switch (toupper(*arg)) {
 		case 'A':
diff --git a/internal.c b/internal.c
index 188fd5d..7b31e79 100644
--- a/internal.c
+++ b/internal.c
@@ -121,7 +121,7 @@
 	int force_laptop = 0;
 	char *arg;
 
-	arg = extract_param(&programmer_param, "boardenable", ",:");
+	arg = extract_programmer_param("boardenable");
 	if (arg && !strcmp(arg,"force")) {
 		force_boardenable = 1;
 	} else if (arg && !strlen(arg)) {
@@ -135,7 +135,7 @@
 	}
 	free(arg);
 
-	arg = extract_param(&programmer_param, "boardmismatch", ",:");
+	arg = extract_programmer_param("boardmismatch");
 	if (arg && !strcmp(arg,"force")) {
 		force_boardmismatch = 1;
 	} else if (arg && !strlen(arg)) {
@@ -149,7 +149,7 @@
 	}
 	free(arg);
 
-	arg = extract_param(&programmer_param, "laptop", ",:");
+	arg = extract_programmer_param("laptop");
 	if (arg && !strcmp(arg,"force_I_want_a_brick")) {
 		force_laptop = 1;
 	} else if (arg && !strlen(arg)) {
diff --git a/it87spi.c b/it87spi.c
index d314856..eccee0e 100644
--- a/it87spi.c
+++ b/it87spi.c
@@ -143,7 +143,7 @@
 		flashport |= sio_read(port, 0x65);
 		msg_pdbg("Serial flash port 0x%04x\n", flashport);
 		/* Non-default port requested? */
-		portpos = extract_param(&programmer_param, "it87spiport", ",:");
+		portpos = extract_programmer_param("it87spiport");
 		if (portpos && strlen(portpos)) {
 			flashport = strtol(portpos, (char **)NULL, 0);
 			msg_pinfo("Forcing serial flash port 0x%04x\n",
diff --git a/pcidev.c b/pcidev.c
index 4cb629d..cc08a65 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -94,7 +94,7 @@
 
 	/* Filter by vendor and also bb:dd.f (if supplied by the user). */
 	filter.vendor = vendor_id;
-	pcidev_bdf = extract_param(&programmer_param, "pci", ",");
+	pcidev_bdf = extract_programmer_param("pci");
 	if (pcidev_bdf != NULL) {
 		if ((msg = pci_filter_parse_slot(&filter, pcidev_bdf))) {
 			msg_perr("Error: %s\n", msg);
diff --git a/serprog.c b/serprog.c
index b2f5787..b1c4cef 100644
--- a/serprog.c
+++ b/serprog.c
@@ -306,7 +306,7 @@
 	int have_device = 0;
 
 	/* the parameter is either of format "dev=/dev/device:baud" or "ip=ip:port" */
-	device = extract_param(&programmer_param, "dev", ",");
+	device = extract_programmer_param("dev");
 	if (device && strlen(device)) {
 		baudport = strstr(device, ":");
 		if (baudport) {
@@ -333,7 +333,7 @@
 	}
 	free(device);
 
-	device = extract_param(&programmer_param, "ip", ",");
+	device = extract_programmer_param("ip");
 	if (have_device && device) {
 		msg_perr("Error: Both host and device specified.\n"
 			 "Please use either dev= or ip= but not both.\n");
