2 Unix SMB/Netbios implementation.
4 SMB client library API definitions
5 Copyright (C) Andrew Tridgell 1998
6 Copyright (C) Richard Sharpe 2000
7 Copyright (C) John Terpsra 2000
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.
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.
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.
27 /* Make sure we have the following includes for now ... */
29 #include <sys/types.h>
33 #define SMBC_MAX_NAME 1023
37 uint smbc_type; /* Type of entity, see below */
38 uint dirlen; /* Convenience */
41 char *comment; /* Points to the comment futher down */
47 typedef unsigned short uint16;
48 struct print_job_info {
61 #define SMBC_WORKGROUP 1
63 #define SMBC_FILE_SHARE 3
64 #define SMBC_PRINTER_SHARE 4
65 #define SMBC_COMMS_SHARE 5
66 #define SMBC_IPC_SHARE 6
71 #define SMBC_FILE_MODE (S_IFREG | 0444)
72 #define SMBC_DIR_MODE (S_IFDIR | 0555)
74 typedef void (*smbc_get_auth_data_fn)(char *server, char *share,
75 char *workgroup, int wgmaxlen,
76 char *username, int unmaxlen,
77 char *password, int pwmaxlen);
80 * Init the smbc package
82 int smbc_init(smbc_get_auth_data_fn fn, const char *workgroup, int debug);
85 * Open a file on an SMB server, this has the same form as normal open
86 * but the fname is a URL of the form smb://server/share/path
89 int smbc_open(const char *fname, int flags, mode_t mode);
92 * Create a file on an SMB server, similar to smbc_open
95 int smbc_creat(const char *fname, mode_t mode);
98 * Read from a file, what about pread?
101 ssize_t smbc_read(int fd, void *buf, size_t count);
104 * Write to a file, what about pwrite?
107 ssize_t smbc_write(int fd, void *buf, size_t count);
113 int smbc_close(int fd);
116 * Unlink a file on server, share, dir, file ...
119 int smbc_unlink(const char *fname);
122 * rename oname to nname ... probably need to be on the same
123 * server initially. Later can copy between servers ...
126 int smbc_rename(const char *oname, const char *nname);
129 * Seek to a specific location in a file on an SMB server
132 off_t smbc_lseek(int fd, off_t offset, int whence);
135 * Stat a file to get info via file name
138 int smbc_stat(const char *fname, struct stat *st);
141 * Stat a file to get info via an fd
144 int smbc_fstat(int fd, struct stat *st);
150 int smbc_chown(const char *fname, uid_t owner, gid_t group);
156 int smbc_chmod(const char *fname, mode_t newmode);
159 * Open a directory on a URL (server and share and dir)
162 int smbc_opendir(const char *fname);
168 int smbc_closedir(int fd);
171 * Get a directory entry
174 int smbc_getdents(unsigned int fd, struct smbc_dirent *dirp, int count);
177 * Read a dirent in the old way
180 struct smbc_dirent *smbc_readdir(unsigned int fd);
183 * Create a directory on a server, share, dir in fname URL
186 int smbc_mkdir(const char *fname, mode_t mode);
189 * Remove a directory on a server
192 int smbc_rmdir(const char *fname);
195 * Get the current directory offset
198 off_t smbc_telldir(int fd);
201 * lseek on directories, rewind by smbc_lseekdir(fd, 0, SEEK_SET)
204 int smbc_lseekdir(int fd, off_t offset, int whence);
207 * Print a file given the name in fname. It would be a URL ...
210 int smbc_print_file(const char *fname, const char *printq);
213 * Open a print file that can be written to by other calls. This simply
214 * does an smbc_open call after checking if there is a file name on the
215 * URI. If not, a temporary name is added ...
218 int smbc_open_print_job(const char *fname);
221 * List the print jobs on a print share, for the moment, pass a callback
224 int smbc_list_print_jobs(const char *fname, void (*fn)(struct print_job_info *));
230 int smbc_unlink_print_job(const char *fname, int id);