📄 libsmbclient.h
字号:
* @return Valid file handle, < 0 on error with errno set: * - ENOMEM Out of memory * - EINVAL if an invalid parameter passed, like no * file, or smbc_init not called. * - EEXIST pathname already exists and O_CREAT and * O_EXCL were used. * - EISDIR pathname refers to a directory and * the access requested involved writing. * - EACCES The requested access to the file is not * allowed * - ENODEV The requested share does not exist * - ENOTDIR A file on the path is not a directory * - ENOENT A directory component in pathname does * not exist. * * @see smbc_creat() * * @note This call uses an underlying routine that may create * a new connection to the server specified in the URL. * If the credentials supplied in the URL, or via the * auth_fn in the smbc_init call, fail, this call will * try again with an empty username and password. This * often gets mapped to the guest account on some machines. */int smbc_open(const char *furl, int flags, mode_t mode);/**@ingroup file * Create a file on an SMB server. * * Same as calling smbc_open() with flags = O_CREAT|O_WRONLY|O_TRUNC * * @param furl The smb url of the file to be created * * @param mode mode specifies the permissions to use if a new * file is created. It is modified by the * process's umask in the usual way: the permissions * of the created file are (mode & ~umask) * * NOTE, the above is not true. We are dealing with * an SMB server, which has no concept of a umask! * * @return Valid file handle, < 0 on error with errno set: * - ENOMEM Out of memory * - EINVAL if an invalid parameter passed, like no * file, or smbc_init not called. * - EEXIST pathname already exists and O_CREAT and * O_EXCL were used. * - EISDIR pathname refers to a directory and * the access requested involved writing. * - EACCES The requested access to the file is not * allowed * - ENOENT A directory component in pathname does * not exist. * - ENODEV The requested share does not exist. * @see smbc_open() * */int smbc_creat(const char *furl, mode_t mode);/**@ingroup file * Read from a file using an opened file handle. * * @param fd Open file handle from smbc_open() or smbc_creat() * * @param buf Pointer to buffer to recieve read data * * @param bufsize Size of buf in bytes * * @return Number of bytes read, < 0 on error with errno set: * - EISDIR fd refers to a directory * - EBADF fd is not a valid file descriptor or * is not open for reading. * - EINVAL fd is attached to an object which is * unsuitable for reading, or no buffer passed or * smbc_init not called. * * @see smbc_open(), smbc_write() * */ssize_t smbc_read(int fd, void *buf, size_t bufsize);/**@ingroup file * Write to a file using an opened file handle. * * @param fd Open file handle from smbc_open() or smbc_creat() * * @param buf Pointer to buffer to recieve read data * * @param bufsize Size of buf in bytes * * @return Number of bytes written, < 0 on error with errno set: * - EISDIR fd refers to a directory. * - EBADF fd is not a valid file descriptor or * is not open for reading. * - EINVAL fd is attached to an object which is * unsuitable for reading, or no buffer passed or * smbc_init not called. * * @see smbc_open(), smbc_read() * */ssize_t smbc_write(int fd, void *buf, size_t bufsize);/**@ingroup file * Seek to a specific location in a file. * * @param fd Open file handle from smbc_open() or smbc_creat() * * @param offset Offset in bytes from whence * * @param whence A location in the file: * - SEEK_SET The offset is set to offset bytes from * the beginning of the file * - SEEK_CUR The offset is set to current location * plus offset bytes. * - SEEK_END The offset is set to the size of the * file plus offset bytes. * * @return Upon successful completion, lseek returns the * resulting offset location as measured in bytes * from the beginning of the file. Otherwise, a value * of (off_t)-1 is returned and errno is set to * indicate the error: * - EBADF Fildes is not an open file descriptor. * - EINVAL Whence is not a proper value or smbc_init * not called. * * @todo Are all the whence values really supported? * * @todo Are errno values complete and correct? */off_t smbc_lseek(int fd, off_t offset, int whence);/**@ingroup file * Close an open file handle. * * @param fd The file handle to close * * @return 0 on success, < 0 on error with errno set: * - EBADF fd isn't a valid open file descriptor * - EINVAL smbc_init() failed or has not been called * * @see smbc_open(), smbc_creat() */int smbc_close(int fd);/**@ingroup directory * Unlink (delete) a file or directory. * * @param furl The smb url of the file to delete * * @return 0 on success, < 0 on error with errno set: * - EACCES or EPERM Write access to the directory * containing pathname is not allowed or one * of the directories in pathname did not allow * search (execute) permission * - ENOENT A directory component in pathname does * not exist * - EINVAL NULL was passed in the file param or * smbc_init not called. * - EACCES You do not have access to the file * - ENOMEM Insufficient kernel memory was available * * @see smbc_rmdir()s * * @todo Are errno values complete and correct? */int smbc_unlink(const char *furl);/**@ingroup directory * Rename or move a file or directory. * * @param ourl The original smb url (source url) of file or * directory to be moved * * @param nurl The new smb url (destination url) of the file * or directory after the move. Currently nurl must * be on the same share as ourl. * * @return 0 on success, < 0 on error with errno set: * - EISDIR nurl is an existing directory, but ourl is * not a directory. * - EEXIST nurl is a non-empty directory, * i.e., contains entries other than "." and ".." * - EINVAL The new url contained a path prefix * of the old, or, more generally, an attempt was * made to make a directory a subdirectory of itself * or smbc_init not called. * - ENOTDIR A component used as a directory in ourl * or nurl path is not, in fact, a directory. Or, * ourl is a directory, and newpath exists but is not * a directory. * - EACCES or EPERM Write access to the directory * containing ourl or nurl is not allowed for the * process's effective uid, or one of the * directories in ourl or nurl did not allow search * (execute) permission, or ourl was a directory * and did not allow write permission. * - ENOENT A directory component in ourl or nurl * does not exist. * - EXDEV Rename across shares not supported. * - ENOMEM Insufficient kernel memory was available. * - EEXIST The target file, nurl, already exists. * * * @todo Are we going to support copying when urls are not on the same * share? I say no... NOTE. I agree for the moment. * */int smbc_rename(const char *ourl, const char *nurl);/**@ingroup directory * Open a directory used to obtain directory entries. * * @param durl The smb url of the directory to open * * @return Valid directory handle. < 0 on error with errno set: * - EACCES Permission denied. * - EINVAL A NULL file/URL was passed, or the URL would * not parse, or was of incorrect form or smbc_init not * called. * - ENOENT durl does not exist, or name is an * - ENOMEM Insufficient memory to complete the * operation. * - ENOTDIR name is not a directory. * - EPERM the workgroup could not be found. * - ENODEV the workgroup or server could not be found. * * @see smbc_getdents(), smbc_readdir(), smbc_closedir() * */int smbc_opendir(const char *durl);/**@ingroup directory * Close a directory handle opened by smbc_opendir(). * * @param dh Directory handle to close * * @return 0 on success, < 0 on error with errno set: * - EBADF dh is an invalid directory handle * * @see smbc_opendir() */int smbc_closedir(int dh);/**@ingroup directory * Get multiple directory entries. * * smbc_getdents() reads as many dirent structures from the an open * directory handle into a specified memory area as will fit. * * @param dh Valid directory as returned by smbc_opendir() * * @param dirp pointer to buffer that will receive the directory * entries. * * @param count The size of the dirp buffer in bytes * * @returns If any dirents returned, return will indicate the * total size. If there were no more dirents available, * 0 is returned. < 0 indicates an error. * - EBADF Invalid directory handle * - EINVAL Result buffer is too small or smbc_init * not called. * - ENOENT No such directory. * @see , smbc_dirent, smbc_readdir(), smbc_open() * * @todo Are errno values complete and correct? * * @todo Add example code so people know how to parse buffers. */int smbc_getdents(unsigned int dh, struct smbc_dirent *dirp, int count);/**@ingroup directory * Get a single directory entry. * * @param dh Valid directory as returned by smbc_opendir() * * @return A pointer to a smbc_dirent structure, or NULL if an * error occurs or end-of-directory is reached: * - EBADF Invalid directory handle * - EINVAL smbc_init() failed or has not been called * * @see smbc_dirent, smbc_getdents(), smbc_open() */struct smbc_dirent* smbc_readdir(unsigned int dh);/**@ingroup directory * Get the current directory offset. * * smbc_telldir() may be used in conjunction with smbc_readdir() and * smbc_lseekdir(). * * @param dh Valid directory as returned by smbc_opendir() * * @return The current location in the directory stream or -1 * if an error occur. The current location is not * an offset. Becuase of the implementation, it is a * handle that allows the library to find the entry * later. * - EBADF dh is not a valid directory handle * - EINVAL smbc_init() failed or has not been called * - ENOTDIR if dh is not a directory * * @see smbc_readdir() * */off_t smbc_telldir(int dh);/**@ingroup directory * lseek on directories. * * smbc_lseekdir() may be used in conjunction with smbc_readdir() and * smbc_telldir(). (rewind by smbc_lseekdir(fd, NULL)) * * @param fd Valid directory as returned by smbc_opendir() * * @param offset The offset (as returned by smbc_telldir). Can be * NULL, in which case we will rewind * * @return 0 on success, -1 on failure * - EBADF dh is not a valid directory handle * - ENOTDIR if dh is not a directory
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -