rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

commit 243f715b81a6b1ed18af06ae0f3dc3eac5a38c90
parent bda69cbe49f86f808de0767ac0644a12718a98bf
Author: vaplv <vaplv@free.fr>
Date:   Mon,  8 Dec 2014 12:11:26 +0100

Rename the TIME_DUMP_AUTO in TIME_ALL

Fix the time_dump function

Diffstat:
Msrc/clock_time.c | 50++++++++++++++++++++++++--------------------------
Msrc/clock_time.h | 2+-
Msrc/test_time.c | 14++++++++++----
3 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/src/clock_time.c b/src/clock_time.c @@ -126,80 +126,78 @@ time_dump { size_t available_dump_space = max_dump_len ? max_dump_len - 1 : 0; int64_t time_nsec = 0; + char* dst = dump; ASSERT(time && (!max_dump_len || dump)); - if(real_dump_len) - *real_dump_len = 0; + if(real_dump_len) *real_dump_len = 0; + if(dump) dump[0] = '\0'; + if(!flag) return; #define DUMP(Time, Suffix) \ { \ const int len = snprintf \ - (dump, available_dump_space, \ + (dst, available_dump_space, \ "%li %s", (long)Time, Time > 1 ? Suffix "s ": Suffix " "); \ ASSERT(len >= 0); \ if(real_dump_len) { \ real_dump_len += len; \ } \ if((size_t)len < available_dump_space) { \ - dump += len; \ + dst += len; \ available_dump_space -= (size_t)len; \ - } else if(dump) { \ - dump[available_dump_space] = '\0'; \ + } else if(dst) { \ + dst[available_dump_space] = '\0'; \ available_dump_space = 0; \ - dump = NULL; \ + dst = NULL; \ } \ } (void) 0 time_nsec = TIME_TO_NSEC(time); if(flag & TIME_DAY) { const int64_t nb_days = time_nsec / NSEC_PER_DAY; - if(flag != TIME_DUMP_AUTO || nb_days) - DUMP(nb_days, "day"); + if(nb_days) DUMP(nb_days, "day"); time_nsec -= nb_days * NSEC_PER_DAY; } if(flag & TIME_HOUR) { const int64_t nb_hours = time_nsec / NSEC_PER_HOUR; - if(flag != TIME_DUMP_AUTO || nb_hours) - DUMP(nb_hours, "hour"); + if(nb_hours) DUMP(nb_hours, "hour"); time_nsec -= nb_hours * NSEC_PER_HOUR; } if(flag & TIME_MIN) { const int64_t nb_mins = time_nsec / NSEC_PER_MIN; - if(flag != TIME_DUMP_AUTO || nb_mins) - DUMP(nb_mins, "min"); + if(nb_mins) DUMP(nb_mins, "min"); time_nsec -= nb_mins * NSEC_PER_MIN; } if(flag & TIME_SEC) { const int64_t nb_secs = time_nsec / NSEC_PER_SEC; - if(flag != TIME_DUMP_AUTO || nb_secs) - DUMP(nb_secs, "sec"); + if(nb_secs) DUMP(nb_secs, "sec"); time_nsec -= nb_secs * NSEC_PER_SEC; } if(flag & TIME_MSEC) { const int64_t nb_msecs = time_nsec / NSEC_PER_MSEC; - if(flag != TIME_DUMP_AUTO || nb_msecs) - DUMP(nb_msecs, "msec"); + if(nb_msecs) DUMP(nb_msecs, "msec"); time_nsec -= nb_msecs * NSEC_PER_MSEC; } if(flag & TIME_USEC) { const int64_t nb_usecs = time_nsec / NSEC_PER_USEC; - if(flag != TIME_DUMP_AUTO || nb_usecs) - DUMP(nb_usecs, "usec"); + if(nb_usecs) DUMP(nb_usecs, "usec"); time_nsec -= nb_usecs * NSEC_PER_USEC; } if(flag & TIME_NSEC) { - if(flag != TIME_DUMP_AUTO || time_nsec) - DUMP(time_nsec, "nsec"); + if(time_nsec) DUMP(time_nsec, "nsec"); } - #undef DUMP if(dump) { - /* Remove last space. */ - const size_t last_char = strlen(dump) - 1; - ASSERT(dump[last_char] == ' '); - dump[last_char] = '\0'; + size_t dump_len = strlen(dump); + if(!dump_len && flag) { + DUMP(dump_len, "nsec"); + dump_len = strlen(dump); + } + ASSERT(dump[dump_len-1] == ' '); + dump[dump_len-1] = '\0'; } + #undef DUMP } #undef NSEC_PER_USEC diff --git a/src/clock_time.h b/src/clock_time.h @@ -25,7 +25,7 @@ struct time { }; /* time_dump flag constant used to auto-format the time_dump message */ -#define TIME_DUMP_AUTO (-1) +#define TIME_ALL (-1) enum time_unit { TIME_NSEC = BIT(0), diff --git a/src/test_time.c b/src/test_time.c @@ -37,9 +37,15 @@ main(int argc, char** argv) CHECK(time_val(&res, TIME_SEC), time / 1000000000); time_dump - (&res, TIME_SEC|TIME_MSEC|TIME_USEC|TIME_NSEC, NULL, dump, sizeof(dump)); - printf("%s\n", dump); - time_dump(&res, TIME_DUMP_AUTO, NULL, dump, sizeof(dump)); - printf("%s\n", dump); + (&res, TIME_SEC|TIME_MSEC|TIME_USEC, NULL, dump, sizeof(dump)); + printf("%s--\n", dump); + time_dump(&res, TIME_ALL, NULL, dump, sizeof(dump)); + printf("%s--\n", dump); + + time_sub(&res, &end, &end); + time_dump(&res, TIME_ALL, NULL, dump, sizeof(dump)); + printf("%s--\n", dump); + time_dump(&res, 0, NULL, dump, sizeof(dump)); + printf("%s--\n", dump); return 0; }