[comp.os.minix] patches to date and ldclock

hall@trout.NOSC.MIL (Robert R. Hall) (03/15/88)

I found that not only was ldclock setting the date
ahead by one day but that date -q command would do
the same thing.  Also if I tried to set the date
31 Dec 1988, I got a negative value for time.

To correct the behavior here are the changes I made:
These diff file are relative to version 1.1
I done have seen any changes to these file for version 1.2
If there were some I missed them

------------------------      ldclock.dif   ----------------------------
24,25c24
< int days[] = {0,31,59,90,120,151,181,212,243,273,304,334,
<               0,31,60,91,121,152,182,213,244,274,305,335};
---
> int days[] = {0,31,59,90,120,151,181,212,243,273,304,334};
48c47
<    ct += (long) (days[leap*12+mnth-1]+dt-1+extra)*86400;
---
>    ct += (long) (days[mnth-1]+dt-1+extra)*86400;
------------------------------------------------------------------------

-------------------------      date.dif     ----------------------------
5c5
< int qflag;
---
> int qflag = 0;
34a35,36
>   time(&t);
>   cv_time(t);
49,50d50
< 	time(&t);
< 	cv_time(t);
58a59,60
>   long t_inc;
> 
65,67c67,70
<   while (t >= s_p_year) {
< 	if (((tm.year + 2) % 4) == 0)
< 		t -= s_p_day;
---
>   t_inc = s_p_year;
>   if (((tm.year + 2) % 4) == 0)
> 	t_inc += s_p_day;
>   while (t >= t_inc) {
69c72,75
< 	t -= s_p_year;
---
> 	t -= t_inc;
> 	t_inc = s_p_year;
> 	if (((tm.year + 2) % 4) == 0)
> 		t_inc += s_p_day;
71,72d76
<   if (((tm.year + 2) % 4) == 0)
< 	days_per_month[1]++;
73a78,81
>   if ((tm.year % 4) == 0)
> 	days_per_month[1] = 29;
>   else
> 	days_per_month[1] = 28;
95c103
<   long ct, time();
---
>   long ct;
98,100d105
<   time(&ct);
<   cv_time(ct);
<   tm.year -= 1970;
113c118
<   	tm.year = conv(&tp, 99);
---
>   	tm.year = conv(&tp, 99) + 1900;
116d120
<   	tm.year -= 70;
117a122,126
>   if ((tm.year % 4) == 0)
> 	days_per_month[1] = 29;
>   else
> 	days_per_month[1] = 28;
>   tm.year -= 1970;
120,121d128
<   if (((tm.year + 2) % 4) == 0)
< 	days_per_month[1]++;
130,131d136
<   if (days_per_month[1] > 28)
< 	days_per_month[1] = 28;
------------------------------------------------------------------------

					Robert R. Hall
					  hall@nosc.mil