# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
#
-# Generated on Mon Jul 7 21:59:59 CEST 2008 [metaconfig 3.5 PL0]
+# Generated on Fri Aug 8 16:16:43 CEST 2008 [metaconfig 3.5 PL0]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
d_telldirproto=''
d_time=''
timetype=''
+d_timegm=''
clocktype=''
d_times=''
d_tmpnam_r=''
echo "(Attempting domain name extraction from $tans)"
dflt=.`$sed -n -e 's/ / /g' \
-e 's/^search *\([^ ]*\).*/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ -e 1q 2>/dev/null`
case "$dflt" in
.) dflt=.`$sed -n -e 's/ / /g' \
-e 's/^domain *\([^ ]*\).*/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ -e 1q 2>/dev/null`
;;
esac
fi
EOP
set try
-d_sprintf_returns_strlen="$undef"
if eval $compile; then
xxx="`$run ./try`"
case "$?" in
d_sprintf_returns_strlen="$undef"
;;
esac
+else
+ echo "(I can't seem to compile the test program--assuming it doesn't)" >&4
+ d_sprintf_returns_strlen="$undef"
fi
$rm_try
eval $setvar
fi
+: see if timegm exists
+set timegm d_timegm
+eval $inlibc
+
: see if this is a sys/times.h system
set sys/times.h i_systimes
eval $inhdr
fi
$rm -f foo* bar*
+: see if this is a values.h system
+set values.h i_values
+eval $inhdr
+
: Check the max offset that gmtime accepts
-echo "Checking max offset that gmtime () accepts"
+echo "Checking max offsets that gmtime () accepts"
-$cat >try.c <<'EOCP'
+case $i_values in
+ define) yyy="#include <values.h>" ;;
+ *) yyy="" ;;
+ esac
+
+$cat >try.c <<EOCP
#include <sys/types.h>
#include <stdio.h>
#include <time.h>
-int main () {
- struct tm *tmp;
- int i, y = 0;
- time_t pt = 0;
+$yyy
- for (i = 0; i < 78; i++) {
- time_t t = (1 << i) - 1;
+int i;
+struct tm *tmp;
+time_t pt;
+
+void gm_check (time_t t)
+{
tmp = gmtime (&t);
- if (tmp == NULL || tmp->tm_year < y) {
- i--;
- printf ("%d\n", pt);
- return (i);
- }
+ if (tmp == NULL || tmp->tm_year < -1900)
+ tmp = NULL;
+ else
+ pt = t;
+ } /* gm_check */
- y = tmp->tm_year;
- pt = t;
+int check_max ()
+{
+ tmp = NULL;
+ pt = 0;
+#ifdef MAXLONG
+ gm_check (MAXLONG);
+#endif
+ if (tmp == NULL || tmp->tm_year < 0) {
+ for (i = 63; i >= 0; i--) {
+ time_t x = pt | ((time_t)1 << i);
+ if (x < 0) continue;
+ gm_check (x);
+ }
}
- printf ("%d\n", pt);
+ printf ("sGMTIME_max=%ld\n", pt);
return (0);
}
-EOCP
-set try
-if eval $compile; then
- sGMTIME_max=`$run ./try`
-else
- echo "Cannot determine sGMTIME_max"
- fi
-$rm_try
-echo "Checking min offset that gmtime () accepts"
-
-$cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-#include <time.h>
-int main () {
- struct tm *tmp;
- int i, y = 70;
- time_t pt = 0;
-
- for (i = 0; i < 78; i++) {
- time_t t = - (1 << i);
- tmp = gmtime (&t);
- if (tmp == NULL || tmp->tm_year > y) {
- i--;
- printf ("%d\n", pt);
- return (i);
+int check_min ()
+{
+ tmp = NULL;
+ pt = 0;
+#ifdef MINLONG
+ gm_check (MINLONG);
+#endif
+ if (tmp == NULL) {
+ for (i = 36; i >= 0; i--) {
+ time_t x = pt - ((time_t)1 << i);
+ if (x > 0) continue;
+ gm_check (x);
}
-
- y = tmp->tm_year;
- pt = t;
}
- printf ("%d\n", pt);
+ printf ("sGMTIME_min=%ld\n", pt);
return (0);
}
+
+int main (int argc, char *argv[])
+{
+ fprintf (stderr, "Sizeof time_t = %ld\n", sizeof (time_t));
+ check_max ();
+ check_min ();
+ return (0);
+ } /* main */
EOCP
set try
if eval $compile; then
- sGMTIME_min=`$run ./try`
+ yyy=`$run ./try`
+ eval $yyy
else
- echo "Cannot determine sGMTIME_min"
+ echo "Cannot determine sGMTIME_max and sGMTIME_min." >&4
fi
$rm_try
set utime.h i_utime
eval $inhdr
-: see if this is a values.h system
-set values.h i_values
-eval $inhdr
-
: see if this is a vfork system
case "$d_vfork" in
"$define")
d_telldir='$d_telldir'
d_telldirproto='$d_telldirproto'
d_time='$d_time'
+d_timegm='$d_timegm'
d_times='$d_times'
d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
d_tm_tm_zone='$d_tm_tm_zone'