.time.tv_usec = fsp->open_time.tv_usec,
.share_file_id = fh_get_gen_id(fsp->fh),
.uid = (uint32_t)uid,
- .flags = fsp->fsp_flags.posix_open ?
- SHARE_ENTRY_FLAG_POSIX_OPEN : 0,
+ .flags = fsp_get_share_entry_flags(fsp),
.name_hash = fsp->name_hash,
};
return state.status;
}
+
+
+uint16_t fsp_get_share_entry_flags(const struct files_struct *fsp)
+{
+ uint16_t flags = 0;
+
+ if (fsp->fsp_flags.posix_open) {
+ flags |= SHARE_ENTRY_FLAG_POSIX_OPEN;
+ }
+ return flags;
+}
+
+void fsp_apply_share_entry_flags(struct files_struct *fsp, uint16_t flags)
+{
+ if (flags & SHARE_ENTRY_FLAG_POSIX_OPEN) {
+ fsp->fsp_flags.posix_open = true;
+ }
+}
__fn, __private_data, __location__);
#endif
+
+uint16_t fsp_get_share_entry_flags(const struct files_struct *fsp);
+void fsp_apply_share_entry_flags(struct files_struct *fsp, uint16_t flags);
}
fh_set_private_options(fsp->fh, e.private_options);
+ fsp_apply_share_entry_flags(fsp, e.flags);
fsp->open_time = e.time;
fsp->access_mask = e.access_mask;
fsp->fsp_flags.can_read = ((fsp->access_mask & FILE_READ_DATA) != 0);