r9483: Changed DIR to SMB_STRUCT_DIR because of the amazing stupidity of a UNIX vendor
[sfrench/samba-autobuild/.git] / examples / VFS / skel_transparent.c
index b2db76c9f9669e9a538f1ab0ddadf6002fbd652b..0879683fdcd294655d548c420ed428c694642242 100644 (file)
@@ -65,16 +65,36 @@ static int skel_set_quota(vfs_handle_struct *handle, connection_struct *conn, en
        return SMB_VFS_NEXT_SET_QUOTA(handle, conn, qtype, id, dq);
 }
 
-static DIR *skel_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname)
+static int skel_get_shadow_copy_data(vfs_handle_struct *handle, files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels)
 {
-       return SMB_VFS_NEXT_OPENDIR(handle, conn, fname);
+       return SMB_VFS_NEXT_GET_SHADOW_COPY_DATA(handle, fsp, shadow_copy_data, labels);
 }
 
-static struct dirent *skel_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp)
+static SMB_STRUCT_DIR *skel_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname, const char *mask, uint32 attr)
+{
+       return SMB_VFS_NEXT_OPENDIR(handle, conn, fname, mask, attr);
+}
+
+static SMB_STRUCT_DIRENT *skel_readdir(vfs_handle_struct *handle, connection_struct *conn, SMB_STRUCT_DIR *dirp)
 {
        return SMB_VFS_NEXT_READDIR(handle, conn, dirp);
 }
 
+static void skel_seekdir(vfs_handle_struct *handle, connection_struct *conn, SMB_STRUCT_DIR *dirp, long offset)
+{
+       return SMB_VFS_NEXT_SEEKDIR(handle, conn, dirp, offset);
+}
+
+static long skel_telldir(vfs_handle_struct *handle, connection_struct *conn, SMB_STRUCT_DIR *dirp)
+{
+       return SMB_VFS_NEXT_TELLDIR(handle, conn, dirp);
+}
+
+static void skel_rewinddir(vfs_handle_struct *handle, connection_struct *conn, SMB_STRUCT_DIR *dirp)
+{
+       return SMB_VFS_NEXT_REWINDDIR(handle, conn, dirp);
+}
+
 static int skel_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode)
 {
        return SMB_VFS_NEXT_MKDIR(handle, conn, path, mode);
@@ -85,7 +105,7 @@ static int skel_rmdir(vfs_handle_struct *handle, connection_struct *conn, const
        return SMB_VFS_NEXT_RMDIR(handle, conn, path);
 }
 
-static int skel_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *dir)
+static int skel_closedir(vfs_handle_struct *handle, connection_struct *conn, SMB_STRUCT_DIR *dir)
 {
        return SMB_VFS_NEXT_CLOSEDIR(handle, conn, dir);
 }
@@ -105,19 +125,29 @@ static ssize_t skel_read(vfs_handle_struct *handle, files_struct *fsp, int fd, v
        return SMB_VFS_NEXT_READ(handle, fsp, fd, data, n);
 }
 
+static ssize_t skel_pread(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset)
+{
+       return SMB_VFS_NEXT_PREAD(handle, fsp, fd, data, n, offset);
+}
+
 static ssize_t skel_write(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n)
 {
        return SMB_VFS_NEXT_WRITE(handle, fsp, fd, data, n);
 }
 
+static ssize_t skel_pwrite(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset)
+{
+       return SMB_VFS_NEXT_PWRITE(handle, fsp, fd, data, n, offset);
+}
+
 static SMB_OFF_T skel_lseek(vfs_handle_struct *handle, files_struct *fsp, int filedes, SMB_OFF_T offset, int whence)
 {
        return SMB_VFS_NEXT_LSEEK(handle, fsp, filedes, offset, whence);
 }
 
-static int skel_rename(vfs_handle_struct *handle, connection_struct *conn, const char *old, const char *new)
+static int skel_rename(vfs_handle_struct *handle, connection_struct *conn, const char *oldname, const char *newname)
 {
-       return SMB_VFS_NEXT_RENAME(handle, conn, old, new);
+       return SMB_VFS_NEXT_RENAME(handle, conn, oldname, newname);
 }
 
 static int skel_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd)
@@ -190,12 +220,12 @@ static BOOL skel_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, int
        return SMB_VFS_NEXT_LOCK(handle, fsp, fd, op, offset, count, type);
 }
 
-static BOOL skel_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath)
+static int skel_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath)
 {
        return SMB_VFS_NEXT_SYMLINK(handle, conn, oldpath, newpath);
 }
 
-static BOOL skel_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz)
+static int skel_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz)
 {
        return SMB_VFS_NEXT_READLINK(handle, conn, path, buf, bufsiz);
 }
@@ -426,6 +456,41 @@ static int skel_fsetxattr(vfs_handle_struct *handle, struct files_struct *fsp,in
         return SMB_VFS_NEXT_FSETXATTR(handle, fsp, fd, name, value, size, flags);
 }
 
+static int skel_aio_read(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_READ(handle, fsp, aiocb);
+}
+
+static int skel_aio_write(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_WRITE(handle, fsp, aiocb);
+}
+
+static ssize_t skel_aio_return(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_RETURN(handle, fsp, aiocb);
+}
+
+static int skel_aio_cancel(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_CANCEL(handle, fsp, fd, aiocb);
+}
+
+static int skel_aio_error(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_ERROR(handle, fsp, aiocb);
+}
+
+static int skel_aio_fsync(struct vfs_handle_struct *handle, struct files_struct *fsp, int op, SMB_STRUCT_AIOCB *aiocb)
+{
+       return SMB_VFS_NEXT_AIO_FSYNC(handle, fsp, op, aiocb);
+}
+
+static int skel_aio_suspend(struct vfs_handle_struct *handle, struct files_struct *fsp, const SMB_STRUCT_AIOCB * const aiocb[], int n, const struct timespec *ts)
+{
+       return SMB_VFS_NEXT_AIO_SUSPEND(handle, fsp, aiocb, n, ts);
+}
+
 /* VFS operations structure */
 
 static vfs_op_tuple skel_op_tuples[] = {
@@ -437,11 +502,15 @@ static vfs_op_tuple skel_op_tuples[] = {
        {SMB_VFS_OP(skel_disk_free),                    SMB_VFS_OP_DISK_FREE,           SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_get_quota),                    SMB_VFS_OP_GET_QUOTA,           SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_set_quota),                    SMB_VFS_OP_SET_QUOTA,           SMB_VFS_LAYER_TRANSPARENT},
-       
+       {SMB_VFS_OP(skel_get_shadow_copy_data),         SMB_VFS_OP_GET_SHADOW_COPY_DATA,SMB_VFS_LAYER_TRANSPARENT},
+
        /* Directory operations */
 
        {SMB_VFS_OP(skel_opendir),                      SMB_VFS_OP_OPENDIR,             SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_readdir),                      SMB_VFS_OP_READDIR,             SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_seekdir),                      SMB_VFS_OP_SEEKDIR,             SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_telldir),                      SMB_VFS_OP_TELLDIR,             SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_rewinddir),                    SMB_VFS_OP_REWINDDIR,           SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_mkdir),                        SMB_VFS_OP_MKDIR,               SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_rmdir),                        SMB_VFS_OP_RMDIR,               SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_closedir),                     SMB_VFS_OP_CLOSEDIR,            SMB_VFS_LAYER_TRANSPARENT},
@@ -523,6 +592,15 @@ static vfs_op_tuple skel_op_tuples[] = {
        {SMB_VFS_OP(skel_lsetxattr),                    SMB_VFS_OP_LSETXATTR,                   SMB_VFS_LAYER_TRANSPARENT},
        {SMB_VFS_OP(skel_fsetxattr),                    SMB_VFS_OP_FSETXATTR,                   SMB_VFS_LAYER_TRANSPARENT},
 
+       /* AIO operations. */
+       {SMB_VFS_OP(skel_aio_read),                     SMB_VFS_OP_AIO_READ,                    SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_write),                    SMB_VFS_OP_AIO_WRITE,                   SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_return),                   SMB_VFS_OP_AIO_RETURN,                  SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_cancel),                   SMB_VFS_OP_AIO_CANCEL,                  SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_error),                    SMB_VFS_OP_AIO_ERROR,                   SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_fsync),                    SMB_VFS_OP_AIO_FSYNC,                   SMB_VFS_LAYER_TRANSPARENT},
+       {SMB_VFS_OP(skel_aio_suspend),                  SMB_VFS_OP_AIO_SUSPEND,                 SMB_VFS_LAYER_TRANSPARENT},
+
        {NULL,                                          SMB_VFS_OP_NOOP,                        SMB_VFS_LAYER_NOOP}
 };