1 2#include <stdlib.h> 3 4/* C++Builder defines a "random" macro */ 5#undef random 6 7#ifdef __native_client__ 8# define memset(dst, c, n) xmemset(dst, c, n) 9 10static void * 11xmemset(void *dst, int c, size_t n) 12{ 13 unsigned char * dst_ = (unsigned char *) dst; 14 const unsigned char c_ = (unsigned char) c; 15 size_t i; 16 17 for (i = 0; i < n; i++) { 18 dst_[i] = c_; 19 } 20 return dst; 21} 22#endif 23 24#ifdef __EMSCRIPTEN__ 25# define strcmp(s1, s2) xstrcmp(s1, s2) 26 27static int 28strcmp(const char *s1, const char *s2) 29{ 30 while (*s1 == *s2++) { 31 if (*s1++ == 0) { 32 return 0; 33 } 34 } 35 return *(unsigned char *) s1 - *(unsigned char *) --s2; 36} 37#endif 38 39#ifdef _WIN32 40static void 41srandom(unsigned seed) 42{ 43 srand(seed); 44} 45 46static long 47random(void) 48{ 49 return (long) rand(); 50} 51#endif 52