Changeset 3174
- Timestamp:
- 2007-07-30 02:49:21 (1 year ago)
- Files:
-
- liboggz/trunk/configure.ac (modified) (1 diff)
- liboggz/trunk/src/liboggz/oggz.c (modified) (1 diff)
- liboggz/trunk/src/liboggz/oggz_compat.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
liboggz/trunk/configure.ac
r3173 r3174 37 37 # Checks for library functions. 38 38 AC_FUNC_REALLOC 39 AC_CHECK_FUNCS([memmove random])39 AC_CHECK_FUNCS([memmove]) 40 40 41 41 # Check for pkg-config liboggz/trunk/src/liboggz/oggz.c
r3171 r3174 440 440 } 441 441 442 /* Generate a pseudorandom serialno on request, ensuring that the number 443 * selected is not -1 or the serialno of an existing logical bitstream. 444 * NB. This inlines a simple linear congruential generator to avoid problems 445 * of portability of rand() vs. the POSIX random()/initstate()/getstate(), and 446 * in the case of rand() in order to avoid interfering with the random number 447 * sequence. 448 * Adapated from a patch by Erik de Castro Lopo, July 2007. 449 */ 442 450 long 443 451 oggz_serialno_new (OGGZ * oggz) 444 452 { 445 long serialno; 453 static long serialno = 0; 454 int k; 455 456 if (serialno == 0) serialno = time(NULL); 446 457 447 458 do { 448 serialno = oggz_random(); 449 } while (oggz_get_stream (oggz, serialno) != NULL); 459 for (k = 0; k < 3 || serialno == 0; k++) 460 serialno = 11117 * serialno + 211231; 461 } while (serialno == -1 || oggz_get_stream (oggz, serialno) != NULL); 450 462 451 463 return serialno; liboggz/trunk/src/liboggz/oggz_compat.h
r357 r3174 33 33 #include "config.h" 34 34 35 #ifdef HAVE_RANDOM36 # define oggz_random random37 #else38 # define oggz_random rand39 #endif40 41 35 #ifndef WIN32 42 36 # define oggz_stat_regular(mode) (S_ISREG((mode)) || S_ISLNK((mode)))