1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-11 09:18:07 +03:00

util: replace decimal_str_max() by a typesafe macro DECIMAL_STR_WIDTH()

DECIMAL_STR_WIDTH() now works on any numeric type, and is easier to
distingish from DECIMAL_STR_MAX().

This also replaces another manual implementaiton of ulog10 by this macro.
This commit is contained in:
Lennart Poettering 2013-04-16 05:04:53 +02:00
parent d8d3d8a781
commit 82da66fb75
3 changed files with 16 additions and 25 deletions

View File

@ -40,17 +40,6 @@ static int compare(const void *a, const void *b) {
return 0;
}
static unsigned ilog10(unsigned long ul) {
int n = 0;
while (ul > 0) {
n++;
ul /= 10;
}
return n;
}
static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads, OutputFlags flags) {
unsigned i, m, pid_width;
pid_t biggest = 0;
@ -71,7 +60,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
pids[m++] = pids[i];
}
n_pids = m;
pid_width = ilog10(biggest);
pid_width = DECIMAL_STR_WIDTH(biggest);
/* And sort */
qsort(pids, n_pids, sizeof(pid_t), compare);

View File

@ -649,19 +649,21 @@ static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0;
}
static inline unsigned decimal_str_max(unsigned x) {
unsigned ans = 1;
while (x /= 10)
ans ++;
return ans;
}
#define DECIMAL_STR_WIDTH(x) \
({ \
typeof(x) _x_ = (x); \
unsigned ans = 1; \
while (_x_ /= 10) \
ans++; \
ans; \
})
int unlink_noerrno(const char *path);
#define alloca0(n) \
({ \
char *__new; \
size_t __len = n; \
__new = alloca(__len); \
(void *) memset(__new, 0, __len); \
#define alloca0(n) \
({ \
char *_new_; \
size_t _len_ = n; \
_new_ = alloca(_len_); \
(void *) memset(_new_, 0, _len_); \
})

View File

@ -1178,7 +1178,7 @@ static void list_jobs_print(struct job_info* jobs, size_t n) {
for (i = 0, j = jobs; i < n; i++, j++) {
assert(j->name && j->type && j->state);
l0 = MAX(l0, decimal_str_max(j->id));
l0 = MAX(l0, DECIMAL_STR_WIDTH(j->id));
l1 = MAX(l1, strlen(j->name));
l2 = MAX(l2, strlen(j->type));
l3 = MAX(l3, strlen(j->state));