diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-2.1.0/src/gdhelpers.c')
-rw-r--r-- | Build/source/libs/gd/libgd-2.1.0/src/gdhelpers.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Build/source/libs/gd/libgd-2.1.0/src/gdhelpers.c b/Build/source/libs/gd/libgd-2.1.0/src/gdhelpers.c new file mode 100644 index 00000000000..33126cb77f9 --- /dev/null +++ b/Build/source/libs/gd/libgd-2.1.0/src/gdhelpers.c @@ -0,0 +1,93 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "gd.h" +#include "gdhelpers.h" +#include <stdlib.h> +#include <string.h> + +/* TBB: gd_strtok_r is not portable; provide an implementation */ + +#define SEP_TEST (separators[*((unsigned char *) s)]) + +char * +gd_strtok_r (char *s, char *sep, char **state) +{ + char separators[256]; + char *result = 0; + memset (separators, 0, sizeof (separators)); + while (*sep) { + separators[*((unsigned char *) sep)] = 1; + sep++; + } + if (!s) { + /* Pick up where we left off */ + s = *state; + } + /* 1. EOS */ + if (!(*s)) { + *state = s; + return 0; + } + /* 2. Leading separators, if any */ + if (SEP_TEST) { + do { + s++; + } while (SEP_TEST); + /* 2a. EOS after separators only */ + if (!(*s)) { + *state = s; + return 0; + } + } + /* 3. A token */ + result = s; + do { + /* 3a. Token at end of string */ + if (!(*s)) { + *state = s; + return result; + } + s++; + } while (!SEP_TEST); + /* 4. Terminate token and skip trailing separators */ + *s = '\0'; + do { + s++; + } while (SEP_TEST); + /* 5. Return token */ + *state = s; + return result; +} + +void * gdCalloc (size_t nmemb, size_t size) +{ + return calloc (nmemb, size); +} + +void * +gdMalloc (size_t size) +{ + return malloc (size); +} + +void * +gdRealloc (void *ptr, size_t size) +{ + return realloc (ptr, size); +} + +void * +gdReallocEx (void *ptr, size_t size) +{ + void *newPtr = gdRealloc (ptr, size); + if (!newPtr && ptr) + gdFree(ptr); + return newPtr; +} + +BGD_DECLARE(void) gdFree (void *ptr) +{ + free (ptr); +} |