#define CHECK_READ(fsp,req) \
(((fsp)->fh->fd != -1) && \
- ((fsp)->can_read || \
+ (((fsp)->fsp_flags.can_read) || \
((req->flags2 & FLAGS2_READ_PERMIT_EXECUTE) && \
(fsp->access_mask & FILE_EXECUTE))))
*/
#define CHECK_READ_SMB2(fsp) \
(((fsp)->fh->fd != -1) && \
- ((fsp)->can_read || \
+ (((fsp)->fsp_flags.can_read) || \
(fsp->access_mask & FILE_EXECUTE)))
/* An IOCTL readability check (validating read access
*/
#define CHECK_READ_IOCTL(fsp) \
(((fsp)->fh->fd != -1) && \
- ((fsp)->can_read))
+ (((fsp)->fsp_flags.can_read)))
#define CHECK_WRITE(fsp) \
((fsp)->can_write && \
bool update_write_time_on_close : 1;
bool write_time_forced : 1;
bool can_lock : 1;
+ bool can_read : 1;
} fsp_flags;
struct tevent_timer *update_write_time_event;
struct lock_struct last_lock_failure;
int current_lock_count; /* Count the number of outstanding locks and pending locks. */
- bool can_read;
bool can_write;
bool modified;
bool is_directory;
fsp->vuid = current_vuid;
fsp->fsp_flags.can_lock = false;
- fsp->can_read = false;
+ fsp->fsp_flags.can_read = false;
fsp->access_mask = FILE_GENERIC_WRITE;
fsp->can_write = true;
fsp->modified = false;
fsp->vuid = smb1req->vuid;
fsp->open_time = e.time;
fsp->access_mask = e.access_mask;
- fsp->can_read = ((fsp->access_mask & (FILE_READ_DATA)) != 0);
+ fsp->fsp_flags.can_read = ((fsp->access_mask & FILE_READ_DATA) != 0);
fsp->can_write = ((fsp->access_mask & (FILE_WRITE_DATA|FILE_APPEND_DATA)) != 0);
fsp->fnum = op->local_id;
fsp_set_gen_id(fsp);
/*
* TODO: properly calculate open flags
*/
- if (fsp->can_write && fsp->can_read) {
+ if (fsp->can_write && fsp->fsp_flags.can_read) {
flags = O_RDWR;
} else if (fsp->can_write) {
flags = O_WRONLY;
- } else if (fsp->can_read) {
+ } else if (fsp->fsp_flags.can_read) {
flags = O_RDONLY;
}
to->access_mask = access_mask;
to->oplock_type = from->oplock_type;
to->fsp_flags.can_lock = from->fsp_flags.can_lock;
- to->can_read = ((access_mask & FILE_READ_DATA) != 0);
+ to->fsp_flags.can_read = ((access_mask & FILE_READ_DATA) != 0);
to->can_write =
CAN_WRITE(from->conn) &&
((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) != 0);
fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
fsp->file_pid = req ? req->smbpid : 0;
fsp->fsp_flags.can_lock = true;
- fsp->can_read = ((access_mask & FILE_READ_DATA) != 0);
+ fsp->fsp_flags.can_read = ((access_mask & FILE_READ_DATA) != 0);
fsp->can_write =
CAN_WRITE(conn) &&
((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) != 0);
DEBUG(2,("%s opened file %s read=%s write=%s (numopen=%d)\n",
conn->session_info->unix_info->unix_name,
smb_fname_str_dbg(smb_fname),
- BOOLSTR(fsp->can_read), BOOLSTR(fsp->can_write),
+ BOOLSTR(fsp->fsp_flags.can_read),
+ BOOLSTR(fsp->can_write),
conn->num_files_open));
errno = 0;
fsp->vuid = req ? req->vuid : UID_FIELD_INVALID;
fsp->file_pid = req ? req->smbpid : 0;
fsp->fsp_flags.can_lock = false;
- fsp->can_read = False;
+ fsp->fsp_flags.can_read = false;
fsp->can_write = False;
fsp->fh->private_options = 0;
fsp->vuid = UID_FIELD_INVALID;
fsp->file_pid = 0;
fsp->fsp_flags.can_lock = true;
- fsp->can_read = True;
+ fsp->fsp_flags.can_read = true;
fsp->can_write = True;
fsp->print_file = NULL;
fsp->modified = False;
}
/* Do a "by hand" version of CHECK_READ. */
- if (!(fsp->can_read ||
+ if (!(fsp->fsp_flags.can_read ||
((req->flags2 & FLAGS2_READ_PERMIT_EXECUTE) &&
(fsp->access_mask & FILE_EXECUTE)))) {
DEBUG(3,("reply_readbraw: fnum %d not readable.\n",
fsp->vuid = UID_FIELD_INVALID;
fsp->file_pid = 0;
fsp->fsp_flags.can_lock = true;
- fsp->can_read = True;
+ fsp->fsp_flags.can_read = true;
fsp->can_write =
CAN_WRITE(vfs->conn);
fsp->print_file = NULL;
fsp->vuid = UID_FIELD_INVALID;
fsp->file_pid = 0;
fsp->fsp_flags.can_lock = true;
- fsp->can_read = True;
+ fsp->fsp_flags.can_read = true;
fsp->can_write = True;
fsp->print_file = NULL;
fsp->modified = False;