On Tue, Aug 27, 2013 at 06:54:46PM +0200, Sebastian Reitenbach wrote:

> The patch below updates geo/qlandkartegt from 1.7.0 to 1.7.3
> The license changed to GPLv3 with update to 1.7.1
> 
> While there, exchange usage of rand with arc4random.
> As far as I can see, it only selects some colors randomly.
> The usage of arc4random is done the hard way, my cmake
> skills are not as good as I'd like them to be to add a
> configure test and use something better ;)
> 
> tested on amd64.
> 

RAND_MAX does not apply to arc4random(), it has a different range. Use
UINT_MAX. 

        -Otto

> OK?
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/geo/qlandkartegt/Makefile,v
> retrieving revision 1.12
> diff -u -p -u -r1.12 Makefile
> --- Makefile  2 Jul 2013 04:30:20 -0000       1.12
> +++ Makefile  27 Aug 2013 09:28:11 -0000
> @@ -3,14 +3,14 @@
>  VMEM_WARNING =       yes
>  COMMENT =    garmin gps map management tool
>  
> -DISTNAME =   qlandkartegt-1.7.0
> +DISTNAME =   qlandkartegt-1.7.3
>  CATEGORIES = geo x11
>  
>  HOMEPAGE =   http://www.qlandkarte.org/
>  MASTER_SITES =       ${MASTER_SITE_SOURCEFORGE:=qlandkartegt/}
>  MAINTAINER = Sebastian Reitenbach <[email protected]>
>  
> -# GPLv2
> +# GPLv3
>  PERMIT_PACKAGE_CDROM =               Yes
>  
>  MODULES =    devel/cmake x11/qt4
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/geo/qlandkartegt/distinfo,v
> retrieving revision 1.10
> diff -u -p -u -r1.10 distinfo
> --- distinfo  2 Jul 2013 04:30:20 -0000       1.10
> +++ distinfo  27 Aug 2013 09:28:11 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (qlandkartegt-1.7.0.tar.gz) = 
> Tbq57QCCRkepr9MVYZ55dOF2o7R+UPN1REHmnx2+5y0=
> -SIZE (qlandkartegt-1.7.0.tar.gz) = 8136806
> +SHA256 (qlandkartegt-1.7.3.tar.gz) = 
> 2/yWNvSozIhzff+MvTtBHksawXxVJRY5a1XR5oCtlTw=
> +SIZE (qlandkartegt-1.7.3.tar.gz) = 8334026
> Index: patches/patch-3rdparty_map2jnx_main_cpp
> ===================================================================
> RCS file: patches/patch-3rdparty_map2jnx_main_cpp
> diff -N patches/patch-3rdparty_map2jnx_main_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-3rdparty_map2jnx_main_cpp   27 Aug 2013 09:28:11 -0000
> @@ -0,0 +1,27 @@
> +$OpenBSD$
> +
> +use arc4random
> +
> +--- 3rdparty/map2jnx/main.cpp.orig   Tue Aug 27 09:44:48 2013
> ++++ 3rdparty/map2jnx/main.cpp        Tue Aug 27 09:46:40 2013
> +@@ -419,14 +419,20 @@ static uint32_t scale2jnx(double scale)
> + static char randChar()
> + {
> +     char buf[2];
> ++#if defined(__OpenBSD__)
> ++    int r = (int)((arc4random() * 16.0) / RAND_MAX);
> ++#else
> +     int r = (int)((rand() * 16.0) / RAND_MAX);
> ++#endif
> +     sprintf(buf,"%X", r & 0x0F);
> +     return buf[0];
> + }
> + 
> + static void createGUID(char * guid)
> + {
> ++#if !defined(__OpenBSD__)
> +     srand((unsigned int)time(0));
> ++#endif
> + 
> +     guid[0]     = randChar();
> +     guid[1]     = randChar();
> Index: patches/patch-src_CTrackDB_cpp
> ===================================================================
> RCS file: patches/patch-src_CTrackDB_cpp
> diff -N patches/patch-src_CTrackDB_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_CTrackDB_cpp    27 Aug 2013 09:28:11 -0000
> @@ -0,0 +1,29 @@
> +$OpenBSD$
> +
> +use arc4random
> +
> +--- src/CTrackDB.cpp.orig    Tue Aug 27 09:41:35 2013
> ++++ src/CTrackDB.cpp Tue Aug 27 09:44:06 2013
> +@@ -38,6 +38,10 @@
> + #include "CTrackUndoCommandDelete.h"
> + #include "CTrackUndoCommandSelect.h"
> + 
> ++#if defined(__OpenBSD__) /* for arc4random */
> ++#include <stdlib.h>
> ++#endif
> ++
> + #if WIN32
> + #include <math.h>
> + #include <float.h>
> +@@ -173,7 +177,11 @@ void CTrackDB::loadGPX(CGpx& gpx)
> +         hasItems = true;
> +         CTrack* track = new CTrack(this);
> +                                  //preset a random color
> ++#if defined(__OpenBSD__)
> ++        track->setColor((arc4random() % 13)+1);
> ++#else
> +         track->setColor((rand() % 13)+1);
> ++#endif
> + 
> +         /*
> +          *  Global track information

Reply via email to