-#define MODE_INVALID (struct mode_change *) 0
-#define MODE_MEMORY_EXHAUSTED (struct mode_change *) 1
-
-#ifndef __P
-# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
-# define __P(args) args
-# else
-# define __P(args) ()
-# endif /* GCC. */
-#endif /* Not __P. */
-
-struct mode_change *mode_compile __P ((const char *, unsigned));
-unsigned short mode_adjust __P ((unsigned, const struct mode_change *));
-void mode_free __P ((struct mode_change *));
+# define MODE_INVALID (struct mode_change *) 0
+# define MODE_MEMORY_EXHAUSTED (struct mode_change *) 1
+# define MODE_BAD_REFERENCE (struct mode_change *) 2
+
+struct mode_change *mode_compile (const char *, unsigned);
+struct mode_change *mode_create_from_ref (const char *);
+mode_t mode_adjust (mode_t, const struct mode_change *);
+void mode_free (struct mode_change *);
+
+#endif