forked from patrickmt/mdloader
-
Notifications
You must be signed in to change notification settings - Fork 79
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added support for Visual Studio 2019
- Loading branch information
Showing
9 changed files
with
1,299 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
/* Getopt for Microsoft C | ||
This code is a modification of the Free Software Foundation, Inc. | ||
Getopt library for parsing command line argument the purpose was | ||
to provide a Microsoft Visual C friendly derivative. This code | ||
provides functionality for both Unicode and Multibyte builds. | ||
Date: 02/03/2011 - Ludvik Jerabek - Initial Release | ||
Version: 1.0 | ||
Comment: Supports getopt, getopt_long, and getopt_long_only | ||
and POSIXLY_CORRECT environment flag | ||
License: LGPL | ||
Revisions: | ||
02/03/2011 - Ludvik Jerabek - Initial Release | ||
02/20/2011 - Ludvik Jerabek - Fixed compiler warnings at Level 4 | ||
07/05/2011 - Ludvik Jerabek - Added no_argument, required_argument, optional_argument defs | ||
08/03/2011 - Ludvik Jerabek - Fixed non-argument runtime bug which caused runtime exception | ||
08/09/2011 - Ludvik Jerabek - Added code to export functions for DLL and LIB | ||
02/15/2012 - Ludvik Jerabek - Fixed _GETOPT_THROW definition missing in implementation file | ||
08/01/2012 - Ludvik Jerabek - Created separate functions for char and wchar_t characters so single dll can do both unicode and ansi | ||
10/15/2012 - Ludvik Jerabek - Modified to match latest GNU features | ||
06/19/2015 - Ludvik Jerabek - Fixed maximum option limitation caused by option_a (255) and option_w (65535) structure val variable | ||
**DISCLAIMER** | ||
THIS MATERIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, | ||
EITHER EXPRESS OR IMPLIED, INCLUDING, BUT Not LIMITED TO, THE | ||
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | ||
PURPOSE, OR NON-INFRINGEMENT. SOME JURISDICTIONS DO NOT ALLOW THE | ||
EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT | ||
APPLY TO YOU. IN NO EVENT WILL I BE LIABLE TO ANY PARTY FOR ANY | ||
DIRECT, INDIRECT, SPECIAL OR OTHER CONSEQUENTIAL DAMAGES FOR ANY | ||
USE OF THIS MATERIAL INCLUDING, WITHOUT LIMITATION, ANY LOST | ||
PROFITS, BUSINESS INTERRUPTION, LOSS OF PROGRAMS OR OTHER DATA ON | ||
YOUR INFORMATION HANDLING SYSTEM OR OTHERWISE, EVEN If WE ARE | ||
EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | ||
*/ | ||
#ifndef __GETOPT_H_ | ||
#define __GETOPT_H_ | ||
|
||
#ifdef _GETOPT_API | ||
#undef _GETOPT_API | ||
#endif | ||
|
||
#if defined(EXPORTS_GETOPT) && defined(STATIC_GETOPT) | ||
#error "The preprocessor definitions of EXPORTS_GETOPT and STATIC_GETOPT can only be used individually" | ||
#elif defined(STATIC_GETOPT) | ||
#pragma message("Warning static builds of getopt violate the Lesser GNU Public License") | ||
#define _GETOPT_API | ||
#elif defined(EXPORTS_GETOPT) | ||
#pragma message("Exporting getopt library") | ||
#define _GETOPT_API __declspec(dllexport) | ||
#else | ||
#pragma message("Importing getopt library") | ||
#define _GETOPT_API __declspec(dllimport) | ||
#endif | ||
|
||
// Change behavior for C\C++ | ||
#ifdef __cplusplus | ||
#define _BEGIN_EXTERN_C extern "C" { | ||
#define _END_EXTERN_C } | ||
#define _GETOPT_THROW throw() | ||
#else | ||
#define _BEGIN_EXTERN_C | ||
#define _END_EXTERN_C | ||
#define _GETOPT_THROW | ||
#endif | ||
|
||
// Standard GNU options | ||
#define null_argument 0 /*Argument Null*/ | ||
#define no_argument 0 /*Argument Switch Only*/ | ||
#define required_argument 1 /*Argument Required*/ | ||
#define optional_argument 2 /*Argument Optional*/ | ||
|
||
// Shorter Options | ||
#define ARG_NULL 0 /*Argument Null*/ | ||
#define ARG_NONE 0 /*Argument Switch Only*/ | ||
#define ARG_REQ 1 /*Argument Required*/ | ||
#define ARG_OPT 2 /*Argument Optional*/ | ||
|
||
#include <string.h> | ||
#include <wchar.h> | ||
|
||
_BEGIN_EXTERN_C | ||
|
||
extern _GETOPT_API int optind; | ||
extern _GETOPT_API int opterr; | ||
extern _GETOPT_API int optopt; | ||
|
||
// Ansi | ||
struct option_a | ||
{ | ||
const char* name; | ||
int has_arg; | ||
int *flag; | ||
int val; | ||
}; | ||
extern _GETOPT_API char *optarg_a; | ||
extern _GETOPT_API int getopt_a(int argc, char *const *argv, const char *optstring) _GETOPT_THROW; | ||
extern _GETOPT_API int getopt_long_a(int argc, char *const *argv, const char *options, const struct option_a *long_options, int *opt_index) _GETOPT_THROW; | ||
extern _GETOPT_API int getopt_long_only_a(int argc, char *const *argv, const char *options, const struct option_a *long_options, int *opt_index) _GETOPT_THROW; | ||
|
||
// Unicode | ||
struct option_w | ||
{ | ||
const wchar_t* name; | ||
int has_arg; | ||
int *flag; | ||
int val; | ||
}; | ||
extern _GETOPT_API wchar_t *optarg_w; | ||
extern _GETOPT_API int getopt_w(int argc, wchar_t *const *argv, const wchar_t *optstring) _GETOPT_THROW; | ||
extern _GETOPT_API int getopt_long_w(int argc, wchar_t *const *argv, const wchar_t *options, const struct option_w *long_options, int *opt_index) _GETOPT_THROW; | ||
extern _GETOPT_API int getopt_long_only_w(int argc, wchar_t *const *argv, const wchar_t *options, const struct option_w *long_options, int *opt_index) _GETOPT_THROW; | ||
|
||
_END_EXTERN_C | ||
|
||
#undef _BEGIN_EXTERN_C | ||
#undef _END_EXTERN_C | ||
#undef _GETOPT_THROW | ||
#undef _GETOPT_API | ||
|
||
#ifdef _UNICODE | ||
#define getopt getopt_w | ||
#define getopt_long getopt_long_w | ||
#define getopt_long_only getopt_long_only_w | ||
#define option option_w | ||
#define optarg optarg_w | ||
#else | ||
#define getopt getopt_a | ||
#define getopt_long getopt_long_a | ||
#define getopt_long_only getopt_long_only_a | ||
#define option option_a | ||
#define optarg optarg_a | ||
#endif | ||
#endif // __GETOPT_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
|
||
Microsoft Visual Studio Solution File, Format Version 12.00 | ||
# Visual Studio Version 16 | ||
VisualStudioVersion = 16.0.30804.86 | ||
MinimumVisualStudioVersion = 10.0.40219.1 | ||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mdloader", "mdloader.vcxproj", "{DCB8F5C8-7EDC-425D-854D-B8A2F8879F4C}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|x86 = Debug|x86 | ||
Release|x86 = Release|x86 | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{DCB8F5C8-7EDC-425D-854D-B8A2F8879F4C}.Debug|x86.ActiveCfg = Debug|Win32 | ||
{DCB8F5C8-7EDC-425D-854D-B8A2F8879F4C}.Debug|x86.Build.0 = Debug|Win32 | ||
{DCB8F5C8-7EDC-425D-854D-B8A2F8879F4C}.Release|x86.ActiveCfg = Release|Win32 | ||
{DCB8F5C8-7EDC-425D-854D-B8A2F8879F4C}.Release|x86.Build.0 = Release|Win32 | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
GlobalSection(ExtensibilityGlobals) = postSolution | ||
SolutionGuid = {9DE6276C-A03E-407A-A98D-74B002CDB2A3} | ||
EndGlobalSection | ||
EndGlobal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
<?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> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<None Include="applet-mdflash.bin" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClCompile Include="getopt.c" /> | ||
<ClCompile Include="mdloader_common.c" /> | ||
<ClCompile Include="mdloader_parser.c" /> | ||
<ClCompile Include="mdloader_win32.c" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClInclude Include="getopt.h" /> | ||
<ClInclude Include="mdloader_common.h" /> | ||
<ClInclude Include="mdloader_parser.h" /> | ||
</ItemGroup> | ||
<PropertyGroup Label="Globals"> | ||
<VCProjectVersion>16.0</VCProjectVersion> | ||
<Keyword>Win32Proj</Keyword> | ||
<ProjectGuid>{dcb8f5c8-7edc-425d-854d-b8a2f8879f4c}</ProjectGuid> | ||
<RootNamespace>mdloader</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>v142</PlatformToolset> | ||
<CharacterSet>MultiByte</CharacterSet> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>false</UseDebugLibraries> | ||
<PlatformToolset>v142</PlatformToolset> | ||
<WholeProgramOptimization>true</WholeProgramOptimization> | ||
<CharacterSet>MultiByte</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" /> | ||
</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" /> | ||
</ImportGroup> | ||
<PropertyGroup Label="UserMacros" /> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<LinkIncremental>true</LinkIncremental> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
<LinkIncremental>false</LinkIncremental> | ||
</PropertyGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<SDLCheck>true</SDLCheck> | ||
<PreprocessorDefinitions>STATIC_GETOPT;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
<ConformanceMode>true</ConformanceMode> | ||
<LanguageStandard_C>Default</LanguageStandard_C> | ||
</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>STATIC_GETOPT;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
<ConformanceMode>true</ConformanceMode> | ||
<LanguageStandard_C>Default</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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
<?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="mdloader_common.c"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="mdloader_parser.c"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="mdloader_win32.c"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="getopt.c"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClInclude Include="mdloader_parser.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="mdloader_common.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="getopt.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<None Include="applet-mdflash.bin"> | ||
<Filter>Resource Files</Filter> | ||
</None> | ||
</ItemGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters