diff options
Diffstat (limited to 'source3/smbwrapper/smbw_stat.c')
-rw-r--r-- | source3/smbwrapper/smbw_stat.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source3/smbwrapper/smbw_stat.c b/source3/smbwrapper/smbw_stat.c index ab351d56b1..a6d01f66d6 100644 --- a/source3/smbwrapper/smbw_stat.c +++ b/source3/smbwrapper/smbw_stat.c @@ -33,6 +33,8 @@ setup basic info in a stat structure void smbw_setup_stat(struct stat *st, char *fname, size_t size, int mode) { ZERO_STRUCTP(st); + + st->st_mode = 0; if (IS_DOS_DIR(mode)) { st->st_mode = SMBW_DIR_MODE; @@ -40,6 +42,11 @@ void smbw_setup_stat(struct stat *st, char *fname, size_t size, int mode) st->st_mode = SMBW_FILE_MODE; } + if (IS_DOS_ARCHIVE(mode)) st->st_mode |= S_IXUSR; + if (IS_DOS_SYSTEM(mode)) st->st_mode |= S_IXGRP; + if (IS_DOS_HIDDEN(mode)) st->st_mode |= S_IXOTH; + if (!IS_DOS_READONLY(mode)) st->st_mode |= S_IWUSR; + st->st_size = size; st->st_blksize = 512; st->st_blocks = (size+511)/512; |