diff options
author | Tim Potter <tpot@samba.org> | 1999-04-20 03:31:12 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 1999-04-20 03:31:12 +0000 |
commit | 287476e8a0a537fc2bc10c1699577ece4aff7685 (patch) | |
tree | ec8a0757fdbbddf8fcb8a06855c6e05f38531234 /source3 | |
parent | 1e1a52bb5f0475327d435c06032d1e6234c28bcb (diff) | |
download | samba-287476e8a0a537fc2bc10c1699577ece4aff7685.tar.gz samba-287476e8a0a537fc2bc10c1699577ece4aff7685.tar.bz2 samba-287476e8a0a537fc2bc10c1699577ece4aff7685.zip |
Broke out vfs structures to separate header file.
Some cpp hackery to avoid redefining types used by vfs header file.
Added a vfs_connection_struct to connection_struct so it can be
freed when a VFS share is disconnected.
(This used to be commit c72de36748aedb6b478fe32d18e77f85e34abfb0)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/smb.h | 55 |
1 files changed, 11 insertions, 44 deletions
diff --git a/source3/include/smb.h b/source3/include/smb.h index 660f5b6e00..789b3a81de 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -44,7 +44,10 @@ #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) +#ifndef _BOOL typedef int BOOL; +#define _BOOL /* So we don't typedef BOOL again in vfs.h */ +#endif /* limiting size of ipc replies */ #define REALLOC(ptr,size) Realloc(ptr,MAX((size),4*1024)) @@ -335,11 +338,14 @@ implemented */ #define ERRsharebufexc 36 /* share buffer exceeded */ #define ERRdiskfull 39 +#ifndef _PSTRING #define PSTRING_LEN 1024 #define FSTRING_LEN 128 typedef char pstring[PSTRING_LEN]; typedef char fstring[FSTRING_LEN]; +#define _PSTRING +#endif /* pipe string names */ #define PIPE_LANMAN "\\PIPE\\LANMAN" @@ -607,50 +613,6 @@ typedef struct files_struct } files_struct; /* - * Each implementation of the vfs back end needs to support the - * following operations. - */ - -struct vfs_ops { - - /* Global operations */ - - int (*init)(void); - - /* Disk operations */ - - int (*connect)(struct connection_struct *conn, char *service, char *user); - void (*disconnect)(struct connection_struct *conn, char *service); - SMB_BIG_UINT (*disk_free)(char *path, SMB_BIG_UINT *bsize, - SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize); - - /* Directory operations */ - - DIR *(*opendir)(char *fname); - struct dirent *(*readdir)(DIR *dirp); - int (*mkdir)(char *path, mode_t mode); - int (*rmdir)(char *path); - int (*closedir)(DIR *dir); - - /* File operations */ - - int (*open)(char *fname, int flags, mode_t mode); - int (*close)(int fd); - ssize_t (*read)(int fd, char *data, size_t n); - ssize_t (*write)(int fd, char *data, size_t n); - SMB_OFF_T (*lseek)(int filedes, SMB_OFF_T offset, int whence); - int (*rename)(char *old, char *new); - void (*sync)(struct connection_struct *conn, files_struct *fsp); - int (*stat)(char *fname, SMB_STRUCT_STAT *sbuf); - int (*fstat)(int fd, SMB_STRUCT_STAT *sbuf); - int (*lstat)(char *path, SMB_STRUCT_STAT *sbuf); - BOOL (*lock)(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type); - int (*unlink)(char *path); - int (*chmod)(char *path, mode_t mode); - int (*utime)(char *path, struct utimbuf *times); -}; - -/* * Structure used to keep directory state information around. * Used in NT change-notify code. */ @@ -672,6 +634,10 @@ typedef struct BOOL is_wild; } name_compare_entry; +/* Include VFS stuff */ + +#include "vfs.h" + typedef struct connection_struct { struct connection_struct *next, *prev; @@ -688,6 +654,7 @@ typedef struct connection_struct char *connectpath; char *origpath; struct vfs_ops vfs_ops; /* Filesystem operations */ + struct vfs_connection_struct *vfs_conn; char *user; /* name of user who *opened* this connection */ |