return false;
}
-static int skel_symlink(vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname)
-{
- errno = ENOSYS;
- return -1;
-}
-
static int skel_symlinkat(vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
.kernel_flock_fn = skel_kernel_flock,
.linux_setlease_fn = skel_linux_setlease,
.getlock_fn = skel_getlock,
- .symlink_fn = skel_symlink,
.symlinkat_fn = skel_symlinkat,
.readlinkat_fn = skel_vfs_readlinkat,
.linkat_fn = skel_linkat,
return SMB_VFS_NEXT_GETLOCK(handle, fsp, poffset, pcount, ptype, ppid);
}
-static int skel_symlink(vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname)
-{
- return SMB_VFS_NEXT_SYMLINK(handle, link_contents, new_smb_fname);
-}
-
static int skel_symlinkat(vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
.kernel_flock_fn = skel_kernel_flock,
.linux_setlease_fn = skel_linux_setlease,
.getlock_fn = skel_getlock,
- .symlink_fn = skel_symlink,
.symlinkat_fn = skel_symlinkat,
.readlinkat_fn = skel_vfs_readlinkat,
.linkat_fn = skel_linkat,
/* Version 42 - Move SMB_VFS_LINK -> SMB_VFS_LINKAT. */
/* Version 42 - Move SMB_VFS_MKNOD -> SMB_VFS_MKDNODAT. */
/* Version 42 - Move SMB_VFS_READLINK -> SMB_VFS_READLINKAT. */
-/* Version 42 - Add SMB_VFS_SYMLINKAT. */
+/* Version 42 - Move SMB_VFS_SYMLINK -> SMB_VFS_SYMLINKAT. */
#define SMB_VFS_INTERFACE_VERSION 42
uint32_t share_mode, uint32_t access_mask);
int (*linux_setlease_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, int leasetype);
bool (*getlock_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, off_t *poffset, off_t *pcount, int *ptype, pid_t *ppid);
- int (*symlink_fn)(struct vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname);
int (*symlinkat_fn)(struct vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
bool smb_vfs_call_getlock(struct vfs_handle_struct *handle,
struct files_struct *fsp, off_t *poffset,
off_t *pcount, int *ptype, pid_t *ppid);
-int smb_vfs_call_symlink(struct vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname);
int smb_vfs_call_symlinkat(struct vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
bool vfs_not_implemented_getlock(vfs_handle_struct *handle, files_struct *fsp,
off_t *poffset, off_t *pcount, int *ptype,
pid_t *ppid);
-int vfs_not_implemented_symlink(vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname);
int vfs_not_implemented_symlinkat(vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
#define SMB_VFS_NEXT_GETLOCK(handle, fsp, poffset, pcount, ptype, ppid) \
smb_vfs_call_getlock((handle)->next, (fsp), (poffset), (pcount), (ptype), (ppid))
-#define SMB_VFS_SYMLINK(conn, oldpath, newpath) \
- smb_vfs_call_symlink((conn)->vfs_handles, (oldpath), (newpath))
-#define SMB_VFS_NEXT_SYMLINK(handle, oldpath, newpath) \
- smb_vfs_call_symlink((handle)->next, (oldpath), (newpath))
-
#define SMB_VFS_SYMLINKAT(conn, oldpath, dirfsp, newpath) \
smb_vfs_call_symlinkat((conn)->vfs_handles, (oldpath), (dirfsp), (newpath))
#define SMB_VFS_NEXT_SYMLINKAT(handle, oldpath, dirfsp, newpath) \
return result;
}
-static int vfswrap_symlink(vfs_handle_struct *handle,
- const char *link_target,
- const struct smb_filename *new_smb_fname)
-{
- int result;
-
- START_PROFILE(syscall_symlink);
- result = symlink(link_target, new_smb_fname->base_name);
- END_PROFILE(syscall_symlink);
- return result;
-}
-
static int vfswrap_symlinkat(vfs_handle_struct *handle,
const char *link_target,
struct files_struct *dirfsp,
.kernel_flock_fn = vfswrap_kernel_flock,
.linux_setlease_fn = vfswrap_linux_setlease,
.getlock_fn = vfswrap_getlock,
- .symlink_fn = vfswrap_symlink,
.symlinkat_fn = vfswrap_symlinkat,
.readlinkat_fn = vfswrap_readlinkat,
.linkat_fn = vfswrap_linkat,
return false;
}
-int vfs_not_implemented_symlink(vfs_handle_struct *handle,
- const char *link_contents,
- const struct smb_filename *new_smb_fname)
-{
- errno = ENOSYS;
- return -1;
-}
-
int vfs_not_implemented_symlinkat(vfs_handle_struct *handle,
const char *link_contents,
struct files_struct *dirfsp,
.kernel_flock_fn = vfs_not_implemented_kernel_flock,
.linux_setlease_fn = vfs_not_implemented_linux_setlease,
.getlock_fn = vfs_not_implemented_getlock,
- .symlink_fn = vfs_not_implemented_symlink,
.symlinkat_fn = vfs_not_implemented_symlinkat,
.readlinkat_fn = vfs_not_implemented_vfs_readlinkat,
.linkat_fn = vfs_not_implemented_linkat,
return handle->fns->linux_setlease_fn(handle, fsp, leasetype);
}
-int smb_vfs_call_symlink(struct vfs_handle_struct *handle,
- const char *link_target,
- const struct smb_filename *new_smb_fname)
-{
- VFS_FIND(symlink);
- return handle->fns->symlink_fn(handle, link_target, new_smb_fname);
-}
-
int smb_vfs_call_symlinkat(struct vfs_handle_struct *handle,
const char *link_target,
struct files_struct *dirfsp,