]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib: Remove sys_fsusage()
authorVolker Lendecke <vl@samba.org>
Fri, 23 Jan 2026 18:08:16 +0000 (19:08 +0100)
committerAnoop C S <anoopcs@samba.org>
Sun, 15 Feb 2026 10:42:34 +0000 (10:42 +0000)
"man statfs" on Linux says "Unless you need the f_type field, you
should use the standard statvfs(3) interface instead.". We don't need
f_type to get disk usage :-)

We lose some of the older compatibility layers. Should these ever be
needed again, we should add them to lib/util/statvfs.c an the single
interface to retrieve file system usage info.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Anoop C S <anoopcs@samba.org>
lib/util/fsusage.c [deleted file]
lib/util/samba_util.h
lib/util/wscript_build

diff --git a/lib/util/fsusage.c b/lib/util/fsusage.c
deleted file mode 100644 (file)
index c8dc0b3..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-   Unix SMB/CIFS implementation.
-   functions to calculate the free disk space
-   Copyright (C) Andrew Tridgell 1998-2000
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "replace.h"
-#include "lib/util/samba_util.h"
-#include "system/filesys.h"
-
-/**
- * @file
- * @brief Utility functions for getting the amount of free disk space
- */
-
-/* Return the number of TOSIZE-byte blocks used by
-   BLOCKS FROMSIZE-byte blocks, rounding away from zero.
-*/
-static uint64_t adjust_blocks(uint64_t blocks, uint64_t fromsize, uint64_t tosize)
-{
-       if (fromsize == tosize) { /* e.g., from 512 to 512 */
-               return blocks;
-       }
-
-       if (fromsize > tosize) { /* e.g., from 2048 to 512 */
-               return blocks * (fromsize / tosize);
-       }
-
-       /* e.g., from 256 to 512 */
-       /* Protect against broken filesystems... */
-
-       if (fromsize == 0) {
-               fromsize = tosize;
-       }
-
-       return (blocks + 1) / (tosize / fromsize);
-}
-
-/**
- * Retrieve amount of free disk space.
- * this does all of the system specific guff to get the free disk space.
- * It is derived from code in the GNU fileutils package, but has been
- * considerably mangled for use here
- *
- * results are returned in *dfree and *dsize, in 512 byte units
-*/
-_PUBLIC_ int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize)
-{
-#ifdef STAT_STATFS3_OSF1
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_fsize, (uint64_t)512)
-       struct statfs fsd;
-
-       if (statfs (path, &fsd, sizeof (struct statfs)) != 0)
-               return -1;
-#endif /* STAT_STATFS3_OSF1 */
-
-#ifdef STAT_STATFS2_FS_DATA    /* Ultrix */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)1024, (uint64_t)512)
-       struct fs_data fsd;
-
-       if (statfs (path, &fsd) != 1)
-               return -1;
-
-       (*dsize) = CONVERT_BLOCKS (fsd.fd_req.btot);
-       (*dfree) = CONVERT_BLOCKS (fsd.fd_req.bfreen);
-#endif /* STAT_STATFS2_FS_DATA */
-
-#ifdef STAT_STATFS2_BSIZE      /* 4.3BSD, SunOS 4, HP-UX, AIX */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-       struct statfs fsd;
-
-       if (statfs (path, &fsd) < 0)
-               return -1;
-
-#ifdef STATFS_TRUNCATES_BLOCK_COUNTS
-       /* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
-          struct statfs are truncated to 2GB.  These conditions detect that
-          truncation, presumably without botching the 4.1.1 case, in which
-          the values are not truncated.  The correct counts are stored in
-          undocumented spare fields.  */
-       if (fsd.f_blocks == 0x1fffff && fsd.f_spare[0] > 0) {
-               fsd.f_blocks = fsd.f_spare[0];
-               fsd.f_bfree = fsd.f_spare[1];
-               fsd.f_bavail = fsd.f_spare[2];
-       }
-#endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
-#endif /* STAT_STATFS2_BSIZE */
-
-
-#ifdef STAT_STATFS2_FSIZE      /* 4.4BSD */
-#define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_fsize, (uint64_t)512)
-
-       struct statfs fsd;
-
-       if (statfs (path, &fsd) < 0)
-               return -1;
-#endif /* STAT_STATFS2_FSIZE */
-
-#ifdef STAT_STATFS4            /* SVR3, Dynix, Irix, AIX */
-# if _AIX || defined(_CRAY)
-#  define CONVERT_BLOCKS(B) adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-#  ifdef _CRAY
-#   define f_bavail f_bfree
-#  endif
-# else
-#  define CONVERT_BLOCKS(B) ((uint64_t)B)
-#  ifndef _SEQUENT_            /* _SEQUENT_ is DYNIX/ptx */
-#   ifndef DOLPHIN             /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
-#    define f_bavail f_bfree
-#   endif
-#  endif
-# endif
-
-       struct statfs fsd;
-
-       if (statfs (path, &fsd, sizeof fsd, 0) < 0)
-               return -1;
-       /* Empirically, the block counts on most SVR3 and SVR3-derived
-          systems seem to always be in terms of 512-byte blocks,
-          no matter what value f_bsize has.  */
-
-#endif /* STAT_STATFS4 */
-
-#if defined(STAT_STATVFS)              /* SVR4 */
-#ifdef HAVE_FRSIZE
-# define CONVERT_BLOCKS(B) \
-       adjust_blocks ((uint64_t)(B), fsd.f_frsize ? (uint64_t)fsd.f_frsize : (uint64_t)fsd.f_bsize, (uint64_t)512)
-#else
-# define CONVERT_BLOCKS(B) \
-       adjust_blocks ((uint64_t)(B), (uint64_t)fsd.f_bsize, (uint64_t)512)
-#endif
-
-       struct statvfs fsd;
-       if (statvfs(path, &fsd) < 0) return -1;
-
-       /* f_frsize isn't guaranteed to be supported.  */
-
-#endif /* STAT_STATVFS */
-
-#ifndef CONVERT_BLOCKS
-       /* we don't have any dfree code! */
-       return -1;
-#else
-#if !defined(STAT_STATFS2_FS_DATA)
-       /* !Ultrix */
-       (*dsize) = CONVERT_BLOCKS (fsd.f_blocks);
-       (*dfree) = CONVERT_BLOCKS (fsd.f_bavail);
-#endif /* not STAT_STATFS2_FS_DATA */
-#endif
-
-       return 0;
-}
index 25e55be3836d8f225ca44473166ae84353ec4db7..2327ef5b9d2f7cc5aa5e49252f72c86b3caffaa3 100644 (file)
@@ -490,19 +490,6 @@ void *memalign_array(size_t el_size, size_t align, unsigned int count);
 
 void *calloc_array(size_t size, size_t nmemb);
 
-/* The following definitions come from lib/util/fsusage.c  */
-
-
-/**
- * Retrieve amount of free disk space.
- * this does all of the system specific guff to get the free disk space.
- * It is derived from code in the GNU fileutils package, but has been
- * considerably mangled for use here
- *
- * results are returned in *dfree and *dsize, in 512 byte units
-*/
-_PUBLIC_ int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize);
-
 /* The following definitions come from lib/util/ms_fnmatch.c  */
 
 
index cd62876f87bc1095cbec020565e7520bfe591dc0..3e96c6caf5f8a4ff5fe2d284596c48b0a7a1b2af 100644 (file)
@@ -188,7 +188,6 @@ else:
                          base64.c
                          dprintf.c
                          dns_cmp.c
-                         fsusage.c
                          statvfs.c
                          genrand_util.c
                          getpass.c