nixpkgs/pkgs/by-name/ta/taler-exchange/0001-add-TALER_TEMPLATING_init_path.patch
eljamm e0832b1bd8
taler-merchant: fix wrong templates and spa dirs
The taler-exchange package is wrongfully used when initializing the
`templates` and `spa` directories, which results in the merchant not
working.

Replacing this relative path searching with an absolute path pointing to
the correct merchant directories fixes this.
2024-08-21 16:07:25 +01:00

76 lines
2.1 KiB
Diff

From 3ca51717bbb7643eb0629729d0680cca75ce34c8 Mon Sep 17 00:00:00 2001
From: eljamm <fedi.jamoussi@protonmail.ch>
Date: Wed, 14 Aug 2024 11:14:41 +0100
Subject: [PATCH] add TALER_TEMPLATING_init_path
The merchant uses `TALER_TEMPLATING_init` function from the exchange's
headers, which makes it harder to patch in the correct directory.
To circumvent this, a similar function that takes the templates path
directly is added.
---
src/include/taler_templating_lib.h | 9 +++++++++
src/templating/templating_api.c | 25 +++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/src/include/taler_templating_lib.h b/src/include/taler_templating_lib.h
index 6af6db715..343004ef1 100644
--- a/src/include/taler_templating_lib.h
+++ b/src/include/taler_templating_lib.h
@@ -120,6 +120,16 @@ TALER_TEMPLATING_reply_error (struct MHD_Connection *connection,
enum GNUNET_GenericReturnValue
TALER_TEMPLATING_init (const char *subsystem);
+/**
+ * Preload templates from path.
+ *
+ * @param subsystem name of the subsystem, "merchant" or "exchange"
+ * @param path name of the absolute template path
+ * @return #GNUNET_OK on success
+ */
+enum GNUNET_GenericReturnValue
+TALER_TEMPLATING_init_path (const char *subsystem, const char *path);
+
/**
* Nicely shut down templating subsystem.
diff --git a/src/templating/templating_api.c b/src/templating/templating_api.c
index 88a17c682..a9afa2b70 100644
--- a/src/templating/templating_api.c
+++ b/src/templating/templating_api.c
@@ -506,6 +506,31 @@ TALER_TEMPLATING_init (const char *subsystem)
}
+enum GNUNET_GenericReturnValue
+TALER_TEMPLATING_init_path (const char *subsystem, const char *path)
+{
+ char *dn;
+ int ret;
+
+ {
+ GNUNET_asprintf (&dn,
+ "%s/%s/templates/",
+ path,
+ subsystem);
+ }
+ ret = GNUNET_DISK_directory_scan (dn,
+ &load_template,
+ NULL);
+ GNUNET_free (dn);
+ if (-1 == ret)
+ {
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
+}
+
+
void
TALER_TEMPLATING_done (void)
{
--
2.45.2