pud: nmealib: align nmea_random to olsrd _random
authorFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 26 Feb 2015 10:50:15 +0000 (11:50 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 26 Feb 2015 11:05:41 +0000 (12:05 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/nmealib/src/random.h

index 32b2b69..f7e9759 100644 (file)
@@ -5,17 +5,20 @@
 #include <unistd.h>
 #include <stdint.h>
 #include <stdlib.h>
+#include <time.h>
 
 #define NMEA_RANDOM_MAX INT32_MAX
 
 static inline long int nmea_random(const double min, const double max) {
   int32_t value;
+  int randomFile;
   double range = abs(max - min);
 
 #ifdef _WIN32
   value = random();
 #else
-  int randomFile = open("/dev/urandom", O_RDONLY);
+
+  randomFile = open("/dev/urandom", O_RDONLY);
   if (randomFile == -1) {
     randomFile = open("/dev/random", O_RDONLY);
   }
@@ -23,19 +26,17 @@ static inline long int nmea_random(const double min, const double max) {
   if ((randomFile == -1) || (read(randomFile, &value, sizeof(value)) != sizeof(value))) {
     value = random();
   }
-  close(randomFile);
+
+  if (randomFile != -1) {
+    close(randomFile);
+  }
 #endif /* _WIN32 */
 
   return min + ((abs(value) * range) / NMEA_RANDOM_MAX);
 }
 
 static inline void nmea_init_random(void) {
-#ifdef _WIN32
   srandom(time(NULL));
-  return;
-#endif /* _WIN32 */
-
-  srandom(nmea_random(0, NMEA_RANDOM_MAX));
 }
 
 #endif /* _NMEA_RANDOM_H */