- Original Message -
Hi,
On 11/07/14 18:41, Bob Peterson wrote:
- Original Message -
(snip)
Use timersub() here perhaps?
Otherwise looks good,
Steve.
Hi Steve,
Thanks for the suggestion. How about this version?
Yes, that looks better. There is probably a nicer way to do the
conversion to string too... a quick google points at using a time_t to
contain tv_secs, converting to tm and then appending the tv_usecs after.
Should be a bit cleaner than doing it manually,
Steve.
Hi,
I could implement your suggestion like this. I could also use strftime,
but it's ugly as sin, so I'm reluctant to do so. What do you think?
Regards,
Bob Peterson
---
diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c
index b4b1a03..ad42b0d 100644
--- a/gfs2/fsck/main.c
+++ b/gfs2/fsck/main.c
@@ -11,6 +11,8 @@
#include signal.h
#include libintl.h
#include locale.h
+#include sys/time.h
+#include time.h
#define _(String) gettext(String)
#include copyright.cf
@@ -244,11 +246,15 @@ static const struct fsck_pass passes[] = {
static int fsck_pass(const struct fsck_pass *p, struct gfs2_sbd *sdp)
{
int ret;
+ struct timeval before, after, diff;
+ time_t runtime;
+ struct tm *run_tm;
if (fsck_abort)
return FSCK_CANCELED;
pass = p-name;
log_notice( _(Starting %s\n), p-name);
+ gettimeofday(before, 0);
ret = p-f(sdp);
if (ret)
exit(ret);
@@ -257,7 +263,16 @@ static int fsck_pass(const struct fsck_pass *p, struct
gfs2_sbd *sdp)
log_notice( _(%s interrupted \n), p-name);
return FSCK_CANCELED;
}
- log_notice( _(%s complete \n), p-name);
+ gettimeofday(after, 0);
+ timersub(after, before, diff);
+ runtime = (time_t)diff.tv_sec;
+ run_tm = gmtime(runtime);
+ log_notice( _(%s completed in ), p-name);
+ if (run_tm-tm_hour)
+ log_notice(%dh, run_tm-tm_hour);
+ if (run_tm-tm_min)
+ log_notice(%dm, run_tm-tm_min);
+ log_notice(%d.%03lds \n, run_tm-tm_sec, diff.tv_usec / 1000);
return 0;
}