Subject: pkg/28984: graphics/imlib2 does not build on NetBSD 2.0
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <Peter.Bex@student.kun.nl>
List: pkgsrc-bugs
Date: 01/16/2005 15:18:00
>Number:         28984
>Category:       pkg
>Synopsis:       graphics/imlib2 uses lround, which is not available on NetBSD
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jan 16 15:18:00 +0000 2005
>Originator:     Peter Bex
>Release:        NetBSD 2.0_RC1
>Organization:
>Environment:
	
	
System: NetBSD frohike.nvie.com 2.0_RC1 NetBSD 2.0_RC1 (FROHIKE) #3: Wed Sep 29 19:34:49 CEST 2004 root@:/usr/src/sys/arch/i386/compile/FROHIKE i386
Architecture: i386
Machine: i386
>Description:
	When building graphics/imlib2, the build fails on
	${WRKSRC}/src/lib/color_helpers.c, since it can't find lround().
>How-To-Repeat:
	Build graphics/imlib2 on a NetBSD 2.0 or earlier system.
	According to man.netbsd.org, -current doesn't have an lround()
	implementation either.

	According to http://www.FreeBSD.org/cgi/man.cgi?query=lround&apropos=0&sektion=0&manpath=Red+Hat+Linux%2Fi386+9&format=html
	lround() is C99, so I suppose NetBSD should eventually support this
	function.  Maybe this means I should send another PR about this
	missing functionality?
>Fix:

The fix is trivial.  Because the result of lround() is put into an ordinary
integer, the function call can be changed into a normal round() call.

$NetBSD$

--- src/lib/color_helpers.c.orig	2005-01-08 08:55:02.000000000 +0100
+++ src/lib/color_helpers.c
@@ -54,9 +54,9 @@ __imlib_hsv_to_rgb(float h, float s, flo
    
    if (s == 0.0)
      {
-	*r = lround ((v*255.0)/100.0);
-	*g = lround ((v*255.0)/100.0);
-	*b = lround ((v*255.0)/100.0);
+	*r = round ((v*255.0)/100.0);
+	*g = round ((v*255.0)/100.0);
+	*b = round ((v*255.0)/100.0);
 	
 	return;
      }
@@ -73,44 +73,44 @@ __imlib_hsv_to_rgb(float h, float s, flo
      {
       case 0:
 	  {
-	     *r = lround (v*255.0 / 100.0);
-	     *g = lround (t*255.0);
-	     *b = lround (p*255.0);
+	     *r = round (v*255.0 / 100.0);
+	     *g = round (t*255.0);
+	     *b = round (p*255.0);
 	     break;
 	  }
       case 1:
 	  {
-	     *r = lround (q*255.0);
-	     *g = lround (v*255.0 / 100.0);
-	     *b = lround (p*255.0);
+	     *r = round (q*255.0);
+	     *g = round (v*255.0 / 100.0);
+	     *b = round (p*255.0);
 	     break;
 	  }
       case 2:
 	  {
-	     *r = lround (p*255.0);
-	     *g = lround (v*255.0 / 100.0);
-	     *b = lround (t*255.0);
+	     *r = round (p*255.0);
+	     *g = round (v*255.0 / 100.0);
+	     *b = round (t*255.0);
 	     break;
 	  }
       case 3:
 	  {
-	     *r = lround (p*255.0);
-	     *g = lround (q*255.0);
-	     *b = lround (v*255.0 / 100.0);
+	     *r = round (p*255.0);
+	     *g = round (q*255.0);
+	     *b = round (v*255.0 / 100.0);
 	     break;
 	  }
       case 4:
 	  {
-	     *r = lround (t*255.0);
-	     *g = lround (p*255.0);
-	     *b = lround (v*255.0 / 100.0);
+	     *r = round (t*255.0);
+	     *g = round (p*255.0);
+	     *b = round (v*255.0 / 100.0);
 	     break;
 	  }
       case 5:
 	  {
-	     *r = lround (v*255.0 / 100.0);
-	     *g = lround (p*255.0);
-	     *b = lround (q*255.0);
+	     *r = round (v*255.0 / 100.0);
+	     *g = round (p*255.0);
+	     *b = round (q*255.0);
 	     break;
 	  }
      }

>Unformatted: