From 58f8f72e5253294132fd66a485d108a31213575f Mon Sep 17 00:00:00 2001 From: Joseph Boudou Date: Thu, 29 Nov 2018 12:34:40 +0100 Subject: [PATCH 01/21] Make it compile with GCC 8.2 --- .gitignore | 3 ++- src/readstat_writer.c | 10 +++++----- src/sas/readstat_sas.c | 4 ++-- src/sas/readstat_sas7bcat_write.c | 2 +- src/spss/readstat_por_write.c | 2 +- src/spss/readstat_sav_write.c | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 75c8b389..17bee49a 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ gen.json extract_metadata test_sav_date test_double_decimals +generate_corpus *.csv *.json -*.py \ No newline at end of file +*.py diff --git a/src/readstat_writer.c b/src/readstat_writer.c index 1cb4e2d0..681cf1ab 100644 --- a/src/readstat_writer.c +++ b/src/readstat_writer.c @@ -78,8 +78,8 @@ static void readstat_label_set_free(readstat_label_set_t *label_set) { static void readstat_copy_label(readstat_value_label_t *value_label, const char *label) { if (label && strlen(label)) { value_label->label_len = strlen(label); - value_label->label = malloc(value_label->label_len); - strncpy(value_label->label, label, value_label->label_len); + value_label->label = malloc(value_label->label_len + 1); + strncpy(value_label->label, label, value_label->label_len + 1); } } @@ -258,7 +258,7 @@ readstat_label_set_t *readstat_add_label_set(readstat_writer_t *writer, readstat writer->label_sets[writer->label_sets_count++] = new_label_set; new_label_set->type = type; - strncpy(new_label_set->name, name, sizeof(new_label_set->name)); + memcpy(new_label_set->name, name, sizeof(new_label_set->name)); new_label_set->value_labels = calloc(VALUE_LABELS_INITIAL_CAPACITY, sizeof(readstat_value_label_t)); new_label_set->value_labels_capacity = VALUE_LABELS_INITIAL_CAPACITY; @@ -312,8 +312,8 @@ void readstat_label_string_value(readstat_label_set_t *label_set, const char *va readstat_value_label_t *new_value_label = readstat_add_value_label(label_set, label); if (value && strlen(value)) { new_value_label->string_key_len = strlen(value); - new_value_label->string_key = malloc(new_value_label->string_key_len); - strncpy(new_value_label->string_key, value, new_value_label->string_key_len); + new_value_label->string_key = malloc(new_value_label->string_key_len + 1); + strncpy(new_value_label->string_key, value, new_value_label->string_key_len + 1); } } diff --git a/src/sas/readstat_sas.c b/src/sas/readstat_sas.c index 99b7171b..90bd7eca 100644 --- a/src/sas/readstat_sas.c +++ b/src/sas/readstat_sas.c @@ -281,7 +281,7 @@ readstat_error_t sas_write_header(readstat_writer_t *writer, sas_header_info_t * .host = "W32_VSPRO" }; - strncpy(header_start.file_label, writer->file_label, sizeof(header_start.file_label)); + memcpy(header_start.file_label, writer->file_label, sizeof(header_start.file_label)); retval = readstat_write_bytes(writer, &header_start, sizeof(sas_header_start_t)); if (retval != READSTAT_OK) @@ -334,7 +334,7 @@ readstat_error_t sas_write_header(readstat_writer_t *writer, sas_header_info_t * char release[32]; snprintf(release, sizeof(release), "%1ld.%04dM0", writer->version, 101); - strncpy(header_end.release, release, sizeof(header_end.release)); + memcpy(header_end.release, release, sizeof(header_end.release)); retval = readstat_write_bytes(writer, &header_end, sizeof(sas_header_end_t)); if (retval != READSTAT_OK) diff --git a/src/sas/readstat_sas7bcat_write.c b/src/sas/readstat_sas7bcat_write.c index f6968de2..3ff6c91e 100644 --- a/src/sas/readstat_sas7bcat_write.c +++ b/src/sas/readstat_sas7bcat_write.c @@ -105,7 +105,7 @@ static readstat_error_t sas7bcat_emit_header(readstat_writer_t *writer, sas_head }; memcpy(&header_start.magic, sas7bcat_magic_number, sizeof(header_start.magic)); - strncpy(header_start.file_label, writer->file_label, sizeof(header_start.file_label)); + memcpy(header_start.file_label, writer->file_label, sizeof(header_start.file_label)); return sas_write_header(writer, hinfo, header_start); } diff --git a/src/spss/readstat_por_write.c b/src/spss/readstat_por_write.c index 731cdca1..08c2b597 100644 --- a/src/spss/readstat_por_write.c +++ b/src/spss/readstat_por_write.c @@ -191,7 +191,7 @@ static readstat_error_t por_emit_header(readstat_writer_t *writer, por_write_ctx char vanity[5][40]; memset(vanity, '0', sizeof(vanity)); - strncpy(vanity[1], "ASCII SPSS PORT FILE", 20); + memcpy(vanity[1], "ASCII SPSS PORT FILE", 20); strncpy(vanity[1] + 20, writer->file_label, 20); if (file_label_len < 20) memset(vanity[1] + 20 + file_label_len, ' ', 20 - file_label_len); diff --git a/src/spss/readstat_sav_write.c b/src/spss/readstat_sav_write.c index 7cd4962b..5cd27929 100644 --- a/src/spss/readstat_sav_write.c +++ b/src/spss/readstat_sav_write.c @@ -147,7 +147,7 @@ static readstat_error_t sav_emit_header(readstat_writer_t *writer) { (unsigned int)time_s->tm_mday % 100, months[time_s->tm_mon], (unsigned int)time_s->tm_year % 100); - strncpy(header.creation_date, creation_date, sizeof(header.creation_date)); + memcpy(header.creation_date, creation_date, sizeof(header.creation_date)); char creation_time[sizeof(header.creation_time)+1]; snprintf(creation_time, sizeof(creation_time), @@ -155,7 +155,7 @@ static readstat_error_t sav_emit_header(readstat_writer_t *writer) { (unsigned int)time_s->tm_hour % 100, (unsigned int)time_s->tm_min % 100, (unsigned int)time_s->tm_sec % 100); - strncpy(header.creation_time, creation_time, sizeof(header.creation_time)); + memcpy(header.creation_time, creation_time, sizeof(header.creation_time)); memset(header.file_label, ' ', sizeof(header.file_label)); From f4ce478917ba8aaac56aa97c963ac68831ff4999 Mon Sep 17 00:00:00 2001 From: Frederic Gutierrez Date: Thu, 13 Dec 2018 18:41:02 +0100 Subject: [PATCH 02/21] Visual Studio 2017 compilation process --- .gitignore | 5 +- VS17/ReadStat.App/ReadStat.App.vcxproj | 215 +++++++++++++++++ .../ReadStat.App/ReadStat.App.vcxproj.filters | 162 +++++++++++++ VS17/ReadStat.Tests/ReadStat.Tests.vcxproj | 194 +++++++++++++++ .../ReadStat.Tests.vcxproj.filters | 75 ++++++ VS17/ReadStat.sln | 58 +++++ VS17/ReadStat.vcxproj | 223 ++++++++++++++++++ VS17/ReadStat.vcxproj.filters | 165 +++++++++++++ src/bin/module_util.c | 4 +- src/bin/modules/json_metadata.c | 4 +- src/bin/modules/mod_csv.c | 4 +- src/bin/modules/mod_readstat.c | 4 +- src/bin/readstat.c | 35 ++- src/readstat.h | 6 +- src/readstat_io_unistd.c | 9 +- src/readstat_writer.c | 11 +- src/sas/readstat_sas7bcat_read.c | 18 +- src/sas/readstat_sas7bdat_write.c | 8 + src/sas/readstat_sas_rle.c | 5 + src/sas/readstat_xport_read.c | 67 +++++- src/spss/readstat_sav_write.c | 4 +- src/stata/readstat_dta_write.c | 11 +- src/test/test_readstat.c | 15 +- 23 files changed, 1281 insertions(+), 21 deletions(-) create mode 100644 VS17/ReadStat.App/ReadStat.App.vcxproj create mode 100644 VS17/ReadStat.App/ReadStat.App.vcxproj.filters create mode 100644 VS17/ReadStat.Tests/ReadStat.Tests.vcxproj create mode 100644 VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters create mode 100644 VS17/ReadStat.sln create mode 100644 VS17/ReadStat.vcxproj create mode 100644 VS17/ReadStat.vcxproj.filters diff --git a/.gitignore b/.gitignore index 75c8b389..fdc55895 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,7 @@ test_sav_date test_double_decimals *.csv *.json -*.py \ No newline at end of file +*.py +**/*.vcxproj.user +Debug/ +Release/ diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj new file mode 100644 index 00000000..8ece2170 --- /dev/null +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -0,0 +1,215 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 15.0 + {80188B4B-81A0-4113-A848-CB6483D185EA} + Win32Proj + ReadStatApp + 10.0.17134.0 + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + NotUsing + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); + + + + + NotUsing + Level3 + Disabled + true + _CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + _CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj.filters b/VS17/ReadStat.App/ReadStat.App.vcxproj.filters new file mode 100644 index 00000000..930720ee --- /dev/null +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj.filters @@ -0,0 +1,162 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {91d99aae-1d30-4dab-923c-4e331303b7c8} + + + {de4b7ac4-3816-4eea-a44f-949af9bb3a37} + + + {fa004f5e-d943-4d0a-87f7-1d3e101261ef} + + + {a484a637-6af1-41c8-8da2-5f7db19ddf10} + + + + + Source Files + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files\modules + + + Source Files + + + Source Files\util + + + Source Files\util + + + Source Files + + + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files\modules + + + Header Files + + + Header Files\util + + + Header Files\util + + + Header Files + + + \ No newline at end of file diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj new file mode 100644 index 00000000..5537d46a --- /dev/null +++ b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj @@ -0,0 +1,194 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {E9408E27-6E13-46C9-B07D-9569BD078EF6} + Win32Proj + ReadStatTests + 10.0.17134.0 + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + false + + + true + + + true + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\..\iconv\include + + + Console + true + true + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\..\iconv\include + + + Console + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\..\iconv\include + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\..\iconv\include + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters new file mode 100644 index 00000000..1c3f7985 --- /dev/null +++ b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters @@ -0,0 +1,75 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/VS17/ReadStat.sln b/VS17/ReadStat.sln new file mode 100644 index 00000000..e0f15628 --- /dev/null +++ b/VS17/ReadStat.sln @@ -0,0 +1,58 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27703.2047 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat", "ReadStat.vcxproj", "{7D9D3258-8850-466E-8A74-4F8025E6FA49}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat.Tests", "ReadStat.Tests\ReadStat.Tests.vcxproj", "{E9408E27-6E13-46C9-B07D-9569BD078EF6}" + ProjectSection(ProjectDependencies) = postProject + {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat.App", "ReadStat.App\ReadStat.App.vcxproj", "{80188B4B-81A0-4113-A848-CB6483D185EA}" + ProjectSection(ProjectDependencies) = postProject + {E9408E27-6E13-46C9-B07D-9569BD078EF6} = {E9408E27-6E13-46C9-B07D-9569BD078EF6} + {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} + EndProjectSection +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 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Debug|x64.ActiveCfg = Debug|x64 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Debug|x64.Build.0 = Debug|x64 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Debug|x86.ActiveCfg = Debug|Win32 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Debug|x86.Build.0 = Debug|Win32 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x64.ActiveCfg = Release|x64 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x64.Build.0 = Release|x64 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.ActiveCfg = Debug|Win32 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.Build.0 = Debug|Win32 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x64.ActiveCfg = Debug|x64 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x64.Build.0 = Debug|x64 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x86.ActiveCfg = Debug|Win32 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x86.Build.0 = Debug|Win32 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Release|x64.ActiveCfg = Release|x64 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Release|x64.Build.0 = Release|x64 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Release|x86.ActiveCfg = Release|Win32 + {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Release|x86.Build.0 = Release|Win32 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Debug|x64.ActiveCfg = Debug|x64 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Debug|x64.Build.0 = Debug|x64 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Debug|x86.ActiveCfg = Debug|Win32 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Debug|x86.Build.0 = Debug|Win32 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x64.ActiveCfg = Release|x64 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x64.Build.0 = Release|x64 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x86.ActiveCfg = Release|Win32 + {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B01A5CE6-8035-4FD5-A80B-1E63884D1506} + EndGlobalSection +EndGlobal diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj new file mode 100644 index 00000000..64eb5f00 --- /dev/null +++ b/VS17/ReadStat.vcxproj @@ -0,0 +1,223 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {7D9D3258-8850-466E-8A74-4F8025E6FA49} + Win32Proj + ReadStat + 10.0.17134.0 + + + + StaticLibrary + true + v141 + Unicode + + + StaticLibrary + false + v141 + true + Unicode + + + StaticLibrary + true + v141 + Unicode + + + StaticLibrary + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + NotUsing + Level3 + Disabled + true + USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + + + + + false + + + $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + + + Windows + true + + + + + NotUsing + Level3 + Disabled + true + USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + + + Windows + true + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + + + + + false + + + $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + + + $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat.vcxproj.filters b/VS17/ReadStat.vcxproj.filters new file mode 100644 index 00000000..425251e2 --- /dev/null +++ b/VS17/ReadStat.vcxproj.filters @@ -0,0 +1,165 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {36d69d1d-b944-4abc-9981-ca8572816f7a} + + + {88abd1ce-1660-482c-87b3-9d210ee57a1b} + + + {f7d7807e-0c88-4fd8-8d4a-4e1c18783cae} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\sas + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\spss + + + Source Files\stata + + + Source Files\stata + + + Source Files\stata + + + Source Files\stata + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/src/bin/module_util.c b/src/bin/module_util.c index 1cf23088..fd72a67a 100644 --- a/src/bin/module_util.c +++ b/src/bin/module_util.c @@ -1,4 +1,6 @@ -#include +#if !defined(_MSC_VER) +# include +#endif #include int rs_ends_with(const char *filename, const char *ending) { diff --git a/src/bin/modules/json_metadata.c b/src/bin/modules/json_metadata.c index a156b3c1..d18c628f 100644 --- a/src/bin/modules/json_metadata.c +++ b/src/bin/modules/json_metadata.c @@ -1,6 +1,8 @@ #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include #include "jsmn.h" diff --git a/src/bin/modules/mod_csv.c b/src/bin/modules/mod_csv.c index 9b1f9528..4a98bfa8 100644 --- a/src/bin/modules/mod_csv.c +++ b/src/bin/modules/mod_csv.c @@ -1,7 +1,9 @@ #include #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include "../../readstat.h" diff --git a/src/bin/modules/mod_readstat.c b/src/bin/modules/mod_readstat.c index 8bf0cd0e..263e1c78 100644 --- a/src/bin/modules/mod_readstat.c +++ b/src/bin/modules/mod_readstat.c @@ -1,7 +1,9 @@ #include #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include "../../readstat.h" diff --git a/src/bin/readstat.c b/src/bin/readstat.c index 0cbd22fb..fd57b275 100644 --- a/src/bin/readstat.c +++ b/src/bin/readstat.c @@ -1,10 +1,31 @@ #include #include #include -#include +#if !defined _MSC_VER +# include +#endif #include #include -#include +#if !defined _MSC_VER +# include +#else +# define READSTAT_VERSION "0.2.0" +# include +# include +# include + +# define __need_clock_t +# include + +int gettimeofday(struct timeval* t, void* timezone) +{ + struct _timeb timebuffer; + _ftime_s(&timebuffer); + t->tv_sec = timebuffer.time; + t->tv_usec = 1000 * timebuffer.millitm; + return 0; +} +#endif #include #include "../readstat.h" @@ -319,7 +340,11 @@ static int convert_file(const char *input_filename, const char *catalog_filename fprintf(stderr, "Error opening %s: File exists (Use -f to overwrite)\n", output_filename); } else { fprintf(stderr, "Error processing %s: %s\n", error_filename, readstat_error_message(error)); +#if !defined _MSC_VER unlink(output_filename); +#else + _unlink(output_filename); +#endif } return 1; } @@ -358,7 +383,13 @@ static int dump_metadata(readstat_metadata_t *metadata, void *ctx) { } if (timestamp) { char buffer[128]; +#if !defined _MSC_VER strftime(buffer, sizeof(buffer), "%d %b %Y %H:%M", localtime(×tamp)); +#else + struct tm ltm; + localtime_s(<m, ×tamp); + strftime(buffer, sizeof(buffer), "%d %b %Y %H:%M", <m); +#endif printf("Timestamp: %s\n", buffer); } return 0; diff --git a/src/readstat.h b/src/readstat.h index e74047b1..15c85202 100644 --- a/src/readstat.h +++ b/src/readstat.h @@ -273,7 +273,11 @@ typedef int (*readstat_value_label_handler)(const char *val_labels, typedef void (*readstat_error_handler)(const char *error_message, void *ctx); typedef int (*readstat_progress_handler)(double progress, void *ctx); -#if defined _WIN32 || defined __CYGWIN__ +#if defined(_MSC_VER) +#include +typedef SSIZE_T ssize_t; +typedef _off_t readstat_off_t; +#elif defined _WIN32 || defined __CYGWIN__ typedef _off64_t readstat_off_t; #elif defined _AIX typedef off64_t readstat_off_t; diff --git a/src/readstat_io_unistd.c b/src/readstat_io_unistd.c index 915f205d..dd19dbc6 100644 --- a/src/readstat_io_unistd.c +++ b/src/readstat_io_unistd.c @@ -1,7 +1,9 @@ #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include "readstat.h" #include "readstat_io_unistd.h" @@ -14,7 +16,10 @@ #define UNISTD_OPEN_OPTIONS O_RDONLY #endif -#if defined _WIN32 || defined _AIX +#if defined _MSC_VER && defined WIN64 +#define lseek _lseeki64 +#elif defined _MSC_VER +#elif defined _WIN32 || defined _AIX #define lseek lseek64 #endif diff --git a/src/readstat_writer.c b/src/readstat_writer.c index 1cb4e2d0..a174e332 100644 --- a/src/readstat_writer.c +++ b/src/readstat_writer.c @@ -234,9 +234,18 @@ static readstat_error_t readstat_write_repeated_byte(readstat_writer_t *writer, if (len == 0) return READSTAT_OK; +#if !defined _MSC_VER char zeros[len]; +#else + char * zeros = malloc(sizeof(char)*(len+1)); +#endif + memset(zeros, byte, len); - return readstat_write_bytes(writer, zeros, len); + readstat_error_t error = readstat_write_bytes(writer, zeros, len); +#if defined _MSC_VER + free(zeros); +#endif + return error; } readstat_error_t readstat_write_zeros(readstat_writer_t *writer, size_t len) { diff --git a/src/sas/readstat_sas7bcat_read.c b/src/sas/readstat_sas7bcat_read.c index 19325294..34a9ff2c 100644 --- a/src/sas/readstat_sas7bcat_read.c +++ b/src/sas/readstat_sas7bcat_read.c @@ -115,16 +115,32 @@ static readstat_error_t sas7bcat_parse_value_labels(const char *value_start, siz value.v.double_value = dval; } if (ctx->value_label_handler) { +#if !defined _MSC_VER char label[4*label_len+1]; retval = readstat_convert(label, sizeof(label), &lbp2[10], label_len, ctx->converter); - if (retval != READSTAT_OK) +#else + char * label = malloc((sizeof(char))*(4 * label_len + 1 + 1)); + retval = readstat_convert(label, (4 * label_len + 1), + &lbp2[10], label_len, ctx->converter); +#endif + if (retval != READSTAT_OK) { +#if defined _MSC_VER + free(label); +#endif goto cleanup; + } if (ctx->value_label_handler(name, value, label, ctx->user_ctx) != READSTAT_HANDLER_OK) { retval = READSTAT_ERROR_USER_ABORT; +#if defined _MSC_VER + free(label); +#endif goto cleanup; } +#if defined _MSC_VER + free(label); +#endif } lbp2 += 8 + 2 + label_len + 1; diff --git a/src/sas/readstat_sas7bdat_write.c b/src/sas/readstat_sas7bdat_write.c index df29163c..bcc1f81d 100644 --- a/src/sas/readstat_sas7bdat_write.c +++ b/src/sas/readstat_sas7bdat_write.c @@ -710,11 +710,19 @@ static readstat_error_t sas7bdat_write_row_uncompressed(readstat_writer_t *write int16_t page_row_count = (writer->row_count - writer->current_row < rows_per_page ? writer->row_count - writer->current_row : rows_per_page); +#if !defined _MSC_VER char header[hinfo->page_header_size]; memset(header, 0, sizeof(header)); +#else + char * header = malloc((sizeof(char))*(hinfo->page_header_size + 1)); + memset(header, 0, (hinfo->page_header_size)); +#endif memcpy(&header[hinfo->page_header_size-6], &page_row_count, sizeof(int16_t)); memcpy(&header[hinfo->page_header_size-8], &page_type, sizeof(int16_t)); retval = readstat_write_bytes(writer, header, hinfo->page_header_size); +#if defined _MSC_VER + free(header); +#endif if (retval != READSTAT_OK) goto cleanup; } diff --git a/src/sas/readstat_sas_rle.c b/src/sas/readstat_sas_rle.c index 3fc7afc9..674bec38 100644 --- a/src/sas/readstat_sas_rle.c +++ b/src/sas/readstat_sas_rle.c @@ -3,6 +3,11 @@ #include #include +#if defined(_MSC_VER) +#include +typedef SSIZE_T ssize_t; +#endif + #include "readstat_sas_rle.h" #define SAS_RLE_COMMAND_COPY64 0 diff --git a/src/sas/readstat_xport_read.c b/src/sas/readstat_xport_read.c index 620960bb..d206af56 100755 --- a/src/sas/readstat_xport_read.c +++ b/src/sas/readstat_xport_read.c @@ -272,8 +272,13 @@ static readstat_error_t xport_read_obs_header_record(xport_ctx_t *ctx) { static readstat_error_t xport_construct_format(char *dst, size_t dst_len, const char *src, size_t src_len, int width, int decimals) { +#if !defined _MSC_VER char format[4*src_len+1]; readstat_error_t retval = readstat_convert(format, sizeof(format), src, src_len, NULL); +#else + char * format = malloc((sizeof(char))*(4 * src_len + 1 + 1)); + readstat_error_t retval = readstat_convert(format, (4 * src_len + 1), src, src_len, NULL); +#endif if (decimals) { snprintf(dst, dst_len, "%s%d.%d", @@ -285,6 +290,9 @@ static readstat_error_t xport_construct_format(char *dst, size_t dst_len, strcpy(dst, format); } +#if defined _MSC_VER + free(format); +#endif return retval; } @@ -314,23 +322,42 @@ static readstat_error_t xport_read_labels_v8(xport_ctx_t *ctx, int label_count) goto cleanup; } +#if !defined _MSC_VER char name[name_len+1]; char label[label_len+1]; +#else + char * name = malloc((sizeof(char))*(name_len + 1 + 1)); + char * label = malloc((sizeof(char))*(label_len + 1 + 1)); +#endif readstat_variable_t *variable = ctx->variables[index]; if (read_bytes(ctx, name, name_len) != name_len || read_bytes(ctx, label, label_len) != label_len) { retval = READSTAT_ERROR_READ; +#if defined _MSC_VER + free(name); + free(label); +#endif goto cleanup; } retval = readstat_convert(variable->name, sizeof(variable->name), name, name_len, NULL); - if (retval != READSTAT_OK) +#if defined _MSC_VER + free(name); +#endif + if (retval != READSTAT_OK) { +#if defined _MSC_VER + free(label); +#endif goto cleanup; + } retval = readstat_convert(variable->label, sizeof(variable->label), label, label_len, NULL); +#if defined _MSC_VER + free(label); +#endif if (retval != READSTAT_OK) goto cleanup; } @@ -377,10 +404,17 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) goto cleanup; } +#if !defined _MSC_VER char name[name_len+1]; char format[format_len+1]; char informat[informat_len+1]; char label[label_len+1]; +#else + char * name = malloc((sizeof(char))*(name_len + 1 + 1)); + char * format = malloc((sizeof(char))*(format_len + 1 + 1)); + char * informat = malloc((sizeof(char))*(informat_len + 1 + 1)); + char * label = malloc((sizeof(char))*(label_len + 1 + 1)); +#endif readstat_variable_t *variable = ctx->variables[index]; @@ -389,21 +423,48 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) read_bytes(ctx, informat, informat_len) != informat_len || read_bytes(ctx, label, label_len) != label_len) { retval = READSTAT_ERROR_READ; +#if defined _MSC_VER + free(name); + free(format); + free(informat); + free(label); +#endif goto cleanup; } retval = readstat_convert(variable->name, sizeof(variable->name), name, name_len, NULL); - if (retval != READSTAT_OK) +#if defined _MSC_VER + free(name); +#endif + if (retval != READSTAT_OK) { +#if defined _MSC_VER + free(format); + free(informat); + free(label); +#endif goto cleanup; + } retval = readstat_convert(variable->label, sizeof(variable->label), label, label_len, NULL); - if (retval != READSTAT_OK) +#if defined _MSC_VER + free(label); +#endif + if (retval != READSTAT_OK) { +#if defined _MSC_VER + free(format); + free(informat); +#endif goto cleanup; + } retval = xport_construct_format(variable->format, sizeof(variable->format), format, format_len, variable->display_width, variable->decimals); +#if defined _MSC_VER + free(format); + free(informat); +#endif if (retval != READSTAT_OK) goto cleanup; } diff --git a/src/spss/readstat_sav_write.c b/src/spss/readstat_sav_write.c index 7cd4962b..82f58365 100644 --- a/src/spss/readstat_sav_write.c +++ b/src/spss/readstat_sav_write.c @@ -3,7 +3,9 @@ #include #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include #include diff --git a/src/stata/readstat_dta_write.c b/src/stata/readstat_dta_write.c index f750fde7..b12d560b 100644 --- a/src/stata/readstat_dta_write.c +++ b/src/stata/readstat_dta_write.c @@ -4,7 +4,9 @@ #include #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include "../readstat.h" @@ -495,7 +497,11 @@ static readstat_error_t dta_emit_variable_labels(readstat_writer_t *writer, dta_ static readstat_error_t dta_emit_characteristics(readstat_writer_t *writer, dta_ctx_t *ctx) { readstat_error_t error = READSTAT_OK; int i; +#if !defined _MSC_VER char buffer[ctx->ch_metadata_len]; +#else + char * buffer = malloc((sizeof(char))*(ctx->ch_metadata_len + 1)); +#endif if (ctx->expansion_len_len == 0) return READSTAT_OK; @@ -553,6 +559,9 @@ static readstat_error_t dta_emit_characteristics(readstat_writer_t *writer, dta_ goto cleanup; cleanup: +#if defined _MSC_VER + free(buffer); +#endif return error; } diff --git a/src/test/test_readstat.c b/src/test/test_readstat.c index 61508eaa..c5403c61 100644 --- a/src/test/test_readstat.c +++ b/src/test/test_readstat.c @@ -2,9 +2,13 @@ #include #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include -#include +#if !defined(_MSC_VER) +# include +#endif #include "../readstat.h" #include "../readstat_iconv.h" @@ -21,8 +25,11 @@ static void dump_buffer(rt_buffer_t *buffer, long format) { char filename[128]; - snprintf(filename, sizeof(filename), "/tmp/test_readstat.%s", - file_extension(format)); +#if !defined _MSC_VER + snprintf(filename, sizeof(filename), "/tmp/test_readstat.%s", file_extension(format)); +#else + snprintf(filename, sizeof(filename), "test_readstat.%s", file_extension(format)); +#endif #if DEBUG printf("Writing file buffer to %s\n", filename); int fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0644); From a4b2bf40d590577baac030240584d4f8339cadde Mon Sep 17 00:00:00 2001 From: Frederic Gutierrez Date: Fri, 14 Dec 2018 10:09:49 +0100 Subject: [PATCH 03/21] Visual Studio 2017 compilation process --- VS17/ReadStat.App/ReadStat.App.vcxproj | 2 +- VS17/ReadStat.Tests/ReadStat.Tests.vcxproj | 2 +- VS17/ReadStat.sln | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj index 8ece2170..de0a7c28 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -183,7 +183,7 @@ true true true - ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvStatic.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj index 5537d46a..437098df 100644 --- a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj +++ b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj @@ -102,7 +102,7 @@ true true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) diff --git a/VS17/ReadStat.sln b/VS17/ReadStat.sln index e0f15628..901ac999 100644 --- a/VS17/ReadStat.sln +++ b/VS17/ReadStat.sln @@ -30,8 +30,8 @@ Global {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Debug|x86.Build.0 = Debug|Win32 {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x64.ActiveCfg = Release|x64 {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x64.Build.0 = Release|x64 - {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.ActiveCfg = Debug|Win32 - {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.Build.0 = Debug|Win32 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.ActiveCfg = Release|Win32 + {7D9D3258-8850-466E-8A74-4F8025E6FA49}.Release|x86.Build.0 = Release|Win32 {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x64.ActiveCfg = Debug|x64 {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x64.Build.0 = Debug|x64 {E9408E27-6E13-46C9-B07D-9569BD078EF6}.Debug|x86.ActiveCfg = Debug|Win32 From e83e3c07df4ac2f0c409555eb00b125750a1e2b3 Mon Sep 17 00:00:00 2001 From: frederic Date: Mon, 27 Apr 2020 14:43:18 +0200 Subject: [PATCH 04/21] RPP-9 #comment Windows compilation process (WinPlatform=10.0.17763.0) --- VS17/ReadStat.App/ReadStat.App.vcxproj | 2 +- VS17/ReadStat.Tests/ReadStat.Tests.vcxproj | 2 +- VS17/ReadStat.vcxproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj index de0a7c28..da12db37 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -70,7 +70,7 @@ {80188B4B-81A0-4113-A848-CB6483D185EA} Win32Proj ReadStatApp - 10.0.17134.0 + 10.0.17763.0 diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj index 437098df..a7c9cc69 100644 --- a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj +++ b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj @@ -23,7 +23,7 @@ {E9408E27-6E13-46C9-B07D-9569BD078EF6} Win32Proj ReadStatTests - 10.0.17134.0 + 10.0.17763.0 diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index 64eb5f00..243d02b7 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -23,7 +23,7 @@ {7D9D3258-8850-466E-8A74-4F8025E6FA49} Win32Proj ReadStat - 10.0.17134.0 + 10.0.17763.0 From 75727c0de01e157a98923fe7d37e677d895dae34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Tue, 8 Sep 2020 12:20:32 +0200 Subject: [PATCH 05/21] Remove MSVC preprocessor conditionals and index shift, and use malloc/realloc for all archs --- src/readstat_writer.c | 17 ++--- src/sas/readstat_sas7bcat_read.c | 26 ++----- src/sas/readstat_sas7bdat_write.c | 11 +-- src/sas/readstat_xport_read.c | 115 ++++++++++-------------------- src/stata/readstat_dta_write.c | 8 +-- 5 files changed, 54 insertions(+), 123 deletions(-) diff --git a/src/readstat_writer.c b/src/readstat_writer.c index e7ff6536..6ab17a2d 100644 --- a/src/readstat_writer.c +++ b/src/readstat_writer.c @@ -78,8 +78,8 @@ static void readstat_label_set_free(readstat_label_set_t *label_set) { static void readstat_copy_label(readstat_value_label_t *value_label, const char *label) { if (label && strlen(label)) { value_label->label_len = strlen(label); - value_label->label = malloc(value_label->label_len + 1); - memcpy(value_label->label, label, value_label->label_len + 1); + value_label->label = malloc(value_label->label_len); + memcpy(value_label->label, label, value_label->label_len); } } @@ -258,17 +258,12 @@ static readstat_error_t readstat_write_repeated_byte(readstat_writer_t *writer, if (len == 0) return READSTAT_OK; -#if !defined _MSC_VER - char zeros[len]; -#else - char * zeros = malloc(sizeof(char)*(len+1)); -#endif + char *zeros = malloc(len); memset(zeros, byte, len); readstat_error_t error = readstat_write_bytes(writer, zeros, len); -#if defined _MSC_VER + free(zeros); -#endif return error; } @@ -360,8 +355,8 @@ void readstat_label_string_value(readstat_label_set_t *label_set, const char *va readstat_value_label_t *new_value_label = readstat_add_value_label(label_set, label); if (value && strlen(value)) { new_value_label->string_key_len = strlen(value); - new_value_label->string_key = malloc(new_value_label->string_key_len + 1); - memcpy(new_value_label->string_key, value, new_value_label->string_key_len + 1); + new_value_label->string_key = malloc(new_value_label->string_key_len); + memcpy(new_value_label->string_key, value, new_value_label->string_key_len); } } diff --git a/src/sas/readstat_sas7bcat_read.c b/src/sas/readstat_sas7bcat_read.c index 8b767b2e..3592099b 100644 --- a/src/sas/readstat_sas7bcat_read.c +++ b/src/sas/readstat_sas7bcat_read.c @@ -51,6 +51,7 @@ static readstat_error_t sas7bcat_parse_value_labels(const char *value_start, siz /* Doubles appear to be stored as big-endian, always */ int bswap_doubles = machine_is_little_endian(); int is_string = (name[0] == '$'); + char *label = NULL; if (value_offset == NULL) { retval = READSTAT_ERROR_MALLOC; @@ -117,38 +118,25 @@ static readstat_error_t sas7bcat_parse_value_labels(const char *value_start, siz goto cleanup; } if (ctx->value_label_handler) { -#if !defined _MSC_VER - char label[4*label_len+1]; - retval = readstat_convert(label, sizeof(label), + label = realloc(label, 4 * label_len + 1); + retval = readstat_convert(label, 4 * label_len + 1, &lbp2[10], label_len, ctx->converter); -#else - char * label = malloc((sizeof(char))*(4 * label_len + 1 + 1)); - retval = readstat_convert(label, (4 * label_len + 1), - &lbp2[10], label_len, ctx->converter); -#endif - if (retval != READSTAT_OK) { -#if defined _MSC_VER - free(label); -#endif + if (retval != READSTAT_OK) goto cleanup; - } if (ctx->value_label_handler(name, value, label, ctx->user_ctx) != READSTAT_HANDLER_OK) { retval = READSTAT_ERROR_USER_ABORT; -#if defined _MSC_VER - free(label); -#endif goto cleanup; } -#if defined _MSC_VER - free(label); -#endif } lbp2 += 8 + 2 + label_len + 1; } cleanup: + if(label) + free(label); + if (value_offset) free(value_offset); diff --git a/src/sas/readstat_sas7bdat_write.c b/src/sas/readstat_sas7bdat_write.c index a7886985..83a90a89 100644 --- a/src/sas/readstat_sas7bdat_write.c +++ b/src/sas/readstat_sas7bdat_write.c @@ -699,19 +699,12 @@ static readstat_error_t sas7bdat_write_row_uncompressed(readstat_writer_t *write int16_t page_row_count = (writer->row_count - writer->current_row < rows_per_page ? writer->row_count - writer->current_row : rows_per_page); -#if !defined _MSC_VER - char header[hinfo->page_header_size]; - memset(header, 0, sizeof(header)); -#else - char * header = malloc((sizeof(char))*(hinfo->page_header_size + 1)); - memset(header, 0, (hinfo->page_header_size)); -#endif + char *header = malloc(hinfo->page_header_size); + memset(header, 0, hinfo->page_header_size); memcpy(&header[hinfo->page_header_size-6], &page_row_count, sizeof(int16_t)); memcpy(&header[hinfo->page_header_size-8], &page_type, sizeof(int16_t)); retval = readstat_write_bytes(writer, header, hinfo->page_header_size); -#if defined _MSC_VER free(header); -#endif if (retval != READSTAT_OK) goto cleanup; } diff --git a/src/sas/readstat_xport_read.c b/src/sas/readstat_xport_read.c index 16581923..39a56138 100644 --- a/src/sas/readstat_xport_read.c +++ b/src/sas/readstat_xport_read.c @@ -280,16 +280,13 @@ static readstat_error_t xport_read_obs_header_record(xport_ctx_t *ctx) { static readstat_error_t xport_construct_format(char *dst, size_t dst_len, const char *src, size_t src_len, int width, int decimals) { -#if !defined _MSC_VER - char format[4*src_len+1]; - readstat_error_t retval = readstat_convert(format, sizeof(format), src, src_len, NULL); -#else - char * format = malloc((sizeof(char))*(4 * src_len + 1 + 1)); - readstat_error_t retval = readstat_convert(format, (4 * src_len + 1), src, src_len, NULL); -#endif + char *format = malloc(4 * src_len + 1); + readstat_error_t retval = readstat_convert(format, 4 * src_len + 1, src, src_len, NULL); - if (retval != READSTAT_OK) + if (retval != READSTAT_OK) { + free(format); return retval; + } if (!format[0]) { *dst = '\0'; @@ -303,15 +300,15 @@ static readstat_error_t xport_construct_format(char *dst, size_t dst_len, snprintf(dst, dst_len, "%s", format); } -#if defined _MSC_VER free(format); -#endif return retval; } static readstat_error_t xport_read_labels_v8(xport_ctx_t *ctx, int label_count) { readstat_error_t retval = READSTAT_OK; uint16_t labeldef[3]; + char *name = NULL; + char *label = NULL; int i; for (i=0; ivariables[index]; + name = realloc(name, name_len + 1); + label = realloc(label, label_len + 1); + readstat_variable_t *variable = ctx->variables[index-1]; if (read_bytes(ctx, name, name_len) != name_len || read_bytes(ctx, label, label_len) != label_len) { retval = READSTAT_ERROR_READ; -#if defined _MSC_VER - free(name); - free(label); -#endif goto cleanup; } retval = readstat_convert(variable->name, sizeof(variable->name), - name, name_len, ctx->converter); -#if defined _MSC_VER - free(name); -#endif - if (retval != READSTAT_OK) { -#if defined _MSC_VER - free(label); -#endif + name, name_len, ctx->converter); + if (retval != READSTAT_OK) goto cleanup; - } retval = readstat_convert(variable->label, sizeof(variable->label), - label, label_len, ctx->converter); -#if defined _MSC_VER - free(label); -#endif + label, label_len, ctx->converter); if (retval != READSTAT_OK) goto cleanup; } @@ -384,6 +362,10 @@ static readstat_error_t xport_read_labels_v8(xport_ctx_t *ctx, int label_count) goto cleanup; cleanup: + if(name) + free(name); + if(label) + free(label); return retval; } @@ -391,6 +373,11 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) readstat_error_t retval = READSTAT_OK; uint16_t labeldef[5]; int i; + char *name = NULL; + char *format = NULL; + char *informat = NULL; + char *label = NULL; + for (i=0; ivariables[index-1]; @@ -436,48 +416,21 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) read_bytes(ctx, informat, informat_len) != informat_len || read_bytes(ctx, label, label_len) != label_len) { retval = READSTAT_ERROR_READ; -#if defined _MSC_VER - free(name); - free(format); - free(informat); - free(label); -#endif goto cleanup; } retval = readstat_convert(variable->name, sizeof(variable->name), - name, name_len, ctx->converter); -#if defined _MSC_VER - free(name); -#endif - if (retval != READSTAT_OK) { -#if defined _MSC_VER - free(format); - free(informat); - free(label); -#endif + name, name_len, ctx->converter); + if (retval != READSTAT_OK) goto cleanup; - } retval = readstat_convert(variable->label, sizeof(variable->label), - label, label_len, ctx->converter); -#if defined _MSC_VER - free(label); -#endif - if (retval != READSTAT_OK) { -#if defined _MSC_VER - free(format); - free(informat); -#endif + label, label_len, ctx->converter); + if (retval != READSTAT_OK) goto cleanup; - } retval = xport_construct_format(variable->format, sizeof(variable->format), format, format_len, variable->display_width, variable->decimals); -#if defined _MSC_VER - free(format); - free(informat); -#endif if (retval != READSTAT_OK) goto cleanup; } @@ -491,6 +444,14 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) goto cleanup; cleanup: + if(name) + free(name); + if(format) + free(format); + if(informat) + free(informat); + if(label) + free(label); return retval; } diff --git a/src/stata/readstat_dta_write.c b/src/stata/readstat_dta_write.c index fb8156be..fa103aa3 100644 --- a/src/stata/readstat_dta_write.c +++ b/src/stata/readstat_dta_write.c @@ -525,11 +525,7 @@ static readstat_error_t dta_emit_variable_labels(readstat_writer_t *writer, dta_ static readstat_error_t dta_emit_characteristics(readstat_writer_t *writer, dta_ctx_t *ctx) { readstat_error_t error = READSTAT_OK; int i; -#if !defined _MSC_VER - char buffer[ctx->ch_metadata_len]; -#else - char * buffer = malloc((sizeof(char))*(ctx->ch_metadata_len + 1)); -#endif + char *buffer = malloc(ctx->ch_metadata_len); if (ctx->expansion_len_len == 0) return READSTAT_OK; @@ -587,9 +583,7 @@ static readstat_error_t dta_emit_characteristics(readstat_writer_t *writer, dta_ goto cleanup; cleanup: -#if defined _MSC_VER free(buffer); -#endif return error; } From c67721f90199734b125f847250140d4ed082d7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Tue, 8 Sep 2020 15:40:05 +0200 Subject: [PATCH 06/21] Fix calloc, free and Windows-based code --- src/bin/readstat.c | 26 +++++++++++++++----------- src/sas/readstat_sas7bcat_read.c | 8 ++------ src/sas/readstat_sas7bdat_write.c | 3 +-- src/sas/readstat_xport_read.c | 18 ++++++------------ 4 files changed, 24 insertions(+), 31 deletions(-) diff --git a/src/bin/readstat.c b/src/bin/readstat.c index e33c73e8..455a68fd 100644 --- a/src/bin/readstat.c +++ b/src/bin/readstat.c @@ -48,6 +48,10 @@ int gettimeofday(struct timeval* t, void* timezone) #include "util/file_format.h" +#if defined _MSC_VER +#define unlink _unlink +#endif + typedef struct rs_ctx_s { rs_module_t *module; void *module_ctx; @@ -402,11 +406,7 @@ static int convert_file(const char *input_filename, const char *catalog_filename fprintf(stderr, "Error opening %s: File exists (Use -f to overwrite)\n", output_filename); } else { fprintf(stderr, "Error processing %s: %s\n", rs_ctx->error_filename, readstat_error_message(error)); -#if !defined _MSC_VER unlink(output_filename); -#else - _unlink(output_filename); -#endif } return 1; } @@ -414,6 +414,16 @@ static int convert_file(const char *input_filename, const char *catalog_filename return 0; } +size_t readstat_strftime(char *s, size_t maxsize, const char *format, time_t timestamp) { +#if !defined _MSC_VER + return strftime(s, maxsize, format, localtime(×tamp)); +#else + struct tm ltm; + localtime_s(<m, ×tamp); + return strftime(s, maxsize, format, <m); +#endif +} + static int dump_metadata(readstat_metadata_t *metadata, void *ctx) { printf("Columns: %d\n", readstat_get_var_count(metadata)); printf("Rows: %d\n", readstat_get_row_count(metadata)); @@ -445,13 +455,7 @@ static int dump_metadata(readstat_metadata_t *metadata, void *ctx) { } if (timestamp) { char buffer[128]; -#if !defined _MSC_VER - strftime(buffer, sizeof(buffer), "%d %b %Y %H:%M", localtime(×tamp)); -#else - struct tm ltm; - localtime_s(<m, ×tamp); - strftime(buffer, sizeof(buffer), "%d %b %Y %H:%M", <m); -#endif + readstat_strftime(buffer, sizeof(buffer), "%d %b %Y %H:%M", timestamp); printf("Timestamp: %s\n", buffer); } return 0; diff --git a/src/sas/readstat_sas7bcat_read.c b/src/sas/readstat_sas7bcat_read.c index 3592099b..6c16622a 100644 --- a/src/sas/readstat_sas7bcat_read.c +++ b/src/sas/readstat_sas7bcat_read.c @@ -134,12 +134,8 @@ static readstat_error_t sas7bcat_parse_value_labels(const char *value_start, siz } cleanup: - if(label) - free(label); - - if (value_offset) - free(value_offset); - + free(label); + free(value_offset); return retval; } diff --git a/src/sas/readstat_sas7bdat_write.c b/src/sas/readstat_sas7bdat_write.c index 83a90a89..37e3276b 100644 --- a/src/sas/readstat_sas7bdat_write.c +++ b/src/sas/readstat_sas7bdat_write.c @@ -699,8 +699,7 @@ static readstat_error_t sas7bdat_write_row_uncompressed(readstat_writer_t *write int16_t page_row_count = (writer->row_count - writer->current_row < rows_per_page ? writer->row_count - writer->current_row : rows_per_page); - char *header = malloc(hinfo->page_header_size); - memset(header, 0, hinfo->page_header_size); + char *header = calloc(hinfo->page_header_size, 1); memcpy(&header[hinfo->page_header_size-6], &page_row_count, sizeof(int16_t)); memcpy(&header[hinfo->page_header_size-8], &page_type, sizeof(int16_t)); retval = readstat_write_bytes(writer, header, hinfo->page_header_size); diff --git a/src/sas/readstat_xport_read.c b/src/sas/readstat_xport_read.c index 39a56138..079865e8 100644 --- a/src/sas/readstat_xport_read.c +++ b/src/sas/readstat_xport_read.c @@ -362,10 +362,8 @@ static readstat_error_t xport_read_labels_v8(xport_ctx_t *ctx, int label_count) goto cleanup; cleanup: - if(name) - free(name); - if(label) - free(label); + free(name); + free(label); return retval; } @@ -444,14 +442,10 @@ static readstat_error_t xport_read_labels_v9(xport_ctx_t *ctx, int label_count) goto cleanup; cleanup: - if(name) - free(name); - if(format) - free(format); - if(informat) - free(informat); - if(label) - free(label); + free(name); + free(format); + free(informat); + free(label); return retval; } From 9d29cbd6af99a37ef02d8a6c69ab91b4ec061537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Tue, 8 Sep 2020 18:28:57 +0200 Subject: [PATCH 07/21] Move the version in the MSVC project file --- VS17/ReadStat.vcxproj | 10 +++++----- src/bin/readstat.c | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index 243d02b7..e60b3181 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -88,7 +88,7 @@ Level3 Disabled true - USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) true @@ -110,7 +110,7 @@ Level3 Disabled true - USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) true @@ -129,7 +129,7 @@ true true true - USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) true @@ -155,7 +155,7 @@ true true true - USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) true @@ -220,4 +220,4 @@ - \ No newline at end of file + diff --git a/src/bin/readstat.c b/src/bin/readstat.c index 455a68fd..b9fece0f 100644 --- a/src/bin/readstat.c +++ b/src/bin/readstat.c @@ -9,7 +9,6 @@ #if !defined _MSC_VER # include #else -# define READSTAT_VERSION "0.2.0" # include # include # include From 7b9ebea88070e57de9f039f2b504e920e618de55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 10:39:48 +0200 Subject: [PATCH 08/21] Update the file list for MSVC and Fix the use of the restrict keyword --- VS17/ReadStat.App/ReadStat.App.vcxproj | 70 ++++++++--------- VS17/ReadStat.vcxproj | 102 ++++++++++++++++--------- src/sas/readstat_xport_write.c | 4 + src/txt/readstat_txt_read.c | 4 + 4 files changed, 104 insertions(+), 76 deletions(-) diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj index da12db37..eb2ec81b 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -19,49 +19,43 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index e60b3181..35863351 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -169,53 +169,79 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + diff --git a/src/sas/readstat_xport_write.c b/src/sas/readstat_xport_write.c index 2ba6b86f..0d6360aa 100644 --- a/src/sas/readstat_xport_write.c +++ b/src/sas/readstat_xport_write.c @@ -12,6 +12,10 @@ #define XPORT_DEFAULT_VERISON 8 #define RECORD_LEN 80 +#if defined _MSC_VER +#define restrict __restrict +#endif + static void copypad(char * restrict dst, size_t dst_len, const char * restrict src) { char *dst_end = dst + dst_len; while (dst < dst_end && *src) diff --git a/src/txt/readstat_txt_read.c b/src/txt/readstat_txt_read.c index ea8786cb..c248f11e 100644 --- a/src/txt/readstat_txt_read.c +++ b/src/txt/readstat_txt_read.c @@ -10,6 +10,10 @@ #include "../readstat_convert.h" #include "readstat_schema.h" +#if defined _MSC_VER +#define restrict __restrict +#endif + typedef struct txt_ctx_s { int rows; iconv_t converter; From 77b47ef86fcdb1aa606766d660a0f6434fcec2e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 10:51:39 +0200 Subject: [PATCH 09/21] Fix bad VS path --- VS17/ReadStat.vcxproj | 88 +++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index 35863351..624e88c6 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -169,50 +169,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 09b8514fab0b3b4974cb4c165cd08c29a3bf20f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 11:13:23 +0200 Subject: [PATCH 10/21] Fix UNIX/POSIX-specific header includes --- src/bin/util/file_format.c | 7 ++++++- src/txt/readstat_sas_commands_read.c | 7 ++++++- src/txt/readstat_sas_commands_read.rl | 7 ++++++- src/txt/readstat_spss_commands_read.c | 7 ++++++- src/txt/readstat_spss_commands_read.rl | 7 ++++++- src/txt/readstat_txt_read.c | 5 +++-- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/bin/util/file_format.c b/src/bin/util/file_format.c index 5e8144c8..ee4bbd3e 100644 --- a/src/bin/util/file_format.c +++ b/src/bin/util/file_format.c @@ -1,5 +1,10 @@ #include -#include +#if defined(_MSC_VER) +# define strncasecmp _strnicmp +# define strcasecmp _stricmp +#else +# include +#endif #include "file_format.h" #include "../../readstat.h" diff --git a/src/txt/readstat_sas_commands_read.c b/src/txt/readstat_sas_commands_read.c index f6d75c17..e12bcb9b 100644 --- a/src/txt/readstat_sas_commands_read.c +++ b/src/txt/readstat_sas_commands_read.c @@ -1,7 +1,12 @@ #line 1 "src/txt/readstat_sas_commands_read.rl" #include -#include +#if defined(_MSC_VER) +# define strncasecmp _strnicmp +# define strcasecmp _stricmp +#else +# include +#endif #include "../readstat.h" #include "readstat_schema.h" diff --git a/src/txt/readstat_sas_commands_read.rl b/src/txt/readstat_sas_commands_read.rl index 48dc2bad..2f46e865 100644 --- a/src/txt/readstat_sas_commands_read.rl +++ b/src/txt/readstat_sas_commands_read.rl @@ -1,5 +1,10 @@ #include -#include +#if defined(_MSC_VER) +# define strncasecmp _strnicmp +# define strcasecmp _stricmp +#else +# include +#endif #include "../readstat.h" #include "readstat_schema.h" diff --git a/src/txt/readstat_spss_commands_read.c b/src/txt/readstat_spss_commands_read.c index 8a205726..914d1f6d 100644 --- a/src/txt/readstat_spss_commands_read.c +++ b/src/txt/readstat_spss_commands_read.c @@ -1,7 +1,12 @@ #line 1 "src/txt/readstat_spss_commands_read.rl" #include -#include +#if defined(_MSC_VER) +# define strncasecmp _strnicmp +# define strcasecmp _stricmp +#else +# include +#endif #include #include "../readstat.h" diff --git a/src/txt/readstat_spss_commands_read.rl b/src/txt/readstat_spss_commands_read.rl index fb823151..3644eced 100644 --- a/src/txt/readstat_spss_commands_read.rl +++ b/src/txt/readstat_spss_commands_read.rl @@ -1,5 +1,10 @@ #include -#include +#if defined(_MSC_VER) +# define strncasecmp _strnicmp +# define strcasecmp _stricmp +#else +# include +#endif #include #include "../readstat.h" diff --git a/src/txt/readstat_txt_read.c b/src/txt/readstat_txt_read.c index c248f11e..929883b0 100644 --- a/src/txt/readstat_txt_read.c +++ b/src/txt/readstat_txt_read.c @@ -1,7 +1,8 @@ - #include #include -#include +#if !defined(_MSC_VER) +# include +#endif #include #include From a17cf7b8381e0fdc3288d197249413649a43723a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 11:16:52 +0200 Subject: [PATCH 11/21] Add READSTAT_VERSION to the two project (wip) --- VS17/ReadStat.App/ReadStat.App.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj index eb2ec81b..e43d1832 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -129,7 +129,7 @@ Level3 Disabled true - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -147,7 +147,7 @@ Level3 Disabled true - _CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -167,7 +167,7 @@ true true true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true @@ -189,7 +189,7 @@ true true true - _CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true From 7255660e4fa83e20efa985941f06e3151e6b0f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 11:22:39 +0200 Subject: [PATCH 12/21] Fix VLA --- src/txt/readstat_txt_read.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/txt/readstat_txt_read.c b/src/txt/readstat_txt_read.c index 929883b0..46f93032 100644 --- a/src/txt/readstat_txt_read.c +++ b/src/txt/readstat_txt_read.c @@ -24,11 +24,11 @@ typedef struct txt_ctx_s { static readstat_error_t handle_value(readstat_parser_t *parser, iconv_t converter, int obs_index, readstat_schema_entry_t *entry, char *bytes, size_t len, void *ctx) { readstat_error_t error = READSTAT_OK; - char converted_value[4*len+1]; + char *converted_value = malloc(4*len+1); readstat_variable_t *variable = &entry->variable; readstat_value_t value = { .type = variable->type }; if (readstat_type_class(variable->type) == READSTAT_TYPE_CLASS_STRING) { - error = readstat_convert(converted_value, sizeof(converted_value), bytes, len, converter); + error = readstat_convert(converted_value, 4 * len + 1, bytes, len, converter); if (error != READSTAT_OK) goto cleanup; value.v.string_value = converted_value; @@ -48,6 +48,7 @@ static readstat_error_t handle_value(readstat_parser_t *parser, iconv_t converte error = READSTAT_ERROR_USER_ABORT; } cleanup: + free(converted_value); return error; } From cef16edd33ecbe5377532463ead08ca16f520c11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 11:37:32 +0200 Subject: [PATCH 13/21] Fix dangerous unsigned type promotion (MSVC error) --- src/txt/readstat_sas_commands_read.c | 2 +- src/txt/readstat_sas_commands_read.rl | 2 +- src/txt/readstat_spss_commands_read.c | 2 +- src/txt/readstat_spss_commands_read.rl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/txt/readstat_sas_commands_read.c b/src/txt/readstat_sas_commands_read.c index e12bcb9b..542043e8 100644 --- a/src/txt/readstat_sas_commands_read.c +++ b/src/txt/readstat_sas_commands_read.c @@ -3188,7 +3188,7 @@ readstat_schema_t *readstat_parse_sas_commands(readstat_parser_t *parser, break; case 25: #line 221 "src/txt/readstat_sas_commands_read.rl" - { label_type = LABEL_TYPE_DOUBLE; double_value = -integer; } + { label_type = LABEL_TYPE_DOUBLE; double_value = -(double)integer; } break; case 26: #line 222 "src/txt/readstat_sas_commands_read.rl" diff --git a/src/txt/readstat_sas_commands_read.rl b/src/txt/readstat_sas_commands_read.rl index 2f46e865..63919c19 100644 --- a/src/txt/readstat_sas_commands_read.rl +++ b/src/txt/readstat_sas_commands_read.rl @@ -223,7 +223,7 @@ readstat_schema_t *readstat_parse_sas_commands(readstat_parser_t *parser, empty_cmd = ";"; - value_label = ( "-" integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = -integer; } | + value_label = ( "-" integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = -(double)integer; } | integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = integer; } | integer whitespace+ "-" whitespace+ %{ first_integer = integer; } integer %{ label_type = LABEL_TYPE_RANGE; } | unquoted_string %{ label_type = LABEL_TYPE_STRING; } %copy_string | diff --git a/src/txt/readstat_spss_commands_read.c b/src/txt/readstat_spss_commands_read.c index 914d1f6d..0b737b3f 100644 --- a/src/txt/readstat_spss_commands_read.c +++ b/src/txt/readstat_spss_commands_read.c @@ -1989,7 +1989,7 @@ readstat_schema_t *readstat_parse_spss_commands(readstat_parser_t *parser, break; case 31: #line 259 "src/txt/readstat_spss_commands_read.rl" - { label_type = LABEL_TYPE_DOUBLE; double_value = -integer; } + { label_type = LABEL_TYPE_DOUBLE; double_value = -(double)integer; } break; case 32: #line 260 "src/txt/readstat_spss_commands_read.rl" diff --git a/src/txt/readstat_spss_commands_read.rl b/src/txt/readstat_spss_commands_read.rl index 3644eced..7adf287c 100644 --- a/src/txt/readstat_spss_commands_read.rl +++ b/src/txt/readstat_spss_commands_read.rl @@ -261,7 +261,7 @@ readstat_schema_t *readstat_parse_spss_commands(readstat_parser_t *parser, missing_values_list = missing_values_item (whitespace+ missing_values_item)*; - value_label = ( "-" integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = -integer; } | + value_label = ( "-" integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = -(double)integer; } | integer %{ label_type = LABEL_TYPE_DOUBLE; double_value = integer; } | integer whitespace+ "-" whitespace+ %{ first_integer = integer; } integer %{ label_type = LABEL_TYPE_RANGE; } | quoted_string %{ label_type = LABEL_TYPE_STRING; } %copy_quoted_string ) From 65a15df99e0d4ec3c9e14490c0256ee00c5f9fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 12:02:27 +0200 Subject: [PATCH 14/21] Fix relative paths in output obj files for MSVC and add missing tests --- VS17/ReadStat.App/ReadStat.App.vcxproj | 4 + .../ReadStat.App/ReadStat.App.vcxproj.filters | 154 ++++++++---------- VS17/ReadStat.Tests/ReadStat.Tests.vcxproj | 9 + VS17/ReadStat.vcxproj | 6 +- VS17/ReadStat.vcxproj.filters | 84 +++++++++- 5 files changed, 167 insertions(+), 90 deletions(-) diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat.App/ReadStat.App.vcxproj index e43d1832..83f7cc7c 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj @@ -133,6 +133,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj Console @@ -151,6 +152,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj Console @@ -171,6 +173,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj Console @@ -193,6 +196,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj Console diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj.filters b/VS17/ReadStat.App/ReadStat.App.vcxproj.filters index 930720ee..9109da5b 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj.filters +++ b/VS17/ReadStat.App/ReadStat.App.vcxproj.filters @@ -30,132 +30,114 @@ Source Files - - Source Files\modules - - - Source Files\modules - - - Source Files\modules - - - Source Files\modules - - - Source Files\modules - - - Source Files\modules - - - Source Files\modules + + Source Files\util - - Source Files\modules + + Source Files\util - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - - Source Files\modules + + Source Files - + Source Files - - Source Files\util + + Source Files - - Source Files\util + + Source Files - + Source Files - - Header Files\modules + + Header Files\util - - Header Files\modules + + Header Files\util - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - - Header Files\modules + + Header Files - + Header Files - - Header Files\util + + Header Files - - Header Files\util + + Header Files - + Header Files diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj index a7c9cc69..a22fe14c 100644 --- a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj +++ b/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj @@ -94,6 +94,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj $(ProjectDir)..\..\..\iconv\include @@ -115,6 +116,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj $(ProjectDir)..\..\..\iconv\include @@ -134,6 +136,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj $(ProjectDir)..\..\..\iconv\include @@ -155,6 +158,7 @@ true + $(IntDir)\%(RelativeDir)\%(Filename).obj $(ProjectDir)..\..\..\iconv\include @@ -171,21 +175,26 @@ + + + + + diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index 624e88c6..a9cf94de 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -98,6 +98,7 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + $(IntDir)\%(RelativeDir)\%(Filename).obj Windows @@ -115,6 +116,7 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + $(IntDir)\%(RelativeDir)\%(Filename).obj Windows @@ -139,6 +141,7 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + $(IntDir)\%(RelativeDir)\%(Filename).obj Windows @@ -160,6 +163,7 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) + $(IntDir)\%(RelativeDir)\%(Filename).obj Windows @@ -246,4 +250,4 @@ - + \ No newline at end of file diff --git a/VS17/ReadStat.vcxproj.filters b/VS17/ReadStat.vcxproj.filters index 425251e2..d722f68a 100644 --- a/VS17/ReadStat.vcxproj.filters +++ b/VS17/ReadStat.vcxproj.filters @@ -135,6 +135,27 @@ Source Files\stata + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + @@ -143,9 +164,6 @@ Header Files - - Header Files - Header Files @@ -161,5 +179,65 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file From 2305fa8f879516e2f4ca14b730c6780a45975b2d Mon Sep 17 00:00:00 2001 From: Frederic Gutierrez Date: Wed, 9 Sep 2020 16:58:33 +0200 Subject: [PATCH 15/21] Fix MSVC build and add all tests --- VS17/PropertySheet.props | 12 ++ VS17/ReadStat.sln | 44 +++- VS17/ReadStat.vcxproj | 24 ++- .../ReadStat_App.vcxproj} | 33 +-- .../ReadStat_App.vcxproj.filters} | 32 +-- .../ReadStat_Test_double_decimals.vcxproj | 192 ++++++++++++++++++ ...dStat_Test_double_decimals.vcxproj.filters | 36 ++++ .../ReadStat_Test_dta_days.vcxproj | 192 ++++++++++++++++++ .../ReadStat_Test_dta_days.vcxproj.filters | 36 ++++ .../ReadStat_Test_readstat.vcxproj} | 20 +- .../ReadStat_Test_readstat.vcxproj.filters} | 6 + .../ReadStat_Test_sav_date.vcxproj | 192 ++++++++++++++++++ .../ReadStat_Test_sav_date.vcxproj.filters | 36 ++++ 13 files changed, 809 insertions(+), 46 deletions(-) create mode 100644 VS17/PropertySheet.props rename VS17/{ReadStat.App/ReadStat.App.vcxproj => ReadStat_App/ReadStat_App.vcxproj} (90%) rename VS17/{ReadStat.App/ReadStat.App.vcxproj.filters => ReadStat_App/ReadStat_App.vcxproj.filters} (97%) create mode 100644 VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj create mode 100644 VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj.filters create mode 100644 VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj create mode 100644 VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj.filters rename VS17/{ReadStat.Tests/ReadStat.Tests.vcxproj => ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj} (91%) rename VS17/{ReadStat.Tests/ReadStat.Tests.vcxproj.filters => ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj.filters} (92%) create mode 100644 VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj create mode 100644 VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj.filters diff --git a/VS17/PropertySheet.props b/VS17/PropertySheet.props new file mode 100644 index 00000000..1e9d00c3 --- /dev/null +++ b/VS17/PropertySheet.props @@ -0,0 +1,12 @@ + + + + + + + + READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + + \ No newline at end of file diff --git a/VS17/ReadStat.sln b/VS17/ReadStat.sln index 901ac999..a446b34a 100644 --- a/VS17/ReadStat.sln +++ b/VS17/ReadStat.sln @@ -5,14 +5,28 @@ VisualStudioVersion = 15.0.27703.2047 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat", "ReadStat.vcxproj", "{7D9D3258-8850-466E-8A74-4F8025E6FA49}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat.Tests", "ReadStat.Tests\ReadStat.Tests.vcxproj", "{E9408E27-6E13-46C9-B07D-9569BD078EF6}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat_Test_readstat", "ReadStat_Test_readstat\ReadStat_Test_readstat.vcxproj", "{E9408E27-6E13-46C9-B07D-9569BD078EF6}" ProjectSection(ProjectDependencies) = postProject {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat.App", "ReadStat.App\ReadStat.App.vcxproj", "{80188B4B-81A0-4113-A848-CB6483D185EA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat_App", "ReadStat_App\ReadStat_App.vcxproj", "{80188B4B-81A0-4113-A848-CB6483D185EA}" + ProjectSection(ProjectDependencies) = postProject + {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat_Test_double_decimals", "ReadStat_Test_double_decimals\ReadStat_Test_double_decimals.vcxproj", "{96AB8E29-11AC-40F0-871A-856DD9C78EAB}" + ProjectSection(ProjectDependencies) = postProject + {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat_Test_dta_days", "ReadStat_Test_dta_days\ReadStat_Test_dta_days.vcxproj", "{D6F08523-A8F5-4F2A-A57B-EC013A136DA6}" + ProjectSection(ProjectDependencies) = postProject + {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReadStat_Test_sav_date", "ReadStat_Test_sav_date\ReadStat_Test_sav_date.vcxproj", "{D5265192-6034-4689-94FF-8B2060FBC309}" ProjectSection(ProjectDependencies) = postProject - {E9408E27-6E13-46C9-B07D-9569BD078EF6} = {E9408E27-6E13-46C9-B07D-9569BD078EF6} {7D9D3258-8850-466E-8A74-4F8025E6FA49} = {7D9D3258-8850-466E-8A74-4F8025E6FA49} EndProjectSection EndProject @@ -48,6 +62,30 @@ Global {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x64.Build.0 = Release|x64 {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x86.ActiveCfg = Release|Win32 {80188B4B-81A0-4113-A848-CB6483D185EA}.Release|x86.Build.0 = Release|Win32 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Debug|x64.ActiveCfg = Debug|x64 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Debug|x64.Build.0 = Debug|x64 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Debug|x86.ActiveCfg = Debug|Win32 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Debug|x86.Build.0 = Debug|Win32 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Release|x64.ActiveCfg = Release|x64 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Release|x64.Build.0 = Release|x64 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Release|x86.ActiveCfg = Release|Win32 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB}.Release|x86.Build.0 = Release|Win32 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Debug|x64.ActiveCfg = Debug|x64 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Debug|x64.Build.0 = Debug|x64 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Debug|x86.ActiveCfg = Debug|Win32 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Debug|x86.Build.0 = Debug|Win32 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Release|x64.ActiveCfg = Release|x64 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Release|x64.Build.0 = Release|x64 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Release|x86.ActiveCfg = Release|Win32 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6}.Release|x86.Build.0 = Release|Win32 + {D5265192-6034-4689-94FF-8B2060FBC309}.Debug|x64.ActiveCfg = Debug|x64 + {D5265192-6034-4689-94FF-8B2060FBC309}.Debug|x64.Build.0 = Debug|x64 + {D5265192-6034-4689-94FF-8B2060FBC309}.Debug|x86.ActiveCfg = Debug|Win32 + {D5265192-6034-4689-94FF-8B2060FBC309}.Debug|x86.Build.0 = Debug|Win32 + {D5265192-6034-4689-94FF-8B2060FBC309}.Release|x64.ActiveCfg = Release|x64 + {D5265192-6034-4689-94FF-8B2060FBC309}.Release|x64.Build.0 = Release|x64 + {D5265192-6034-4689-94FF-8B2060FBC309}.Release|x86.ActiveCfg = Release|Win32 + {D5265192-6034-4689-94FF-8B2060FBC309}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index a9cf94de..248145f6 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -59,15 +59,19 @@ + + + + @@ -88,7 +92,7 @@ Level3 Disabled true - READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + USING_STATIC_LIBICONV;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true @@ -98,7 +102,8 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\%(RelativeDir) + $(IntDir)FakePath\%(RelativeDir)\ Windows @@ -111,12 +116,13 @@ Level3 Disabled true - READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions) + USING_STATIC_LIBICONV;WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) true $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\%(RelativeDir) + $(IntDir)FakePath\%(RelativeDir)\ Windows @@ -131,7 +137,7 @@ true true true - READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + USING_STATIC_LIBICONV;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true @@ -141,7 +147,8 @@ $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\%(RelativeDir) + $(IntDir)FakePath\%(RelativeDir)\ Windows @@ -158,12 +165,13 @@ true true true - READSTAT_VERSION="1.1.4";USING_STATIC_LIBICONV;WIN64;_CRT_SECURE_NO_WARNINGS;NDEBUG;_LIB;%(PreprocessorDefinitions) + USING_STATIC_LIBICONV;WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) true $(ProjectDir)..\..\iconv\include;%(AdditionalIncludeDirectories) - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\%(RelativeDir) + $(IntDir)FakePath\%(RelativeDir)\ Windows diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj b/VS17/ReadStat_App/ReadStat_App.vcxproj similarity index 90% rename from VS17/ReadStat.App/ReadStat.App.vcxproj rename to VS17/ReadStat_App/ReadStat_App.vcxproj index 83f7cc7c..61dfe1cb 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj +++ b/VS17/ReadStat_App/ReadStat_App.vcxproj @@ -26,14 +26,14 @@ + + - - @@ -46,6 +46,8 @@ + + @@ -56,8 +58,6 @@ - - 15.0 @@ -65,6 +65,7 @@ Win32Proj ReadStatApp 10.0.17763.0 + ReadStat_App @@ -100,15 +101,19 @@ + + + + @@ -129,11 +134,12 @@ Level3 Disabled true - READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -148,11 +154,12 @@ Level3 Disabled true - READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -169,11 +176,12 @@ true true true - READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -192,11 +200,12 @@ true true true - READSTAT_VERSION="1.1.4";_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console diff --git a/VS17/ReadStat.App/ReadStat.App.vcxproj.filters b/VS17/ReadStat_App/ReadStat_App.vcxproj.filters similarity index 97% rename from VS17/ReadStat.App/ReadStat.App.vcxproj.filters rename to VS17/ReadStat_App/ReadStat_App.vcxproj.filters index 9109da5b..15473541 100644 --- a/VS17/ReadStat.App/ReadStat.App.vcxproj.filters +++ b/VS17/ReadStat_App/ReadStat_App.vcxproj.filters @@ -19,23 +19,17 @@ {de4b7ac4-3816-4eea-a44f-949af9bb3a37} - - {fa004f5e-d943-4d0a-87f7-1d3e101261ef} - - {a484a637-6af1-41c8-8da2-5f7db19ddf10} + {8f2a21ef-feb4-4b94-bfa9-40433fb84f36} + + + {ddbd8e6f-15a8-42dc-ac41-a8dbf6b67fea} Source Files - - Source Files\util - - - Source Files\util - Source Files @@ -72,14 +66,14 @@ Source Files + + Source Files\util + + + Source Files\util + - - Header Files\util - - - Header Files\util - Header Files @@ -140,5 +134,11 @@ Header Files + + Header Files\util + + + Header Files\util + \ No newline at end of file diff --git a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj new file mode 100644 index 00000000..2be8d857 --- /dev/null +++ b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {96AB8E29-11AC-40F0-871A-856DD9C78EAB} + Win32Proj + ReadStatTests + 10.0.17763.0 + ReadStat_Test_double_decimals + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + false + + + true + + + true + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + + + + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj.filters b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj.filters new file mode 100644 index 00000000..5f533212 --- /dev/null +++ b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {bc66b4d8-b052-45e3-83e6-c757da36b820} + + + {4429e582-f8a5-49eb-b347-4bd29ed708c1} + + + + + Source Files + + + Source Files\write + + + + + Header Files\write + + + \ No newline at end of file diff --git a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj new file mode 100644 index 00000000..2f980ff2 --- /dev/null +++ b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {D6F08523-A8F5-4F2A-A57B-EC013A136DA6} + Win32Proj + ReadStatTests + 10.0.17763.0 + ReadStat_Test_dta_days + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + false + + + true + + + true + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + + + + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj.filters b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj.filters new file mode 100644 index 00000000..f01a8e29 --- /dev/null +++ b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {a9dc55c0-eadc-4894-9f72-c59adba6368d} + + + {f0d789bb-6100-449e-9c28-91496e119e6a} + + + + + Header Files\util + + + + + Source Files + + + Source Files\util + + + \ No newline at end of file diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj similarity index 91% rename from VS17/ReadStat.Tests/ReadStat.Tests.vcxproj rename to VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj index a22fe14c..fd5e20ce 100644 --- a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj +++ b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj @@ -24,6 +24,7 @@ Win32Proj ReadStatTests 10.0.17763.0 + ReadStat_Test_readstat @@ -59,15 +60,19 @@ + + + + @@ -94,8 +99,9 @@ true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -116,8 +122,9 @@ true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -136,8 +143,9 @@ true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -158,8 +166,9 @@ true - $(IntDir)\%(RelativeDir)\%(Filename).obj + $(IntDir)FakePath\FakePath\%(RelativeDir) $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ Console @@ -186,15 +195,12 @@ - - - diff --git a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj.filters similarity index 92% rename from VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters rename to VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj.filters index 1c3f7985..9c61d0ca 100644 --- a/VS17/ReadStat.Tests/ReadStat.Tests.vcxproj.filters +++ b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj.filters @@ -42,6 +42,12 @@ Header Files + + Header Files + + + Header Files + diff --git a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj new file mode 100644 index 00000000..5f2eb5aa --- /dev/null +++ b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {D5265192-6034-4689-94FF-8B2060FBC309} + Win32Proj + ReadStatTests + 10.0.17763.0 + ReadStat_Test_sav_date + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + false + + + true + + + true + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN32;_DEBUG;DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) + ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + + + + + NotUsing + Level3 + Disabled + true + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + NotUsing + Level3 + MaxSpeed + true + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + $(IntDir)FakePath\FakePath\%(RelativeDir) + $(ProjectDir)..\..\..\iconv\include + $(IntDir)FakePath\FakePath\%(RelativeDir)\ + + + Console + true + true + true + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) + + + + + + + + + + + + + \ No newline at end of file diff --git a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj.filters b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj.filters new file mode 100644 index 00000000..c84ab465 --- /dev/null +++ b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {2348db41-955b-434d-b332-e856065fa485} + + + {46e899c2-0b26-4c91-877e-7ce755c899d7} + + + + + Source Files + + + Source Files\util + + + + + Header Files\util + + + \ No newline at end of file From 24be3d5d85098520eceb9837e9b8db1e60f4487a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Richard?= Date: Wed, 9 Sep 2020 18:19:02 +0200 Subject: [PATCH 16/21] Try of MSVC build in the CI --- VS17/ReadStat_App/ReadStat_App.vcxproj | 6 +-- .../ReadStat_Test_double_decimals.vcxproj | 6 +-- .../ReadStat_Test_dta_days.vcxproj | 6 +-- .../ReadStat_Test_readstat.vcxproj | 6 +-- .../ReadStat_Test_sav_date.vcxproj | 6 +-- appveyor.yml | 43 ++++++++++++++++--- 6 files changed, 53 insertions(+), 20 deletions(-) diff --git a/VS17/ReadStat_App/ReadStat_App.vcxproj b/VS17/ReadStat_App/ReadStat_App.vcxproj index 61dfe1cb..92da74b1 100644 --- a/VS17/ReadStat_App/ReadStat_App.vcxproj +++ b/VS17/ReadStat_App/ReadStat_App.vcxproj @@ -144,7 +144,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); @@ -164,7 +164,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -188,7 +188,7 @@ true true true - ReadStat.lib;libiconvStatic.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); diff --git a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj index 2be8d857..6a562ea9 100644 --- a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj +++ b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj @@ -109,7 +109,7 @@ true true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj index 2f980ff2..701e44ec 100644 --- a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj +++ b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj @@ -109,7 +109,7 @@ true true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj index fd5e20ce..740e2efb 100644 --- a/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj +++ b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj @@ -109,7 +109,7 @@ true true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj index 5f2eb5aa..ec105d22 100644 --- a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj +++ b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj @@ -109,7 +109,7 @@ true true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStatic.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconvStaticD.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconvStaticD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/appveyor.yml b/appveyor.yml index a037929b..57cff46d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -8,6 +8,7 @@ environment: matrix: - TOOLCHAIN: "msys2" - TOOLCHAIN: "cygwin" + - TOOLCHAIN: "msvc" branches: only: @@ -16,7 +17,28 @@ branches: skip_tags: true -build_script: +install: + - git clone https://github.com/pffang/libiconv-for-Windows.git C:\projects\iconv + - cd C:\projects\iconv + - git checkout 0e36d95873 + +for: +- + matrix: + only: + - TOOLCHAIN: "msvc" + + build: + parallel: true + project: VS17/ReadStat.sln + verbosity: minimal + +- + matrix: + except: + - TOOLCHAIN: "msvc" + + build_script: - ps: | if ($env:TOOLCHAIN -eq "msys2") { @@ -26,9 +48,9 @@ build_script: C:\msys64\usr\bin\bash -l -c "cd /c/projects/readstat && ./configure" C:\msys64\usr\bin\bash -l -c "cd /c/projects/readstat && make" } - else + elseif ($env:TOOLCHAIN -eq "cygwin") { - c:\cygwin64\setup-x86_64.exe -qnNdO -s http://cygwin.mirror.constant.com -l C:/cygwin64/var/cache/setup -P libiconv-devel -P ragel -P zlib-devel + C:\cygwin64\setup-x86_64.exe -qnNdO -s http://cygwin.mirror.constant.com -l C:/cygwin64/var/cache/setup -P libiconv-devel -P ragel -P zlib-devel C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/readstat && ./autogen.sh" C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/readstat && ./configure" C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/readstat && make" @@ -41,10 +63,21 @@ test_script: $env:MSYSTEM="MINGW64" C:\msys64\usr\bin\bash -l -c "cd /c/projects/readstat && make check" } - else + elseif ($env:TOOLCHAIN -eq "cygwin") { C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/readstat && make check" } + else + { + echo "Running test ReadStat_Test_readstat..." + C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_readstat.exe + echo "Running test ReadStat_Test_double_decimals..." + C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_double_decimals.exe + echo "Running test ReadStat_Test_dta_days..." + C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_dta_days.exe + echo "Running test ReadStat_Test_sav_date..." + C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_sav_date.exe + } on_success: - ps: | @@ -52,7 +85,7 @@ on_success: { C:\msys64\usr\bin\bash -l -c "cd /c/projects/readstat && cat ./test-suite.log" } - else + elseif ($env:TOOLCHAIN -eq "cygwin") { C:\cygwin64\bin\sh -lc "cd /cygdrive/c/projects/readstat && cat ./test-suite.log" } From 3fbb6a78de661b34ef1651168d85b314d9b68afe Mon Sep 17 00:00:00 2001 From: "github@rplusplus.com" Date: Thu, 10 Sep 2020 15:34:04 +0200 Subject: [PATCH 17/21] Try of MSVC build in the CI (WIP v2) --- appveyor.yml | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 57cff46d..5382f2bd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -69,14 +69,32 @@ test_script: } else { - echo "Running test ReadStat_Test_readstat..." - C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_readstat.exe - echo "Running test ReadStat_Test_double_decimals..." - C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_double_decimals.exe - echo "Running test ReadStat_Test_dta_days..." - C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_dta_days.exe - echo "Running test ReadStat_Test_sav_date..." - C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_sav_date.exe + $state = "PASS" + $tests = @("readstat","double_decimals","sav_date","dta_days") + + Copy-Item "C:\projects\iconv\lib64\libiconv.dll" -Destination "C:\projects\readstat\VS17\x64\Debug\" + + for($i=0 ; $i -lt $tests.Length ; $i++) + { + $currTest = $tests[$i] + $currExec = 'C:\projects\readstat\VS17\x64\Debug\ReadStat_Test_' + $currTest + '.exe;$?' + + echo "Running test $currTest..." + $success = Invoke-Expression $currExec + + if(-not $success){ + $state = "FAIL" + echo "Test result: FAIL" + } + else{ + echo "Test result: PASS" + } + } + + if($state -eq "FAIL") + { + exit 1 + } } on_success: From c10f588441636839cf0adb331ced2264c494bf8c Mon Sep 17 00:00:00 2001 From: Frederic Gutierrez Date: Thu, 10 Sep 2020 18:04:38 +0200 Subject: [PATCH 18/21] Uniformise VS solutions --- VS17/ReadStat.vcxproj | 8 ++++---- VS17/ReadStat_App/ReadStat_App.vcxproj | 10 +++++----- .../ReadStat_Test_double_decimals.vcxproj | 10 +++++----- .../ReadStat_Test_dta_days.vcxproj | 10 +++++----- .../ReadStat_Test_readstat.vcxproj | 10 +++++----- .../ReadStat_Test_sav_date.vcxproj | 10 +++++----- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/VS17/ReadStat.vcxproj b/VS17/ReadStat.vcxproj index 248145f6..9a0e2c39 100644 --- a/VS17/ReadStat.vcxproj +++ b/VS17/ReadStat.vcxproj @@ -92,7 +92,7 @@ Level3 Disabled true - USING_STATIC_LIBICONV;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true @@ -116,7 +116,7 @@ Level3 Disabled true - USING_STATIC_LIBICONV;WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) + WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) true @@ -137,7 +137,7 @@ true true true - USING_STATIC_LIBICONV;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true @@ -165,7 +165,7 @@ true true true - USING_STATIC_LIBICONV;WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) + WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) true diff --git a/VS17/ReadStat_App/ReadStat_App.vcxproj b/VS17/ReadStat_App/ReadStat_App.vcxproj index 92da74b1..775a1606 100644 --- a/VS17/ReadStat_App/ReadStat_App.vcxproj +++ b/VS17/ReadStat_App/ReadStat_App.vcxproj @@ -144,7 +144,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); @@ -164,7 +164,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -187,7 +187,7 @@ Console true true - true + false ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName); @@ -211,8 +211,8 @@ Console true true - true - ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + false + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj index 6a562ea9..3d2f43c8 100644 --- a/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj +++ b/VS17/ReadStat_Test_double_decimals/ReadStat_Test_double_decimals.vcxproj @@ -107,9 +107,9 @@ Console true true - true + false $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -174,7 +174,7 @@ Console true true - true + false ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj index 701e44ec..737ede08 100644 --- a/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj +++ b/VS17/ReadStat_Test_dta_days/ReadStat_Test_dta_days.vcxproj @@ -107,9 +107,9 @@ Console true true - true + false $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -174,7 +174,7 @@ Console true true - true + false ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj index 740e2efb..4e09878e 100644 --- a/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj +++ b/VS17/ReadStat_Test_readstat/ReadStat_Test_readstat.vcxproj @@ -107,7 +107,7 @@ Console true true - true + false $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) ReadStat.lib;libiconv.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvD.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;libiconvD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -174,8 +174,8 @@ Console true true - true - ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + false + ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) diff --git a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj index ec105d22..a1b4df3d 100644 --- a/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj +++ b/VS17/ReadStat_Test_sav_date/ReadStat_Test_sav_date.vcxproj @@ -107,9 +107,9 @@ Console true true - true + false $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -130,7 +130,7 @@ Console true $(ProjectDir)..\..\..\iconv\lib;..\$(ConfigurationName);%(AdditionalLibraryDirectories) - ReadStat.lib;libiconv.lib;%(AdditionalDependencies) + ReadStat.lib;%(AdditionalDependencies) @@ -150,7 +150,7 @@ Console true - ReadStat.lib;libiconv.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) @@ -174,7 +174,7 @@ Console true true - true + false ReadStat.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) $(ProjectDir)..\..\..\iconv\lib64;..\x64\$(ConfigurationName) From b070833ae550aa06abb4a39544165eb11e6bad9a Mon Sep 17 00:00:00 2001 From: "github@rplusplus.com" Date: Thu, 10 Sep 2020 18:21:00 +0200 Subject: [PATCH 19/21] Fix CI (debug mode) --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 5382f2bd..e43e9138 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,8 +6,8 @@ platform: x64 environment: matrix: - - TOOLCHAIN: "msys2" - - TOOLCHAIN: "cygwin" +# - TOOLCHAIN: "msys2" +# - TOOLCHAIN: "cygwin" - TOOLCHAIN: "msvc" branches: @@ -72,7 +72,7 @@ test_script: $state = "PASS" $tests = @("readstat","double_decimals","sav_date","dta_days") - Copy-Item "C:\projects\iconv\lib64\libiconv.dll" -Destination "C:\projects\readstat\VS17\x64\Debug\" + Copy-Item "C:\projects\iconv\lib64\libiconvD.dll" -Destination "C:\projects\readstat\VS17\x64\Debug\" for($i=0 ; $i -lt $tests.Length ; $i++) { From 058fd54635bc0e18b782e1b14c1e91175f70c046 Mon Sep 17 00:00:00 2001 From: "github@rplusplus.com" Date: Thu, 10 Sep 2020 18:23:58 +0200 Subject: [PATCH 20/21] Fix CI (debug mode) --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index e43e9138..cdee321e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,8 +6,8 @@ platform: x64 environment: matrix: -# - TOOLCHAIN: "msys2" -# - TOOLCHAIN: "cygwin" + - TOOLCHAIN: "msys2" + - TOOLCHAIN: "cygwin" - TOOLCHAIN: "msvc" branches: From b590396e2c766a5653dd3e4ecc3b69d6a006d87e Mon Sep 17 00:00:00 2001 From: "github@rplusplus.com" Date: Mon, 14 Sep 2020 15:21:06 +0200 Subject: [PATCH 21/21] Use MSVC 2017 in the CI and execute the msvc toolchain first --- appveyor.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index cdee321e..1b83576d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,14 +1,16 @@ version: 0.1.{build} -os: Windows Server 2012 R2 +os: Windows Server 2016 + +image: Visual Studio 2017 platform: x64 environment: matrix: + - TOOLCHAIN: "msvc" - TOOLCHAIN: "msys2" - TOOLCHAIN: "cygwin" - - TOOLCHAIN: "msvc" branches: only: