+extern int ad_mode __P((const char *, int));
+extern int ad_mkdir __P((const char *, int));
+extern void ad_init __P((struct adouble *, int, int ));
+
+extern int ad_open __P((const char *, int, int, int, struct adouble *));
+extern int ad_refresh __P((struct adouble *));
+extern int ad_stat __P((const char *, struct stat *));
+extern int ad_metadata __P((const char *, int, struct adouble *));
+
+#define ad_open_metadata(name, flags, mode, adp)\
+ ad_open(name, ADFLAGS_HF|(flags), O_RDWR |(mode), 0666, (adp))
+
+#define ad_flush_metadata(adp) ad_flush( (adp), ADFLAGS_HF)
+#define ad_close_metadata(adp) ad_close( (adp), ADFLAGS_HF)
+
+/* build a resource fork mode from the data fork mode:
+ * remove X mode and extend header to RW if R or W (W if R for locking),