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:
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;
}