X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_common.h;h=fdcae66fa19e9cc71dd6bc4e1bf89d03b108fa26;hb=17047b7bcbe3f1756028058a9887416c6afab5d8;hp=dfe8effcd527c429aaba09079b0d252a17220d99;hpb=c9f2b5e884cac0605dd9f2931c7154fb94baeb84;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h index dfe8effcd..fdcae66fa 100644 --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h @@ -66,7 +66,7 @@ extern "C" /** * Version of the API (for entire gnunetutil.so library). */ -#define GNUNET_UTIL_VERSION 0x000A0101 +#define GNUNET_UTIL_VERSION 0x000A0102 /** @@ -556,6 +556,19 @@ GNUNET_logger_remove (GNUNET_Logger logger, void *logger_cls); +/** + * @ingroup logging + * Convert a short hash value to a string (for printing debug messages). + * This is one of the very few calls in the entire API that is + * NOT reentrant! + * + * @param shc the hash code + * @return string + */ +const char * +GNUNET_sh2s (const struct GNUNET_ShortHashCode *shc); + + /** * @ingroup logging * Convert a hash value to a string (for printing debug messages). @@ -597,6 +610,22 @@ const char * GNUNET_i2s (const struct GNUNET_PeerIdentity *pid); +/** + * @ingroup logging + * Convert a peer identity to a string (for printing debug messages). + * This is one of the very few calls in the entire API that is + * NOT reentrant! Identical to #GNUNET_i2s(), except that another + * buffer is used so both #GNUNET_i2s() and #GNUNET_i2s2() can be + * used within the same log statement. + * + * @param pid the peer identity + * @return string form of the pid; will be overwritten by next + * call to #GNUNET_i2s(). + */ +const char * +GNUNET_i2s2 (const struct GNUNET_PeerIdentity *pid); + + /** * @ingroup logging * Convert a peer identity to a string (for printing debug messages). @@ -652,6 +681,16 @@ GNUNET_error_type_to_string (enum GNUNET_ErrorType kind); #define GNUNET_assert_at(cond, f, l) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), f, l); GNUNET_abort_(); } } while(0) +/** + * @ingroup logging + * Use this for fatal errors that cannot be handled + * + * @param cond Condition to evaluate + * @param comp Component string to use for logging + */ +#define GNUNET_assert_from(cond, comp) do { if (! (cond)) { GNUNET_log_from(GNUNET_ERROR_TYPE_ERROR, comp, _("Assertion failed at %s:%d.\n"), __FILE__, __LINE__); GNUNET_abort_(); } } while(0) + + /** * @ingroup logging * Use this for internal assertion violations that are @@ -807,7 +846,7 @@ GNUNET_ntoh_double (double d); * @param m size of the second dimension * @param type name of the struct or union, i.e. pass 'struct Foo'. */ -#define GNUNET_new_array_2d(n, m, type) (type **) GNUNET_xnew_array_2d_ (n, m, sizeof (type)) +#define GNUNET_new_array_2d(n, m, type) (type **) GNUNET_xnew_array_2d_ (n, m, sizeof (type), __FILE__, __LINE__) /** * @ingroup memory @@ -819,7 +858,7 @@ GNUNET_ntoh_double (double d); * @param o size of the third dimension * @param type name of the struct or union, i.e. pass 'struct Foo'. */ -#define GNUNET_new_array_3d(n, m, o, type) (type ***) GNUNET_xnew_array_3d_ (n, m, o, sizeof (type)) +#define GNUNET_new_array_3d(n, m, o, type) (type ***) GNUNET_xnew_array_3d_ (n, m, o, sizeof (type), __FILE__, __LINE__) /** * @ingroup memory @@ -1001,10 +1040,13 @@ GNUNET_xmalloc_ (size_t size, const char *filename, int linenumber); * @param n size of the first dimension * @param m size of the second dimension * @param elementSize size of a single element in bytes + * @param filename where is this call being made (for debugging) + * @param linenumber line where this call is being made (for debugging) * @return allocated memory, never NULL */ void ** -GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize); +GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize, + const char *filename, int linenumber); /** @@ -1018,10 +1060,13 @@ GNUNET_xnew_array_2d_ (size_t n, size_t m, size_t elementSize); * @param m size of the second dimension * @param o size of the third dimension * @param elementSize size of a single element in bytes + * @param filename where is this call being made (for debugging) + * @param linenumber line where this call is being made (for debugging) * @return allocated memory, never NULL */ void *** -GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize); +GNUNET_xnew_array_3d_ (size_t n, size_t m, size_t o, size_t elementSize, + const char *filename, int linenumber); /**