aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-06-18 13:20:43 +0200
committerChristian Grothoff <christian@grothoff.org>2019-06-18 13:20:43 +0200
commit30903b93866900e41bb4defa4d7b8ee49f3f3f99 (patch)
treea685970ab2930654da5578f1fece9567e91cffab
parent6066ffcb9b07f9e2709d0382afa3fc05c52e21c7 (diff)
reduce code duplication
-rw-r--r--src/lib/exchange_api_common.c2
-rw-r--r--src/lib/testing_api_cmd_refresh.c7
-rw-r--r--src/lib/testing_auditor_api_cmd_deposit_confirmation.c18
-rw-r--r--src/util/amount.c53
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", &timestamp),
+ 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",