#include "platform.h"
#include "gnunet_common.h"
+#define LOG(kind,...) GNUNET_log_from (kind, "util",__VA_ARGS__)
+
+#define LOG_STRERROR(kind,syscall) GNUNET_log_from_strerror (kind, "util", syscall)
+
#ifndef INT_MAX
#define INT_MAX 0x7FFFFFFF
#endif
ret = GNUNET_xmalloc_unchecked_ (size, filename, linenumber);
if (ret == NULL)
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "malloc");
- abort ();
+ LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
+ GNUNET_abort ();
}
return ret;
}
ret = malloc (size);
if (ret == NULL)
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "malloc");
- abort ();
+ LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "malloc");
+ GNUNET_abort ();
}
#ifdef W32_MEM_LIMIT
*((size_t *) ret) = size;
ptr = realloc (ptr, n);
if ((NULL == ptr) && (n > 0))
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "realloc");
- abort ();
+ LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "realloc");
+ GNUNET_abort ();
}
#ifdef W32_MEM_LIMIT
ptr = &((size_t *) ptr)[1];
return ret;
}
+
+/**
+ * Create a copy of the given message.
+ *
+ * @param msg message to copy
+ * @return duplicate of the message
+ */
+struct GNUNET_MessageHeader *
+GNUNET_copy_message (const struct GNUNET_MessageHeader *msg)
+{
+ struct GNUNET_MessageHeader *ret;
+ uint16_t msize;
+
+ msize = ntohs (msg->size);
+ GNUNET_assert (msize >= sizeof (struct GNUNET_MessageHeader));
+ ret = GNUNET_malloc (msize);
+ memcpy (ret, msg, msize);
+ return ret;
+}
+
+
/* end of common_allocation.c */