Merge from vendor branch TCPDUMP:
[dragonfly.git] / contrib / ntp / libntp / ymd2yd.c
1 /*
2  * ymd2yd - compute the date in the year from y/m/d
3  */
4
5 #include "ntp_fp.h"
6 #include "ntp_unixtime.h"
7 #include "ntp_stdlib.h"
8
9 /*
10  * Tables to compute the day of year from yyyymmdd timecode.
11  * Viva la leap.
12  */
13 static int day1tab[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
14 static int day2tab[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
15
16 int
17 ymd2yd(
18         int y,
19         int m,
20         int d
21         )
22 {
23         int i, *t;
24
25         if (m < 1 || m > 12 || d < 1)
26                 return (-1);
27
28         if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))
29                 t = day2tab;    /* leap year */
30         else
31                 t = day1tab;    /* not a leap year */
32         if (d > t[m - 1])
33                 return (-1);
34         for (i = 0; i < m - 1; i++)
35                 d += t[i];
36         return d;
37 }