lsmod: unicode-aware column formatting

Signed-off-by: Tomas Heinrich <heinrich.tomas@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Tomas Heinrich 2009-10-19 23:58:31 +02:00 committed by Denys Vlasenko
parent 0f91b3d0dc
commit d31a8793eb

View File

@ -9,6 +9,7 @@
*/ */
#include "libbb.h" #include "libbb.h"
#include "unicode.h"
#if ENABLE_FEATURE_CHECK_TAINTED_MODULE #if ENABLE_FEATURE_CHECK_TAINTED_MODULE
enum { enum {
@ -46,6 +47,11 @@ int lsmod_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
#if ENABLE_FEATURE_LSMOD_PRETTY_2_6_OUTPUT #if ENABLE_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
char *token[4]; char *token[4];
parser_t *parser = config_open("/proc/modules"); parser_t *parser = config_open("/proc/modules");
#if ENABLE_FEATURE_ASSUME_UNICODE
size_t name_len;
#endif
check_unicode_in_env();
printf("%-24sSize Used by", "Module"); printf("%-24sSize Used by", "Module");
check_tainted(); check_tainted();
@ -58,7 +64,13 @@ int lsmod_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
token[3][strlen(token[3])-1] = '\0'; token[3][strlen(token[3])-1] = '\0';
} else } else
token[3] = (char *) ""; token[3] = (char *) "";
#if ENABLE_FEATURE_ASSUME_UNICODE
name_len = bb_mbstrlen(token[0]);
name_len = (name_len > 19) ? 0 : 19 - name_len;
printf("%s%*s %8s %2s %s\n", token[0], name_len, "", token[1], token[2], token[3]);
#else
printf("%-19s %8s %2s %s\n", token[0], token[1], token[2], token[3]); printf("%-19s %8s %2s %s\n", token[0], token[1], token[2], token[3]);
#endif
} }
} else { } else {
while (config_read(parser, token, 4, 4, "# \t", PARSE_NORMAL & ~PARSE_GREEDY)) { while (config_read(parser, token, 4, 4, "# \t", PARSE_NORMAL & ~PARSE_GREEDY)) {
@ -66,7 +78,13 @@ int lsmod_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
// or comma-separated list ended by comma // or comma-separated list ended by comma
// so trimming the trailing char is just what we need! // so trimming the trailing char is just what we need!
token[3][strlen(token[3])-1] = '\0'; token[3][strlen(token[3])-1] = '\0';
#if ENABLE_FEATURE_ASSUME_UNICODE
name_len = bb_mbstrlen(token[0]);
name_len = (name_len > 19) ? 0 : 19 - name_len;
printf("%s%*s %8s %2s %s\n", token[0], name_len, "", token[1], token[2], token[3]);
#else
printf("%-19s %8s %2s %s\n", token[0], token[1], token[2], token[3]); printf("%-19s %8s %2s %s\n", token[0], token[1], token[2], token[3]);
#endif
} }
} }
if (ENABLE_FEATURE_CLEAN_UP) if (ENABLE_FEATURE_CLEAN_UP)