ls: make it so that group never glues itself to file size

+ smaller enhancements: inode is long long; -h is a bit narrower; etc

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2010-01-18 01:55:00 +01:00
parent b972f94957
commit 9c3b84a304
4 changed files with 52 additions and 31 deletions

View File

@@ -704,8 +704,10 @@ void smart_ulltoa4(unsigned long long ul, char buf[5], const char *scale) FAST_F
void smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC;
/* If block_size == 0, display size without fractional part,
* else display (size * block_size) with one decimal digit.
* If display_unit == 0, add suffix (K,M,G...),
* If display_unit == 0, show value no bigger than 1024 with suffix (K,M,G...),
* else divide by display_unit and do not use suffix. */
#define HUMAN_READABLE_MAX_WIDTH 7 /* "1024.0G" */
#define HUMAN_READABLE_MAX_WIDTH_STR "7"
//TODO: provide pointer to buf (avoid statics)?
const char *make_human_readable_str(unsigned long long size,
unsigned long block_size, unsigned long display_unit) FAST_FUNC;

View File

@@ -65,8 +65,30 @@ int iswspace(wint_t wc) FAST_FUNC;
int iswalnum(wint_t wc) FAST_FUNC;
int iswpunct(wint_t wc) FAST_FUNC;
# endif /* !LOCALE_SUPPORT */
# if 0 /* TODO: better support for printfing Unicode fields: */
/* equivalent to printf("%-20.20s", str) */
char unicode_buffer[20 * MB_CUR_MAX];
printf("%s", unicode_exact(20, str, unicode_buffer);
/* no need to free() anything */
/* equivalent to printf("%-20s", str) */
char *malloced = unicode_minimum(20, str);
printf("%s", malloced);
free(malloced); /* ugh */
/* equivalent to printf("%-20s", str), better one */
printf("%s%*s", str, unicode_pad_to_width(str, 20), "");
/* equivalent to printf("%20s", str) */
printf("%*s%s", unicode_pad_to_width(str, 20), "", str);
# endif
#endif /* FEATURE_ASSUME_UNICODE */
#endif