From 0e52541917a80a4c5aee9d32fcc81cf9967f2aed Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 11 Jul 2008 13:57:08 +0000 Subject: [PATCH] taskset: fix some careless code in both fancy and non-fancy cases. -5 bytes for fancy, +5 for non-fancy --- libbb/mode_string.c | 4 ++-- miscutils/last.c | 2 ++ miscutils/taskset.c | 48 +++++++++++++++++++++++++++++++++------------ 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/libbb/mode_string.c b/libbb/mode_string.c index b9975f4cc..7d4e514b1 100644 --- a/libbb/mode_string.c +++ b/libbb/mode_string.c @@ -48,7 +48,7 @@ static const mode_t mode_flags[] = { /* The previous version used "0pcCd?bB-?l?s???". However, the '0', 'C', * and 'B' types don't appear to be available on linux. So I removed them. */ static const char type_chars[16] ALIGN1 = "?pc?d?b?-?l?s???"; -/* 0123456789abcdef */ +/***************************************** 0123456789abcdef */ static const char mode_chars[7] ALIGN1 = "rwxSTst"; const char* FAST_FUNC bb_mode_string(mode_t mode) @@ -88,7 +88,7 @@ const char* FAST_FUNC bb_mode_string(mode_t mode) /* The previous version used "0pcCd?bB-?l?s???". However, the '0', 'C', * and 'B' types don't appear to be available on linux. So I removed them. */ static const char type_chars[16] = "?pc?d?b?-?l?s???"; -/* 0123456789abcdef */ +/********************************** 0123456789abcdef */ static const char mode_chars[7] = "rwxSTst"; const char* FAST_FUNC bb_mode_string(mode_t mode) diff --git a/miscutils/last.c b/miscutils/last.c index 8c8192bee..f8c301395 100644 --- a/miscutils/last.c +++ b/miscutils/last.c @@ -117,6 +117,8 @@ int last_main(int argc, char **argv UNUSED_PARAM) strcpy(ut.ut_line, "system boot"); } } + /* manpages say ut_tv.tv_sec *is* time_t, + * but some systems have it wrong */ t_tmp = (time_t)ut.ut_tv.tv_sec; printf("%-10s %-14s %-18s %-12.12s\n", ut.ut_user, ut.ut_line, ut.ut_host, ctime(&t_tmp) + 4); diff --git a/miscutils/taskset.c b/miscutils/taskset.c index 3175af10d..b43d42e90 100644 --- a/miscutils/taskset.c +++ b/miscutils/taskset.c @@ -11,31 +11,53 @@ #if ENABLE_FEATURE_TASKSET_FANCY #define TASKSET_PRINTF_MASK "%s" -#define from_cpuset(x) __from_cpuset(&x) /* craft a string from the mask */ -static char *__from_cpuset(cpu_set_t *mask) +static char *from_cpuset(cpu_set_t *mask) { int i; - char *ret = 0, *str = xzalloc(9); + char *ret = NULL; + char *str = xzalloc((CPU_SETSIZE / 4) + 1); /* we will leak it */ for (i = CPU_SETSIZE - 4; i >= 0; i -= 4) { - char val = 0; + int val = 0; int off; for (off = 0; off <= 3; ++off) - if (CPU_ISSET(i+off, mask)) - val |= 1<", * or it was "-p " and we came here