- * p now points to the full pathname of the source fs object.
- *
- * we are in the dest folder so we need to use p for ad_open
- */
-
- if (!ad_open(p, ADFLAGS_HF |adflags, O_RDONLY, 0666, adp)) {
- u_int16_t bshort;
+ * p now points to either
+ * a) full pathname of the source fs object (if renameat is not available)
+ * b) the oldname (renameat is available)
+ * we are in the dest folder so we need to use
+ * a) p for ad_open
+ * b) fchdir sdir_fd before eg ad_open or use *at functions where appropiate
+ */
+
+ if (sdir_fd != -1) {
+ if ((cwd_fd = open(".", O_RDONLY)) == -1)
+ return AFPERR_MISC;
+ if (fchdir(sdir_fd) != 0)
+ return AFPERR_MISC;
+ }
+ if (!ad_metadata(p, adflags, adp)) {
+ u_int16_t bshort;