diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c
index 4081c92c82b87af9315a7b17c4be044e6514103a..b9e121141288d84cd8c93077c80cbb7921f9baae 100644
--- a/src/sbbs3/filedat.c
+++ b/src/sbbs3/filedat.c
@@ -700,111 +700,6 @@ int archive_type(const char* archive, char* str, size_t size)
 	return result;
 }
 
-str_list_t list_archive_contents(const char* filename, const char* pattern, bool hash, bool sort, char* error, size_t maxerrlen)
-{
-	int result;
-	struct archive *ar;
-	struct archive_entry *entry;
-
-	if((ar = archive_read_new()) == NULL) {
-		safe_snprintf(error, maxerrlen, "archive_read_new() returned NULL");
-		return NULL;
-	}
-	archive_read_support_filter_all(ar);
-	archive_read_support_format_all(ar);
-	if((result = archive_read_open_filename(ar, filename, 10240)) != ARCHIVE_OK) {
-		safe_snprintf(error, maxerrlen, "archive_read_open_filename() returned %d: %s"
-			,result, archive_error_string(ar));
-		archive_read_free(ar);
-		return NULL;
-	}
-
-	str_list_t list = strListInit();
-    if(list == NULL) {
-		safe_snprintf(error, maxerrlen, "strListInit() returned NULL");
-		archive_read_free(ar);
-		return NULL;
-	}
-
-	while(1) {
-		result = archive_read_next_header(ar, &entry);
-		if(result != ARCHIVE_OK) {
-			if(result != ARCHIVE_EOF) {
-				safe_snprintf(error, maxerrlen, "archive_read_next_header() returned %d: %s"
-					,result, archive_error_string(ar));
-				archive_read_free(ar);
-				strListFree(&list);
-				return NULL;
-			}
-			break;
-		}
-
-		const char* pathname = archive_entry_pathname(entry);
-		if(pathname == NULL)
-			continue;
-
-		if(pattern != NULL && *pattern && !wildmatch(pathname, pattern, /* path: */false, /* case-sensitive: */false))
-			continue;
-
-		const char* type;
-		switch(archive_entry_filetype(entry)) {
-			case AE_IFREG:
-				type = "file";
-				break;
-			case AE_IFLNK:
-				type = "link";
-				break;
-			case AE_IFDIR:
-				type = "directory";
-				break;
-			default:
-				continue;
-		}
-
-		strListAppendFormat(&list, "[%s]", pathname);
-		strListAppendFormat(&list, "type=%s", type);
-		strListAppendFormat(&list, "size=%"PRId64, archive_entry_size(entry));
-		strListAppendFormat(&list, "time=%"PRId64,archive_entry_mtime(entry));
-		strListAppendFormat(&list, "mode=%d", archive_entry_mode(entry));
-		strListAppendFormat(&list, "format=%s", archive_format_name(ar));
-		strListAppendFormat(&list, "compression=%s", archive_filter_name(ar, 0));
-
-		if(hash && archive_entry_filetype(entry) == AE_IFREG) {
-			MD5 md5_ctx;
-			SHA1_CTX sha1_ctx;
-			uint8_t md5[MD5_DIGEST_SIZE];
-			uint8_t sha1[SHA1_DIGEST_SIZE];
-			uint32_t crc32 = 0;
-
-			MD5_open(&md5_ctx);
-			SHA1Init(&sha1_ctx);
-
-			const void *buff;
-			size_t size;
-			la_int64_t offset;
-
-			for(;;) {
-				result = archive_read_data_block(ar, &buff, &size, &offset);
-				if(result != ARCHIVE_OK)
-					break;
-				crc32 = crc32i(~crc32, buff, size);
-				MD5_digest(&md5_ctx, buff, size);
-				SHA1Update(&sha1_ctx, buff, size);
-			}
-			MD5_close(&md5_ctx, md5);
-			SHA1Final(&sha1_ctx, sha1);
-			strListAppendFormat(&list, "crc32=0x%lx", crc32);
-			char hex[128];
-			strListAppendFormat(&list, "md5=%s", MD5_hex(hex, md5));
-			strListAppendFormat(&list, "sha1=%s", SHA1_hex(hex, sha1));
-		}
-	}
-	archive_read_free(ar);
-	if(sort)
-		iniSortSections(&list, /* sort_keys: */FALSE);
-	return list;
-}
-
 str_list_t directory(const char* path)
 {
 	int			flags = GLOB_MARK;
diff --git a/src/sbbs3/filedat.h b/src/sbbs3/filedat.h
index 39bdd09908cd0ecb4f9f0d308a754f72cf502cbc..c478d93436201030b66cd374dfdaed170fd62c50 100644
--- a/src/sbbs3/filedat.h
+++ b/src/sbbs3/filedat.h
@@ -67,7 +67,6 @@ DLLEXPORT int			file_sauce_hfields(file_t*, struct sauce_charinfo*);
 DLLEXPORT str_list_t	directory(const char* path);
 DLLEXPORT long			create_archive(const char* archive, const char* format
 						               ,bool with_path, str_list_t file_list, char* error, size_t maxerrlen);
-DLLEXPORT str_list_t	list_archive_contents(const char* archive, const char* pattern, bool hash, bool sort, char* error, size_t maxerrlen);
 DLLEXPORT char*			cmdstr(scfg_t*, user_t*, const char* instr, const char* fpath, const char* fspec, char* cmd, size_t);
 DLLEXPORT long			extract_files_from_archive(const char* archive, const char* outdir, const char* allowed_filename_chars
 						                           ,bool with_path, long max_files, str_list_t file_list, char* error, size_t);