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 | |
parent | 6066ffcb9b07f9e2709d0382afa3fc05c52e21c7 (diff) |
reduce code duplication
-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 a9c6e16cf..72eb9ace5 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 ec8855810..d0b589b12 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 70fd01e1c..95871ef17 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 b3e9b54e8..ac6be27d8 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", |