mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
Enclose usage of st_blksize and st_blocks struct stat members in
#ifdef HAVE_STAT_ST_BLKSIZE and #ifdef HAVE_STAT_ST_BLOCKS, respectively. Fixes bug 550 reported by Joachim Schmitz <schmitz@hp.com>. (This used to be commit 18adfdbe0c6ed79ba8ac07956b1e7abc226556c3)
This commit is contained in:
parent
bde2b4a8ec
commit
ec890d5c0f
@ -1139,8 +1139,12 @@ int smbc_setup_stat(SMBCCTX *context, struct stat *st, char *fname, size_t size,
|
||||
if (!IS_DOS_READONLY(mode)) st->st_mode |= S_IWUSR;
|
||||
|
||||
st->st_size = size;
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
st->st_blksize = 512;
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
st->st_blocks = (size+511)/512;
|
||||
#endif
|
||||
st->st_uid = getuid();
|
||||
st->st_gid = getgid();
|
||||
|
||||
|
@ -136,9 +136,11 @@ uint32 dos_mode(connection_struct *conn,char *path,SMB_STRUCT_STAT *sbuf)
|
||||
if (S_ISDIR(sbuf->st_mode))
|
||||
result = aDIR | (result & aRONLY);
|
||||
|
||||
#if defined (HAVE_STAT_ST_BLOCKS) && defined (HAVE_STAT_ST_BLKSIZE)
|
||||
if (sbuf->st_size > sbuf->st_blocks * (SMB_OFF_T)sbuf->st_blksize) {
|
||||
result |= FILE_ATTRIBUTE_SPARSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef S_ISLNK
|
||||
#if LINKS_READ_ONLY
|
||||
|
@ -1480,8 +1480,12 @@ say no to acls
|
||||
st64->st_atime = st->st_atime;
|
||||
st64->st_mtime = st->st_mtime;
|
||||
st64->st_ctime = st->st_ctime;
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
st64->st_blksize = st->st_blksize;
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
st64->st_blocks = st->st_blocks;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1545,8 +1549,12 @@ struct kernel_stat {
|
||||
st->st_gid = kbuf->st_gid;
|
||||
st->st_rdev = kbuf->st_rdev;
|
||||
st->st_size = kbuf->st_size;
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
st->st_blksize = kbuf->st_blksize;
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
st->st_blocks = kbuf->st_blocks;
|
||||
#endif
|
||||
st->st_atime = kbuf->st_atime_;
|
||||
st->st_mtime = kbuf->st_mtime_;
|
||||
st->st_ctime = kbuf->st_ctime_;
|
||||
|
@ -522,8 +522,12 @@ static NTSTATUS cmd_stat(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc, c
|
||||
else if (S_ISLNK(st.st_mode)) printf(" Symbolic Link\n");
|
||||
else if (S_ISSOCK(st.st_mode)) printf(" Socket\n");
|
||||
printf(" Size: %10u", (unsigned int)st.st_size);
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
printf(" Blocks: %9u", (unsigned int)st.st_blocks);
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
printf(" IO Block: %u\n", (unsigned int)st.st_blksize);
|
||||
#endif
|
||||
printf(" Device: 0x%10x", (unsigned int)st.st_dev);
|
||||
printf(" Inode: %10u", (unsigned int)st.st_ino);
|
||||
printf(" Links: %10u\n", (unsigned int)st.st_nlink);
|
||||
@ -586,8 +590,12 @@ static NTSTATUS cmd_fstat(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc,
|
||||
else if (S_ISLNK(st.st_mode)) printf(" Symbolic Link\n");
|
||||
else if (S_ISSOCK(st.st_mode)) printf(" Socket\n");
|
||||
printf(" Size: %10u", (unsigned int)st.st_size);
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
printf(" Blocks: %9u", (unsigned int)st.st_blocks);
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
printf(" IO Block: %u\n", (unsigned int)st.st_blksize);
|
||||
#endif
|
||||
printf(" Device: 0x%10x", (unsigned int)st.st_dev);
|
||||
printf(" Inode: %10u", (unsigned int)st.st_ino);
|
||||
printf(" Links: %10u\n", (unsigned int)st.st_nlink);
|
||||
@ -638,8 +646,12 @@ static NTSTATUS cmd_lstat(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc,
|
||||
else if (S_ISLNK(st.st_mode)) printf(" Symbolic Link\n");
|
||||
else if (S_ISSOCK(st.st_mode)) printf(" Socket\n");
|
||||
printf(" Size: %10u", (unsigned int)st.st_size);
|
||||
#ifdef HAVE_STAT_ST_BLOCKS
|
||||
printf(" Blocks: %9u", (unsigned int)st.st_blocks);
|
||||
#endif
|
||||
#ifdef HAVE_STAT_ST_BLKSIZE
|
||||
printf(" IO Block: %u\n", (unsigned int)st.st_blksize);
|
||||
#endif
|
||||
printf(" Device: 0x%10x", (unsigned int)st.st_dev);
|
||||
printf(" Inode: %10u", (unsigned int)st.st_ino);
|
||||
printf(" Links: %10u\n", (unsigned int)st.st_nlink);
|
||||
|
Loading…
x
Reference in New Issue
Block a user