489 eprintf(
"create_open_state(%d) failed with %d\n",
540 dprintf(2,
"handle_nfs41_open: DIRECTORY\n");
542 eprintf(
"trying to open directory %s as a file\n",
548 dprintf(2,
"handle nfs41_open: FILE\n");
550 eprintf(
"trying to open file %s as a directory\n",
556 dprintf(2,
"handle nfs41_open: SYMLINK\n");
570 eprintf(
"nfs41_symlink_target() for %s failed with %d\n",
580 dprintf(2,
"handle_open(): unsupported type=%d\n",
info.type);
597 args->access_mode == 0 &&
606 dprintf(1,
"trying to create a symlink, deferring create\n");
610 state->file.fh.superblock =
state->parent.fh.superblock;
613 }
else if (
args->symlink.len) {
619 createattrs.
mode = 0777;
621 dprintf(1,
"creating cygwin symlink %s -> %s\n",
622 state->file.name.name,
args->symlink.path);
627 eprintf(
"nfs41_create() for symlink=%s failed with %s\n",
705 createattrs.
size = 0;
710 args->deleg_type =
state->delegation.state->state.type;
717 goto supersede_retry;
int nfs41_symlink_follow(IN nfs41_root *root, IN nfs41_session *session, IN nfs41_path_fh *symlink, OUT nfs41_file_info *info)
static int check_execute_access(nfs41_open_state *state)
#define ERROR_FILE_EXISTS
int nfs_to_windows_error(int status, int default_error)
int nfs41_symlink_target(IN nfs41_session *session, IN nfs41_path_fh *file, OUT nfs41_abs_path *target)
int nfs41_remove(IN nfs41_session *session, IN nfs41_path_fh *parent, IN const nfs41_component *target, IN uint64_t fileid)
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_DIRECTORY_FILE
void nfs41_open_state_deref(IN nfs41_open_state *state)
int nfs41_lookup(IN nfs41_root *root, IN nfs41_session *session, IN OUT nfs41_abs_path *path_inout, OUT OPTIONAL nfs41_path_fh *parent_out, OUT OPTIONAL nfs41_path_fh *target_out, OUT OPTIONAL nfs41_file_info *info_out, OUT nfs41_session **session_out)
void eprintf(LPCSTR format,...)
int map_symlink_errors(int status)
#define FILE_WRITE_ATTRIBUTES
int nfs41_create(IN nfs41_session *session, IN uint32_t type, IN nfs41_file_info *createattrs, IN OPTIONAL const char *symlink, IN nfs41_path_fh *parent, OUT nfs41_path_fh *file, OUT nfs41_file_info *info)
#define ERROR_BAD_FILE_TYPE
static int open_or_delegate(IN OUT nfs41_open_state *state, IN uint32_t create, IN uint32_t createhow, IN nfs41_file_info *createattrs, IN bool_t try_recovery, OUT nfs41_file_info *info)
void abs_path_copy(OUT nfs41_abs_path *dst, IN const nfs41_abs_path *src)
void nfs_to_basic_info(IN const nfs41_file_info *info, OUT PFILE_BASIC_INFO basic_out)
#define ERROR_ACCESS_DENIED
#define FILE_OVERWRITE_IF
static int create_open_state(IN const char *path, IN uint32_t open_owner_id, OUT nfs41_open_state **state_out)
#define ERROR_FILE_NOT_FOUND
void nfs41_open_state_ref(IN nfs41_open_state *state)
#define CREATE_SESSION4_FLAG_PERSIST
static BOOLEAN open_for_attributes(uint32_t type, ULONG access_mask, ULONG disposition, int status)
int nfs41_delegation_return(IN nfs41_session *session, IN nfs41_path_fh *file, IN enum open_delegation_type4 access, IN bool_t truncate)
const char * nfs_error_string(int status)
static __inline nfs41_session * nfs41_root_session(IN nfs41_root *root)
static int map_disposition_2_nfsopen(ULONG disposition, int in_status, bool_t persistent, uint32_t *create, uint32_t *createhowmode, uint32_t *last_error)
#define FILE_ATTRIBUTE_ARCHIVE
void nfs_to_standard_info(IN const nfs41_file_info *info, OUT PFILE_STANDARD_INFO std_out)
GLint GLint GLsizei GLsizei GLsizei depth
#define ERROR_TOO_MANY_LINKS
#define FILE_NON_DIRECTORY_FILE
#define FILE_ATTRIBUTE_HIDDEN
int nfs41_ea_set(IN nfs41_open_state *state, IN PFILE_FULL_EA_INFORMATION ea)
#define NFS41_MAX_SYMLINK_DEPTH
static int create_with_ea(IN uint32_t disposition, IN uint32_t lookup_status)
nfs41_updowncall_list upcall
static void map_access_2_allowdeny(ULONG access_mask, ULONG access_mode, ULONG disposition, uint32_t *allow, uint32_t *deny)
static const struct access_res create[16]
static SERVICE_STATUS status
#define FILE_OPEN_REPARSE_POINT