*/
/* Needed for POSIX.1-2008 locale functions */
+/** @cond PRIVATE */
#define _XOPEN_SOURCE 700
+/** @endcond */
#include <config.h>
#include <ctype.h>
#include <locale.h>
*/
/**
- * @private
- *
* Convert a string representation of a numeric value (base 10) to a long integer. The
* conversion is strict and will fail if the complete string does not represent
* a valid long integer. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atol(const char *str, long *ret)
{
}
/**
- * @private
- *
* Convert a string representation of a numeric value (base 10) to an integer. The
* conversion is strict and will fail if the complete string does not represent
* a valid integer. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atoi(const char *str, int *ret)
{
}
/**
- * @private
- *
* Convert a string representation of a numeric value to a double. The
* conversion is strict and will fail if the complete string does not represent
* a valid double. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atod(const char *str, double *ret)
{
}
/**
- * @private
- *
* Convert a string representation of a numeric value to a float. The
* conversion is strict and will fail if the complete string does not represent
* a valid float. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atof(const char *str, float *ret)
{
}
/**
- * @private
- *
* Convert a string representation of a numeric value to a double. The
* conversion is strict and will fail if the complete string does not represent
* a valid double. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atod_ascii(const char *str, double *ret)
{
}
/**
- * @private
- *
* Convert a string representation of a numeric value to a float. The
* conversion is strict and will fail if the complete string does not represent
* a valid float. The function sets errno according to the details of the
*
* @retval SR_OK Conversion successful.
* @retval SR_ERR Failure.
+ *
+ * @private
*/
SR_PRIV int sr_atof_ascii(const char *str, float *ret)
{
#endif
}
+/**
+ * Convert a sequence of bytes to its textual representation ("hex dump").
+ *
+ * Callers should free the allocated GString. See sr_hexdump_free().
+ *
+ * @param[in] data Pointer to the byte sequence to print.
+ * @param[in] len Number of bytes to print.
+ *
+ * @return NULL upon error, newly allocated GString pointer otherwise.
+ *
+ * @private
+ */
+SR_PRIV GString *sr_hexdump_new(const uint8_t *data, const size_t len)
+{
+ GString *s;
+ size_t i;
+
+ s = g_string_sized_new(3 * len);
+ for (i = 0; i < len; i++) {
+ if (i)
+ g_string_append_c(s, ' ');
+ g_string_append_printf(s, "%02x", data[i]);
+ }
+
+ return s;
+}
+
+/**
+ * Free a hex dump text that was created by sr_hexdump_new().
+ *
+ * @param[in] s Pointer to the GString to release.
+ *
+ * @private
+ */
+SR_PRIV void sr_hexdump_free(GString *s)
+{
+ if (s)
+ g_string_free(s, TRUE);
+}
+
/**
* Convert a string representation of a numeric value to a sr_rational.
*