--- libfakeroot.c.orig	2014-10-05 17:16:00.000000000 +0200
+++ libfakeroot.c	2015-12-21 18:13:37.000000000 +0100
@@ -110,8 +110,16 @@
 #define INT_NEXT_FSTATAT(a,b,c,d) NEXT_FSTATAT(_STAT_VER,a,b,c,d)
 #define INT_SEND_STAT(a,b) SEND_STAT(a,b,_STAT_VER)
 #define INT_SEND_GET_XATTR(a,b) SEND_GET_XATTR(a,b,_STAT_VER)
+
+/* 10.10 uses id_t in getpriority/setpriority calls, so pretend
+   id_t is used everywhere, just happens to be int on some OSes */
+#ifndef _ID_T
+#define _ID_T
+typedef int id_t;
+#endif
 #endif
 
+#include <sys/types.h>
 #include <stdlib.h>
 #include <sys/ipc.h>
 #include <sys/msg.h>
@@ -123,7 +131,6 @@
 #include <unistd.h>
 #include <dirent.h>
 #include <errno.h>
-#include <sys/types.h>
 #ifdef HAVE_SYS_ACL_H
 #include <sys/acl.h>
 #endif /* HAVE_SYS_ACL_H */
@@ -1894,7 +1901,7 @@
 }
 #endif /* HAVE_FREMOVEXATTR */
 
-int setpriority(int which, int who, int prio){
+int setpriority(int which, id_t who, int prio){
   if (fakeroot_disabled)
     return next_setpriority(which, who, prio);
   next_setpriority(which, who, prio);
@@ -2426,3 +2433,19 @@
     }
 }
 #endif
+
+#ifdef HAVE_OPENAT
+int openat(int dir_fd, const char *pathname, int flags, ...)
+{
+    if (flags & O_CREAT)
+    {
+        va_list args;
+        mode_t mode;
+        va_start(args, flags);
+        mode = va_arg(args, int);
+        va_end(args);
+        return next_openat(dir_fd, pathname, flags, mode);
+    }
+    return next_openat(dir_fd, pathname, flags, NULL);
+}
+#endif