@@ -142,6 +142,14 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
142142 (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
143143 (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
144144
145+ #define IsXLogFileName (fname ) \
146+ (strlen(fname) == 24 && strspn(fname, "0123456789ABCDEF") == 24)
147+
148+ #define IsPartialXLogFileName (fname ) \
149+ (strlen(fname) == 24 + strlen(".partial") && \
150+ strspn(fname, "0123456789ABCDEF") == 24 && \
151+ strcmp((fname) + 24, ".partial") == 0)
152+
145153#define XLogFromFileName (fname , tli , logSegNo ) \
146154 do { \
147155 uint32 log; \
@@ -158,6 +166,11 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
158166#define TLHistoryFileName (fname , tli ) \
159167 snprintf(fname, MAXFNAMELEN, "%08X.history", tli)
160168
169+ #define IsTLHistoryFileName (fname ) \
170+ (strlen(fname) == 8 + strlen(".history") && \
171+ strspn(fname, "0123456789ABCDEF") == 8 && \
172+ strcmp((fname) + 8, ".history") == 0)
173+
161174#define TLHistoryFilePath (path , tli ) \
162175 snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli)
163176
@@ -169,6 +182,11 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
169182 (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
170183 (uint32) ((logSegNo) % XLogSegmentsPerXLogId), offset)
171184
185+ #define IsBackupHistoryFileName (fname ) \
186+ (strlen(fname) > 24 && \
187+ strspn(fname, "0123456789ABCDEF") == 24 && \
188+ strcmp((fname) + strlen(fname) - strlen(".backup"), ".backup") == 0)
189+
172190#define BackupHistoryFilePath (path , tli , logSegNo , offset ) \
173191 snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli, \
174192 (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
0 commit comments