Commit 7f7f1551 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

oops, commit Configure part of PR#2234

parent 45078e6c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1792,11 +1792,11 @@ EOF
	(system $make_command.$make_targets) == 0 or exit $?
		if $make_targets ne "";
	if ( $perl =~ m@^/@) {
	    &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
	    &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
	    &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
	} else {
	    # No path for Perl known ...
	    &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
	    &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";',  '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
	    &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
	}
	if ($depflags ne $default_depflags && !$make_depend) {
+98 −35
Original line number Diff line number Diff line
@@ -228,9 +228,73 @@ struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result)

static long date_to_julian(int y, int m, int d);
static void julian_to_date(long jd, int *y, int *m, int *d);
static int julian_adj(struct tm *tm, int off_day, long offset_sec,
		long *pday, int *psec);

int OPENSSL_gmtime_adj(struct tm *tm, int off_day, long offset_sec)
	{
	int time_sec, time_year, time_month, time_day;
	long time_jd;

	/* Convert time and offset into julian day and seconds */
	if (!julian_adj(tm, off_day, offset_sec, &time_jd, &time_sec))
		return 0;

	/* Convert Julian day back to date */

	julian_to_date(time_jd, &time_year, &time_month, &time_day);

	if (time_year < 1900 || time_year > 9999)
		return 0;

	/* Update tm structure */

	tm->tm_year = time_year - 1900;
	tm->tm_mon = time_month - 1;
	tm->tm_mday = time_day;

	tm->tm_hour = time_sec / 3600;
	tm->tm_min = (time_sec / 60) % 60;
	tm->tm_sec = time_sec % 60;

	return 1;
		
}

int OPENSSL_gmtime_diff(struct tm *from, struct tm *to, int *pday, int *psec)
	{
	int from_sec, to_sec, diff_sec;
	long from_jd, to_jd, diff_day;
	if (!julian_adj(from, 0, 0, &from_jd, &from_sec))
		return 0;
	if (!julian_adj(to, 0, 0, &to_jd, &to_sec))
		return 0;
	diff_day = to_jd - from_jd;
	diff_sec = to_sec - from_sec;
	/* Adjust differences so both positive or both negative */
	if (diff_day > 0 && diff_sec < 0)
		{
		diff_day--;
		diff_sec += SECS_PER_DAY;
		}
	if (diff_day < 0 && diff_sec > 0)
		{
		diff_day++;
		diff_sec -= SECS_PER_DAY;
		}

	*pday = (int)diff_day;
	*psec = diff_sec;

	return 1;

	}
	
	
/* Convert tm structure and offset into julian day and seconds */
static int julian_adj(struct tm *tm, int off_day, long offset_sec,
		long *pday, int *psec)
	{
	int offset_hms, offset_day;
	long time_jd;
	int time_year, time_month, time_day;
@@ -268,27 +332,12 @@ int OPENSSL_gmtime_adj(struct tm *tm, int off_day, long offset_sec)
	if (time_jd < 0)
		return 0;

	/* Convert Julian day back to date */

	julian_to_date(time_jd, &time_year, &time_month, &time_day);

	if (time_year < 1900 || time_year > 9999)
		return 0;

	/* Update tm structure */

	tm->tm_year = time_year - 1900;
	tm->tm_mon = time_month - 1;
	tm->tm_mday = time_day;

	tm->tm_hour = offset_hms / 3600;
	tm->tm_min = (offset_hms / 60) % 60;
	tm->tm_sec = offset_hms % 60;

	*pday = time_jd;
	*psec = offset_hms;
	return 1;
		
	}


/* Convert date to and from julian day
 * Uses Fliegel & Van Flandern algorithm
 */
@@ -339,20 +388,23 @@ int main(int argc, char **argv)

int check_time(long offset)
	{
	struct tm tm1, tm2;
	struct tm tm1, tm2, o1;
	int off_day, off_sec;
	long toffset;
	time_t t1, t2;
	time(&t1);
	t2 = t1 + offset;
	OPENSSL_gmtime(&t2, &tm2);
	OPENSSL_gmtime(&t1, &tm1);
	o1 = tm1;
	OPENSSL_gmtime_adj(&tm1, 0, offset);
	if ((tm1.tm_year == tm2.tm_year) &&
	    (tm1.tm_mon == tm2.tm_mon) &&
	    (tm1.tm_mday == tm2.tm_mday) &&
	    (tm1.tm_hour == tm2.tm_hour) &&
	    (tm1.tm_min == tm2.tm_min) &&
	    (tm1.tm_sec == tm2.tm_sec))
		return 1;
	if ((tm1.tm_year != tm2.tm_year) ||
	    (tm1.tm_mon != tm2.tm_mon) ||
	    (tm1.tm_mday != tm2.tm_mday) ||
	    (tm1.tm_hour != tm2.tm_hour) ||
	    (tm1.tm_min != tm2.tm_min) ||
	    (tm1.tm_sec != tm2.tm_sec))
		{
		fprintf(stderr, "TIME ERROR!!\n");
		fprintf(stderr, "Time1: %d/%d/%d, %d:%02d:%02d\n",
				tm2.tm_mday, tm2.tm_mon + 1, tm2.tm_year + 1900,
@@ -362,5 +414,16 @@ int check_time(long offset)
				tm1.tm_hour, tm1.tm_min, tm1.tm_sec);
		return 0;
		}
	OPENSSL_gmtime_diff(&o1, &tm1, &off_day, &off_sec);
	toffset = (long)off_day * SECS_PER_DAY + off_sec;
	if (offset != toffset)
		{
		fprintf(stderr, "TIME OFFSET ERROR!!\n");
		fprintf(stderr, "Expected %ld, Got %ld (%d:%d)\n",
					offset, toffset, off_day, off_sec);
		return 0;
		}
	return 1;
	}

#endif
+1 −0
Original line number Diff line number Diff line
@@ -63,5 +63,6 @@

struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
int OPENSSL_gmtime_diff(struct tm *from, struct tm *to, int *pday, int *psec);

#endif