summaryrefslogtreecommitdiffstats
path: root/source/include
diff options
context:
space:
mode:
Diffstat (limited to 'source/include')
-rw-r--r--source/include/config.h.in3
-rw-r--r--source/include/profile.h2
-rw-r--r--source/include/proto.h2
-rw-r--r--source/include/trans2.h2
-rw-r--r--source/include/vfs.h1
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. */