<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/81d6ca25476e212cfc5de409b9ce7166b56087dd">https://github.com/macports/macports-base/commit/81d6ca25476e212cfc5de409b9ce7166b56087dd</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 81d6ca25 Enable pragma fullfsync on each reg_attach
</span>81d6ca25 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 81d6ca25476e212cfc5de409b9ce7166b56087dd
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Apr 12 05:42:08 2021 +1000

<span style='display:block; white-space:pre;color:#404040;'>    Enable pragma fullfsync on each reg_attach
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Turns out it's not persistent, unlike journal_mode = WAL.
</span>---
 src/cregistry/registry.c   | 26 ++++++++++++++++++++++++++
 src/cregistry/registry.h   |  1 +
 src/registry2.0/registry.c |  1 +
 3 files changed, 28 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/registry.c b/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index af91ee25..c78b63a9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,6 +169,32 @@ int reg_close(reg_registry* reg, reg_error* errPtr) {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Do some initial configuration of a registry object.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @param [in] reg     the registry to configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @return             true if success; false if failure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_configure(reg_registry* reg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    int result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    /* All this does currently is turn on fullfsync. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (sqlite3_prepare_v2(reg->db, "PRAGMA fullfsync = 1", -1, &stmt, NULL) == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        int r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sqlite3_step(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            r = sqlite3_reset(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if (r == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                result = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } while (r == SQLITE_BUSY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (stmt) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        sqlite3_finalize(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /**
  * Attaches a registry database to the registry object. Prior to calling this,
  * the registry object is not actually connected to the registry. This function
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/registry.h b/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 52570701..acd3bd66 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -85,6 +85,7 @@ typedef struct {
</span> 
 int reg_open(reg_registry** regPtr, reg_error* errPtr);
 int reg_close(reg_registry* reg, reg_error* errPtr);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_configure(reg_registry* reg);
</span> 
 int reg_attach(reg_registry* reg, const char* path, reg_error* errPtr);
 int reg_detach(reg_registry* reg, reg_error* errPtr);
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/registry.c b/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index f67973e9..f9bfad9a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -202,6 +202,7 @@ static int registry_open(ClientData clientData UNUSED, Tcl_Interp* interp,
</span>         if (reg == NULL) {
             return TCL_ERROR;
         } else if (reg_attach(reg, path, &error)) {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+            reg_configure(reg);
</span>             return TCL_OK;
         } else {
             return registry_failed(interp, &error);
</pre><pre style='margin:0'>

</pre>