diff options
| author | Christian Grothoff <christian@grothoff.org> | 2019-06-18 13:20:43 +0200 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2019-06-18 13:20:43 +0200 | 
| commit | 30903b93866900e41bb4defa4d7b8ee49f3f3f99 (patch) | |
| tree | a685970ab2930654da5578f1fece9567e91cffab /src | |
| parent | 6066ffcb9b07f9e2709d0382afa3fc05c52e21c7 (diff) | |
reduce code duplication
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/exchange_api_common.c | 2 | ||||
| -rw-r--r-- | src/lib/testing_api_cmd_refresh.c | 7 | ||||
| -rw-r--r-- | src/lib/testing_auditor_api_cmd_deposit_confirmation.c | 18 | ||||
| -rw-r--r-- | src/util/amount.c | 53 | 
4 files changed, 55 insertions, 25 deletions
| diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c index a9c6e16c..72eb9ace 100644 --- a/src/lib/exchange_api_common.c +++ b/src/lib/exchange_api_common.c @@ -42,7 +42,6 @@ TALER_EXCHANGE_verify_coin_history (const char *currency,                                      struct TALER_Amount *total)  {    size_t len; -  int add;    struct TALER_Amount rtotal;    if (NULL == history) @@ -64,6 +63,7 @@ TALER_EXCHANGE_verify_coin_history (const char *currency,                                          &rtotal));    for (size_t off=0;off<len;off++)    { +    int add;      json_t *transaction;      struct TALER_Amount amount;      const char *type; diff --git a/src/lib/testing_api_cmd_refresh.c b/src/lib/testing_api_cmd_refresh.c index ec885581..d0b589b1 100644 --- a/src/lib/testing_api_cmd_refresh.c +++ b/src/lib/testing_api_cmd_refresh.c @@ -873,12 +873,10 @@ refresh_melt_run (void *cls,  {    struct RefreshMeltState *rms = cls;    unsigned int num_fresh_coins; -  const struct TALER_TESTING_Command *coin_command;    /* FIXME:  this should be dynamic */    const char *melt_fresh_amounts[] = {      "EUR:1", "EUR:1", "EUR:1", "EUR:0.1",      NULL}; -  const struct TALER_EXCHANGE_DenomPublicKey *fresh_pk;    rms->is = is;    rms->noreveal_index = UINT16_MAX; @@ -895,8 +893,9 @@ refresh_melt_run (void *cls,      struct TALER_Amount fresh_amount;      const struct TALER_DenominationSignature *melt_sig;      const struct TALER_EXCHANGE_DenomPublicKey *melt_denom_pub; - +    const struct TALER_TESTING_Command *coin_command;      const struct MeltDetails *md = &rms->melted_coin; +      if (NULL == (coin_command        = TALER_TESTING_interpreter_lookup_command          (is, md->coin_reference))) @@ -945,6 +944,8 @@ refresh_melt_run (void *cls,      for (unsigned int i=0;i<num_fresh_coins;i++)      { +      const struct TALER_EXCHANGE_DenomPublicKey *fresh_pk; +        if (GNUNET_OK != TALER_string_to_amount          (melt_fresh_amounts[i], &fresh_amount))        { diff --git a/src/lib/testing_auditor_api_cmd_deposit_confirmation.c b/src/lib/testing_auditor_api_cmd_deposit_confirmation.c index 70fd01e1..95871ef1 100644 --- a/src/lib/testing_auditor_api_cmd_deposit_confirmation.c +++ b/src/lib/testing_auditor_api_cmd_deposit_confirmation.c @@ -263,7 +263,23 @@ deposit_confirmation_run (void *cls,    GNUNET_assert (GNUNET_OK ==                   TALER_string_to_amount (dcs->amount_without_fee,                                           &amount_without_fee)); - +  { +    struct GNUNET_JSON_Specification spec[] = { +      GNUNET_JSON_spec_absolute_time ("timestamp", ×tamp), +      GNUNET_JSON_spec_absolute_time ("refund_deadline", &refund_deadline), +      GNUNET_JSON_spec_end() +    }; + +    if (GNUNET_OK != +        GNUNET_JSON_parse (contract_terms, +                           spec, +                           NULL, NULL)) +    { +      GNUNET_break (0); +      TALER_TESTING_interpreter_fail (is); +      return; +    } +  }    dcs->dc = TALER_AUDITOR_deposit_confirmation      (dcs->auditor,       &h_wire, diff --git a/src/util/amount.c b/src/util/amount.c index b3e9b54e..ac6be27d 100644 --- a/src/util/amount.c +++ b/src/util/amount.c @@ -539,6 +539,29 @@ TALER_amount_normalize (struct TALER_Amount *amount)  /** + * Convert the fraction of @a amount to a string + * in decimals. + * + * @param amount value to convert + * @param tail[out] where to write the reesult + */ +static void +amount_to_tail (const struct TALER_Amount *amount, +                char tail[TALER_AMOUNT_FRAC_LEN + 1]) +{ +  uint32_t n = amount->fraction; +  unsigned int i; + +  for (i = 0; (i < TALER_AMOUNT_FRAC_LEN) && (0 != n); i++) +  { +    tail[i] = '0' + (n / (TALER_AMOUNT_FRAC_BASE / 10)); +    n = (n * 10) % (TALER_AMOUNT_FRAC_BASE); +  } +  tail[i] = '\0'; +} + + +/**   * Convert amount to string.   *   * @param amount amount to convert to string @@ -548,9 +571,6 @@ char *  TALER_amount_to_string (const struct TALER_Amount *amount)  {    char *result; -  unsigned int i; -  uint32_t n; -  char tail[TALER_AMOUNT_FRAC_LEN + 1];    struct TALER_Amount norm;    if (GNUNET_YES != TALER_amount_is_valid (amount)) @@ -558,14 +578,12 @@ TALER_amount_to_string (const struct TALER_Amount *amount)    norm = *amount;    GNUNET_break (GNUNET_SYSERR !=                  TALER_amount_normalize (&norm)); -  if (0 != (n = norm.fraction)) +  if (0 != norm.fraction)    { -    for (i = 0; (i < TALER_AMOUNT_FRAC_LEN) && (0 != n); i++) -    { -      tail[i] = '0' + (n / (TALER_AMOUNT_FRAC_BASE / 10)); -      n = (n * 10) % (TALER_AMOUNT_FRAC_BASE); -    } -    tail[i] = '\0'; +    char tail[TALER_AMOUNT_FRAC_LEN + 1]; + +    amount_to_tail (&norm, +                    tail);      GNUNET_asprintf (&result,                       "%s:%llu.%s",                       norm.currency, @@ -594,9 +612,6 @@ const char *  TALER_amount2s (const struct TALER_Amount *amount)  {    static char result[TALER_AMOUNT_FRAC_LEN + TALER_CURRENCY_LEN + 3 + 12]; -  unsigned int i; -  uint32_t n; -  char tail[TALER_AMOUNT_FRAC_LEN + 1];    struct TALER_Amount norm;    if (GNUNET_YES != TALER_amount_is_valid (amount)) @@ -604,14 +619,12 @@ TALER_amount2s (const struct TALER_Amount *amount)    norm = *amount;    GNUNET_break (GNUNET_SYSERR !=                  TALER_amount_normalize (&norm)); -  if (0 != (n = norm.fraction)) +  if (0 != norm.fraction)    { -    for (i = 0; (i < TALER_AMOUNT_FRAC_LEN) && (0 != n); i++) -    { -      tail[i] = '0' + (n / (TALER_AMOUNT_FRAC_BASE / 10)); -      n = (n * 10) % (TALER_AMOUNT_FRAC_BASE); -    } -    tail[i] = '\0'; +    char tail[TALER_AMOUNT_FRAC_LEN + 1]; + +    amount_to_tail (&norm, +                    tail);      GNUNET_snprintf (result,                       sizeof (result),                       "%s:%llu.%s", | 
