diff --git a/misc/gpsd/Makefile b/misc/gpsd/Makefile
index 46e6a757f34..2f818d60572 100644
--- a/misc/gpsd/Makefile
+++ b/misc/gpsd/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.23 2008/04/16 06:53:35 ckuethe Exp $
+# $OpenBSD: Makefile,v 1.24 2008/06/13 04:13:36 ckuethe Exp $
COMMENT-main= service daemon that monitors one or more GPSes
COMMENT-motif= motif-based test apps using gpsd
@@ -7,7 +7,7 @@ COMMENT-python= python bindings for gpsd
VERSION= 2.37
DISTNAME= gpsd-${VERSION}
-PKGNAME-main= gpsd-${VERSION}p0
+PKGNAME-main= gpsd-${VERSION}p1
PKGNAME-motif= gpsd-motif-${VERSION}
PKGNAME-php= gpsd-php-${VERSION}
PKGNAME-python= gpsd-python-${VERSION}p0
diff --git a/misc/gpsd/patches/patch-drivers_c b/misc/gpsd/patches/patch-drivers_c
new file mode 100644
index 00000000000..a5e75e3d5d9
--- /dev/null
+++ b/misc/gpsd/patches/patch-drivers_c
@@ -0,0 +1,50 @@
+$OpenBSD: patch-drivers_c,v 1.1 2008/06/13 04:13:36 ckuethe Exp $
+--- drivers.c.orig Mon Jan 21 11:35:31 2008
++++ drivers.c Wed Jun 11 15:14:20 2008
+@@ -102,46 +102,6 @@ gps_mask_t nmea_parse_input(struct gps_device_t *sessi
+ #endif /* NON_NMEA_ENABLE */
+ gpsd_report(LOG_WARN, "unknown sentence: \"%s\"\n", session->packet.outbuffer);
+ }
+-#ifdef NMEADISC
+- if (session->ldisc == 0) {
+- uid_t old;
+- int ldisc = NMEADISC;
+-
+-#ifdef TIOCSTSTAMP
+- struct tstamps tstamps;
+-#ifdef PPS_ON_CTS
+- tstamps.ts_set |= TIOCM_CTS;
+-#else /*!PPS_ON_CTS */
+- tstamps.ts_set |= TIOCM_CAR;
+-#endif /* PPS_ON_CTS */
+- tstamps.ts_clr = 0;
+-
+- old = geteuid();
+- if (seteuid(0) == -1)
+- gpsd_report(LOG_WARN, "can't seteuid(0) - %s", strerror(errno));
+- else
+- gpsd_report(LOG_WARN, "seteuid(0) to enable timestamping\n");
+- if (ioctl(session->gpsdata.gps_fd, TIOCSTSTAMP, &tstamps) < 0)
+- gpsd_report(LOG_WARN, "can't set kernel timestamping: %s\n",
+- strerror(errno));
+- else
+- gpsd_report(LOG_WARN, "activated kernel timestamping\n");
+-#endif /* TIOCSTSTAMP */
+- if (ioctl(session->gpsdata.gps_fd, TIOCSETD, &ldisc) == -1)
+- gpsd_report(LOG_WARN, "can't set nmea discipline: %s\n",
+- strerror(errno));
+- else
+- gpsd_report(LOG_WARN, "activated nmea discipline\n");
+- /* this is a flag that shows if we've tried the setup */
+- session->ldisc = NMEADISC;
+-
+- if (old){
+- gpsd_report(LOG_WARN, "giving up euid 0\n");
+- (void)seteuid(old);
+- }
+- gpsd_report(LOG_WARN, "running with effective user ID %d\n", geteuid());
+- }
+-#endif /*NMEADISC */
+ #ifdef NTPSHM_ENABLE
+ /* this magic number is derived from observation */
+ if (session->context->enable_ntpshm &&
diff --git a/misc/gpsd/patches/patch-gpsd_xml b/misc/gpsd/patches/patch-gpsd_xml
new file mode 100644
index 00000000000..b1506d5484d
--- /dev/null
+++ b/misc/gpsd/patches/patch-gpsd_xml
@@ -0,0 +1,18 @@
+$OpenBSD: patch-gpsd_xml,v 1.1 2008/06/13 04:13:36 ckuethe Exp $
+--- gpsd.xml.orig Mon Jan 21 11:35:31 2008
++++ gpsd.xml Wed Jun 11 15:14:20 2008
+@@ -780,13 +780,7 @@ of every clock second on the carrier-detect lines of s
+ GPSes; this pulse can be used to update NTP at much higher accuracy
+ than message time provides. You can determine whether your GPS emits
+ this pulse by running at -D 5 and watching for carrier-detect state
+-change messages in the logfile. On OpenBSD gpsd
+-makes use of the nmea(4) line discipline and the tty(4) timestamping
+-facilities to export PPS time via the sensors framework. OpenBSD's ntpd
+-uses these sensors to adjust the hardware clock and frequency. To make
+-use of this feature, gpsd must be started
+-as root so it can activate the timestamping and line discipline; after
+-attempting to set up PPS, it will relinquish root privileges.
++change messages in the logfile.
+
+ When gpsd receives a sentence with a
+ timestamp, it packages the received timestamp with current local time