From 6ae8dac71f164095619f8a714eef52437756bc40 Mon Sep 17 00:00:00 2001 From: ALEXks Date: Wed, 20 Dec 2023 17:18:02 +0300 Subject: [PATCH] improved parsing --- .../experts/Sapfor_2017/_src/Utils/utils.cpp | 39 ++++++++++++------- .../experts/Sapfor_2017/_src/Utils/version.h | 2 +- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/utils.cpp b/sapfor/experts/Sapfor_2017/_src/Utils/utils.cpp index acc6ab5..009f6cd 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/utils.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Utils/utils.cpp @@ -114,6 +114,7 @@ string OnlyName(const char *filename) string OnlyExt(const char *filename) { char *extname = new char[1024]; + extname[0] = '\0'; int i; int len = (int)strlen(filename); @@ -1385,25 +1386,33 @@ pair, vector> splitCommandLineForParse(char** argv, int a //fdv|f|ftn|for|f90|f95|f03 for (int z = 0; z < argc; ++z) { - string isFile = argv[z]; - if (isFile.find(".for") != string::npos || - isFile.find(".f90") != string::npos || - isFile.find(".fdv") != string::npos || - isFile.find(".ftn") != string::npos || - isFile.find(".f95") != string::npos || - isFile.find(".f03") != string::npos || - isFile.find(".f") != string::npos) + string arg = argv[z]; + + string ext = OnlyExt(arg.c_str()); + convertToLower(ext); + if (ext.find("for") != string::npos || + ext.find("f90") != string::npos || + ext.find("fdv") != string::npos || + ext.find("ftn") != string::npos || + ext.find("f95") != string::npos || + ext.find("f03") != string::npos || + ext.find("f") != string::npos) { - if (isFile.find("*") == string::npos) - files.insert(isFile); + if (arg.find("*") == string::npos) + files.insert(arg); else { #if __cplusplus >= 201703L - fs::path ext = fs::path(isFile).filename().extension(); + fs::path ext = fs::path(arg).filename().extension(); + auto str_ext = ext.string(); + convertToLower(str_ext); + for (auto& file : filesInDir) { - auto cmp = file.extension().compare(ext); - if (cmp == 0) + auto cmp_ext = file.extension().string(); + convertToLower(cmp_ext); + + if (cmp_ext == str_ext) files.insert(file.filename().string()); } #endif @@ -1411,10 +1420,10 @@ pair, vector> splitCommandLineForParse(char** argv, int a } else { - if (isFile == "-inl") + if (arg == "-inl") isInline = true; else - options.push_back(isFile); + options.push_back(arg); } } diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/version.h b/sapfor/experts/Sapfor_2017/_src/Utils/version.h index 4e2e3d5..741a709 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/version.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_SPF "2257" +#define VERSION_SPF "2258"