gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] 02/02: reduce code duplication


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] 02/02: reduce code duplication
Date: Tue, 18 Jun 2019 13:20:47 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

commit 30903b93866900e41bb4defa4d7b8ee49f3f3f99
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Jun 18 13:20:43 2019 +0200

    reduce code duplication
---
 src/lib/exchange_api_common.c                      |  2 +-
 src/lib/testing_api_cmd_refresh.c                  |  7 +--
 .../testing_auditor_api_cmd_deposit_confirmation.c | 18 +++++++-
 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", &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 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",

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]