xref: /src/sys/contrib/libsodium/test/quirks/quirks.h (revision 3611ec604864a7d4dcc9a3ea898c80eb35eef8a0)
10ac341f1SConrad Meyer 
20ac341f1SConrad Meyer #include <stdlib.h>
30ac341f1SConrad Meyer 
40ac341f1SConrad Meyer /* C++Builder defines a "random" macro */
50ac341f1SConrad Meyer #undef random
60ac341f1SConrad Meyer 
70ac341f1SConrad Meyer #ifdef __native_client__
80ac341f1SConrad Meyer # define memset(dst, c, n) xmemset(dst, c, n)
90ac341f1SConrad Meyer 
100ac341f1SConrad Meyer static void *
xmemset(void * dst,int c,size_t n)110ac341f1SConrad Meyer xmemset(void *dst, int c, size_t n)
120ac341f1SConrad Meyer {
130ac341f1SConrad Meyer     unsigned char *     dst_ = (unsigned char *) dst;
140ac341f1SConrad Meyer     const unsigned char c_   = (unsigned char) c;
150ac341f1SConrad Meyer     size_t              i;
160ac341f1SConrad Meyer 
170ac341f1SConrad Meyer     for (i = 0; i < n; i++) {
180ac341f1SConrad Meyer         dst_[i] = c_;
190ac341f1SConrad Meyer     }
200ac341f1SConrad Meyer     return dst;
210ac341f1SConrad Meyer }
220ac341f1SConrad Meyer #endif
230ac341f1SConrad Meyer 
240ac341f1SConrad Meyer #ifdef __EMSCRIPTEN__
250ac341f1SConrad Meyer # define strcmp(s1, s2) xstrcmp(s1, s2)
260ac341f1SConrad Meyer 
270ac341f1SConrad Meyer static int
strcmp(const char * s1,const char * s2)280ac341f1SConrad Meyer strcmp(const char *s1, const char *s2)
290ac341f1SConrad Meyer {
300ac341f1SConrad Meyer     while (*s1 == *s2++) {
310ac341f1SConrad Meyer         if (*s1++ == 0) {
320ac341f1SConrad Meyer             return 0;
330ac341f1SConrad Meyer         }
340ac341f1SConrad Meyer     }
350ac341f1SConrad Meyer     return *(unsigned char *) s1 - *(unsigned char *) --s2;
360ac341f1SConrad Meyer }
370ac341f1SConrad Meyer #endif
380ac341f1SConrad Meyer 
390ac341f1SConrad Meyer #ifdef _WIN32
400ac341f1SConrad Meyer static void
srandom(unsigned seed)410ac341f1SConrad Meyer srandom(unsigned seed)
420ac341f1SConrad Meyer {
430ac341f1SConrad Meyer     srand(seed);
440ac341f1SConrad Meyer }
450ac341f1SConrad Meyer 
460ac341f1SConrad Meyer static long
random(void)470ac341f1SConrad Meyer random(void)
480ac341f1SConrad Meyer {
490ac341f1SConrad Meyer     return (long) rand();
500ac341f1SConrad Meyer }
510ac341f1SConrad Meyer #endif
52