--- avahi-daemon/main.c.orig	2015-10-09 16:51:25.000000000 -0700
+++ avahi-daemon/main.c	2017-10-08 14:01:26.000000000 -0700
@@ -587,11 +587,17 @@
     int fd;
     char buf[32];
 
-    fd = open("/etc/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY);
-    if (fd == -1 && errno == ENOENT)
-        fd = open("/var/lib/dbus/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY);
+#ifdef O_CLOEXEC
+    fd = open("__MACPORTS_PREFIX__/var/lib/dbus/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY);
+#else
+    fd = open("__MACPORTS_PREFIX__/var/lib/dbus/machine-id", O_RDONLY|O_NOCTTY);
+#endif
     if (fd == -1)
         return NULL;
+#ifndef O_CLOEXEC
+    if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
+        return NULL;
+#endif
 
     /* File is on a filesystem so we never get EINTR or partial reads */
     if (read(fd, buf, sizeof buf) != sizeof buf) {