mirror of
https://github.com/samba-team/samba.git
synced 2025-12-07 20:23:50 +03:00
s3: libsmbclient: Add new function SMBC_readdirplus_ctx().
New ABI function, move to library version 0.33. Signed-off-by: Puran Chand <pchand@vmware.com> Reviewed-by: Jeremy Allison <jra@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org>
This commit is contained in:
committed by
Jeremy Allison
parent
dd3f019d58
commit
2166c2d3ee
@@ -301,6 +301,10 @@ struct smbc_dirent *
|
|||||||
SMBC_readdir_ctx(SMBCCTX *context,
|
SMBC_readdir_ctx(SMBCCTX *context,
|
||||||
SMBCFILE *dir);
|
SMBCFILE *dir);
|
||||||
|
|
||||||
|
const struct libsmb_file_info *
|
||||||
|
SMBC_readdirplus_ctx(SMBCCTX *context,
|
||||||
|
SMBCFILE *dir);
|
||||||
|
|
||||||
int
|
int
|
||||||
SMBC_getdents_ctx(SMBCCTX *context,
|
SMBC_getdents_ctx(SMBCCTX *context,
|
||||||
SMBCFILE *dir,
|
SMBCFILE *dir,
|
||||||
|
|||||||
@@ -1024,6 +1024,11 @@ typedef struct smbc_dirent * (*smbc_readdir_fn)(SMBCCTX *c,
|
|||||||
smbc_readdir_fn smbc_getFunctionReaddir(SMBCCTX *c);
|
smbc_readdir_fn smbc_getFunctionReaddir(SMBCCTX *c);
|
||||||
void smbc_setFunctionReaddir(SMBCCTX *c, smbc_readdir_fn fn);
|
void smbc_setFunctionReaddir(SMBCCTX *c, smbc_readdir_fn fn);
|
||||||
|
|
||||||
|
typedef const struct libsmb_file_info * (*smbc_readdirplus_fn)(SMBCCTX *c,
|
||||||
|
SMBCFILE *dir);
|
||||||
|
smbc_readdirplus_fn smbc_getFunctionReaddirPlus(SMBCCTX *c);
|
||||||
|
void smbc_setFunctionReaddirPlus(SMBCCTX *c, smbc_readdirplus_fn fn);
|
||||||
|
|
||||||
typedef int (*smbc_getdents_fn)(SMBCCTX *c,
|
typedef int (*smbc_getdents_fn)(SMBCCTX *c,
|
||||||
SMBCFILE *dir,
|
SMBCFILE *dir,
|
||||||
struct smbc_dirent *dirp,
|
struct smbc_dirent *dirp,
|
||||||
@@ -1618,6 +1623,20 @@ int smbc_getdents(unsigned int dh, struct smbc_dirent *dirp, int count);
|
|||||||
*/
|
*/
|
||||||
struct smbc_dirent* smbc_readdir(unsigned int dh);
|
struct smbc_dirent* smbc_readdir(unsigned int dh);
|
||||||
|
|
||||||
|
/**@ingroup directory
|
||||||
|
* Works similar as smbc_readdir but returns more information about file.
|
||||||
|
*
|
||||||
|
* @param dh Valid directory as returned by smbc_opendir()
|
||||||
|
*
|
||||||
|
* @return A const pointer to a libsmb_file_info 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_open(), smbc_readdir()
|
||||||
|
*/
|
||||||
|
const struct libsmb_file_info *smbc_readdirplus(unsigned int dh);
|
||||||
|
|
||||||
|
|
||||||
/**@ingroup directory
|
/**@ingroup directory
|
||||||
* Get the current directory offset.
|
* Get the current directory offset.
|
||||||
@@ -3067,6 +3086,7 @@ struct _SMBCCTX
|
|||||||
smbc_opendir_fn opendir DEPRECATED_SMBC_INTERFACE;
|
smbc_opendir_fn opendir DEPRECATED_SMBC_INTERFACE;
|
||||||
smbc_closedir_fn closedir DEPRECATED_SMBC_INTERFACE;
|
smbc_closedir_fn closedir DEPRECATED_SMBC_INTERFACE;
|
||||||
smbc_readdir_fn readdir DEPRECATED_SMBC_INTERFACE;
|
smbc_readdir_fn readdir DEPRECATED_SMBC_INTERFACE;
|
||||||
|
smbc_readdirplus_fn readdirplus DEPRECATED_SMBC_INTERFACE;
|
||||||
smbc_getdents_fn getdents DEPRECATED_SMBC_INTERFACE;
|
smbc_getdents_fn getdents DEPRECATED_SMBC_INTERFACE;
|
||||||
smbc_mkdir_fn mkdir DEPRECATED_SMBC_INTERFACE;
|
smbc_mkdir_fn mkdir DEPRECATED_SMBC_INTERFACE;
|
||||||
smbc_rmdir_fn rmdir DEPRECATED_SMBC_INTERFACE;
|
smbc_rmdir_fn rmdir DEPRECATED_SMBC_INTERFACE;
|
||||||
|
|||||||
184
source3/libsmb/ABI/smbclient-0.3.3.sigs
Normal file
184
source3/libsmb/ABI/smbclient-0.3.3.sigs
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
smbc_chmod: int (const char *, mode_t)
|
||||||
|
smbc_close: int (int)
|
||||||
|
smbc_closedir: int (int)
|
||||||
|
smbc_creat: int (const char *, mode_t)
|
||||||
|
smbc_fgetxattr: int (int, const char *, const void *, size_t)
|
||||||
|
smbc_flistxattr: int (int, char *, size_t)
|
||||||
|
smbc_free_context: int (SMBCCTX *, int)
|
||||||
|
smbc_fremovexattr: int (int, const char *)
|
||||||
|
smbc_fsetxattr: int (int, const char *, const void *, size_t, int)
|
||||||
|
smbc_fstat: int (int, struct stat *)
|
||||||
|
smbc_fstatvfs: int (int, struct statvfs *)
|
||||||
|
smbc_ftruncate: int (int, off_t)
|
||||||
|
smbc_getDebug: int (SMBCCTX *)
|
||||||
|
smbc_getFunctionAddCachedServer: smbc_add_cached_srv_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionAuthData: smbc_get_auth_data_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionAuthDataWithContext: smbc_get_auth_data_with_context_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionCheckServer: smbc_check_server_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionChmod: smbc_chmod_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionClose: smbc_close_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionClosedir: smbc_closedir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionCreat: smbc_creat_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionFstat: smbc_fstat_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionFstatVFS: smbc_fstatvfs_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionFstatdir: smbc_fstatdir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionFtruncate: smbc_ftruncate_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionGetCachedServer: smbc_get_cached_srv_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionGetdents: smbc_getdents_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionGetxattr: smbc_getxattr_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionListPrintJobs: smbc_list_print_jobs_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionListxattr: smbc_listxattr_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionLseek: smbc_lseek_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionLseekdir: smbc_lseekdir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionMkdir: smbc_mkdir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionNotify: smbc_notify_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionOpen: smbc_open_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionOpenPrintJob: smbc_open_print_job_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionOpendir: smbc_opendir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionPrintFile: smbc_print_file_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionPurgeCachedServers: smbc_purge_cached_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRead: smbc_read_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionReaddir: smbc_readdir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionReaddirPlus: smbc_readdirplus_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRemoveCachedServer: smbc_remove_cached_srv_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRemoveUnusedServer: smbc_remove_unused_server_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRemovexattr: smbc_removexattr_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRename: smbc_rename_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionRmdir: smbc_rmdir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionSetxattr: smbc_setxattr_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionSplice: smbc_splice_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionStat: smbc_stat_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionStatVFS: smbc_statvfs_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionTelldir: smbc_telldir_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionUnlink: smbc_unlink_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionUnlinkPrintJob: smbc_unlink_print_job_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionUtimes: smbc_utimes_fn (SMBCCTX *)
|
||||||
|
smbc_getFunctionWrite: smbc_write_fn (SMBCCTX *)
|
||||||
|
smbc_getNetbiosName: char *(SMBCCTX *)
|
||||||
|
smbc_getOptionBrowseMaxLmbCount: int (SMBCCTX *)
|
||||||
|
smbc_getOptionCaseSensitive: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionDebugToStderr: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionFallbackAfterKerberos: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionFullTimeNames: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionNoAutoAnonymousLogin: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionOneSharePerServer: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionOpenShareMode: smbc_share_mode (SMBCCTX *)
|
||||||
|
smbc_getOptionSmbEncryptionLevel: smbc_smb_encrypt_level (SMBCCTX *)
|
||||||
|
smbc_getOptionUrlEncodeReaddirEntries: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionUseCCache: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionUseKerberos: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionUseNTHash: smbc_bool (SMBCCTX *)
|
||||||
|
smbc_getOptionUserData: void *(SMBCCTX *)
|
||||||
|
smbc_getPort: uint16_t (SMBCCTX *)
|
||||||
|
smbc_getServerCacheData: struct smbc_server_cache *(SMBCCTX *)
|
||||||
|
smbc_getTimeout: int (SMBCCTX *)
|
||||||
|
smbc_getUser: char *(SMBCCTX *)
|
||||||
|
smbc_getWorkgroup: char *(SMBCCTX *)
|
||||||
|
smbc_getdents: int (unsigned int, struct smbc_dirent *, int)
|
||||||
|
smbc_getxattr: int (const char *, const char *, const void *, size_t)
|
||||||
|
smbc_init: int (smbc_get_auth_data_fn, int)
|
||||||
|
smbc_init_context: SMBCCTX *(SMBCCTX *)
|
||||||
|
smbc_lgetxattr: int (const char *, const char *, const void *, size_t)
|
||||||
|
smbc_list_print_jobs: int (const char *, smbc_list_print_job_fn)
|
||||||
|
smbc_listxattr: int (const char *, char *, size_t)
|
||||||
|
smbc_llistxattr: int (const char *, char *, size_t)
|
||||||
|
smbc_lremovexattr: int (const char *, const char *)
|
||||||
|
smbc_lseek: off_t (int, off_t, int)
|
||||||
|
smbc_lseekdir: int (int, off_t)
|
||||||
|
smbc_lsetxattr: int (const char *, const char *, const void *, size_t, int)
|
||||||
|
smbc_mkdir: int (const char *, mode_t)
|
||||||
|
smbc_new_context: SMBCCTX *(void)
|
||||||
|
smbc_notify: int (int, smbc_bool, uint32_t, unsigned int, smbc_notify_callback_fn, void *)
|
||||||
|
smbc_open: int (const char *, int, mode_t)
|
||||||
|
smbc_open_print_job: int (const char *)
|
||||||
|
smbc_opendir: int (const char *)
|
||||||
|
smbc_option_get: void *(SMBCCTX *, char *)
|
||||||
|
smbc_option_set: void (SMBCCTX *, char *, ...)
|
||||||
|
smbc_print_file: int (const char *, const char *)
|
||||||
|
smbc_read: ssize_t (int, void *, size_t)
|
||||||
|
smbc_readdir: struct smbc_dirent *(unsigned int)
|
||||||
|
smbc_readdirplus: const struct libsmb_file_info *(unsigned int)
|
||||||
|
smbc_removexattr: int (const char *, const char *)
|
||||||
|
smbc_rename: int (const char *, const char *)
|
||||||
|
smbc_rmdir: int (const char *)
|
||||||
|
smbc_setConfiguration: int (SMBCCTX *, const char *)
|
||||||
|
smbc_setDebug: void (SMBCCTX *, int)
|
||||||
|
smbc_setFunctionAddCachedServer: void (SMBCCTX *, smbc_add_cached_srv_fn)
|
||||||
|
smbc_setFunctionAuthData: void (SMBCCTX *, smbc_get_auth_data_fn)
|
||||||
|
smbc_setFunctionAuthDataWithContext: void (SMBCCTX *, smbc_get_auth_data_with_context_fn)
|
||||||
|
smbc_setFunctionCheckServer: void (SMBCCTX *, smbc_check_server_fn)
|
||||||
|
smbc_setFunctionChmod: void (SMBCCTX *, smbc_chmod_fn)
|
||||||
|
smbc_setFunctionClose: void (SMBCCTX *, smbc_close_fn)
|
||||||
|
smbc_setFunctionClosedir: void (SMBCCTX *, smbc_closedir_fn)
|
||||||
|
smbc_setFunctionCreat: void (SMBCCTX *, smbc_creat_fn)
|
||||||
|
smbc_setFunctionFstat: void (SMBCCTX *, smbc_fstat_fn)
|
||||||
|
smbc_setFunctionFstatVFS: void (SMBCCTX *, smbc_fstatvfs_fn)
|
||||||
|
smbc_setFunctionFstatdir: void (SMBCCTX *, smbc_fstatdir_fn)
|
||||||
|
smbc_setFunctionFtruncate: void (SMBCCTX *, smbc_ftruncate_fn)
|
||||||
|
smbc_setFunctionGetCachedServer: void (SMBCCTX *, smbc_get_cached_srv_fn)
|
||||||
|
smbc_setFunctionGetdents: void (SMBCCTX *, smbc_getdents_fn)
|
||||||
|
smbc_setFunctionGetxattr: void (SMBCCTX *, smbc_getxattr_fn)
|
||||||
|
smbc_setFunctionListPrintJobs: void (SMBCCTX *, smbc_list_print_jobs_fn)
|
||||||
|
smbc_setFunctionListxattr: void (SMBCCTX *, smbc_listxattr_fn)
|
||||||
|
smbc_setFunctionLseek: void (SMBCCTX *, smbc_lseek_fn)
|
||||||
|
smbc_setFunctionLseekdir: void (SMBCCTX *, smbc_lseekdir_fn)
|
||||||
|
smbc_setFunctionMkdir: void (SMBCCTX *, smbc_mkdir_fn)
|
||||||
|
smbc_setFunctionNotify: void (SMBCCTX *, smbc_notify_fn)
|
||||||
|
smbc_setFunctionOpen: void (SMBCCTX *, smbc_open_fn)
|
||||||
|
smbc_setFunctionOpenPrintJob: void (SMBCCTX *, smbc_open_print_job_fn)
|
||||||
|
smbc_setFunctionOpendir: void (SMBCCTX *, smbc_opendir_fn)
|
||||||
|
smbc_setFunctionPrintFile: void (SMBCCTX *, smbc_print_file_fn)
|
||||||
|
smbc_setFunctionPurgeCachedServers: void (SMBCCTX *, smbc_purge_cached_fn)
|
||||||
|
smbc_setFunctionRead: void (SMBCCTX *, smbc_read_fn)
|
||||||
|
smbc_setFunctionReaddir: void (SMBCCTX *, smbc_readdir_fn)
|
||||||
|
smbc_setFunctionReaddirPlus: void (SMBCCTX *, smbc_readdirplus_fn)
|
||||||
|
smbc_setFunctionRemoveCachedServer: void (SMBCCTX *, smbc_remove_cached_srv_fn)
|
||||||
|
smbc_setFunctionRemoveUnusedServer: void (SMBCCTX *, smbc_remove_unused_server_fn)
|
||||||
|
smbc_setFunctionRemovexattr: void (SMBCCTX *, smbc_removexattr_fn)
|
||||||
|
smbc_setFunctionRename: void (SMBCCTX *, smbc_rename_fn)
|
||||||
|
smbc_setFunctionRmdir: void (SMBCCTX *, smbc_rmdir_fn)
|
||||||
|
smbc_setFunctionSetxattr: void (SMBCCTX *, smbc_setxattr_fn)
|
||||||
|
smbc_setFunctionSplice: void (SMBCCTX *, smbc_splice_fn)
|
||||||
|
smbc_setFunctionStat: void (SMBCCTX *, smbc_stat_fn)
|
||||||
|
smbc_setFunctionStatVFS: void (SMBCCTX *, smbc_statvfs_fn)
|
||||||
|
smbc_setFunctionTelldir: void (SMBCCTX *, smbc_telldir_fn)
|
||||||
|
smbc_setFunctionUnlink: void (SMBCCTX *, smbc_unlink_fn)
|
||||||
|
smbc_setFunctionUnlinkPrintJob: void (SMBCCTX *, smbc_unlink_print_job_fn)
|
||||||
|
smbc_setFunctionUtimes: void (SMBCCTX *, smbc_utimes_fn)
|
||||||
|
smbc_setFunctionWrite: void (SMBCCTX *, smbc_write_fn)
|
||||||
|
smbc_setLogCallback: void (SMBCCTX *, void *, smbc_debug_callback_fn)
|
||||||
|
smbc_setNetbiosName: void (SMBCCTX *, char *)
|
||||||
|
smbc_setOptionBrowseMaxLmbCount: void (SMBCCTX *, int)
|
||||||
|
smbc_setOptionCaseSensitive: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionDebugToStderr: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionFallbackAfterKerberos: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionFullTimeNames: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionNoAutoAnonymousLogin: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionOneSharePerServer: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionOpenShareMode: void (SMBCCTX *, smbc_share_mode)
|
||||||
|
smbc_setOptionSmbEncryptionLevel: void (SMBCCTX *, smbc_smb_encrypt_level)
|
||||||
|
smbc_setOptionUrlEncodeReaddirEntries: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionUseCCache: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionUseKerberos: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionUseNTHash: void (SMBCCTX *, smbc_bool)
|
||||||
|
smbc_setOptionUserData: void (SMBCCTX *, void *)
|
||||||
|
smbc_setPort: void (SMBCCTX *, uint16_t)
|
||||||
|
smbc_setServerCacheData: void (SMBCCTX *, struct smbc_server_cache *)
|
||||||
|
smbc_setTimeout: void (SMBCCTX *, int)
|
||||||
|
smbc_setUser: void (SMBCCTX *, const char *)
|
||||||
|
smbc_setWorkgroup: void (SMBCCTX *, char *)
|
||||||
|
smbc_set_context: SMBCCTX *(SMBCCTX *)
|
||||||
|
smbc_set_credentials: void (const char *, const char *, const char *, smbc_bool, const char *)
|
||||||
|
smbc_set_credentials_with_fallback: void (SMBCCTX *, const char *, const char *, const char *)
|
||||||
|
smbc_setxattr: int (const char *, const char *, const void *, size_t, int)
|
||||||
|
smbc_stat: int (const char *, struct stat *)
|
||||||
|
smbc_statvfs: int (char *, struct statvfs *)
|
||||||
|
smbc_telldir: off_t (int)
|
||||||
|
smbc_unlink: int (const char *)
|
||||||
|
smbc_unlink_print_job: int (const char *, int)
|
||||||
|
smbc_urldecode: int (char *, char *, size_t)
|
||||||
|
smbc_urlencode: int (char *, char *, int)
|
||||||
|
smbc_utime: int (const char *, struct utimbuf *)
|
||||||
|
smbc_utimes: int (const char *, struct timeval *)
|
||||||
|
smbc_version: const char *(void)
|
||||||
|
smbc_write: ssize_t (int, const void *, size_t)
|
||||||
@@ -285,6 +285,12 @@ smbc_readdir(unsigned int dh)
|
|||||||
return smbc_getFunctionReaddir(statcont)(statcont, file);
|
return smbc_getFunctionReaddir(statcont)(statcont, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct libsmb_file_info *smbc_readdirplus(unsigned int dh)
|
||||||
|
{
|
||||||
|
SMBCFILE * file = find_fd(dh);
|
||||||
|
return smbc_getFunctionReaddirPlus(statcont)(statcont, file);
|
||||||
|
}
|
||||||
|
|
||||||
off_t
|
off_t
|
||||||
smbc_telldir(int dh)
|
smbc_telldir(int dh)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ smbc_new_context(void)
|
|||||||
smbc_setFunctionOpendir(context, SMBC_opendir_ctx);
|
smbc_setFunctionOpendir(context, SMBC_opendir_ctx);
|
||||||
smbc_setFunctionClosedir(context, SMBC_closedir_ctx);
|
smbc_setFunctionClosedir(context, SMBC_closedir_ctx);
|
||||||
smbc_setFunctionReaddir(context, SMBC_readdir_ctx);
|
smbc_setFunctionReaddir(context, SMBC_readdir_ctx);
|
||||||
|
smbc_setFunctionReaddirPlus(context, SMBC_readdirplus_ctx);
|
||||||
smbc_setFunctionGetdents(context, SMBC_getdents_ctx);
|
smbc_setFunctionGetdents(context, SMBC_getdents_ctx);
|
||||||
smbc_setFunctionMkdir(context, SMBC_mkdir_ctx);
|
smbc_setFunctionMkdir(context, SMBC_mkdir_ctx);
|
||||||
smbc_setFunctionRmdir(context, SMBC_rmdir_ctx);
|
smbc_setFunctionRmdir(context, SMBC_rmdir_ctx);
|
||||||
|
|||||||
@@ -1140,6 +1140,52 @@ SMBC_readdir_ctx(SMBCCTX *context,
|
|||||||
return dirp;
|
return dirp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine to get a directory entry with all attributes
|
||||||
|
*/
|
||||||
|
|
||||||
|
const struct libsmb_file_info *
|
||||||
|
SMBC_readdirplus_ctx(SMBCCTX *context,
|
||||||
|
SMBCFILE *dir)
|
||||||
|
{
|
||||||
|
struct libsmb_file_info *smb_finfo = NULL;
|
||||||
|
TALLOC_CTX *frame = talloc_stackframe();
|
||||||
|
|
||||||
|
/* Check that all is ok first ... */
|
||||||
|
|
||||||
|
if (context == NULL || !context->internal->initialized) {
|
||||||
|
DBG_ERR("Invalid context in SMBC_readdirplus_ctx()\n");
|
||||||
|
TALLOC_FREE(frame);
|
||||||
|
errno = EINVAL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir == NULL ||
|
||||||
|
SMBC_dlist_contains(context->internal->files,
|
||||||
|
dir) == 0) {
|
||||||
|
DBG_ERR("Invalid dir in SMBC_readdirplus_ctx()\n");
|
||||||
|
TALLOC_FREE(frame);
|
||||||
|
errno = EBADF;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir->dirplus_next == NULL) {
|
||||||
|
TALLOC_FREE(frame);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
smb_finfo = dir->dirplus_next->smb_finfo;
|
||||||
|
if (smb_finfo == NULL) {
|
||||||
|
TALLOC_FREE(frame);
|
||||||
|
errno = ENOENT;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
dir->dirplus_next = dir->dirplus_next->next;
|
||||||
|
|
||||||
|
TALLOC_FREE(frame);
|
||||||
|
return smb_finfo;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routine to get directory entries
|
* Routine to get directory entries
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -879,6 +879,16 @@ smbc_setFunctionReaddir(SMBCCTX *c, smbc_readdir_fn fn)
|
|||||||
c->readdir = fn;
|
c->readdir = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
smbc_readdirplus_fn smbc_getFunctionReaddirPlus(SMBCCTX *c)
|
||||||
|
{
|
||||||
|
return c->readdirplus;
|
||||||
|
}
|
||||||
|
|
||||||
|
void smbc_setFunctionReaddirPlus(SMBCCTX *c, smbc_readdirplus_fn fn)
|
||||||
|
{
|
||||||
|
c->readdirplus = fn;
|
||||||
|
}
|
||||||
|
|
||||||
smbc_getdents_fn
|
smbc_getdents_fn
|
||||||
smbc_getFunctionGetdents(SMBCCTX *c)
|
smbc_getFunctionGetdents(SMBCCTX *c)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,5 +27,5 @@ def build(bld):
|
|||||||
public_headers='../include/libsmbclient.h',
|
public_headers='../include/libsmbclient.h',
|
||||||
abi_directory='ABI',
|
abi_directory='ABI',
|
||||||
abi_match='smbc_*',
|
abi_match='smbc_*',
|
||||||
vnum='0.3.2',
|
vnum='0.3.3',
|
||||||
pc_files='smbclient.pc')
|
pc_files='smbclient.pc')
|
||||||
|
|||||||
Reference in New Issue
Block a user