Changes from APPLIANCE_HEAD:
[ira/wip.git] / source3 / include / libsmbclient.h
1 /* 
2    Unix SMB/Netbios implementation.
3    Version 2.0
4    SMB client library API definitions
5    Copyright (C) Andrew Tridgell 1998
6    Copyright (C) Richard Sharpe 2000
7    Copyright (C) John Terpsra 2000
8    
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 2 of the License, or
12    (at your option) any later version.
13    
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18    
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 */
23
24 #ifndef _SMBCLIENT_H
25 #define _SMBCLIENT_H
26
27 /* Make sure we have the following includes for now ... */
28
29 #include <sys/types.h>
30 #include <sys/stat.h>
31 #include <fcntl.h>
32 #include <dirent.h>
33
34 #define SMBC_FILE_MODE (S_IFREG | 0444)
35 #define SMBC_DIR_MODE  (S_IFDIR | 0555)
36
37 typedef void (*smbc_get_auth_data_fn)(char *server, char *share,
38                                       char **workgroup, char **username,
39                                       char **password);
40
41 /*
42  * Init the smbc package
43  */
44 int smbc_init(smbc_get_auth_data_fn fn, const char *workgroup, int debug);
45
46 /*
47  * Open a file on an SMB server, this has the same form as normal open
48  * but the fname is a URL of the form smb://server/share/path
49  */
50
51 int smbc_open(const char *fname, int flags, mode_t mode);
52
53 /*
54  * Create a file on an SMB server, similar to smbc_open
55  */
56
57 int smbc_creat(const char *fname, mode_t mode);
58
59 /*
60  * Read from a file, what about pread?
61  */
62
63 ssize_t smbc_read(int fd, void *buf, size_t count);
64
65 /* 
66  * Write to a file, what about pwrite?
67  */
68
69 ssize_t smbc_write(int fd, void *buf, size_t count);
70
71 /*
72  * Close a file by fd
73  */
74
75 int smbc_close(int fd);
76
77 /*
78  * Unlink a file on server, share, dir, file ...
79  */
80
81 int smbc_unlink(const char *fname);
82
83 /*
84  * rename oname to nname ... probably need to be on the same
85  * server initially. Later can copy between servers ...
86  */
87
88 int smbc_rename(const char *oname, const char *nname);
89
90 /*
91  * Seek to a specific location in a file on an SMB server 
92  */
93
94 off_t smbc_lseek(int fd, off_t offset, int whence);
95
96 /*
97  * Stat a file to get info via file name
98  */
99
100 int smbc_stat(const char *fname, struct stat *st);
101
102 /*
103  * Stat a file to get info via an fd
104  */
105
106 int smbc_fstat(int fd, struct stat *st);
107
108 /* 
109  * Chown a file 
110  */
111
112 int smbc_chown(const *fname, uid_t owner, gid_t group);
113
114 /*
115  * Chmod a file
116  */
117
118 int smbc_chmod(const char *fname, mode_t newmode);
119
120 /*
121  * Open a directory on a URL (server and share and dir)
122  */
123
124 int smbc_opendir(const char *fname);
125
126 /*
127  * Close a directory
128  */
129
130 int smbc_closedir(int fd);
131
132 /* 
133  * Get a directory entry
134  */
135
136 int smbc_getdents(unsigned int fd, struct dirent *dirp, int count);
137
138 /* 
139  * Create a directory on a server, share, dir in fname URL
140  */
141
142 int smbc_mkdir(const char *fname, mode_t mode);
143
144 /* 
145  * lseek on directories, rewind by smbc_lseekdir(fd, 0, SEEK_SET)
146  */
147
148 int smbc_lseekdir(int fd, off_t offset, int whence);
149
150 /* 
151  * Must also provide print functions ... soon
152  */
153
154 #endif