Thanks Hans, I'll rewrite that part.
-----Original Message-----
From: Hans Nordeback <[email protected]>
Date: Thursday, 20 September 2018 at 10:18 pm
To: gary <[email protected]>
Cc: <[email protected]>
Subject: Re: [PATCH 2/3] base: add config file reader [#2923]
Hi Gary,
I think we need to replace the use of std::regex for now. /Thanks HansN
On 09/20/2018 02:09 PM, Gary Lee wrote:
> 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 <[email protected]>
> Date: Thursday, 20 September 2018 at 8:40 pm
> To: gary <[email protected]>
> Cc: <[email protected]>
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel