1 #ifndef COMPAT_H
   2 #define COMPAT_H
   3 
   4 /*
   5  * Various systems get these things wrong. So
   6  * we create a small compat library for them.
   7  *
   8  *  - zeroed anonymous mmap
   9  *      Missing in MinGW
  10  *  - "string to long double" (C99 strtold())
  11  *      Missing in Solaris and MinGW
  12  */
  13 struct stream;
  14 struct stat;
  15 
  16 /*
  17  * Our "blob" allocator works on chunks that are multiples
  18  * of this size (the underlying allocator may be a mmap that
  19  * cannot handle smaller chunks, for example, so trying to
  20  * allocate blobs that aren't aligned is not going to work).
  21  */
  22 #define CHUNK 32768
  23 
  24 void *blob_alloc(unsigned long size);
  25 void blob_free(void *addr, unsigned long size);
  26 long double string_to_ld(const char *nptr, char **endptr);
  27 
  28 #endif