r23299: Fix the build for !WITH_SENDFILE.
[sfrench/samba-autobuild/.git] / source / include / libsmb_internal.h
1 #ifndef _LIBSMB_INTERNAL_H_
2 #define _LIBSMB_INTERNAL_H_
3
4 #define SMBC_MAX_NAME  1023
5 #define SMBC_FILE_MODE (S_IFREG | 0444)
6 #define SMBC_DIR_MODE  (S_IFDIR | 0555)
7
8
9 #include "include/libsmbclient.h"
10
11
12 struct _SMBCSRV {
13         struct cli_state *cli;
14         dev_t dev;
15         BOOL no_pathinfo;
16         BOOL no_pathinfo2;
17         BOOL no_nt_session;
18
19         SMBCSRV *next, *prev;
20         
21 };
22
23 /* 
24  * Keep directory entries in a list 
25  */
26 struct smbc_dir_list {
27         struct smbc_dir_list *next;
28         struct smbc_dirent *dirent;
29 };
30
31
32 /*
33  * Structure for open file management
34  */ 
35 struct _SMBCFILE {
36         int cli_fd; 
37         char *fname;
38         SMB_OFF_T offset;
39         struct _SMBCSRV *srv;
40         BOOL file;
41         struct smbc_dir_list *dir_list, *dir_end, *dir_next;
42         int dir_type, dir_error;
43
44         SMBCFILE *next, *prev;
45 };
46
47
48 struct smbc_internal_data {
49
50         /*
51          * Is this handle initialized ? 
52          */
53         BOOL    _initialized;
54
55         /* dirent pointer location
56          *
57          * Leave room for any urlencoded filename and the comment field.
58          *
59          * We really should use sizeof(struct smbc_dirent) plus (NAME_MAX * 3)
60          * plus whatever the max length of a comment is, plus a couple of null
61          * terminators (one after the filename, one after the comment).
62          *
63          * According to <linux/limits.h>, NAME_MAX is 255.  Is it longer
64          * anyplace else?
65          */
66         char    _dirent[1024];
67
68         /*
69          * server connection list
70          */
71         SMBCSRV * _servers;
72         
73         /*
74          * open file/dir list
75          */
76         SMBCFILE * _files;
77
78         /*
79          * Log to standard error instead of the more typical standard output
80          */
81         BOOL _debug_stderr;
82
83         /*
84          * Support "Create Time" in get/set with the *xattr() functions, if
85          * true.  This replaces the dos attribute strings C_TIME, A_TIME and
86          * M_TIME with CHANGE_TIME, ACCESS_TIME and WRITE_TIME, and adds
87          * CREATE_TIME.  Default is FALSE, i.e.  to use the old-style shorter
88          * names and to not support CREATE time, for backward compatibility.
89          */
90         BOOL _full_time_names;
91
92         /*
93          * The share mode of a file being opened.  To match POSIX semantics
94          * (and maintain backward compatibility), DENY_NONE is the default.
95          */
96          smbc_share_mode _share_mode;
97
98         /*
99          * Authentication function which includes the context.  This will be
100          * used if set; otherwise context->callbacks.auth_fn() will be used.
101          */
102         smbc_get_auth_data_with_context_fn _auth_fn_with_context;
103
104         /*
105          * An opaque (to this library) user data handle which can be set
106          * and retrieved with smbc_option_set() and smbc_option_get().
107          */
108         void * _user_data;
109 };      
110
111
112 #endif