2 Unix SMB/Netbios implementation.
4 VFS structures and parameters
5 Copyright (C) Tim Potter 1999
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 /* Types used in the definition of VFS operations. These are included
26 here so the vfs.h file can be included by VFS modules without
27 having to pull in unnecessary amounts of other stuff. Note to VFS
28 writers: you must include config.h before including this file.
29 The following type definitions reference the HAVE_* symbols which
30 are defined in config.h */
34 # define SMB_OFF_T off64_t
36 # define SMB_OFF_T off_t
40 #ifndef SMB_STRUCT_STAT
41 # if defined(HAVE_STAT64) && defined(HAVE_OFF64_T)
42 # define SMB_STRUCT_STAT struct stat64
44 # define SMB_STRUCT_STAT struct stat
53 #define PSTRING_LEN 1024
54 #define FSTRING_LEN 128
56 typedef char pstring[PSTRING_LEN];
57 typedef char fstring[FSTRING_LEN];
61 #if defined(HAVE_LONGLONG)
62 #define SMB_BIG_UINT unsigned long long
64 #define SMB_BIG_UINT unsigned long
67 /* Information from the connection_struct passed to the vfs layer */
69 struct vfs_connection_struct {
71 /* Connection information */
78 /* Handle on dlopen() call */
89 /* Information on user who *opened* this connection */
98 /* Avoid conflict with an AIX include file */
104 /* VFS operations structure */
108 /* Disk operations */
110 int (*connect)(struct vfs_connection_struct *conn, char *service,
112 void (*disconnect)(void);
113 SMB_BIG_UINT (*disk_free)(char *path, BOOL small_query, SMB_BIG_UINT *bsize,
114 SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
116 /* Directory operations */
118 DIR *(*opendir)(char *fname);
119 struct dirent *(*readdir)(DIR *dirp);
120 int (*mkdir)(char *path, mode_t mode);
121 int (*rmdir)(char *path);
122 int (*closedir)(DIR *dir);
124 /* File operations */
126 int (*open)(char *fname, int flags, mode_t mode);
127 int (*close)(int fd);
128 ssize_t (*read)(int fd, char *data, size_t n);
129 ssize_t (*write)(int fd, char *data, size_t n);
130 SMB_OFF_T (*lseek)(int filedes, SMB_OFF_T offset, int whence);
131 int (*rename)(char *old, char *new);
132 void (*fsync)(int fd);
133 int (*stat)(char *fname, SMB_STRUCT_STAT *sbuf);
134 int (*fstat)(int fd, SMB_STRUCT_STAT *sbuf);
135 int (*lstat)(char *path, SMB_STRUCT_STAT *sbuf);
136 int (*unlink)(char *path);
137 int (*chmod)(char *path, mode_t mode);
138 int (*utime)(char *path, struct utimbuf *times);
142 struct vfs_options *prev, *next;