--- /dev/null
+#ifndef COMMON_H_\r
+#define COMMON_H_\r
+\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+//#include <string.h> // for memset\r
+#include <sys/types.h>\r
+#include <unistd.h>\r
+#include <errno.h>\r
+#define B_ERROR(msg) do { fprintf(stderr,"%s\n", msg); exit(1); } while (0)\r
+\r
+inline void ufread(void *ptr, size_t size, size_t nmemb, FILE *stream)\r
+ {\r
+ size_t res;\r
+ res = fread(ptr,size,nmemb,stream);\r
+ if (res < nmemb)\r
+ B_ERROR ("ufread I/O error" );\r
+ return;\r
+ }\r
+\r
+inline void ufwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)\r
+ {\r
+ size_t res;\r
+ res = fwrite(ptr,size,nmemb,stream);\r
+ if (res < nmemb)\r
+ B_ERROR("ufwrite I/O error");\r
+ return;\r
+ }\r
+\r
+inline void *urealloc(void *ptr, size_t size)\r
+ {\r
+ void *dest = realloc(ptr,size);\r
+ //don't fail if we requested size 0\r
+ if (dest == NULL && size > 0 )\r
+ B_ERROR("urealoc error");\r
+ return dest;\r
+ }\r
+// realloc and set to 0\r
+inline void *urecalloc(void *ptr, size_t o_size, size_t n_size)\r
+ {\r
+ if (o_size == n_size)\r
+ return ptr;\r
+ \r
+ void *dest = realloc(ptr,n_size);\r
+ //don't fail if we requested size 0\r
+ if (dest == NULL && n_size > 0 )\r
+ B_ERROR("urecalloc error");\r
+ // Initialize the new area with 0\r
+ void * n_area_start = &(((char*) dest)[o_size]);\r
+ // memset(n_area_start,0, n_size - o_size);\r
+ for(size_t i = 0; i < n_size - o_size;i++)\r
+ ((char *) n_area_start)[i] = 0;\r
+ return dest;\r
+ }\r
+\r
+inline void *ucalloc(size_t nmemb, size_t size)\r
+ {\r
+ void * dest = calloc(nmemb,size);\r
+ //don't fail if we requested size 0\r
+ if (dest == NULL && nmemb > 0 && size > 0 )\r
+ B_ERROR("ucalloc error");\r
+ return dest;\r
+ }\r
+\r
+inline void *umalloc(size_t size) \r
+ {\r
+ void * dest = malloc(size);\r
+ if (dest == NULL && size > 0)\r
+ B_ERROR("umaloc error");\r
+ return dest;\r
+ }\r
+\r
+#endif\r