First commit to this server

This commit is contained in:
Tim O\'Neil committed 2025-08-19 07:49:22 -07:00
1 parent ec05d3601a
commit cce6f6b9c6
44 files changed
+5529 -296

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<InterpExtra>$(ProjectDir)..\extra</InterpExtra>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<BuildMacro Include="InterpExtra">
<Value>$(InterpExtra)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
+18
View File
@@ -0,0 +1,18 @@
# Building interp on Windows
I configured this project with Visual Studio 2022, I hope you have few problems, I've been noticing
over the last few years Microsoft has been pretty good about making visual studio projects back rev
compatible, if you have problems would love to hear about them, send reports to
interval1066@gmail.com.
If you haven't done it yet configure vcpkg to work with vs2022 or your preferred version of VS, I
understand versions after 2017 can do this with varying degrees of success.
Follow the instructions here for installation and configuration of vcpckg:
https://devblogs.microsoft.com/cppblog/vcpkg-is-now-included-with-visual-studio/
That should be all you need to do. In visual studio look at the include list in filesys.h; line
7 should be the include for libconfig.h. If its not underlined then the project is probably
ready to build.
(10/17/2024) All dependancies on libconfig have been removed.
+19
View File
@@ -0,0 +1,19 @@
#pragma once
#include <windows.h>
#define MAX_THREADS 10
typedef struct {
// Add any data members you need for your specific task
// ...
// Add synchronization objects if needed
CRITICAL_SECTION lock;
} TaskData;
typedef struct {
HANDLE hThread;
TaskData* pData;
} ThreadPoolThread;
+62
View File
@@ -0,0 +1,62 @@
#ifndef _UNISTD_H
#define _UNISTD_H 1
/* This file intended to serve as a drop-in replacement for
* unistd.h on Windows.
* Please add functionality as neeeded.
* Original file from: http://stackoverflow.com/a/826027
*/
#include <stdlib.h>
#include <io.h>
#ifndef _MSC_VER
#include <getopt.h> /* getopt at: https://gist.github.com/bikerm16/1b75e2dd20d839dcea58 */
#endif
#include <process.h> /* for getpid() and the exec..() family */
#include <direct.h> /* for _getcwd() and _chdir() */
#define srandom srand
#define random rand
/* Values for the second argument to access.
These may be OR'd together. */
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK R_OK /* execute permission - unsupported in Windows,
use R_OK instead. */
#define F_OK 0 /* Test for existence. */
#define access _access
#define dup2 _dup2
#define execve _execve
#define ftruncate _chsize
#define unlink _unlink
#define fileno _fileno
#define getcwd _getcwd
#define chdir _chdir
#define isatty _isatty
#define lseek _lseek
/* read, write, and close are NOT being #defined here,
* because while there are file handle specific versions for Windows,
* they probably don't work for sockets.
* You need to look at your app and consider whether
* to call e.g. closesocket().
*/
#define ssize_t int
#define size_t ssize_t
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
/* should be in some equivalent to <sys/types.h> */
typedef __int8 int8_t;
typedef __int16 int16_t;
typedef __int32 int32_t;
typedef __int64 int64_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t;
#endif /* unistd.h */
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
+31
View File
@@ -0,0 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34112.27
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "interp", "interp.vcxproj", "{8BF84208-506F-49D2-B39B-4726A266C6E4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Debug|x64.ActiveCfg = Debug|x64
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Debug|x64.Build.0 = Debug|x64
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Debug|x86.ActiveCfg = Debug|Win32
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Debug|x86.Build.0 = Debug|Win32
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Release|x64.ActiveCfg = Release|x64
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Release|x64.Build.0 = Release|x64
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Release|x86.ActiveCfg = Release|Win32
{8BF84208-506F-49D2-B39B-4726A266C6E4}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {552FA45B-1EC0-4A26-B26B-CDB0DE0F816B}
EndGlobalSection
EndGlobal
+173
View File
@@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" 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>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\foo1.c" />
<ClCompile Include="..\src\intrinsic.c" />
<ClCompile Include="..\src\main.c" />
<ClCompile Include="..\src\utils\config.c" />
<ClCompile Include="..\src\utils\filesys.c" />
<ClCompile Include="..\src\utils\huff.c" />
<ClCompile Include="src\winstring_ext.c" />
<ClCompile Include="src\winthread.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\error_info.h" />
<ClInclude Include="..\include\foo1.h" />
<ClInclude Include="..\include\intrinsic.h" />
<ClInclude Include="..\include\logger.h" />
<ClInclude Include="..\include\parser.h" />
<ClInclude Include="..\include\simple_strlib.h" />
<ClInclude Include="..\include\support.h" />
<ClInclude Include="..\include\utils\config.h" />
<ClInclude Include="..\include\utils\filesys.h" />
<ClInclude Include="..\include\utils\huff.h" />
<ClInclude Include="include\winthread.h" />
<ClInclude Include="include\winunistd.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{8bf84208-506f-49d2-b39b-4726a266c6e4}</ProjectGuid>
<RootNamespace>interp</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="PropertySheet.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="PropertySheet.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="PropertySheet.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="PropertySheet.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ExecutablePath>$(VC_ExecutablePath_x64);$(CommonExecutablePath)</ExecutablePath>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
<ExternalIncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</ExternalIncludePath>
</PropertyGroup>
<PropertyGroup Label="Vcpkg">
<VcpkgEnableManifest>false</VcpkgEnableManifest>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(ProjectDir)..\include;$(ProjectDir)..\include\utils;$(ProjectDir)..\windows\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996;4113;28251</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(ProjectDir)..\include;$(ProjectDir)..\include\utils;$(ProjectDir)..\windows\include</AdditionalIncludeDirectories>
<LanguageStandard_C>stdc11</LanguageStandard_C>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+81
View File
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\src\main.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\winstring_ext.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\filesys.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\foo1.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\intrinsic.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\huff.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\winthread.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\utils\config.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\simple_strlib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\support.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\utils\huff.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\winunistd.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\utils\filesys.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\parser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\intrinsic.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\foo1.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\error_info.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\logger.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="include\winthread.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\utils\config.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
+59
View File
@@ -0,0 +1,59 @@
#include <stdlib.h>
#include <stdio.h>
size_t
getline(char** lineptr, size_t* n, FILE* stream)
{
char* bufptr = NULL, * p = bufptr;
size_t size;
int c;
if (lineptr == NULL)
return -1;
if (stream == NULL)
return -1;
if (n == NULL)
return -1;
bufptr = *lineptr;
size = *n;
c = fgetc(stream);
if (c == EOF)
return -1;
if (bufptr == NULL) {
bufptr = malloc(128);
if (bufptr == NULL)
return -1;
size = 128;
}
p = bufptr;
while (c != EOF) {
if ((size_t)(p - bufptr) > (size - 1)) {
size = size + 128;
bufptr = realloc(bufptr, size);
if (bufptr == NULL)
return -1;
p = bufptr + (size - 128);
}
*p++ = c;
if (c == '\n')
break;
c = fgetc(stream);
}
*p++ = '\0';
*lineptr = bufptr;
*n = size;
return p - bufptr - 1;
}
+46
View File
@@ -0,0 +1,46 @@
#include "winthread.h"
TaskData yourTaskData;
ThreadPoolThread g_ThreadPool[MAX_THREADS];
DWORD WINAPI WorkerThread(LPVOID lpParam) {
TaskData* pData = (TaskData*)lpParam;
// Your thread's work goes here
// ...
// Release any resources or perform cleanup if needed
// ...
return 0;
}
void InitializeThreadPool() {
// Initialize the critical section
InitializeCriticalSection(&g_ThreadPool[0].pData->lock);
for (int i = 0; i < MAX_THREADS; ++i) {
// Initialize your task data structure and other necessary members
// ...
// Create threads
g_ThreadPool[i].pData = &yourTaskData; // Set your task data
g_ThreadPool[i].hThread = CreateThread(NULL, 0, WorkerThread, g_ThreadPool[i].pData, 0, NULL);
}
}
void CleanupThreadPool() {
for (int i = 0; i < MAX_THREADS; ++i) {
// Perform any cleanup or signal threads to exit gracefully
// ...
// Wait for thread termination
WaitForSingleObject(g_ThreadPool[i].hThread, INFINITE);
// Close thread handle
CloseHandle(g_ThreadPool[i].hThread);
}
// Delete the critical section
DeleteCriticalSection(&g_ThreadPool[0].pData->lock);
}