From f457eb9c232f0e35143aa3ce37480b7b07148c53 Mon Sep 17 00:00:00 2001
From: Bob <bob@example.com>
Date: Sun, 15 Mar 2026 01:23:12 +0000
Subject: [PATCH 4/5] Use null pointer as an empty marker

Here simplehash is being simply used as a Set
NULL pointer is a natural empty marker.
---
 src/bin/pg_rewind/filemap.c | 7 ++++++-
 src/bin/pg_rewind/filemap.h | 2 --
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
index b79c47f925..574a282d84 100644
--- a/src/bin/pg_rewind/filemap.c
+++ b/src/bin/pg_rewind/filemap.c
@@ -45,6 +45,9 @@
 #define SH_KEY					path
 #define SH_HASH_KEY(tb, key)	hash_string(key)
 #define SH_EQUAL(tb, a, b)		(strcmp(a, b) == 0)
+#define SH_ENTRY_EMPTY(entry)   ((entry)->path == NULL)
+#define SH_MAKE_EMPTY(entry)    ((entry)->path = NULL)
+#define SH_MAKE_IN_USE(entry)   ((void)0)
 #define SH_SCOPE				static inline
 #define SH_RAW_ALLOCATOR		pg_malloc0
 #define SH_DECLARE
@@ -68,7 +71,6 @@ static file_entry_t *lookup_filehash_entry(const char *path);
 typedef struct keepwal_entry
 {
 	const char *path;
-	uint32		status;
 } keepwal_entry;
 
 #define SH_PREFIX				keepwal
@@ -77,6 +79,9 @@ typedef struct keepwal_entry
 #define SH_KEY					path
 #define SH_HASH_KEY(tb, key)	hash_string(key)
 #define SH_EQUAL(tb, a, b)		(strcmp(a, b) == 0)
+#define SH_ENTRY_EMPTY(entry)   ((entry)->path == NULL)
+#define SH_MAKE_EMPTY(entry)    ((entry)->path = NULL)
+#define SH_MAKE_IN_USE(entry)   ((void)0)
 #define SH_SCOPE				static inline
 #define SH_RAW_ALLOCATOR		pg_malloc0
 #define SH_DECLARE
diff --git a/src/bin/pg_rewind/filemap.h b/src/bin/pg_rewind/filemap.h
index 4c6dd8740d..b3e67be1da 100644
--- a/src/bin/pg_rewind/filemap.h
+++ b/src/bin/pg_rewind/filemap.h
@@ -56,8 +56,6 @@ typedef enum
  */
 typedef struct file_entry_t
 {
-	uint32		status;			/* hash status */
-
 	const char *path;
 	file_content_type_t content_type;
 
-- 
2.34.1

