FreeBSD build error - workaround patch

Michael Neumann mneuma2s at smail.inf.fh-bonn-rhein-sieg.de
Thu May 31 15:25:22 CEST 2007


Didn't take a closer look on silctime.h yesterday. This one should be correct
now. I also missed to mention, that you forgot to divide utc_minute to get
minutes instead of seconds.

$ diff -u lib/silcutil/silctime.c.org lib/silcutil/silctime.c
--- lib/silcutil/silctime.c.org Tue May  8 22:21:17 2007
+++ lib/silcutil/silctime.c     Thu May 31 15:20:44 2007
@@ -134,13 +134,29 @@
                          _timezone / 3600);
   ret_time->utc_minute = (ret_time->utc_east ? (-(_timezone)) % 3600 :
                          _timezone % 3600);
+  ret_time->utc_minute /= 60;
 #else
 #if defined(HAVE_TZSET)
+#ifdef __FreeBSD__
+  ret_time->utc_east   = time->tm_gmtoff > 0 ? 1 : 0;
+  if(ret_time->utc_east == 1)
+  {
+    ret_time->utc_hour   = time->tm_gmtoff / 3600;
+    ret_time->utc_minute = (time->tm_gmtoff % 3600) / 60;
+  }
+  else
+  {
+    ret_time->utc_hour   = (-time->tm_gmtoff) / 3600;
+    ret_time->utc_minute = ((-time->tm_gmtoff) % 3600) / 60;
+  }
+#else
   ret_time->utc_east   = timezone < 0 ? 1 : 0;
   ret_time->utc_hour   = (ret_time->utc_east ? (-(timezone)) / 3600 :
                          timezone / 3600);
   ret_time->utc_minute = (ret_time->utc_east ? (-(timezone)) % 3600 :
                          timezone % 3600);
+  ret_time->utc_minute /= 60;
+#endif /* __FreeBSD__ */
 #endif /* HAVE_TZSET */
 #endif /* SILC_WIN32 */



Michael Neumann <mneuma2s at smail.inf.fh-brs.de> wrote:

> Hi,
> 
> i tried to compile the silc client 1.1 beta 6 in my FreeBSD machine.
> Happens to not like the glibc-specific timezone variable. This patch
> works for me and i don't know what'll happen when gmtime fails.
> 
> $ diff -u lib/silcutil/silctime.c.org lib/silcutil/silctime.c
> --- lib/silcutil/silctime.c.org Tue May  8 22:21:17 2007
> +++ lib/silcutil/silctime.c     Thu May 31 02:03:15 2007
> @@ -136,11 +136,21 @@
>                           _timezone % 3600);
>  #else
>  #if defined(HAVE_TZSET)
> +#ifdef __FreeBSD__
> +  ret_time->utc_east   = time->tm_gmtoff > 0 ? 1 : 0;
> +  time = gmtime(&timeval);
> +  if(!time)
> +    return FALSE;
> +  ret_time->utc_hour   = time->tm_hour;
> +  ret_time->utc_minute = time->tm_min;
> +#else
>    ret_time->utc_east   = timezone < 0 ? 1 : 0;
>    ret_time->utc_hour   = (ret_time->utc_east ? (-(timezone)) / 3600 :
>                           timezone / 3600);
>    ret_time->utc_minute = (ret_time->utc_east ? (-(timezone)) % 3600 :
>                           timezone % 3600);
> +  ret_time->utc_minute /= 60;
> +#endif /* __FreeBSD__ */
>  #endif /* HAVE_TZSET */
>  #endif /* SILC_WIN32 */


More information about the silc-devel mailing list