patch2 darwin & libgcj

Andreas Tobler toa@pop.agri.ch
Wed Jan 2 14:33:00 GMT 2002


Thanks!

Last try! ;-) (for today)
P.S, don't forget autoconf & autoheader. 

2002-01-02 Andreas Tobler <a.tobler@schweiz.ch>
                          <tromey@redhat.com>
                          <rth@redhat.com>
                  * libjava/configure.in
                  add a timezone check
                  * libjava/java/lang/natSystem.cc
                  handle the above timezone check
 
  --- gccclean/gcc/libjava/configure.in   Mon Dec 17 09:01:00 2001
  +++ gccsrc/gcc/libjava/configure.in     Sat Dec 29 11:30:31 2001
  @@ -794,6 +794,8 @@
 
   AC_FUNC_ALLOCA
 
  +AC_STRUCT_TIMEZONE
  +
   AC_CHECK_PROGS(PERL, perl, false)
 
   SYSDEP_SOURCES=
 
  --- gccclean/gcc/libjava/java/lang/natSystem.cc Sat Dec  1 11:59:02 2001
  +++ gccsrc/gcc/libjava/java/lang/natSystem.cc   Wed Jan  2 12:42:11 2002
  @@ -242,7 +242,8 @@
   {
     struct tm *tim;
     time_t current_time;
  -  char **tzinfo, *tzid;
  +  const char *tz1;
  +  char *tzid, *tz2;
     long tzoffset;
 
     current_time = time(0);
  @@ -263,26 +264,38 @@
     // issue exists in java/util/natGregorianCalendar.cc.
     tzoffset = 0L;
   #endif
  -  tzinfo = tzname;
  +  // check if a system has tzname or not. Not sure how to handle else
  +  // darwin does not have the tzname so I tried
  +  // a.tobler@schweiz.ch 02012002
  +#ifdef HAVE_TM_ZONE
  +  tz1 = tim->tm_zone;
  +  tz2 = ""; 	/* initialize the string with an empty value, not a NULL */
			/* otherwise strcmp will bomb */
  +#elif defined (HAVE_TZNAME)
  +  tz1 = tzname[0];
  +  tz2 = strcmp (tzname[0], tzname[1]) ? tzname[1] : ""; /* compare
vs. an empty string not a NULL one */
  +#else
  +  //what to do else ?
  +#error neither tzname nor tm_zone defined
  +#endif
 
     if ((tzoffset % 3600) == 0)
       tzoffset = tzoffset / 3600;
 
  -  if (!strcmp(tzinfo[0], tzinfo[1]))
  +  if (!strcmp(tz1, tz2))
       {
  -      tzid = (char*) _Jv_Malloc (strlen(tzinfo[0]) + 6);
  +      tzid = (char*) _Jv_Malloc (strlen(tz1) + 6);
         if (!tzid)
           return NULL;
 
  -      sprintf(tzid, "%s%ld", tzinfo[0], tzoffset);
  +      sprintf(tzid, "%s%ld", tz1, tzoffset);
       }
     else
       {
  -      tzid = (char*) _Jv_Malloc (strlen(tzinfo[0]) +
strlen(tzinfo[1]) + 6);
  +      tzid = (char*) _Jv_Malloc (strlen(tz1) + strlen(tz2) + 6);
         if (!tzid)
           return NULL;
 
  -      sprintf(tzid, "%s%ld%s", tzinfo[0], tzoffset, tzinfo[1]);
  +      sprintf(tzid, "%s%ld%s", tz1, tzoffset, tz2);
       }
 
     jstring retval = JvNewStringUTF (tzid);



More information about the Java mailing list