*/
#define GNUNET_NORETURN __attribute__((noreturn))
+#if MINGW
#if __GNUC__ > 3
/**
- * gcc 4.x-ism to pack structures even on W32 (to be used before structs)
+ * gcc 4.x-ism to pack structures even on W32 (to be used before structs);
+ * Using this would cause structs to be unaligned on the stack on Sparc,
+ * so we *only* use this on W32 (see #670578 from Debian); fortunately,
+ * W32 doesn't run on sparc anyway.
*/
#define GNUNET_NETWORK_STRUCT_BEGIN \
_Pragma("pack(push)") \
/**
* gcc 4.x-ism to pack structures even on W32 (to be used after structs)
+ * Using this would cause structs to be unaligned on the stack on Sparc,
+ * so we *only* use this on W32 (see #670578 from Debian); fortunately,
+ * W32 doesn't run on sparc anyway.
*/
#define GNUNET_NETWORK_STRUCT_END _Pragma("pack(pop)")
+
#else
-#ifdef MINGW
#error gcc 4.x or higher required on W32 systems
#endif
+#else
/**
- * Good luck, GNUNET_PACKED should suffice, but this won't work on W32
+ * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32
*/
#define GNUNET_NETWORK_STRUCT_BEGIN
/**
- * Good luck, GNUNET_PACKED should suffice, but this won't work on W32
+ * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32;
*/
#define GNUNET_NETWORK_STRUCT_END
#endif
};
+/**
+ * FIXME
+ * @brief 256-bit hashcode
+ **/
+struct GNUNET_CRYPTO_ShortHashCode
+{
+ uint32_t bits[256 / 8 / sizeof (uint32_t)]; /* = 8 */
+};
+
+
/**
* The identity of the host (basically the SHA-512 hashcode of
* it's public key).
GNUNET_get_log_call_status (int caller_level, const char *comp,
const char *file, const char *function, int line);
#endif
+
+
/**
* Main log function.
*
#endif
+/**
+ * Log error message about missing configuration option.
+ *
+ * @param kind log level
+ * @param section section with missing option
+ * @param option name of missing option
+ */
+void
+GNUNET_log_config_missing (enum GNUNET_ErrorType kind,
+ const char *section,
+ const char *option);
+
+
+/**
+ * Log error message about invalid configuration option value.
+ *
+ * @param kind log level
+ * @param section section with invalid option
+ * @param option name of invalid option
+ * @param required what is required that is invalid about the option
+ */
+void
+GNUNET_log_config_invalid (enum GNUNET_ErrorType kind,
+ const char *section,
+ const char *option,
+ const char *required);
+
+
/**
* Abort the process, generate a core dump if possible.
*/
GNUNET_logger_remove (GNUNET_Logger logger, void *logger_cls);
+/**
+ * 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 hc the short hash code
+ * @return string
+ */
+const char *
+GNUNET_short_h2s (const struct GNUNET_CRYPTO_ShortHashCode * hc);
+
+
+/**
+ * Convert a short hash value to a string (for printing debug messages).
+ * This prints all 104 characters of a hashcode!
+ * This is one of the very few calls in the entire API that is
+ * NOT reentrant!
+ *
+ * @param hc the short hash code
+ * @return string
+ */
+const char *
+GNUNET_short_h2s_full (const struct GNUNET_CRYPTO_ShortHashCode * hc);
+
+
/**
* Convert a hash value to a string (for printing debug messages).
* This is one of the very few calls in the entire API that is