diff options
author | Werner Almesberger <werner@almesberger.net> | 2016-10-28 08:39:13 -0300 |
---|---|---|
committer | Werner Almesberger <werner@almesberger.net> | 2016-10-28 08:39:13 -0300 |
commit | 9ab7b3a381ffd23e048e28dde650fb76b6f8510e (patch) | |
tree | ff237b21177667af2a35186f59b93666644947b8 /kicad | |
parent | 4dffb6a41499a68fe99f080223f8f42a2794a88e (diff) | |
download | eeshow-9ab7b3a381ffd23e048e28dde650fb76b6f8510e.tar.gz eeshow-9ab7b3a381ffd23e048e28dde650fb76b6f8510e.tar.bz2 eeshow-9ab7b3a381ffd23e048e28dde650fb76b6f8510e.zip |
kicad/pl-render.c: new date formats %s (sheet date) and %S (max sheet date)
Diffstat (limited to 'kicad')
-rw-r--r-- | kicad/pl-render.c | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/kicad/pl-render.c b/kicad/pl-render.c index c84213c..f89ae57 100644 --- a/kicad/pl-render.c +++ b/kicad/pl-render.c @@ -68,7 +68,8 @@ static int coord(int v, int d, int o, int e) /* ----- Date formatting --------------------------------------------------- */ -static char *format_date(const char *fmt, const char *sheet_date) +static char *format_date(const char *fmt, const char *sheet_date, + time_t mtime, time_t max_mtime) { char *s = stralloc(""); time_t user_time = -1; @@ -120,9 +121,6 @@ static char *format_date(const char *fmt, const char *sheet_date) } } switch (*p++) { - case 't': /* local time */ - time(&t); - break; case 'i': /* parse sheet_date */ memset(&tm, 0, sizeof(tm)); end = strptime(sheet_date, @@ -132,6 +130,15 @@ static char *format_date(const char *fmt, const char *sheet_date) else user_time = -1; continue; + case 's': + t = mtime; + break; + case 'S': + t = max_mtime; + break; + case 't': /* local time */ + time(&t); + break; case 'u': /* user time */ if (user_time == -1) continue; @@ -166,6 +173,19 @@ static char *format_date(const char *fmt, const char *sheet_date) /* ----- String expansion -------------------------------------------------- */ +static time_t max_mtime(const struct sheet *sheets) +{ + time_t t = 0; + + while (sheets) { + if (sheets->mtime > t) + t = sheets->mtime; + sheets = sheets->next; + } + return t; +} + + static char *expand(const struct pl_ctx *pl, const char *s, const struct sheet *sheets, const struct sheet *sheet) { @@ -202,7 +222,8 @@ static char *expand(const struct pl_ctx *pl, const char *s, case 'D': // date if (date_override) x = format_date(date_override, - sheet->date ? sheet->date : ""); + sheet->date ? sheet->date : "", + sheet->mtime, max_mtime(sheets)); else cx = sheet->date; break; |