7 //#include <string.h> // for memset
\r
8 #include <sys/types.h>
\r
11 #define B_ERROR(msg) do { fprintf(stderr,"%s\n", msg); exit(1); } while (0)
\r
13 inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)
\r
16 res = fread(ptr,size,nmemb,stream);
\r
18 B_ERROR ("ufread I/O error" );
\r
22 inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
\r
25 res = fwrite(ptr,size,nmemb,stream);
\r
27 B_ERROR("ufwrite I/O error");
\r
31 inline void *urealloc(void *ptr, size_t size)
\r
33 void *dest = realloc(ptr,size);
\r
34 //don't fail if we requested size 0
\r
35 if (dest == NULL && size > 0 )
\r
36 B_ERROR("urealoc error");
\r
39 // realloc and set to 0
\r
40 inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)
\r
42 if (o_size == n_size)
\r
45 void *dest = realloc(ptr,n_size);
\r
46 //don't fail if we requested size 0
\r
47 if (dest == NULL && n_size > 0 )
\r
48 B_ERROR("urecalloc error");
\r
49 // Initialize the new area with 0
\r
50 void * n_area_start = &(((char*) dest)[o_size]);
\r
51 // memset(n_area_start,0, n_size - o_size);
\r
52 for(size_t i = 0; i < n_size - o_size;i++)
\r
53 ((char *) n_area_start)[i] = 0;
\r
57 inline void *ucalloc(size_t nmemb, size_t size)
\r
59 void * dest = calloc(nmemb,size);
\r
60 //don't fail if we requested size 0
\r
61 if (dest == NULL && nmemb > 0 && size > 0 )
\r
62 B_ERROR("ucalloc error");
\r
66 inline void *umalloc(size_t size)
\r
68 void * dest = malloc(size);
\r
69 if (dest == NULL && size > 0)
\r
70 B_ERROR("umaloc error");
\r