diff --git a/src/sbbs3/addfiles.c b/src/sbbs3/addfiles.c
deleted file mode 100644
index ea65f54613b311067b32a59592d9c54b56ff8f72..0000000000000000000000000000000000000000
--- a/src/sbbs3/addfiles.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* DEPRECATED: Add files to a Synchronet file database(s) */
-
-/****************************************************************************
- * @format.tab-size 4		(Plain Text/Source Code File Header)			*
- * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
- *																			*
- * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
- *																			*
- * This program is free software; you can redistribute it and/or			*
- * modify it under the terms of the GNU General Public License				*
- * as published by the Free Software Foundation; either version 2			*
- * of the License, or (at your option) any later version.					*
- * See the GNU General Public License for more details: gpl.txt or			*
- * http://www.fsf.org/copyleft/gpl.html										*
- *																			*
- * For Synchronet coding style and modification guidelines, see				*
- * http://www.synchro.net/source.html										*
- *																			*
- * Note: If this box doesn't appear square, then you need to fix your tabs.	*
- ****************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char** argv)
-{
-	fprintf(stderr, "\nThe Synchronet ADDFILES utility has been deprecated and replaced by 'addfiles.js'\n");
-	fprintf(stderr, "\nSee https://wiki.synchro.net/module:addfiles for details\n");
-	return EXIT_FAILURE;
-}
diff --git a/src/sbbs3/addfiles.vcxproj b/src/sbbs3/addfiles.vcxproj
deleted file mode 100644
index df2090d6e55e6c5bf16164079fb7504c8b8feaa6..0000000000000000000000000000000000000000
--- a/src/sbbs3/addfiles.vcxproj
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1E6135A4-035D-4B39-B233-569A15ADE3A2}</ProjectGuid>
-    <RootNamespace>addfiles</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\build\target_ia32.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\build\target_ia32.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.exe.release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.release\addfiles\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.exe.debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.debug\addfiles\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.release/addfiles.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;WRAPPER_EXPORTS;WIN32;_CONSOLE;SBBS_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.release\addfiles/addfiles.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.release\addfiles/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.release\addfiles/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.release\addfiles/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.release/addfiles.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\msvc.win32.exe.release/addfiles.pdb</ProgramDatabaseFile>
-      <GenerateMapFile>true</GenerateMapFile>
-      <MapFileName>.\msvc.win32.release\addfiles/addfiles.map</MapFileName>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <IgnoreSpecificDefaultLibraries>libcd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>netapi32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.release/addfiles.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.debug/addfiles.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;WRAPPER_EXPORTS;WIN32;_CONSOLE;SBBS_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.debug\addfiles/addfiles.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.debug\addfiles/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.debug\addfiles/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.debug\addfiles/</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.debug/addfiles.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\msvc.win32.exe.debug/addfiles.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <IgnoreSpecificDefaultLibraries>libcd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-      <AdditionalDependencies>netapi32.lib;wsock32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.debug/addfiles.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="addfiles.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/sbbs3/delfiles.c b/src/sbbs3/delfiles.c
deleted file mode 100644
index f13e89f38da4c915151b6a75258f771599b788f8..0000000000000000000000000000000000000000
--- a/src/sbbs3/delfiles.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* DEPRECATED: Program to delete expired files from a Synchronet file database */
-
-/****************************************************************************
- * @format.tab-size 4		(Plain Text/Source Code File Header)			*
- * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
- *																			*
- * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
- *																			*
- * This program is free software; you can redistribute it and/or			*
- * modify it under the terms of the GNU General Public License				*
- * as published by the Free Software Foundation; either version 2			*
- * of the License, or (at your option) any later version.					*
- * See the GNU General Public License for more details: gpl.txt or			*
- * http://www.fsf.org/copyleft/gpl.html										*
- *																			*
- * For Synchronet coding style and modification guidelines, see				*
- * http://www.synchro.net/source.html										*
- *																			*
- * Note: If this box doesn't appear square, then you need to fix your tabs.	*
- ****************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char** argv)
-{
-	fprintf(stderr, "\nThe Synchronet DELFILES utility has been deprecated and replaced by 'delfiles.js'\n");
-	fprintf(stderr, "\nSee https://wiki.synchro.net/module:delfiles for details\n");
-	return EXIT_FAILURE;
-}
diff --git a/src/sbbs3/delfiles.vcxproj b/src/sbbs3/delfiles.vcxproj
deleted file mode 100644
index 0f838df2afbc41133a5644de7ce031b3824bec06..0000000000000000000000000000000000000000
--- a/src/sbbs3/delfiles.vcxproj
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\build\target_ia32.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\build\target_ia32.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.exe.release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.release\delfiles\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.exe.debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.debug\delfiles\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.release/delfiles.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;WIN32;_CONSOLE;SBBS_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.release\delfiles/delfiles.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.release\delfiles/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.release\delfiles/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.release\delfiles/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.release/delfiles.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\msvc.win32.exe.release/delfiles.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.release/delfiles.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.debug/delfiles.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;WIN32;_CONSOLE;SBBS_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.debug\delfiles/delfiles.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.debug\delfiles/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.debug\delfiles/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.debug\delfiles/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.debug/delfiles.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\msvc.win32.exe.debug/delfiles.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.debug/delfiles.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="delfiles.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/sbbs3/filelist.c b/src/sbbs3/filelist.c
deleted file mode 100644
index 1b21074e4e33042842e281131d16dfe1f2e7eba0..0000000000000000000000000000000000000000
--- a/src/sbbs3/filelist.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/* Utility to create list of files from Synchronet file directories */
-/* DEPRECATED: use filelist.js instead */
-
-/* Default list format is FILES.BBS, but file size, uploader, upload date */
-/* and other information can be included. */
-
-/****************************************************************************
- * @format.tab-size 4		(Plain Text/Source Code File Header)			*
- * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
- *																			*
- * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
- *																			*
- * This program is free software; you can redistribute it and/or			*
- * modify it under the terms of the GNU General Public License				*
- * as published by the Free Software Foundation; either version 2			*
- * of the License, or (at your option) any later version.					*
- * See the GNU General Public License for more details: gpl.txt or			*
- * http://www.fsf.org/copyleft/gpl.html										*
- *																			*
- * For Synchronet coding style and modification guidelines, see				*
- * http://www.synchro.net/source.html										*
- *																			*
- * Note: If this box doesn't appear square, then you need to fix your tabs.	*
- ****************************************************************************/
-
-#include "datewrap.h"
-#include "load_cfg.h"
-#include "str_util.h"
-#include "date_str.h"
-#include "nopen.h"
-#include "filedat.h"
-#include "dat_rec.h"
-#include "smblib.h"
-#include <stdarg.h>
-
-#define FILELIST_VER "3.19"
-
-#define MAX_NOTS 25
-
-scfg_t scfg;
-
-char * crlf = "\r\n";
-
-/****************************************************************************/
-/****************************************************************************/
-int lprintf(int level, const char *fmat, ...)
-{
-	va_list argptr;
-	char    sbuf[256];
-	int     chcount;
-
-	va_start(argptr, fmat);
-	chcount = vsprintf(sbuf, fmat, argptr);
-	va_end(argptr);
-	truncsp(sbuf);
-	printf("%s\n", sbuf);
-	return chcount;
-}
-
-char* byteStr(uint64_t value)
-{
-	static char tmp[128];
-
-	if (value >= (1024 * 1024 * 1024))
-		SAFEPRINTF(tmp, "%5.1fG", value / (1024.0 * 1024.0 * 1024.0));
-	else if (value >= (1024 * 1024))
-		SAFEPRINTF(tmp, "%5.1fM", value / (1024.0 * 1024.0));
-	else if (value >= 1024)
-		SAFEPRINTF(tmp, "%5.1fK", value / 1024.0);
-	else
-		SAFEPRINTF(tmp, "%5" PRIu64 "B", value);
-	return tmp;
-}
-
-void fprint_extdesc(FILE* fp, char* ext_desc, int desc_off)
-{
-	for (char* line = strtok(ext_desc, "\n"); line != NULL; line = strtok(NULL, "\n")) {
-		truncsp(line);
-		fprintf(fp, "\n%*s %s", desc_off, "", line);
-	}
-}
-
-#define ALL     (1L << 0)
-#define PAD     (1L << 1)
-#define HDR     (1L << 2)
-#define CREDITS (1L << 3)
-#define EXT     (1L << 4)
-#define ULN     (1L << 5)
-#define ULD     (1L << 6)
-#define DLS     (1L << 7)
-#define DLD     (1L << 8)
-#define NOD     (1L << 9)
-#define PLUS    (1L << 10)
-#define MINUS   (1L << 11)
-#define JST     (1L << 12)
-#define NOE     (1L << 13)
-#define DFD     (1L << 14)
-#define TOT     (1L << 15)
-#define AUTO    (1L << 16)
-
-/*********************/
-/* Entry point (duh) */
-/*********************/
-int main(int argc, char **argv)
-{
-	char     revision[16];
-	char     error[512];
-	char *   p, str[256], fname[256], ext, not[MAX_NOTS][9];
-	int      i, j, dirnum, libnum, desc_off, lines, nots = 0;
-	char*    omode = "w";
-	char*    pattern = NULL;
-	ulong    m, misc = 0, total_files = 0, dir_files;
-	uint64_t cdt;
-	uint64_t total_cdt = 0;
-	long     max_age = 0;
-	FILE*    out = NULL;
-
-	sscanf("$Revision: 1.22 $", "%*s %s", revision);
-
-	fprintf(stderr, "\nFILELIST v%s-%s (rev %s) - Generate Synchronet File "
-	        "Directory Lists\n"
-	        , FILELIST_VER
-	        , PLATFORM_DESC
-	        , revision
-	        );
-
-	if (argc < 2
-	    || strcmp(argv[1], "-?") == 0
-	    || strcmp(argv[1], "-help") == 0
-	    || strcmp(argv[1], "--help") == 0
-	    || strcmp(argv[1], "/?") == 0
-	    ) {
-		printf("\n   usage: FILELIST <dir_code or - for ALL> [switches] [outfile]\n");
-		printf("\n");
-		printf("switches: -lib name All directories of specified library\n");
-		printf("          -not code Exclude specific directory\n");
-		printf("          -new days Include only new files in listing (days since upload)\n");
-		printf("          -inc pattern Only list files matching 'pattern'\n");
-		printf("          -cat      Concatenate to existing 'outfile'\n");
-		printf("          -pad      Pad filename with spaces\n");
-		printf("          -hdr      Include directory headers\n");
-		printf("          -cdt      Include credit value\n");
-		printf("          -tot      Include credit totals\n");
-		printf("          -uln      Include uploader's name\n");
-		printf("          -uld      Include upload date\n");
-		printf("          -dfd      Include current file date\n");
-		printf("          -dld      Include download date\n");
-		printf("          -dls      Include total downloads\n");
-		printf("          -nod      Exclude normal descriptions\n");
-		printf("          -noe      Exclude normal descriptions, if extended "
-		       "exists\n");
-		printf("          -ext      Include extended descriptions\n");
-		printf("          -jst      Justify extended descriptions under normal\n");
-		printf("          -+        Include extended description indicator (+)\n");
-		printf("          --        Include offline file indicator (-)\n");
-		printf("          -*        Short-hand for -pad -hdr -cdt -+ --\n");
-		exit(0);
-	}
-
-	p = getenv("SBBSCTRL");
-	if (p == NULL) {
-		printf("\nSBBSCTRL environment variable not set.\n");
-		printf("\nExample: SET SBBSCTRL=/sbbs/ctrl\n");
-		exit(1);
-	}
-
-	memset(&scfg, 0, sizeof(scfg));
-	scfg.size = sizeof(scfg);
-	SAFECOPY(scfg.ctrl_dir, get_ctrl_dir(/* warn: */ TRUE));
-
-	if (chdir(scfg.ctrl_dir) != 0)
-		fprintf(stderr, "!ERROR changing directory to: %s", scfg.ctrl_dir);
-
-	printf("\nLoading configuration files from %s\n", scfg.ctrl_dir);
-	if (!load_cfg(&scfg, /* text: */ NULL, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) {
-		fprintf(stderr, "!ERROR loading configuration files: %s\n", error);
-		exit(1);
-	}
-	SAFECOPY(scfg.temp_dir, "../temp");
-	prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir));
-
-	dirnum = libnum = -1;
-	if (argv[1][0] == '*' || strcmp(argv[1], "-") == 0)
-		misc |= ALL;
-	else if (argv[1][0] != '-') {
-		strupr(argv[1]);
-		for (i = 0; i < scfg.total_dirs; i++)
-			if (!stricmp(argv[1], scfg.dir[i]->code))
-				break;
-		if (i >= scfg.total_dirs) {
-			printf("\nDirectory code '%s' not found.\n", argv[1]);
-			exit(1);
-		}
-		dirnum = i;
-	}
-	for (i = 1; i < argc; i++) {
-		if (!stricmp(argv[i], "-lib")) {
-			if (dirnum != -1) {
-				printf("\nBoth directory code and -lib parameters were used.\n");
-				exit(1);
-			}
-			i++;
-			if (i >= argc) {
-				printf("\nLibrary short name must follow -lib parameter.\n");
-				exit(1);
-			}
-			strupr(argv[i]);
-			for (j = 0; j < scfg.total_libs; j++)
-				if (!stricmp(scfg.lib[j]->sname, argv[i]))
-					break;
-			if (j >= scfg.total_libs) {
-				printf("\nLibrary short name '%s' not found.\n", argv[i]);
-				exit(1);
-			}
-			libnum = j;
-		}
-		else if (!stricmp(argv[i], "-not")) {
-			if (nots >= MAX_NOTS) {
-				printf("\nMaximum number of -not options (%u) exceeded.\n"
-				       , MAX_NOTS);
-				exit(1);
-			}
-			i++;
-			if (i >= argc) {
-				printf("\nDirectory internal code must follow -not parameter.\n");
-				exit(1);
-			}
-			SAFECOPY(not[nots], argv[i]);
-			nots++;
-		}
-		else if (!stricmp(argv[i], "-all")) {
-			if (dirnum != -1) {
-				printf("\nBoth directory code and -all parameters were used.\n");
-				exit(1);
-			}
-			if (libnum != -1) {
-				printf("\nBoth library name and -all parameters were used.\n");
-				exit(1);
-			}
-			misc |= ALL;
-		}
-		else if (!stricmp(argv[i], "-new")) {
-			i++;
-			if (i >= argc) {
-				printf("\nDays since upload must follow -new parameter.\n");
-				exit(1);
-			}
-			max_age = strtol(argv[i], NULL, 0);
-		}
-		else if (!stricmp(argv[i], "-inc")) {
-			i++;
-			if (i >= argc) {
-				printf("\nFilename pattern must follow -inc parameter.\n");
-				exit(1);
-			}
-			pattern = argv[i];
-		}
-		else if (!stricmp(argv[i], "-pad"))
-			misc |= PAD;
-		else if (!stricmp(argv[i], "-cat"))
-			omode = "a";
-		else if (!stricmp(argv[i], "-hdr"))
-			misc |= HDR;
-		else if (!stricmp(argv[i], "-cdt"))
-			misc |= CREDITS;
-		else if (!stricmp(argv[i], "-tot"))
-			misc |= TOT;
-		else if (!stricmp(argv[i], "-ext"))
-			misc |= EXT;
-		else if (!stricmp(argv[i], "-uln"))
-			misc |= ULN;
-		else if (!stricmp(argv[i], "-uld"))
-			misc |= ULD;
-		else if (!stricmp(argv[i], "-dld"))
-			misc |= DLD;
-		else if (!stricmp(argv[i], "-dfd"))
-			misc |= DFD;
-		else if (!stricmp(argv[i], "-dls"))
-			misc |= DLS;
-		else if (!stricmp(argv[i], "-nod"))
-			misc |= NOD;
-		else if (!stricmp(argv[i], "-jst"))
-			misc |= (EXT | JST);
-		else if (!stricmp(argv[i], "-noe"))
-			misc |= (EXT | NOE);
-		else if (!stricmp(argv[i], "-+"))
-			misc |= PLUS;
-		else if (!stricmp(argv[i], "--"))
-			misc |= MINUS;
-		else if (!stricmp(argv[i], "-*"))
-			misc |= (HDR | PAD | CREDITS | PLUS | MINUS);
-
-		else if (i != 1) {
-			if (argv[i][0] == '*' || strcmp(argv[i], "-") == 0) {
-				misc |= AUTO;
-				continue;
-			}
-			if ((out = fopen(argv[i], omode)) == NULL) {
-				perror(argv[i]);
-				exit(1);
-			}
-		}
-	}
-
-	if (!out && !(misc & AUTO)) {
-		printf("\nOutput file not specified, using FILES.BBS in each "
-		       "directory.\n");
-		misc |= AUTO;
-	}
-
-	for (i = 0; i < scfg.total_dirs; i++) {
-		dir_files = 0;
-		if (!(misc & ALL) && i != dirnum && scfg.dir[i]->lib != libnum)
-			continue;
-		for (j = 0; j < nots; j++)
-			if (!stricmp(not[j], scfg.dir[i]->code))
-				break;
-		if (j < nots)
-			continue;
-		if (misc & AUTO && scfg.dir[i]->seqdev)    /* CD-ROM */
-			continue;
-		printf("\n%-*s %s", LEN_GSNAME, scfg.lib[scfg.dir[i]->lib]->sname, scfg.dir[i]->lname);
-
-		smb_t smb;
-		int   result = smb_open_dir(&scfg, &smb, i);
-		if (result != SMB_SUCCESS) {
-			fprintf(stderr, "!ERROR %d (%s) opening file base: %s\n", result, smb.last_error, scfg.dir[i]->code);
-			continue;
-		}
-		time_t  t = 0;
-		if (max_age)
-			t = time(NULL) - (max_age * 24 * 60 * 60);
-		size_t  file_count;
-		file_t* file_list = loadfiles(&smb
-		                              , /* filespec: */ pattern, /* time: */ t, file_detail_extdesc, scfg.dir[i]->sort, &file_count);
-
-		if (misc & AUTO) {
-			SAFEPRINTF(str, "%sFILES.BBS", scfg.dir[i]->path);
-			if ((out = fopen(str, omode)) == NULL) {
-				perror(str);
-				exit(1);
-			}
-		}
-		if (misc & HDR) {
-			safe_snprintf(fname, sizeof(fname), "%-*s      %-*s       Files: %4lu"
-			              , LEN_GSNAME, scfg.lib[scfg.dir[i]->lib]->sname
-			              , LEN_SLNAME, scfg.dir[i]->lname, (ulong)smb.status.total_files);
-			fprintf(out, "%s\n", fname);
-			memset(fname, '-', strlen(fname));
-			fprintf(out, "%s\n", fname);
-		}
-		if (!smb.status.total_files) {
-			if (misc & AUTO)
-				fclose(out);
-			continue;
-		}
-		int longest_filename = 12;
-		for (m = 0; m < file_count; m++) {
-			int fnamelen = strlen(file_list[m].name);
-			if (fnamelen > longest_filename)
-				longest_filename = fnamelen;
-		}
-		for (m = 0; m < file_count && !ferror(out); m++) {
-			file_t file = file_list[m];
-
-			if (misc & PAD) {
-				char* ext = getfext(file.name);
-				if (ext == NULL)
-					ext = "";
-				fprintf(out, "%-*.*s%s"
-				        , (int)(longest_filename - strlen(ext))
-				        , (int)(strlen(file.name) - strlen(ext))
-				        , file.name, ext);
-			} else
-				fprintf(out, "%-*s", longest_filename, file.name);
-
-			total_files++;
-			dir_files++;
-
-			if (misc & PLUS && file.extdesc != NULL && file.extdesc[0])
-				fputc('+', out);
-			else
-				fputc(' ', out);
-
-			desc_off = longest_filename;
-			if (misc & (CREDITS | TOT)) {
-				cdt = file.cost;
-				total_cdt += cdt;
-				if (misc & CREDITS) {
-//					fprintf(out,"%7lu",cdt);
-					desc_off += fprintf(out, "%7s", byteStr(cdt));
-				}
-			}
-
-			if (misc & MINUS) {
-				SAFEPRINTF2(str, "%s%s", scfg.dir[i]->path, file.name);
-				if (!fexistcase(str))
-					fputc('-', out);
-				else
-					fputc(' ', out);
-			}
-			else
-				fputc(' ', out);
-			desc_off++;
-
-			if (misc & DFD) {
-				SAFEPRINTF2(str, "%s%s", scfg.dir[i]->path, file.name);
-				desc_off += fprintf(out, "%s ", unixtodstr(&scfg, (time32_t)fdate(str), str));
-			}
-
-			if (misc & ULD) {
-				desc_off += fprintf(out, "%s ", unixtodstr(&scfg, file.hdr.when_imported.time, str));
-			}
-
-			if (misc & ULN) {
-				desc_off += fprintf(out, "%-25s ", file.from);
-			}
-
-			if (misc & DLD) {
-				desc_off += fprintf(out, "%s ", unixtodstr(&scfg, file.hdr.last_downloaded, str));
-			}
-
-			if (misc & DLS) {
-				desc_off += fprintf(out, "%5u ", file.hdr.times_downloaded);
-			}
-
-			if (file.extdesc != NULL && file.extdesc[0])
-				ext = 1; /* extended description exists */
-			else
-				ext = 0; /* it doesn't */
-
-			if (!(misc & NOD) && !(misc & NOE && ext)) {
-				fprintf(out, "%s", file.desc);
-			}
-
-			if (misc & EXT && ext) {                           /* Print ext desc */
-
-				lines = 0;
-				if (!(misc & NOE)) {
-					truncsp((char*)file.extdesc);
-					fprint_extdesc(out, file.extdesc, (misc & JST) ? desc_off : 0);
-					lines++;
-				}
-			}
-			fprintf(out, "\n");
-		}
-		smb_close(&smb);
-		if (dir_files)
-			fprintf(out, "\n"); /* blank line at end of dir */
-		if (misc & AUTO)
-			fclose(out);
-		freefiles(file_list, file_count);
-	}
-
-	if (misc & TOT && !(misc & AUTO))
-		fprintf(out, "TOTALS\n------\n%" PRIu64 " credits/bytes in %lu files.\n"
-		        , total_cdt, total_files);
-	printf("\nDone.\n");
-	return 0;
-}
diff --git a/src/sbbs3/filelist.vcxproj b/src/sbbs3/filelist.vcxproj
deleted file mode 100644
index 5a380de3693658cf680cadcc45967f4a5c4c99b1..0000000000000000000000000000000000000000
--- a/src/sbbs3/filelist.vcxproj
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{262BC06F-0649-4D56-A353-97038D531C2B}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v141_xp</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\xpdev\xpdev.props" />
-    <Import Project="..\smblib\smblib.props" />
-    <Import Project="..\build\undeprecate.props" />
-    <Import Project="..\build\target_ia32.props" />
-    <Import Project="..\hash\hash.props" />
-    <Import Project="..\encode\encode.props" />
-    <Import Project="..\..\3rdp\win32.release\libarchive\libarchive.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-    <Import Project="..\xpdev\xpdev.props" />
-    <Import Project="..\smblib\smblib.props" />
-    <Import Project="..\build\undeprecate.props" />
-    <Import Project="..\build\target_ia32.props" />
-    <Import Project="..\hash\hash.props" />
-    <Import Project="..\encode\encode.props" />
-    <Import Project="..\..\3rdp\win32.release\libarchive\libarchive.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.exe.release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\msvc.win32.release\filelist\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.exe.debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\msvc.win32.debug\filelist\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.release/filelist.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;WIN32;_CONSOLE;SBBS_EXPORTS;WRAPPER_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.release\filelist/filelist.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.release\filelist/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.release\filelist/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.release\filelist/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.release/filelist.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ProgramDatabaseFile>.\msvc.win32.exe.release/filelist.pdb</ProgramDatabaseFile>
-      <GenerateMapFile>true</GenerateMapFile>
-      <MapFileName>.\msvc.win32.release\filelist/filelist.map</MapFileName>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.release/filelist.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Midl>
-      <TypeLibraryName>.\msvc.win32.exe.debug/filelist.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;WIN32;_CONSOLE;SBBS_EXPORTS;WRAPPER_EXPORTS;NO_SOCKET_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeaderOutputFile>.\msvc.win32.debug\filelist/filelist.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\msvc.win32.debug\filelist/</AssemblerListingLocation>
-      <ObjectFileName>.\msvc.win32.debug\filelist/</ObjectFileName>
-      <ProgramDataBaseFileName>.\msvc.win32.debug\filelist/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Link>
-      <OutputFile>.\msvc.win32.exe.debug/filelist.exe</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\msvc.win32.exe.debug/filelist.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>.\msvc.win32.exe.debug/filelist.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="dat_rec.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="date_str.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="filedat.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="filelist.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="getstats.c" />
-    <ClCompile Include="sauce.c" />
-    <ClCompile Include="trash.c" />
-    <ClCompile Include="userdat.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\smblib\smblib.vcxproj">
-      <Project>{d674842b-2f41-42cb-9426-b3c4b0682574}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\xpdev\xpdev.vcxproj">
-      <Project>{7428a1e8-56b7-4868-9c0e-29d031689feb}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="load_cfg.vcxproj">
-      <Project>{08fc395f-bc60-499d-9ce9-170ed718bb94}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/src/sbbs3/objects.mk b/src/sbbs3/objects.mk
index 4261783d089a46ab189cad975c1678a018cf9c31..d31a5fda0704a65583766ebffd9e9b857aa28b58 100644
--- a/src/sbbs3/objects.mk
+++ b/src/sbbs3/objects.mk
@@ -176,18 +176,6 @@ ECHOCFG_OBJS = \
 			$(UIFC_OBJS) \
 			$(MTOBJODIR)/nopen$(OFILE)
 
-ADDFILES_OBJS =		$(OBJODIR)/addfiles$(OFILE)
-
-FILELIST_OBJS = 	$(LOAD_CFG_OBJS) \
-			$(OBJODIR)/filelist$(OFILE) \
-			$(OBJODIR)/date_str$(OFILE) \
-			$(OBJODIR)/dat_rec$(OFILE) \
-			$(OBJODIR)/filedat$(OFILE) \
-			$(OBJODIR)/sauce$(OFILE) \
-			$(OBJODIR)/getstats$(OFILE) \
-			$(OBJODIR)/userdat$(OFILE) \
-			$(OBJODIR)/trash$(OFILE)
-
 MAKEUSER_OBJS = 	$(LOAD_CFG_OBJS) \
 			$(OBJODIR)/makeuser$(OFILE) \
 			$(OBJODIR)/date_str$(OFILE) \
@@ -252,8 +240,6 @@ SLOG_OBJS = \
 			$(OBJODIR)/slog$(OFILE) \
 			$(OBJODIR)/nopen$(OFILE)
 
-DELFILES_OBJS = 	$(OBJODIR)/delfiles$(OFILE)
-
 DUPEFIND_OBJS = 	$(LOAD_CFG_OBJS) \
 			$(OBJODIR)/dupefind$(OFILE)
 
diff --git a/src/sbbs3/sbbs3.sln b/src/sbbs3/sbbs3.sln
index 9d4275eee20e94413f072534370707c837e8fcfb..61b64062c57389113c0aac0aeebdbf204ecf65fb 100644
--- a/src/sbbs3/sbbs3.sln
+++ b/src/sbbs3/sbbs3.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 17
 VisualStudioVersion = 17.7.34031.279
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addfiles", "addfiles.vcxproj", "{1E6135A4-035D-4B39-B233-569A15ADE3A2}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ans2asc", "ans2asc.vcxproj", "{6351C9CE-4ECE-49BE-9FDC-383AD7517CE0}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asc2ans", "asc2ans.vcxproj", "{918E29F5-FF7B-482A-9271-9FCD58C1CCB0}"
@@ -15,14 +13,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chksmb", "chksmb.vcxproj",
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conio", "..\conio\conio.vcxproj", "{84592E48-27CA-48A6-B9C6-243D2347A578}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "delfiles", "delfiles.vcxproj", "{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dupefind", "dupefind.vcxproj", "{D80E94E4-09D7-4A2A-B850-67C5ABB5ABDA}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echocfg", "echocfg.vcxproj", "{91A5D0BE-90BC-4795-8833-CE5C4D484B4A}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filelist", "filelist.vcxproj", "{262BC06F-0649-4D56-A353-97038D531C2B}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fixsmb", "fixsmb.vcxproj", "{1595CD8A-D141-46FE-B712-61F16C5D700F}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ftpsrvr", "ftpsrvr.vcxproj", "{CB07F1CA-85D3-429B-92D5-A7650C97AB1A}"
@@ -110,10 +104,6 @@ Global
 		Release|Win32 = Release|Win32
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{1E6135A4-035D-4B39-B233-569A15ADE3A2}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1E6135A4-035D-4B39-B233-569A15ADE3A2}.Debug|Win32.Build.0 = Debug|Win32
-		{1E6135A4-035D-4B39-B233-569A15ADE3A2}.Release|Win32.ActiveCfg = Release|Win32
-		{1E6135A4-035D-4B39-B233-569A15ADE3A2}.Release|Win32.Build.0 = Release|Win32
 		{6351C9CE-4ECE-49BE-9FDC-383AD7517CE0}.Debug|Win32.ActiveCfg = Debug|Win32
 		{6351C9CE-4ECE-49BE-9FDC-383AD7517CE0}.Debug|Win32.Build.0 = Debug|Win32
 		{6351C9CE-4ECE-49BE-9FDC-383AD7517CE0}.Release|Win32.ActiveCfg = Release|Win32
@@ -134,10 +124,6 @@ Global
 		{84592E48-27CA-48A6-B9C6-243D2347A578}.Debug|Win32.Build.0 = Debug|Win32
 		{84592E48-27CA-48A6-B9C6-243D2347A578}.Release|Win32.ActiveCfg = Release|Win32
 		{84592E48-27CA-48A6-B9C6-243D2347A578}.Release|Win32.Build.0 = Release|Win32
-		{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}.Debug|Win32.Build.0 = Debug|Win32
-		{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}.Release|Win32.ActiveCfg = Release|Win32
-		{0A90BF07-F107-49FB-B0D3-E7E12528F3BA}.Release|Win32.Build.0 = Release|Win32
 		{D80E94E4-09D7-4A2A-B850-67C5ABB5ABDA}.Debug|Win32.ActiveCfg = Debug|Win32
 		{D80E94E4-09D7-4A2A-B850-67C5ABB5ABDA}.Debug|Win32.Build.0 = Debug|Win32
 		{D80E94E4-09D7-4A2A-B850-67C5ABB5ABDA}.Release|Win32.ActiveCfg = Release|Win32
@@ -146,10 +132,6 @@ Global
 		{91A5D0BE-90BC-4795-8833-CE5C4D484B4A}.Debug|Win32.Build.0 = Debug|Win32
 		{91A5D0BE-90BC-4795-8833-CE5C4D484B4A}.Release|Win32.ActiveCfg = Release|Win32
 		{91A5D0BE-90BC-4795-8833-CE5C4D484B4A}.Release|Win32.Build.0 = Release|Win32
-		{262BC06F-0649-4D56-A353-97038D531C2B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{262BC06F-0649-4D56-A353-97038D531C2B}.Debug|Win32.Build.0 = Debug|Win32
-		{262BC06F-0649-4D56-A353-97038D531C2B}.Release|Win32.ActiveCfg = Release|Win32
-		{262BC06F-0649-4D56-A353-97038D531C2B}.Release|Win32.Build.0 = Release|Win32
 		{1595CD8A-D141-46FE-B712-61F16C5D700F}.Debug|Win32.ActiveCfg = Debug|Win32
 		{1595CD8A-D141-46FE-B712-61F16C5D700F}.Debug|Win32.Build.0 = Debug|Win32
 		{1595CD8A-D141-46FE-B712-61F16C5D700F}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/src/sbbs3/targets.mk b/src/sbbs3/targets.mk
index 117d6154752e99ab29222e25edeed021062f2d67..15afff69d76ae1b311521c0aa905e6fa4d05c2e8 100644
--- a/src/sbbs3/targets.mk
+++ b/src/sbbs3/targets.mk
@@ -21,15 +21,12 @@ CHKSMB		= $(EXEODIR)/chksmb$(EXEFILE)
 SMBUTIL		= $(EXEODIR)/smbutil$(EXEFILE)
 SBBSECHO	= $(EXEODIR)/sbbsecho$(EXEFILE)
 ECHOCFG		= $(EXEODIR)/echocfg$(EXEFILE)
-ADDFILES	= $(EXEODIR)/addfiles$(EXEFILE)
-FILELIST	= $(EXEODIR)/filelist$(EXEFILE)
 MAKEUSER	= $(EXEODIR)/makeuser$(EXEFILE)
 ANS2ASC		= $(EXEODIR)/ans2asc$(EXEFILE)
 ASC2ANS		= $(EXEODIR)/asc2ans$(EXEFILE)
 SEXYZ		= $(EXEODIR)/sexyz$(EXEFILE)
 QWKNODES	= $(EXEODIR)/qwknodes$(EXEFILE)
 SLOG		= $(EXEODIR)/slog$(EXEFILE)
-DELFILES	= $(EXEODIR)/delfiles$(EXEFILE)
 DUPEFIND	= $(EXEODIR)/dupefind$(EXEFILE)
 READSAUCE	= $(EXEODIR)/readsauce$(EXEFILE)
 PKTDUMP		= $(EXEODIR)/pktdump$(EXEFILE)