diff options
Diffstat (limited to 'source/include')
-rw-r--r-- | source/include/config.h.in | 3 | ||||
-rw-r--r-- | source/include/profile.h | 2 | ||||
-rw-r--r-- | source/include/proto.h | 2 | ||||
-rw-r--r-- | source/include/trans2.h | 2 | ||||
-rw-r--r-- | source/include/vfs.h | 1 |
5 files changed, 9 insertions, 1 deletions
diff --git a/source/include/config.h.in b/source/include/config.h.in index c7fb34a2383..006e36f16c8 100644 --- a/source/include/config.h.in +++ b/source/include/config.h.in @@ -660,6 +660,9 @@ /* Define if you have the readlink function. */ #undef HAVE_READLINK +/* Define if you have the realpath function. */ +#undef HAVE_REALPATH + /* Define if you have the rename function. */ #undef HAVE_RENAME diff --git a/source/include/profile.h b/source/include/profile.h index 719318195e0..149c0a73157 100644 --- a/source/include/profile.h +++ b/source/include/profile.h @@ -104,6 +104,8 @@ struct profile_stats { unsigned syscall_link_time; unsigned syscall_mknod_count; unsigned syscall_mknod_time; + unsigned syscall_realpath_count; + unsigned syscall_realpath_time; /* stat cache counters */ unsigned statcache_lookups; unsigned statcache_misses; diff --git a/source/include/proto.h b/source/include/proto.h index 9d35c0e41bb..92f88301aff 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -946,6 +946,7 @@ int sys_open(const char *path, int oflag, mode_t mode); FILE *sys_fopen(const char *path, const char *type); SMB_STRUCT_DIRENT *sys_readdir(DIR *dirp); int sys_mknod(const char *path, mode_t mode, SMB_DEV_T dev); +char *sys_realpath(const char *path, char *resolved_path); int sys_waitpid(pid_t pid,int *status,int options); char *sys_getwd(char *s); int sys_symlink(const char *oldpath, const char *newpath); @@ -4586,6 +4587,7 @@ int vfswrap_symlink(connection_struct *conn, const char *oldpath, const char *ne int vfswrap_readlink(connection_struct *conn, const char *path, char *buf, size_t bufsiz); int vfswrap_link(connection_struct *conn, const char *oldpath, const char *newpath); int vfswrap_mknod(connection_struct *conn, const char *pathname, mode_t mode, SMB_DEV_T dev); +char *vfswrap_realpath(connection_struct *conn, const char *path, char *resolved_path); size_t vfswrap_fget_nt_acl(files_struct *fsp, int fd, SEC_DESC **ppdesc); size_t vfswrap_get_nt_acl(files_struct *fsp, char *name, SEC_DESC **ppdesc); BOOL vfswrap_fset_nt_acl(files_struct *fsp, int fd, uint32 security_info_sent, SEC_DESC *psd); diff --git a/source/include/trans2.h b/source/include/trans2.h index ffd90ae7229..9b655e8b938 100644 --- a/source/include/trans2.h +++ b/source/include/trans2.h @@ -369,7 +369,7 @@ Byte offset Type name description * Oh this is fun. "Standard UNIX permissions" has no * meaning in POSIX. We need to define the mapping onto * and off the wire as this was not done in the original HP - * code. JRA. + * spec. JRA. */ #define UNIX_X_OTH 0000001 diff --git a/source/include/vfs.h b/source/include/vfs.h index b0dcd7ba84d..ee4bdea6022 100644 --- a/source/include/vfs.h +++ b/source/include/vfs.h @@ -91,6 +91,7 @@ struct vfs_ops { int (*readlink)(struct connection_struct *conn, const char *path, char *buf, size_t bufsiz); int (*link)(struct connection_struct *conn, const char *oldpath, const char *newpath); int (*mknod)(struct connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev); + char *(*realpath)(struct connection_struct *conn, const char *path, char *resolved_path); /* NT ACL operations. */ |