From 3ad2ee22bb4ecee24d069bb7efadff18c25044d1 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 Oct 2000 02:12:14 +0000 Subject: utf-8 and EUC3 patch from Hiroshi Miura Samba User Group Japan staff. mkdir high bits patch from Robert Dahlem" . jeremy. (This used to be commit b40191d27180ab1e59935086073c4d312552f717) --- source3/smbd/vfs.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'source3/smbd/vfs.c') 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 @@ -266,6 +266,30 @@ BOOL vfs_directory_exist(connection_struct *conn, char *dname, SMB_STRUCT_STAT * return ret; } +/******************************************************************* + 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. ********************************************************************/ -- cgit