nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MINIFI-286) GetFile filter fails to compile with GCC version greater than 4.9
Date Wed, 03 May 2017 12:40:04 GMT

    [ 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)

Mime
View raw message