patch2 darwin & libgcj

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



Andreas Tobler wrote:
> 
> Tom Tromey wrote:
> 
> > So you'd end up with something like:
> >
> >       char *tz1, *tz2;
> >     #ifdef HAVE_TM_ZONE
> >       tz1 = tim->tm_zone;
> >       tz2 = NULL;
> >     #elif defined (HAVE_TZNAME)
> >       tz1 = tzname[0];
> >       tz2 = strcmp (tzname[0], tzname[1]) ? tzname[1] : NULL;
> >     #else
> >     #error etc
> >     #endif
> 
> Is this one better? Built on darwin5.2 (ppc) and powerpc-unknown-linux-gnu.
> On darwin I'm not able to link, but this is due to something else I guess.
> 
Again, ok this time? 
r~?

 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 = "";
 +#elif defined (HAVE_TZNAME)
 +  tz1 = tzname[0];
 +  tz2 = strcmp (tzname[0], tzname[1]) ? tzname[1] : NULL;
 +#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