From 3aa02ccba93648f2decab899a5b9c42b6bcea9bf Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 30 Aug 2011 20:54:43 -0700 Subject: [PATCH] Generate a default name for a dive, if it doesn't have one already The name is a string containint date, time, depth and length. So it's useful even with nothing else going on. Signed-off-by: Linus Torvalds --- dive.h | 1 + parse.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/dive.h b/dive.h index 53ecdfe..ba9f668 100644 --- a/dive.h +++ b/dive.h @@ -101,6 +101,7 @@ struct sample { }; struct dive { + const char *name; time_t when; depth_t maxdepth, meandepth; duration_t duration, surfacetime; diff --git a/parse.c b/parse.c index 1a8e3ba..f90c16c 100644 --- a/parse.c +++ b/parse.c @@ -391,10 +391,34 @@ static void dive_start(void) memset(&tm, 0, sizeof(tm)); } +static char *generate_name(struct dive *dive) +{ + int len; + struct tm *tm; + char buffer[256], *p; + + tm = gmtime(&dive->when); + + len = snprintf(buffer, sizeof(buffer), + "%04d-%02d-%02d " + "%02d:%02d:%02d " + "(%d ft, %d min)\n", + tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec, + to_feet(dive->maxdepth), dive->duration.seconds / 60); + p = malloc(len+1); + if (!p) + exit(1); + memcpy(p, buffer, len+1); + return p; +} + static void dive_end(void) { if (!dive) return; + if (!dive->name) + dive->name = generate_name(dive); record_dive(dive); dive = NULL; } -- 2.45.2