summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-01-15 11:48:41 +0100
committerChristian Grothoff <christian@grothoff.org>2020-01-15 11:48:49 +0100
commit4547bfb318bfad96b12694dd93a50f50717478b6 (patch)
treee60f6e1f8b2da591004015cdde7875c8518adb18 /src/util
parent4c488a1d0ee668486d03fb5ad64924411c81b9a1 (diff)
downloadexchange-4547bfb318bfad96b12694dd93a50f50717478b6.tar.gz
exchange-4547bfb318bfad96b12694dd93a50f50717478b6.tar.bz2
exchange-4547bfb318bfad96b12694dd93a50f50717478b6.zip
fix fakebank account vs. full payto confusion
Diffstat (limited to 'src/util')
-rw-r--r--src/util/test_payto.c8
-rw-r--r--src/util/util.c31
2 files changed, 39 insertions, 0 deletions
diff --git a/src/util/test_payto.c b/src/util/test_payto.c
index 0a570ee5..f0247f19 100644
--- a/src/util/test_payto.c
+++ b/src/util/test_payto.c
@@ -78,6 +78,14 @@ main (int argc,
"payto://x-taler-bank/localhost:1080/alice");
CHECK ("http://localhost:1080/alice",
r);
+ r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/alice");
+ CHECK ("alice",
+ r);
+ r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1");
+ CHECK ("alice",
+ r);
return 0;
}
diff --git a/src/util/util.c b/src/util/util.c
index 531bd27f..7f5e60e4 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -710,4 +710,35 @@ TALER_xtalerbank_account_url_from_payto (const char *payto)
}
+/**
+ * Obtain the account name from a payto URL.
+ *
+ * @param payto an x-taler-bank payto URL
+ * @return only the account name from the @a payto URL, NULL if not an x-taler-bank
+ * payto URL
+ */
+char *
+TALER_xtalerbank_account_from_payto (const char *payto)
+{
+ const char *beg;
+ const char *end;
+
+ if (0 != strncasecmp (payto,
+ "payto://x-taler-bank/",
+ strlen ("payto://x-taler-bank/")))
+ return NULL;
+ beg = strchr (&payto[strlen ("payto://x-taler-bank/")],
+ '/');
+ if (NULL == beg)
+ return NULL;
+ beg++;
+ end = strchr (beg,
+ '?');
+ if (NULL == end)
+ return GNUNET_strdup (beg);
+ return GNUNET_strndup (beg,
+ end - beg);
+}
+
+
/* end of util.c */