[ 
https://issues.apache.org/jira/browse/MINIFI-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15994774#comment-15994774
 ] 

ASF GitHub Bot commented on MINIFI-286:
---------------------------------------

Github user phrocker commented on the issue:

    https://github.com/apache/nifi-minifi-cpp/pull/88
  
    @apiri The logic can be improved  @jdye64 I'm in favor of removing the 
conditional expression entirely and using the c style for all versions since 
that will work. There's no point in using the C++ regex matching since it won't 
be available for all builds. If you really want to maintain it, you can do this:
    
    ```
    diff --git a/libminifi/src/processors/GetFile.cpp 
b/libminifi/src/processors/GetFile.cpp
    index 2740793..9988029 100644
    --- a/libminifi/src/processors/GetFile.cpp
    +++ b/libminifi/src/processors/GetFile.cpp
    @@ -24,8 +24,9 @@
     #include <dirent.h>
     #include <limits.h>
     #include <unistd.h>
    -#if  (__GNUC__ >= 4)
    -#if (__GNUC_MINOR__ < 9)
    +// if an older version of gcc that doesn't support <regex>
    +#ifdef __GNUC__
    +#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9))
     #include <regex.h>
     #else
     #include <regex>
    @@ -268,8 +269,7 @@ bool GetFile::acceptFile(std::string fullName, 
std::string name,
           return false;
     
     #ifdef __GNUC__
    -#if (__GNUC__ >= 4)
    -#if (__GNUC_MINOR__ < 9)
    +#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9))
         regex_t regex;
         int ret = regcomp(&regex, request.fileFilter.c_str(), 0);
         if (ret)
    @@ -280,7 +280,7 @@ bool GetFile::acceptFile(std::string fullName, 
std::string name,
           return false;
     #else
         try {
    -      std::regex re(fileFilter);
    +      std::regex re(request.fileFilter);
     
           if (!std::regex_match(name, re)) {
             return false;
    @@ -290,7 +290,6 @@ bool GetFile::acceptFile(std::string fullName, 
std::string name,
           return false;
         }
     #endif
    -#endif
     #else
         logger_->log_info("Cannot support regex filtering");
     #endif
    ```


> GetFile filter fails to compile with GCC version greater than 4.9
> -----------------------------------------------------------------
>
>                 Key: MINIFI-286
>                 URL: https://issues.apache.org/jira/browse/MINIFI-286
>             Project: Apache NiFi MiNiFi
>          Issue Type: Bug
>          Components: C++
>            Reporter: Jeremy Dyer
>            Assignee: Jeremy Dyer
>             Fix For: cpp-0.2.0
>
>
> GetFile.cpp has a macro which if the GCC version is greater than 4.9 a line 
> of code is introduced where "fileFilter" is used rather than 
> "request.fileFilter" which causes a compilation error.
> GCC Version = 4.9.2
> /opt/nifi-minifi-cpp/libminifi/src/processors/GetFile.cpp: In member function 
> ‘bool org::apache::nifi::minifi::processors::GetFile::acceptFile(std::string, 
> std::string, const org::apache::nifi::minifi::processors::GetFileRequest&)’:
> /opt/nifi-minifi-cpp/libminifi/src/processors/GetFile.cpp:283:21: error: 
> ‘fileFilter’ was not declared in this scope
>        std::regex re(fileFilter);



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to