According to https://isocpp.org/blog/2014/04/gcc-4.9.0

It's been released for over 4 years.

-----Original Message-----
From: gary <gary....@dektech.com.au>
Date: Thursday, 20 September 2018 at 10:11 pm
To: Hans Nordeback <hans.nordeb...@ericsson.com>
Cc: <opensaf-devel@lists.sourceforge.net>
Subject: Re: [devel] [PATCH 2/3] base: add config file reader [#2923]

    Hi Hans
    
    Just tested it with 4.9.3 and it works fine.
    
    It doesn't link with 4.8.5
    
    config_file_reader.cc:(.text+0x1c8): undefined reference to 
`std::regex_token_iterator<__gnu_cxx::__normal_iterator<char const*, 
std::string>, char, std::regex_traits<char> 
>::regex_token_iterator(__gnu_cxx::__normal_iterator<char const*, std::string>, 
__gnu_cxx::__normal_iterator<char const*, std::string>, std::basic_regex<char, 
std::regex_traits<char> > const&, int, std::bitset<11ul>)
    
    Is it time to upgrade the gcc requirement? (
    
    Gary
    
    -----Original Message-----
    From: Hans Nordeback <hans.nordeb...@ericsson.com>
    Date: Thursday, 20 September 2018 at 8:40 pm
    To: gary <gary....@dektech.com.au>
    Cc: <opensaf-devel@lists.sourceforge.net>
    Subject: Re: [PATCH 2/3] base: add config file reader [#2923]
    
        ack, review only. Some comments below. /Thanks HansN
        
        
        On 09/19/2018 05:42 AM, Gary Lee wrote:
        > Some configuration attribute are read by OpenSAF daemons as
        > environment variables. eg.
        >
        > export FMS_PROMOTE_ACTIVE_TIMER=0
        >
        > There is no easy way to reload these values without a restart.
        >
        > ConfigFileReader will parse these files looking for 'export VAR=VAL'
        > and store them into a map, so a daemon can reload configuration
        > without a restart.
        > ---
        >   src/base/Makefile.am           |  2 ++
        >   src/base/config_file_reader.cc | 43 
++++++++++++++++++++++++++++++++++
        >   src/base/config_file_reader.h  | 30 ++++++++++++++++++++++++
        >   3 files changed, 75 insertions(+)
        >   create mode 100644 src/base/config_file_reader.cc
        >   create mode 100644 src/base/config_file_reader.h
        >
        > diff --git a/src/base/Makefile.am b/src/base/Makefile.am
        > index c7dd01900..ce93562e5 100644
        > --- a/src/base/Makefile.am
        > +++ b/src/base/Makefile.am
        > @@ -33,6 +33,7 @@ lib_libopensaf_core_la_LDFLAGS += \
        >   lib_libopensaf_core_la_SOURCES += \
        >       src/base/condition_variable.cc \
        >       src/base/conf.cc \
        > +     src/base/config_file_reader.cc \
        >       src/base/daemon.c \
        >       src/base/file_descriptor.cc \
        >       src/base/file_notify.cc \
        > @@ -94,6 +95,7 @@ noinst_HEADERS += \
        >       src/base/buffer.h \
        >       src/base/condition_variable.h \
        >       src/base/conf.h \
        > +     src/base/config_file_reader.h \
        >       src/base/daemon.h \
        >       src/base/file_descriptor.h \
        >       src/base/file_notify.h \
        > diff --git a/src/base/config_file_reader.cc 
b/src/base/config_file_reader.cc
        > new file mode 100644
        > index 000000000..d22930505
        > --- /dev/null
        > +++ b/src/base/config_file_reader.cc
        > @@ -0,0 +1,43 @@
        > +/*      -*- OpenSAF  -*-
        > + *
        > + * Copyright Ericsson AB 2018 - All Rights Reserved.
        > + *
        > + * This program is distributed in the hope that it will be useful, 
but
        > + * WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY
        > + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are 
licensed
        > + * under the GNU Lesser General Public License Version 2.1, February 
1999.
        > + * The complete license can be accessed from the following location:
        > + * http://opensource.org/licenses/lgpl-license.php
        > + * See the Copying file included with the OpenSAF distribution for 
full
        > + * licensing terms.
        > + *
        > + */
        > +
        > +#include <fstream>
        > +#include <regex>
        > +#include "base/config_file_reader.h"
        > +
        > +ConfigFileReader::SettingsMap ConfigFileReader::ParseFile(const 
std::string& filename) {
        > +  SettingsMap map;
        > +  std::ifstream file(filename);
        > +  std::string line;
        > +
        > +  if (file.is_open()) {
        > +    while (getline(file, line)) {
        > +      // go through each line of the config file
        > +      // only process "export key=value" and ignore trailing comments
        > +      // note: value may be surrounded with quotes
        [HansN] there were some issues found using std::regex with gcc 4.8.4 in 
        ticket #2165 but worked with newer compiler versions, check
        the review comments for ticket #2165
        > +      std::regex re("^export\\s*(\\w+)\\s*=\\s*([^#\\n]+)");
        > +      std::sregex_token_iterator key_iter(line.begin(), line.end(), 
re, 1);
        > +      std::sregex_token_iterator value_iter(line.begin(), 
line.end(), re, 2);
        > +      std::sregex_token_iterator end;
        > +
        > +      for (; key_iter != end && value_iter != end; ++key_iter, 
++value_iter) {
        > +        // store key-value pairs into map
        > +        map[key_iter->str()] = value_iter->str();
        > +      }
        > +    }
        > +    file.close();
        > +  }
        > +  return map;
        > +}
        > diff --git a/src/base/config_file_reader.h 
b/src/base/config_file_reader.h
        > new file mode 100644
        > index 000000000..cb281b7db
        > --- /dev/null
        > +++ b/src/base/config_file_reader.h
        > @@ -0,0 +1,30 @@
        > +/*      -*- OpenSAF  -*-
        > + *
        > + * Copyright Ericsson AB 2018 - All Rights Reserved.
        > + *
        > + * This program is distributed in the hope that it will be useful, 
but
        > + * WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY
        > + * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are 
licensed
        > + * under the GNU Lesser General Public License Version 2.1, February 
1999.
        > + * The complete license can be accessed from the following location:
        > + * http://opensource.org/licenses/lgpl-license.php
        > + * See the Copying file included with the OpenSAF distribution for 
full
        > + * licensing terms.
        > + *
        > + */
        > +
        > +#ifndef BASE_CONFIG_FILE_READER_H_
        > +#define BASE_CONFIG_FILE_READER_H_
        > +
        > +#include <map>
        > +#include <string>
        > +
        > +class ConfigFileReader {
        > + public:
        [HansN] prefer alias declarations to typedefs, (i.e. using).
        > +  typedef std::map<std::string, std::string> SettingsMap;
        > +
        > +  // parses OpenSAF 'config' files and return key-value pairs in a 
map
        > +  ConfigFileReader::SettingsMap ParseFile(const std::string& 
filename);
        > +};
        > +
        > +#endif /* BASE_CONFIG_FILE_READER_H */
        
        
    
    
    
    
    _______________________________________________
    Opensaf-devel mailing list
    Opensaf-devel@lists.sourceforge.net
    https://lists.sourceforge.net/lists/listinfo/opensaf-devel
    




_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to