- randval = php_drand();
+ randval = php_drand(TSRMLS_C);
if (randval < (double)num_req_val/(double)num_avail) {
/* If we are returning a single result, just do it. */
if (Z_TYPE_P(return_value) != IS_ARRAY) {
/* FIXME: that '_php_randgen_entry' needed, or not? */
typedef struct _php_randgen_entry {
- void (*srand)(long seed);
- long (*rand)(void);
+ void (*srand)(long seed TSRMLS_DC);
+ long (*rand)(TSRMLS_D);
long randmax;
char *ini_str;
} php_randgen_entry;
PHP_FUNCTION(mt_rand);
PHP_FUNCTION(mt_getrandmax);
-PHPAPI long php_rand(void);
+PHPAPI long php_rand(TSRMLS_D);
PHPAPI long php_rand_range(long min, long max TSRMLS_DC);
-PHPAPI double php_drand(void);
-PHPAPI long php_randmax(void);
+PHPAPI double php_drand(TSRMLS_D);
+PHPAPI long php_randmax(TSRMLS_D);
#endif /* PHP_RAND_H */
php_randgen_entry *php_randgen_entries[PHP_RAND_NUMRANDS];
#define PHP_HAS_SRAND(which) (php_randgen_entries[which] && php_randgen_entries[which]->srand)
-#define PHP_SRAND(which,seed) ((*(php_randgen_entries[which]->srand))(seed))
-#define PHP_RAND(which) ((*(php_randgen_entries[which]->rand))())
+#define PHP_SRAND(which,seed) ((*(php_randgen_entries[which]->srand))(seed TSRMLS_CC))
+#define PHP_RAND(which) ((*(php_randgen_entries[which]->rand))(TSRMLS_C))
#define PHP_RANDMAX(which) (php_randgen_entries[which]->randmax)
#define PHP_RAND_INISTR(which) (php_randgen_entries[which]->ini_str)
PHP_MINIT(rand_mt)(INIT_FUNC_ARGS_PASSTHRU);
/* lcg not yet implemented */
php_randgen_entries[PHP_RAND_LCG] = NULL;
+
+ return SUCCESS;
}
/* TODO: check that this function is called on the start of each script
PHP_SRAND(i,SRAND_A_RANDOM_SEED);
}
}
+
+ return SUCCESS;
}
/* INI */
{ \
zval **seed; \
zval **alg; \
- TSRMLS_FETCH(); \
\
switch (ZEND_NUM_ARGS()) { \
case 0: \
/* rand */
/* {{{ PHPAPI long php_rand(void) */
-PHPAPI long php_rand(void)
+PHPAPI long php_rand(TSRMLS_D)
{
return PHP_RAND(CURR_GEN);
}
/* {{{ PHPAPI double php_drand(void)
* returns a double in the range [0,1) */
-PHPAPI double php_drand(void)
+PHPAPI double php_drand(TSRMLS_D)
{
- return (double)php_rand() /
+ return (double)php_rand(TSRMLS_C) /
(double)(PHP_RANDMAX(CURR_GEN)+1.0);
}
/* }}} */
/* {{{ PHPAPI long php_randmax(void)
Returns the maximum value a random number can have */
-PHPAPI long php_randmax(void)
+PHPAPI long php_randmax(TSRMLS_D)
{
return PHP_RANDMAX(CURR_GEN);
}
WRONG_PARAM_COUNT;
}
- RETURN_LONG( php_randmax());
+ RETURN_LONG( php_randmax(TSRMLS_C));
}
/* }}} */
WRONG_PARAM_COUNT;
}
- RETURN_LONG( php_randmax() );
+ RETURN_LONG( php_randmax(TSRMLS_C) );
}
/* }}} */
static void _php_srand_mt(long seed TSRMLS_DC);
static inline long _php_rand_mt_reload(TSRMLS_D);
-static long _php_rand_mt(void);
+static long _php_rand_mt(TSRMLS_D);
/*
* Melo: it could be 2^^32 but we only use 2^^31 to maintain
* compatibility with the previous php_rand
PHP_RANDMAX_MT, /* long randmax */
"mt" /* char *ini_str */
);
+
+ return SUCCESS;
}
#define N MT_N /* length of state vector */
/*}}}*/
/* {{{ long _php_rand_mt(void) */
-static long _php_rand_mt(void)
+static long _php_rand_mt(TSRMLS_D)
{
php_uint32 y;
- TSRMLS_FETCH();
if(--BG(left) < 0)
return(_php_rand_mt_reload(TSRMLS_C));
#include <stdlib.h>
-#include "php.h"
+#include "php_reentrancy.h"
#include "php_rand.h"
-
#include "basic_functions.h"
-
/* rand() & co (thread safe this time!): */
-static void _php_srand_sys(long seed)
+static void _php_srand_sys(long seed TSRMLS_DC)
{
BG(rand_sys_seed) = (unsigned int) seed;
}
-static long _php_rand_sys(void)
+static long _php_rand_sys(TSRMLS_D)
{
- return (long) rand_r(&BG(rand_sys_seed));
+ return (long) php_rand_r(&BG(rand_sys_seed));
}
PHP_MINIT_FUNCTION(rand_sys)
php_randgen_entries[PHP_RAND_LRAND48] = NULL;
#endif
+ return SUCCESS;
}
/*