diff --git a/src/libiso8601/functions.h b/src/libiso8601/functions.h index 240ff3f..de00936 100644 --- a/src/libiso8601/functions.h +++ b/src/libiso8601/functions.h @@ -69,6 +69,7 @@ void iso8601_print(char* str, int amt, const struct iso8601_date* date, /* manip.c */ int iso8601_lt(const struct iso8601_date* d1, const struct iso8601_date* d2); int iso8601_lte(const struct iso8601_date* d1, const struct iso8601_date* d2); +int iso8601_eq(const struct iso8601_date* d1, const struct iso8601_date* d2); void iso8601_add_seconds(struct iso8601_date* date, long seconds); /* leap.c */ diff --git a/src/libiso8601/manip.c b/src/libiso8601/manip.c index c489f60..e611a1d 100644 --- a/src/libiso8601/manip.c +++ b/src/libiso8601/manip.c @@ -13,8 +13,8 @@ int iso8601_lt(const struct iso8601_date* d1, const struct iso8601_date* d2) if(d1->day > d2->day) return 0; if(d1->sec < d2->sec) return 1; if(d1->sec > d2->sec) return 0; - if(d1->nsec < d2->nsec) return 0; - return 1; + if(d1->nsec < d2->nsec) return 1; + return 0; } @@ -25,12 +25,19 @@ int iso8601_lte(const struct iso8601_date* d1, const struct iso8601_date* d2) if(d1->day > d2->day) return 0; if(d1->sec < d2->sec) return 1; if(d1->sec > d2->sec) return 0; - if(d1->nsec < d2->nsec) return 0; + if(d1->nsec < d2->nsec) return 1; return d1->nsec == d2->nsec; } +int iso8601_eq(const struct iso8601_date* d1, const struct iso8601_date* d2) +{ + return (d1->day == d2->day) && (d1->sec == d2->sec) && (d1->nsec == d2->nsec); +} + + + void iso8601_add_seconds(struct iso8601_date* date, long seconds) { int sday;