/*
  This file is part of TALER
  Copyright (C) 2014-2020 Taler Systems SA
  TALER is free software; you can redistribute it and/or modify it under the
  terms of the GNU General Public License as published by the Free Software
  Foundation; either version 3, or (at your option) any later version.
  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
  You should have received a copy of the GNU General Public License along with
  TALER; see the file COPYING.  If not, see 
*/
/**
 * @file util.c
 * @brief Common utility functions
 * @author Sree Harsha Totakura 
 * @author Florian Dold
 * @author Benedikt Mueller
 */
#include "platform.h"
#include "taler_util.h"
const char *
TALER_b2s (const void *buf,
           size_t buf_size)
{
  static GNUNET_THREAD_LOCAL char ret[9];
  struct GNUNET_HashCode hc;
  char *tmp;
  GNUNET_CRYPTO_hash (buf,
                      buf_size,
                      &hc);
  tmp = GNUNET_STRINGS_data_to_string_alloc (&hc,
                                             sizeof (hc));
  memcpy (ret,
          tmp,
          8);
  GNUNET_free (tmp);
  ret[8] = '\0';
  return ret;
}
void
TALER_denom_fee_set_hton (struct TALER_DenomFeeSetNBOP *nbo,
                          const struct TALER_DenomFeeSet *fees)
{
  TALER_amount_hton (&nbo->withdraw,
                     &fees->withdraw);
  TALER_amount_hton (&nbo->deposit,
                     &fees->deposit);
  TALER_amount_hton (&nbo->refresh,
                     &fees->refresh);
  TALER_amount_hton (&nbo->refund,
                     &fees->refund);
}
void
TALER_denom_fee_set_ntoh (struct TALER_DenomFeeSet *fees,
                          const struct TALER_DenomFeeSetNBOP *nbo)
{
  TALER_amount_ntoh (&fees->withdraw,
                     &nbo->withdraw);
  TALER_amount_ntoh (&fees->deposit,
                     &nbo->deposit);
  TALER_amount_ntoh (&fees->refresh,
                     &nbo->refresh);
  TALER_amount_ntoh (&fees->refund,
                     &nbo->refund);
}
enum GNUNET_GenericReturnValue
TALER_denom_fee_check_currency (
  const char *currency,
  const struct TALER_DenomFeeSet *fees)
{
  if (GNUNET_YES !=
      TALER_amount_is_currency (&fees->withdraw,
                                currency))
  {
    GNUNET_break (0);
    return GNUNET_NO;
  }
  if (GNUNET_YES !=
      TALER_amount_is_currency (&fees->deposit,
                                currency))
  {
    GNUNET_break (0);
    return GNUNET_NO;
  }
  if (GNUNET_YES !=
      TALER_amount_is_currency (&fees->refresh,
                                currency))
  {
    GNUNET_break (0);
    return GNUNET_NO;
  }
  if (GNUNET_YES !=
      TALER_amount_is_currency (&fees->refund,
                                currency))
  {
    GNUNET_break (0);
    return GNUNET_NO;
  }
  return GNUNET_OK;
}
#ifdef __APPLE__
char *
strchrnul (const char *s,
           int c)
{
  char *value;
  value = strchr (s,
                  c);
  if (NULL == value)
    value = &s[strlen (s)];
  return value;
}
#endif
/* end of util.c */