summaryrefslogtreecommitdiff
path: root/source3/smbd/vfs.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2000-10-03 02:12:14 +0000
committerJeremy Allison <jra@samba.org>2000-10-03 02:12:14 +0000
commit3ad2ee22bb4ecee24d069bb7efadff18c25044d1 (patch)
tree833839953637fd990b712717df13efffa5b6ae10 /source3/smbd/vfs.c
parent2679fa315da579fbdc7dd35d3ee1cb364b85a1d9 (diff)
downloadsamba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.tar.gz
samba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.tar.bz2
samba-3ad2ee22bb4ecee24d069bb7efadff18c25044d1.zip
utf-8 and EUC3 patch from Hiroshi Miura Samba User Group Japan staff.
mkdir high bits patch from Robert Dahlem" <Robert.Dahlem@gmx.net>. jeremy. (This used to be commit b40191d27180ab1e59935086073c4d312552f717)
Diffstat (limited to 'source3/smbd/vfs.c')
-rw-r--r--source3/smbd/vfs.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index 631d4bedbe..097f51d217 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -267,6 +267,30 @@ BOOL vfs_directory_exist(connection_struct *conn, char *dname, SMB_STRUCT_STAT *
}
/*******************************************************************
+ vfs mkdir wrapper that calls dos_to_unix.
+********************************************************************/
+
+int vfs_mkdir(connection_struct *conn, char *fname, mode_t mode)
+{
+ int ret;
+ pstring name;
+ SMB_STRUCT_STAT sbuf;
+
+ pstrcpy(name,dos_to_unix(fname,False)); /* paranoia copy */
+ if(!(ret=conn->vfs_ops.mkdir(name,mode))) {
+ /*
+ * Check if high bits should have been set,
+ * then (if bits are missing): add them.
+ * Consider bits automagically set by UNIX, i.e. SGID bit from parent dir.
+ */
+ if(mode & ~(S_IRWXU|S_IRWXG|S_IRWXO) &&
+ !vfs_stat(conn,name,&sbuf) && (mode & ~sbuf.st_mode))
+ vfs_chmod(conn,name,sbuf.st_mode | (mode & ~sbuf.st_mode));
+ }
+ return ret;
+}
+
+/*******************************************************************
vfs Unlink wrapper that calls dos_to_unix.
********************************************************************/