mirror of
https://github.com/sheumann/hush.git
synced 2025-01-14 12:30:40 +00:00
Add HUMAN_READABLE define for -m and -h support in du, df, and ls
Add support for -k in du, df, and ls(no define, it's for compatibliity with the GNU utils as bb does -k by default) Fix bug #1084
This commit is contained in:
parent
3b3f5c364a
commit
6d0921cc0b
3
Config.h
3
Config.h
@ -290,6 +290,9 @@
|
|||||||
// have a really good reason for cleaning things up manually.
|
// have a really good reason for cleaning things up manually.
|
||||||
//#define BB_FEATURE_CLEAN_UP
|
//#define BB_FEATURE_CLEAN_UP
|
||||||
//
|
//
|
||||||
|
// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
|
||||||
|
#define BB_FEATURE_HUMAN_READABLE
|
||||||
|
//
|
||||||
// End of Features List
|
// End of Features List
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
@ -190,9 +190,22 @@ const char deallocvt_usage[] =
|
|||||||
|
|
||||||
#if defined BB_DF
|
#if defined BB_DF
|
||||||
const char df_usage[] =
|
const char df_usage[] =
|
||||||
"df [filesystem ...]"
|
"df [-?"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k] [filesystem ...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nPrint the filesystem space used and space available."
|
"\n\nPrint the filesystem space used and space available."
|
||||||
|
"Options:\n"
|
||||||
|
"\t-?\tshow usage information\n"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-m\tprint sizes in megabytes\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)\n"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
@ -244,13 +257,25 @@ const char dpkg_deb_usage[] =
|
|||||||
|
|
||||||
#if defined BB_DU
|
#if defined BB_DU
|
||||||
const char du_usage[] =
|
const char du_usage[] =
|
||||||
"du [OPTION]... [FILE]..."
|
"du [-?ls"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k] [FILE]...\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nSummarizes disk space used for each FILE and/or directory.\n"
|
"\n\nSummarizes disk space used for each FILE and/or directory.\n"
|
||||||
"Disk space is printed in units of 1024 bytes.\n\n"
|
"Disk space is printed in units of 1024 bytes.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
|
"\t-?\tshow usage information\n"
|
||||||
"\t-l\tcount sizes many times if hard linked\n"
|
"\t-l\tcount sizes many times if hard linked\n"
|
||||||
"\t-s\tdisplay only a total for each argument"
|
"\t-s\tdisplay only a total for each argument"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-m\tprint sizes in megabytes\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)\n"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
@ -661,7 +686,10 @@ const char ls_usage[] =
|
|||||||
#ifdef BB_FEATURE_LS_SORTFILES
|
#ifdef BB_FEATURE_LS_SORTFILES
|
||||||
"X"
|
"X"
|
||||||
#endif
|
#endif
|
||||||
"] [filenames...]"
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"h"
|
||||||
|
#endif
|
||||||
|
"k] [filenames...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nList directory contents\n\n"
|
"\n\nList directory contents\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
@ -716,6 +744,14 @@ const char ls_usage[] =
|
|||||||
#ifdef BB_FEATURE_LS_SORTFILES
|
#ifdef BB_FEATURE_LS_SORTFILES
|
||||||
"\t-X\tsort the listing by extension\n"
|
"\t-X\tsort the listing by extension\n"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* BB_FEATURE_TRIVIAL_HELP */
|
#endif /* BB_FEATURE_TRIVIAL_HELP */
|
||||||
;
|
;
|
||||||
#endif /* BB_LS */
|
#endif /* BB_LS */
|
||||||
|
@ -259,4 +259,11 @@ extern int sysinfo (struct sysinfo* info);
|
|||||||
#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
|
#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
char *format(unsigned long val, unsigned long hr);
|
||||||
|
#define KILOBYTE 1024
|
||||||
|
#define MEGABYTE (KILOBYTE*1024)
|
||||||
|
#define GIGABYTE (MEGABYTE*1024)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _BB_INTERNAL_H_ */
|
#endif /* _BB_INTERNAL_H_ */
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
|
|
||||||
extern const char mtab_file[]; /* Defined in utility.c */
|
extern const char mtab_file[]; /* Defined in utility.c */
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static int df(char *device, const char *mountPoint)
|
static int df(char *device, const char *mountPoint)
|
||||||
{
|
{
|
||||||
@ -42,19 +45,32 @@ static int df(char *device, const char *mountPoint)
|
|||||||
|
|
||||||
if (s.f_blocks > 0) {
|
if (s.f_blocks > 0) {
|
||||||
blocks_used = s.f_blocks - s.f_bfree;
|
blocks_used = s.f_blocks - s.f_bfree;
|
||||||
blocks_percent_used = (long)
|
if(0 == blocks_used)
|
||||||
(blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5);
|
blocs_percent_used = 0;
|
||||||
|
else
|
||||||
|
blocks_percent_used = (long)
|
||||||
|
(blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5);
|
||||||
if (strcmp(device, "/dev/root") == 0) {
|
if (strcmp(device, "/dev/root") == 0) {
|
||||||
/* Adjusts device to be the real root device,
|
/* Adjusts device to be the real root device,
|
||||||
* or leaves device alone if it can't find it */
|
* or leaves device alone if it can't find it */
|
||||||
find_real_root_device_name( device);
|
find_real_root_device_name( device);
|
||||||
}
|
}
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
printf("%-20s %9s",
|
||||||
|
device,
|
||||||
|
format((s.f_blocks * s.f_bsize), disp_hr));
|
||||||
|
printf(" %9s", format((s.f_blocks - s.f_bfree) * s.f_bsize, disp_hr));
|
||||||
|
printf(" %9s %3ld%% %s\n",
|
||||||
|
format(s.f_bavail * s.f_bsize, disp_hr),
|
||||||
|
blocks_percent_used, mountPoint);
|
||||||
|
#else
|
||||||
printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
|
printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
|
||||||
device,
|
device,
|
||||||
(long) (s.f_blocks * (s.f_bsize / 1024.0)),
|
(long) (s.f_blocks * (s.f_bsize / 1024.0)),
|
||||||
(long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0)),
|
(long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0)),
|
||||||
(long) (s.f_bavail * (s.f_bsize / 1024.0)),
|
(long) (s.f_bavail * (s.f_bsize / 1024.0)),
|
||||||
blocks_percent_used, mountPoint);
|
blocks_percent_used, mountPoint);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,24 +80,46 @@ static int df(char *device, const char *mountPoint)
|
|||||||
extern int df_main(int argc, char **argv)
|
extern int df_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int status = EXIT_SUCCESS;
|
int status = EXIT_SUCCESS;
|
||||||
|
int opt = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((opt = getopt(argc, argv, "?"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k"
|
||||||
|
)) > 0)
|
||||||
|
{
|
||||||
|
switch (opt) {
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': disp_hr = 0; break;
|
||||||
|
case 'm': disp_hr = MEGABYTE; break;
|
||||||
|
case 'k': disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
|
#endif
|
||||||
|
case '?': goto print_df_usage; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
printf("%-20s %-14s %s %s %s %s\n", "Filesystem",
|
printf("%-20s %-14s %s %s %s %s\n", "Filesystem",
|
||||||
"1k-blocks", "Used", "Available", "Use%", "Mounted on");
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
(KILOBYTE == disp_hr) ? "1k-blocks" : " Size",
|
||||||
|
#else
|
||||||
|
"1k-blocks",
|
||||||
|
#endif
|
||||||
|
"Used", "Available", "Use%", "Mounted on");
|
||||||
|
|
||||||
if (argc > 1) {
|
|
||||||
|
if(optind < argc) {
|
||||||
struct mntent *mountEntry;
|
struct mntent *mountEntry;
|
||||||
|
for(i = optind; i < argc; i++)
|
||||||
if (**(argv + 1) == '-') {
|
{
|
||||||
usage(df_usage);
|
if ((mountEntry = find_mount_point(argv[i], mtab_file)) == 0) {
|
||||||
}
|
error_msg("%s: can't find mount point.\n", argv[i]);
|
||||||
while (argc > 1) {
|
|
||||||
if ((mountEntry = find_mount_point(argv[1], mtab_file)) == 0) {
|
|
||||||
error_msg("%s: can't find mount point.\n", argv[1]);
|
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
} else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
|
} else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FILE *mountTable;
|
FILE *mountTable;
|
||||||
@ -101,6 +139,10 @@ extern int df_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
|
print_df_usage:
|
||||||
|
usage(df_usage);
|
||||||
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -33,6 +33,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long du_disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef void (Display) (long, char *);
|
typedef void (Display) (long, char *);
|
||||||
|
|
||||||
static int du_depth = 0;
|
static int du_depth = 0;
|
||||||
@ -42,12 +46,17 @@ static Display *print;
|
|||||||
|
|
||||||
static void print_normal(long size, char *filename)
|
static void print_normal(long size, char *filename)
|
||||||
{
|
{
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
printf("%s\t%s\n", format((size * KILOBYTE), du_disp_hr), filename);
|
||||||
|
#else
|
||||||
printf("%ld\t%s\n", size, filename);
|
printf("%ld\t%s\n", size, filename);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_summary(long size, char *filename)
|
static void print_summary(long size, char *filename)
|
||||||
{
|
{
|
||||||
if (du_depth == 1) {
|
if (du_depth == 1) {
|
||||||
|
printf("summary\n");
|
||||||
print_normal(size, filename);
|
print_normal(size, filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +141,11 @@ int du_main(int argc, char **argv)
|
|||||||
print = print_normal;
|
print = print_normal;
|
||||||
|
|
||||||
/* parse argv[] */
|
/* parse argv[] */
|
||||||
while ((c = getopt(argc, argv, "sl")) != EOF) {
|
while ((c = getopt(argc, argv, "sl"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k")) != EOF) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 's':
|
case 's':
|
||||||
print = print_summary;
|
print = print_summary;
|
||||||
@ -140,6 +153,13 @@ int du_main(int argc, char **argv)
|
|||||||
case 'l':
|
case 'l':
|
||||||
count_hardlinks = 1;
|
count_hardlinks = 1;
|
||||||
break;
|
break;
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': du_disp_hr = 0; break;
|
||||||
|
case 'm': du_disp_hr = MEGABYTE; break;
|
||||||
|
case 'k': du_disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
usage(du_usage);
|
usage(du_usage);
|
||||||
}
|
}
|
||||||
@ -155,7 +175,7 @@ int du_main(int argc, char **argv)
|
|||||||
for (i=optind; i < argc; i++) {
|
for (i=optind; i < argc; i++) {
|
||||||
if ((sum = du(argv[i])) == 0)
|
if ((sum = du(argv[i])) == 0)
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
if (is_directory(argv[i], FALSE, NULL)==FALSE) {
|
if(is_directory(argv[i], FALSE, NULL)==FALSE) {
|
||||||
print_normal(sum, argv[i]);
|
print_normal(sum, argv[i]);
|
||||||
}
|
}
|
||||||
reset_ino_dev_hashtable();
|
reset_ino_dev_hashtable();
|
||||||
@ -165,7 +185,7 @@ int du_main(int argc, char **argv)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $Id: du.c,v 1.33 2001/01/18 02:57:08 kraai Exp $ */
|
/* $Id: du.c,v 1.34 2001/01/22 22:35:38 rjune Exp $ */
|
||||||
/*
|
/*
|
||||||
Local Variables:
|
Local Variables:
|
||||||
c-file-style: "linux"
|
c-file-style: "linux"
|
||||||
|
@ -176,6 +176,10 @@ static unsigned short tabstops = 8;
|
|||||||
|
|
||||||
static int status = EXIT_SUCCESS;
|
static int status = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long ls_disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static int my_stat(struct dnode *cur)
|
static int my_stat(struct dnode *cur)
|
||||||
{
|
{
|
||||||
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
||||||
@ -583,10 +587,14 @@ int list_single(struct dnode *dn)
|
|||||||
column += 8;
|
column += 8;
|
||||||
break;
|
break;
|
||||||
case LIST_BLOCKS:
|
case LIST_BLOCKS:
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
fprintf(stdout, "%5s ", format(dn->dstat.st_size, ls_disp_hr));
|
||||||
|
#else
|
||||||
#if _FILE_OFFSET_BITS == 64
|
#if _FILE_OFFSET_BITS == 64
|
||||||
printf("%4lld ", dn->dstat.st_blocks>>1);
|
printf("%4lld ", dn->dstat.st_blocks>>1);
|
||||||
#else
|
#else
|
||||||
printf("%4ld ", dn->dstat.st_blocks>>1);
|
printf("%4ld ", dn->dstat.st_blocks>>1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
column += 5;
|
column += 5;
|
||||||
break;
|
break;
|
||||||
@ -622,10 +630,14 @@ int list_single(struct dnode *dn)
|
|||||||
if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) {
|
if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) {
|
||||||
printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev));
|
printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev));
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
fprintf(stdout, "%9s ", format(dn->dstat.st_size, ls_disp_hr));
|
||||||
|
#else
|
||||||
#if _FILE_OFFSET_BITS == 64
|
#if _FILE_OFFSET_BITS == 64
|
||||||
printf("%9lld ", dn->dstat.st_size);
|
printf("%9lld ", dn->dstat.st_size);
|
||||||
#else
|
#else
|
||||||
printf("%9ld ", dn->dstat.st_size);
|
printf("%9ld ", dn->dstat.st_size);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
column += 10;
|
column += 10;
|
||||||
@ -724,7 +736,10 @@ extern int ls_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
||||||
"L"
|
"L"
|
||||||
#endif
|
#endif
|
||||||
)) > 0) {
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"h"
|
||||||
|
#endif
|
||||||
|
"k")) > 0) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case '1': style_fmt = STYLE_SINGLE; break;
|
case '1': style_fmt = STYLE_SINGLE; break;
|
||||||
case 'A': disp_opts |= DISP_HIDDEN; break;
|
case 'A': disp_opts |= DISP_HIDDEN; break;
|
||||||
@ -733,7 +748,13 @@ extern int ls_main(int argc, char **argv)
|
|||||||
case 'd': disp_opts |= DISP_NOLIST; break;
|
case 'd': disp_opts |= DISP_NOLIST; break;
|
||||||
case 'g': /* ignore -- for ftp servers */ break;
|
case 'g': /* ignore -- for ftp servers */ break;
|
||||||
case 'i': list_fmt |= LIST_INO; break;
|
case 'i': list_fmt |= LIST_INO; break;
|
||||||
case 'l': style_fmt = STYLE_LONG; list_fmt |= LIST_LONG; break;
|
case 'l':
|
||||||
|
style_fmt = STYLE_LONG;
|
||||||
|
list_fmt |= LIST_LONG;
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
ls_disp_hr = 1;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
case 'n': list_fmt |= LIST_ID_NUMERIC; break;
|
case 'n': list_fmt |= LIST_ID_NUMERIC; break;
|
||||||
case 's': list_fmt |= LIST_BLOCKS; break;
|
case 's': list_fmt |= LIST_BLOCKS; break;
|
||||||
case 'x': disp_opts = DISP_ROWS; break;
|
case 'x': disp_opts = DISP_ROWS; break;
|
||||||
@ -776,6 +797,12 @@ extern int ls_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_AUTOWIDTH
|
#ifdef BB_FEATURE_AUTOWIDTH
|
||||||
case 'T': tabstops= atoi(optarg); break;
|
case 'T': tabstops= atoi(optarg); break;
|
||||||
case 'w': terminal_width= atoi(optarg); break;
|
case 'w': terminal_width= atoi(optarg); break;
|
||||||
|
#endif
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': ls_disp_hr = 0; break;
|
||||||
|
case 'k': ls_disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
goto print_usage_message;
|
goto print_usage_message;
|
||||||
|
68
df.c
68
df.c
@ -28,6 +28,9 @@
|
|||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
|
|
||||||
extern const char mtab_file[]; /* Defined in utility.c */
|
extern const char mtab_file[]; /* Defined in utility.c */
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static int df(char *device, const char *mountPoint)
|
static int df(char *device, const char *mountPoint)
|
||||||
{
|
{
|
||||||
@ -42,19 +45,32 @@ static int df(char *device, const char *mountPoint)
|
|||||||
|
|
||||||
if (s.f_blocks > 0) {
|
if (s.f_blocks > 0) {
|
||||||
blocks_used = s.f_blocks - s.f_bfree;
|
blocks_used = s.f_blocks - s.f_bfree;
|
||||||
blocks_percent_used = (long)
|
if(0 == blocks_used)
|
||||||
(blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5);
|
blocs_percent_used = 0;
|
||||||
|
else
|
||||||
|
blocks_percent_used = (long)
|
||||||
|
(blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5);
|
||||||
if (strcmp(device, "/dev/root") == 0) {
|
if (strcmp(device, "/dev/root") == 0) {
|
||||||
/* Adjusts device to be the real root device,
|
/* Adjusts device to be the real root device,
|
||||||
* or leaves device alone if it can't find it */
|
* or leaves device alone if it can't find it */
|
||||||
find_real_root_device_name( device);
|
find_real_root_device_name( device);
|
||||||
}
|
}
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
printf("%-20s %9s",
|
||||||
|
device,
|
||||||
|
format((s.f_blocks * s.f_bsize), disp_hr));
|
||||||
|
printf(" %9s", format((s.f_blocks - s.f_bfree) * s.f_bsize, disp_hr));
|
||||||
|
printf(" %9s %3ld%% %s\n",
|
||||||
|
format(s.f_bavail * s.f_bsize, disp_hr),
|
||||||
|
blocks_percent_used, mountPoint);
|
||||||
|
#else
|
||||||
printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
|
printf("%-20s %9ld %9ld %9ld %3ld%% %s\n",
|
||||||
device,
|
device,
|
||||||
(long) (s.f_blocks * (s.f_bsize / 1024.0)),
|
(long) (s.f_blocks * (s.f_bsize / 1024.0)),
|
||||||
(long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0)),
|
(long) ((s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0)),
|
||||||
(long) (s.f_bavail * (s.f_bsize / 1024.0)),
|
(long) (s.f_bavail * (s.f_bsize / 1024.0)),
|
||||||
blocks_percent_used, mountPoint);
|
blocks_percent_used, mountPoint);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,24 +80,46 @@ static int df(char *device, const char *mountPoint)
|
|||||||
extern int df_main(int argc, char **argv)
|
extern int df_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int status = EXIT_SUCCESS;
|
int status = EXIT_SUCCESS;
|
||||||
|
int opt = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while ((opt = getopt(argc, argv, "?"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k"
|
||||||
|
)) > 0)
|
||||||
|
{
|
||||||
|
switch (opt) {
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': disp_hr = 0; break;
|
||||||
|
case 'm': disp_hr = MEGABYTE; break;
|
||||||
|
case 'k': disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
|
#endif
|
||||||
|
case '?': goto print_df_usage; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
printf("%-20s %-14s %s %s %s %s\n", "Filesystem",
|
printf("%-20s %-14s %s %s %s %s\n", "Filesystem",
|
||||||
"1k-blocks", "Used", "Available", "Use%", "Mounted on");
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
(KILOBYTE == disp_hr) ? "1k-blocks" : " Size",
|
||||||
|
#else
|
||||||
|
"1k-blocks",
|
||||||
|
#endif
|
||||||
|
"Used", "Available", "Use%", "Mounted on");
|
||||||
|
|
||||||
if (argc > 1) {
|
|
||||||
|
if(optind < argc) {
|
||||||
struct mntent *mountEntry;
|
struct mntent *mountEntry;
|
||||||
|
for(i = optind; i < argc; i++)
|
||||||
if (**(argv + 1) == '-') {
|
{
|
||||||
usage(df_usage);
|
if ((mountEntry = find_mount_point(argv[i], mtab_file)) == 0) {
|
||||||
}
|
error_msg("%s: can't find mount point.\n", argv[i]);
|
||||||
while (argc > 1) {
|
|
||||||
if ((mountEntry = find_mount_point(argv[1], mtab_file)) == 0) {
|
|
||||||
error_msg("%s: can't find mount point.\n", argv[1]);
|
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
} else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
|
} else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FILE *mountTable;
|
FILE *mountTable;
|
||||||
@ -101,6 +139,10 @@ extern int df_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
|
print_df_usage:
|
||||||
|
usage(df_usage);
|
||||||
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
26
du.c
26
du.c
@ -33,6 +33,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long du_disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef void (Display) (long, char *);
|
typedef void (Display) (long, char *);
|
||||||
|
|
||||||
static int du_depth = 0;
|
static int du_depth = 0;
|
||||||
@ -42,12 +46,17 @@ static Display *print;
|
|||||||
|
|
||||||
static void print_normal(long size, char *filename)
|
static void print_normal(long size, char *filename)
|
||||||
{
|
{
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
printf("%s\t%s\n", format((size * KILOBYTE), du_disp_hr), filename);
|
||||||
|
#else
|
||||||
printf("%ld\t%s\n", size, filename);
|
printf("%ld\t%s\n", size, filename);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_summary(long size, char *filename)
|
static void print_summary(long size, char *filename)
|
||||||
{
|
{
|
||||||
if (du_depth == 1) {
|
if (du_depth == 1) {
|
||||||
|
printf("summary\n");
|
||||||
print_normal(size, filename);
|
print_normal(size, filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +141,11 @@ int du_main(int argc, char **argv)
|
|||||||
print = print_normal;
|
print = print_normal;
|
||||||
|
|
||||||
/* parse argv[] */
|
/* parse argv[] */
|
||||||
while ((c = getopt(argc, argv, "sl")) != EOF) {
|
while ((c = getopt(argc, argv, "sl"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k")) != EOF) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 's':
|
case 's':
|
||||||
print = print_summary;
|
print = print_summary;
|
||||||
@ -140,6 +153,13 @@ int du_main(int argc, char **argv)
|
|||||||
case 'l':
|
case 'l':
|
||||||
count_hardlinks = 1;
|
count_hardlinks = 1;
|
||||||
break;
|
break;
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': du_disp_hr = 0; break;
|
||||||
|
case 'm': du_disp_hr = MEGABYTE; break;
|
||||||
|
case 'k': du_disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
usage(du_usage);
|
usage(du_usage);
|
||||||
}
|
}
|
||||||
@ -155,7 +175,7 @@ int du_main(int argc, char **argv)
|
|||||||
for (i=optind; i < argc; i++) {
|
for (i=optind; i < argc; i++) {
|
||||||
if ((sum = du(argv[i])) == 0)
|
if ((sum = du(argv[i])) == 0)
|
||||||
status = EXIT_FAILURE;
|
status = EXIT_FAILURE;
|
||||||
if (is_directory(argv[i], FALSE, NULL)==FALSE) {
|
if(is_directory(argv[i], FALSE, NULL)==FALSE) {
|
||||||
print_normal(sum, argv[i]);
|
print_normal(sum, argv[i]);
|
||||||
}
|
}
|
||||||
reset_ino_dev_hashtable();
|
reset_ino_dev_hashtable();
|
||||||
@ -165,7 +185,7 @@ int du_main(int argc, char **argv)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* $Id: du.c,v 1.33 2001/01/18 02:57:08 kraai Exp $ */
|
/* $Id: du.c,v 1.34 2001/01/22 22:35:38 rjune Exp $ */
|
||||||
/*
|
/*
|
||||||
Local Variables:
|
Local Variables:
|
||||||
c-file-style: "linux"
|
c-file-style: "linux"
|
||||||
|
@ -259,4 +259,11 @@ extern int sysinfo (struct sysinfo* info);
|
|||||||
#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
|
#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
char *format(unsigned long val, unsigned long hr);
|
||||||
|
#define KILOBYTE 1024
|
||||||
|
#define MEGABYTE (KILOBYTE*1024)
|
||||||
|
#define GIGABYTE (MEGABYTE*1024)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _BB_INTERNAL_H_ */
|
#endif /* _BB_INTERNAL_H_ */
|
||||||
|
31
ls.c
31
ls.c
@ -176,6 +176,10 @@ static unsigned short tabstops = 8;
|
|||||||
|
|
||||||
static int status = EXIT_SUCCESS;
|
static int status = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
unsigned long ls_disp_hr = KILOBYTE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static int my_stat(struct dnode *cur)
|
static int my_stat(struct dnode *cur)
|
||||||
{
|
{
|
||||||
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
||||||
@ -583,10 +587,14 @@ int list_single(struct dnode *dn)
|
|||||||
column += 8;
|
column += 8;
|
||||||
break;
|
break;
|
||||||
case LIST_BLOCKS:
|
case LIST_BLOCKS:
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
fprintf(stdout, "%5s ", format(dn->dstat.st_size, ls_disp_hr));
|
||||||
|
#else
|
||||||
#if _FILE_OFFSET_BITS == 64
|
#if _FILE_OFFSET_BITS == 64
|
||||||
printf("%4lld ", dn->dstat.st_blocks>>1);
|
printf("%4lld ", dn->dstat.st_blocks>>1);
|
||||||
#else
|
#else
|
||||||
printf("%4ld ", dn->dstat.st_blocks>>1);
|
printf("%4ld ", dn->dstat.st_blocks>>1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
column += 5;
|
column += 5;
|
||||||
break;
|
break;
|
||||||
@ -622,10 +630,14 @@ int list_single(struct dnode *dn)
|
|||||||
if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) {
|
if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) {
|
||||||
printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev));
|
printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev));
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
fprintf(stdout, "%9s ", format(dn->dstat.st_size, ls_disp_hr));
|
||||||
|
#else
|
||||||
#if _FILE_OFFSET_BITS == 64
|
#if _FILE_OFFSET_BITS == 64
|
||||||
printf("%9lld ", dn->dstat.st_size);
|
printf("%9lld ", dn->dstat.st_size);
|
||||||
#else
|
#else
|
||||||
printf("%9ld ", dn->dstat.st_size);
|
printf("%9ld ", dn->dstat.st_size);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
column += 10;
|
column += 10;
|
||||||
@ -724,7 +736,10 @@ extern int ls_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
#ifdef BB_FEATURE_LS_FOLLOWLINKS
|
||||||
"L"
|
"L"
|
||||||
#endif
|
#endif
|
||||||
)) > 0) {
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"h"
|
||||||
|
#endif
|
||||||
|
"k")) > 0) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case '1': style_fmt = STYLE_SINGLE; break;
|
case '1': style_fmt = STYLE_SINGLE; break;
|
||||||
case 'A': disp_opts |= DISP_HIDDEN; break;
|
case 'A': disp_opts |= DISP_HIDDEN; break;
|
||||||
@ -733,7 +748,13 @@ extern int ls_main(int argc, char **argv)
|
|||||||
case 'd': disp_opts |= DISP_NOLIST; break;
|
case 'd': disp_opts |= DISP_NOLIST; break;
|
||||||
case 'g': /* ignore -- for ftp servers */ break;
|
case 'g': /* ignore -- for ftp servers */ break;
|
||||||
case 'i': list_fmt |= LIST_INO; break;
|
case 'i': list_fmt |= LIST_INO; break;
|
||||||
case 'l': style_fmt = STYLE_LONG; list_fmt |= LIST_LONG; break;
|
case 'l':
|
||||||
|
style_fmt = STYLE_LONG;
|
||||||
|
list_fmt |= LIST_LONG;
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
ls_disp_hr = 1;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
case 'n': list_fmt |= LIST_ID_NUMERIC; break;
|
case 'n': list_fmt |= LIST_ID_NUMERIC; break;
|
||||||
case 's': list_fmt |= LIST_BLOCKS; break;
|
case 's': list_fmt |= LIST_BLOCKS; break;
|
||||||
case 'x': disp_opts = DISP_ROWS; break;
|
case 'x': disp_opts = DISP_ROWS; break;
|
||||||
@ -776,6 +797,12 @@ extern int ls_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_AUTOWIDTH
|
#ifdef BB_FEATURE_AUTOWIDTH
|
||||||
case 'T': tabstops= atoi(optarg); break;
|
case 'T': tabstops= atoi(optarg); break;
|
||||||
case 'w': terminal_width= atoi(optarg); break;
|
case 'w': terminal_width= atoi(optarg); break;
|
||||||
|
#endif
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
case 'h': ls_disp_hr = 0; break;
|
||||||
|
case 'k': ls_disp_hr = KILOBYTE; break;
|
||||||
|
#else
|
||||||
|
case 'k': break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
goto print_usage_message;
|
goto print_usage_message;
|
||||||
|
42
usage.c
42
usage.c
@ -190,9 +190,22 @@ const char deallocvt_usage[] =
|
|||||||
|
|
||||||
#if defined BB_DF
|
#if defined BB_DF
|
||||||
const char df_usage[] =
|
const char df_usage[] =
|
||||||
"df [filesystem ...]"
|
"df [-?"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k] [filesystem ...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nPrint the filesystem space used and space available."
|
"\n\nPrint the filesystem space used and space available."
|
||||||
|
"Options:\n"
|
||||||
|
"\t-?\tshow usage information\n"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-m\tprint sizes in megabytes\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)\n"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
@ -244,13 +257,25 @@ const char dpkg_deb_usage[] =
|
|||||||
|
|
||||||
#if defined BB_DU
|
#if defined BB_DU
|
||||||
const char du_usage[] =
|
const char du_usage[] =
|
||||||
"du [OPTION]... [FILE]..."
|
"du [-?ls"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"hm"
|
||||||
|
#endif
|
||||||
|
"k] [FILE]...\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nSummarizes disk space used for each FILE and/or directory.\n"
|
"\n\nSummarizes disk space used for each FILE and/or directory.\n"
|
||||||
"Disk space is printed in units of 1024 bytes.\n\n"
|
"Disk space is printed in units of 1024 bytes.\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
|
"\t-?\tshow usage information\n"
|
||||||
"\t-l\tcount sizes many times if hard linked\n"
|
"\t-l\tcount sizes many times if hard linked\n"
|
||||||
"\t-s\tdisplay only a total for each argument"
|
"\t-s\tdisplay only a total for each argument"
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-m\tprint sizes in megabytes\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)\n"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#endif
|
#endif
|
||||||
@ -661,7 +686,10 @@ const char ls_usage[] =
|
|||||||
#ifdef BB_FEATURE_LS_SORTFILES
|
#ifdef BB_FEATURE_LS_SORTFILES
|
||||||
"X"
|
"X"
|
||||||
#endif
|
#endif
|
||||||
"] [filenames...]"
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"h"
|
||||||
|
#endif
|
||||||
|
"k] [filenames...]\n"
|
||||||
#ifndef BB_FEATURE_TRIVIAL_HELP
|
#ifndef BB_FEATURE_TRIVIAL_HELP
|
||||||
"\n\nList directory contents\n\n"
|
"\n\nList directory contents\n\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
@ -716,6 +744,14 @@ const char ls_usage[] =
|
|||||||
#ifdef BB_FEATURE_LS_SORTFILES
|
#ifdef BB_FEATURE_LS_SORTFILES
|
||||||
"\t-X\tsort the listing by extension\n"
|
"\t-X\tsort the listing by extension\n"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
"\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n"
|
||||||
|
"\t-k\tprint sizes in kilobytes(default)\n"
|
||||||
|
#else
|
||||||
|
"\t-k\tprint sizes in kilobytes(compatability)"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* BB_FEATURE_TRIVIAL_HELP */
|
#endif /* BB_FEATURE_TRIVIAL_HELP */
|
||||||
;
|
;
|
||||||
#endif /* BB_LS */
|
#endif /* BB_LS */
|
||||||
|
21
utility.c
21
utility.c
@ -1770,6 +1770,27 @@ ssize_t safe_read(int fd, void *buf, size_t count)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_HUMAN_READABLE
|
||||||
|
char *format(unsigned long val, unsigned long hr)
|
||||||
|
{
|
||||||
|
static char str[10] = "\0";
|
||||||
|
|
||||||
|
if(val == 0)
|
||||||
|
return("0");
|
||||||
|
if(hr)
|
||||||
|
snprintf(str, 9, "%ld", val/hr);
|
||||||
|
else if(val >= GIGABYTE)
|
||||||
|
snprintf(str, 9, "%.1LfG", ((long double)(val)/GIGABYTE));
|
||||||
|
else if(val >= MEGABYTE)
|
||||||
|
snprintf(str, 9, "%.1LfM", ((long double)(val)/MEGABYTE));
|
||||||
|
else if(val >= KILOBYTE)
|
||||||
|
snprintf(str, 9, "%.1Lfk", ((long double)(val)/KILOBYTE));
|
||||||
|
else
|
||||||
|
snprintf(str, 9, "%ld", (val));
|
||||||
|
return(str);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* END CODE */
|
/* END CODE */
|
||||||
/*
|
/*
|
||||||
Local Variables:
|
Local Variables:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user