-extern int ad_setfuid __P((const uid_t ));
-extern uid_t ad_getfuid __P((void ));
-
-extern char *ad_dir __P((const char *));
-extern char *ad_path __P((const char *, int));
-extern char *ad_path_osx __P((const char *, int));
-extern char *ad_path_ads __P((const char *, int));
-
-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 *));
-
-#if 0
-#define ad_metadata(name, flags, adp) ad_open(name, ADFLAGS_HF|(flags), O_RDONLY, 0666, adp)
-#endif
-
-/* extend header to RW if R or W (W if R for locking),
- */
-#ifndef ATACC
-#ifndef __inline__
-#define __inline__
-#endif
-static __inline__ mode_t ad_hf_mode (mode_t mode)
+extern int ad_setfuid (const uid_t );
+extern uid_t ad_getfuid (void );
+extern char *ad_dir (const char *);
+extern char *ad_path (const char *, int);
+extern char *ad_path_osx (const char *, int);
+extern char *ad_path_ads (const char *, int);
+extern char *ad_path_sfm (const char *, int);
+extern int ad_mode (const char *, int);
+extern int ad_mkdir (const char *, int);
+extern void ad_init (struct adouble *, int, int );
+extern int ad_open (const char *, int, int, int, struct adouble *);
+extern int ad_refresh (struct adouble *);
+extern int ad_stat (const char *, struct stat *);
+extern int ad_metadata (const char *, int, struct adouble *);
+
+#define ad_open_metadata(name, flags, mode, adp)\
+ ad_open(name, ADFLAGS_MD|(flags), O_RDWR |(mode), 0666, (adp))
+
+#define ad_close_metadata(adp) ad_close( (adp), ADFLAGS_MD)
+
+/* 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),
+ */
+static inline mode_t ad_hf_mode (mode_t mode)