di - disk information utility (version 4.54.0.1)
Website: https://diskinfo-di.sourceforge.io/
SourceForge: https://sourceforge.net/projects/diskinfo-di/
CONTENTS
Description
Installation
Tcl
Perl
Bugs and Known Issues
Requirements
Porting Information
Acknowledgements
Copyright
DESCRIPTION
'di' is a disk information utility, displaying everything
(and more) that your 'df' command does. It features the
ability to display your disk usage in whatever format you
prefer. It is designed to be highly portable. Great for
heterogenous networks.
INSTALLATION
To build:
make -e dioptions.dat
# Edit dioptions.dat and change it
# to set your preferences.
# Add your CC, CFLAGS and LDFLAGS settings.
# This file will not be removed and can be reused
# for the next release.
make -e
make -e install
Example to change compiler and prefix:
CC=gcc prefix=/opt/bin make -e
If you don't have a bourne shell compatible shell,
Try building with perl:
make -e all-perl
The CC, CFLAGS, CPPFLAGS, prefix, LDFLAGS, and LIBS environment
variables may be set and exported prior to running make. This
will override any settings in 'dioptions.dat'.
The LOCALEDIR environment variable defaults to ${prefix}/share/locale.
The installation uses the INSTALL_DIR (default ${prefix}),
INSTALL_BIN_DIR ($INSTALL_DIR/bin), and INST_LOCALEDIR
($INSTALL_DIR/share/locale) environment variables for installation.
The internationalization files are automatically built and installed if
your system supports internationalization.
Windows installation:
Alternative 1 - uses pre-built config.win or config.mingw
Cygwin gcc: make -e windows-gcc
(uses cygwin API)
MinGW: mingw32-make -e MAKE=mingw32-make CC=gcc windows-mingw
(uses windows API)
Msys2: make WINAPI=T NO_PIE=yes
Alternative 2 - builds a new config.h file (Cygwin).
make -e NO_PIE=yes CC=gcc
make -e NO_PIE=yes CC=gcc WINAPI=T # windows API
Alternative 3 - builds a new config.h file (MSys)
# make sure your PATH is set properly
make -e _MKCONFIG_SHELL=bash WINAPI=T NO_PIE=yes CC=gcc
You may need to change _lib_GetDiskFreeSpaceEX to 0
in the config.h file for older windows systems.
HP-UX:
Some versions of gcc on HP-UX break the include files.
If you see: header: rpc/rpc.h ... no
try: env CC=gcc CFLAGS="-D_LABEL_T" make -e
On some HP-UX systems, quotactl isn't declared.
If you want quota support, make sure config.h has:
#define _lib_quotactl 1
#define _args_quotactl 4
#define _c_arg_1__quotactl int
#define _c_arg_2__quotactl char *
#define _c_arg_3__quotactl int
#define _c_arg_4__quotactl caddr_t
#define _quotactl_pos_1 0
#define _quotactl_pos_2 1
64-bit:
env CFLAGS="-z +Z +DD64" LDFLAGS="+DD64" make -e
64-bit gcc:
env CC=gcc CFLAGS="-fPIC -mlp64 -D_LABEL_T" \
LDFLAGS="-mlp64 -L/usr/lib/hpux64" make -e
32-bit:
env CFLAGS="-z +Z +DD32" LDFLAGS="+DD32" make -e
32-bit gcc:
env CC=gcc CFLAGS="-fPIC -milp32 -D_LABEL_T" \
LDFLAGS="-milp32 -L/usr/lib/hpux32" make -e
Bundled cc:
cd C;make hpux-cc
Tru64:
export BIN_SH=svr4 beforehand.
DragonFlyBSD:
If quotas are not turned on in the kernel (/boot/loader.conf),
the vquotactl interface will not be configured into di. The
default build available from DragonFly dports does not have
the vquotactl interface turned on.
Installation Permissions:
Some old systems (Sys V variants) only allow root to read the
mount table. In SysV.4 and Solaris, the mount command would
reset the permissions to be root readable only (fixed in Solaris 7).
If this is needed on your system, do:
make installperms
TCL
The Tcl extension provides access to the di utility via
the [diskspace] command.
To build:
cd C; make -e tcl-sh
Windows Cygwin:
cd C; make CC=gcc NO_PIE=yes tcl-sh
Windows Msys:
cd C; make WINAPI=T NO_PIE=yes tcl-sh
See C/di-example.tcl for a usage example.
PERL
The Perl extension provides access to the di utility via
the [Filesys::di::diskspace] command.
To build:
# perl-perl can be substituted for perl-sh to use the
# perl configuration script instead of the shell
# configuration scripts.
cd C; make -e perl-sh; cd Perl; make PREFIX=your-prefix install
Windows Cygwin:
# I had to install libcrypt-devel for 'crypt.h'.
# No idea why perl would require that.
# perl-perl is faster than perl-sh.
cd C; make CC=gcc NO_PIE=yes perl-perl
Windows Msys:
# untested; I don't have mingw perl.
cd C; make -e WINAPI=T NO_PIE=yes CC=gcc perl-sh
See C/Perl/ex/perl-example.pl for a usage example.
BUGS AND KNOWN ISSUES
What's Not Tested:
- pooled filesystems on Tru64.
- I have access to a Tru64 system w/quotas, but there's
only one filesystem per pool.
- quotas:
- MacOSX
- No access to users with quotas.
- MS VC++ has not been tested in a *very* long while.
- A/UX, Cray, UNICOS, Next, Pyramid, SCO Unix, Sequent
have not been tested in a *very* long while.
Known Issues
- quotas:
- Solaris ufs requires the quotas file to be readable, or make
the di program setuid. Neither recommended.
- Linux 2.4 - not working
- HP-UX
- quotactl() isn't declared. See HP-UX section above.
- NetBSD 6
- group quotas can't be fetched by ordinary users (EPERM).
If the account is limited by a group quota, it won't be reported.
- AIX 7
- Unlike AIX 5, AIX 7 gives a permission
denied error when a user tries to get their quota.
Could make di suid, but that's not a good idea.
- pooled filesystems:
- hammer: the usage reported for pseudo-filesystems is the usage
for the main pool. Therefore the total used and size will be wrong.
- btrfs: there's no way to identify the pools.
- cygwin with clang does not work.
- the pre-configured builds have not been tested in a while.
Send bug reports along with the output from 'di -A -a -X 5',
output from your standard df command (as verbose as possible),
mkconfig.log, mkconfig_env.log, di.env, and config.h to:
brad.lanam.di_at_gmail.com
If the 'config.h' doesn't get set up correctly, please let me know.
E-mail me the incorrect (and corrected if possible) config.h file,
and any other information as appropriate.
REQUIREMENTS
bourne/ksh/bash shell
C compiler
awk (mawk/nawk/gawk)
make
cat chmod ln mkdir mv rm sed test
mkconfig.sh:
a bourne compatible shell that supports shell functions,
standard output from 'set'.
cat egrep expr grep rm sed sort test
mkconfig.pl:
cat perl rm
mksetopt.sh:
mv rm sed test
NLS:
msgfmt sed
runtests.sh (not a requirement for building or installing):
ar cat cp dc diff env expr egrep mv rm sed sort test tr
PORTING
di 4.47 has been tested on the following platforms:
Linux
RedHat 7.3 (gcc)
CentOS 3.9 (gcc)
Fedora 7 (gcc)
Fedora 27 (gcc)
MX Linux 17.1 (gcc, clang)
BSD
DragonflyBSD 4.4 (gcc)
FreeBSD 7.0 (cc)
FreeBSD 11.0 (clang)
NetBSD 1.62 (cc)
NetBSD 2.0 (cc)
NetBSD 7.0.1 (gcc)
OpenBSD 4.4 (gcc)
Windows
Msys2 (gcc)
Cygwin (gcc)
Other
AIX 7.1 (gcc)
Mac OS X 10.12.6 (clang)
QNX 6.5 (cc)
SCO SV 6.0.0 (cc)
Solaris 11/x86 (cc12.3)
Solaris 10/sparc (cc12.3)
Solaris 9/x86 (gcc3)
Tru64 5.1B (cc)
UnixWare 7.1.4 (cc)
di has been ported to the following systems in the past:
A/UX, AIX, BeOS, BSD, BSDI, Convex, Cray UNICOS, Cray UNICOS/mk,
DragonflyBSD, FreeBSD, Haiku, HP/UX, Linux, MacOSX, MirOS, NetBSD,
Next, OpenBSD, OS/2, OSF/1, Pyramid, SCO OpenServer, SCO Unix,
Sequent Dynix and PT/x, SGI Irix, Solaris, SunOS, Syllable,
System V.3, System V.4, Tru64, ULTRIX, UnixWare, VMS, Windows, Xenix
ACKNOWLEDGEMENTS
And for their comments/source/manual pages and/or bug fixes, thanks!
J.J.Bailey
Karl Vogel [pyramid]
Bryan Costales
Mark Neale
Pat Myrto [sunOS filesystem type stuff]
Henri Karrenbeld [sgi]
Peter Bray
George M. Sipe [manual page]
Jeffrey Mogul [ultrix, osf/1, manual page, new format options]
Th. Bullinger [help usage]
Seth Theriault [next, tru64]
Stephen J. Walick [SCO]
Gerald Rinske [sgi]
Mike Grupenhoff [linux]
R.K.Lloyd [hpux]
William Gibbs [xenix]
Randy Thompson [sequent]
Erik O'Shaughnessy [aix]
Bill Davidsen [linux, SCO, etc., new format options]
Fred Smith [coherent 4.2.05]
Andrey Blochintsev [bsdi]
Brian Ginsbach [netbsd, irix, unicos]
et. al.
COPYRIGHT
Copyright 1994-2024 Brad Lanam, Pleasant Hill, CA, USA
brad.lanam.di_at_gmail.com
https://diskinfo-di.sourceforge.io