Skip to content

Commit

Permalink
log: fix lxc_unix_epoch_to_utc()
Browse files Browse the repository at this point in the history
The conversion algorithm used uses a clever trick by letting a year start at 1
March. So we need to add 1 for January and February.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner authored and stgraber committed Mar 20, 2017
1 parent 6e2bf21 commit c70748d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/lxc/log.c
Expand Up @@ -106,7 +106,7 @@ int lxc_unix_epoch_to_utc(char *buf, size_t bufsize, const struct timespec *time
yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;

/* Given year-of-era, and era, one can now compute the year. */
year = (yoe) + era * 400;
year = yoe + era * 400;

/* Also the day-of-year, again with the year beginning on Mar. 1, can be
* computed from the day-of-era and year-of-era.
Expand All @@ -126,6 +126,11 @@ int lxc_unix_epoch_to_utc(char *buf, size_t bufsize, const struct timespec *time
*/
month = mp + (mp < 10 ? 3 : -9);

/* The algorithm assumes that a year begins on 1 March, so add 1 before
* that. */
if (month < 3)
year++;

/* Transform days in the epoch to seconds. */
d_in_s = epoch_to_days * 86400;

Expand Down

0 comments on commit c70748d

Please sign in to comment.