[nemiver] Allow the ',' separator in NMV_LOG_DOMAINS env var



commit 8d00e17f0e5475f77f3323dd3f6b6b425c8429cc
Author: Dodji Seketeli <dodji redhat com>
Date:   Tue Jun 2 15:44:22 2009 +0200

    Allow the ',' separator in NMV_LOG_DOMAINS env var
    
    	* src/common/nmv-log-stream.cc:
    	(LogStream::Priv::load_enabled_domains_from_env): Allow
    	use of ',' and space as separators in the content of the
    	nmv_log_domains environment variable.
    	* src/common/nmv-ustring.cc,h:
    	(UString::split_set): New method.
---
 src/common/nmv-log-stream.cc |    2 +-
 src/common/nmv-ustring.cc    |   28 +++++++++++++++++++++++++++-
 src/common/nmv-ustring.h     |    1 +
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/common/nmv-log-stream.cc b/src/common/nmv-log-stream.cc
index c950962..f56c61b 100644
--- a/src/common/nmv-log-stream.cc
+++ b/src/common/nmv-log-stream.cc
@@ -299,7 +299,7 @@ struct LogStream::Priv
         }
         if (!str) {return;}
         UString domains_str = Glib::locale_to_utf8 (str) ;
-        enabled_domains_from_env = domains_str.split (" ") ;
+        enabled_domains_from_env = domains_str.split_set (" ,") ;
     }
 }
 ;//end LogStream::Priv
diff --git a/src/common/nmv-ustring.cc b/src/common/nmv-ustring.cc
index 3d6bf76..e3bb08f 100644
--- a/src/common/nmv-ustring.cc
+++ b/src/common/nmv-ustring.cc
@@ -201,7 +201,8 @@ UString::split (const UString &a_delim) const
         for (gchar **cur = splited ; cur && *cur; ++cur) {
             result.push_back (UString (*cur)) ;
         }
-    } catch (...) {}
+    } catch (...) {
+    }
 
     if (splited) {
         g_strfreev (splited) ;
@@ -209,6 +210,31 @@ UString::split (const UString &a_delim) const
     return result ;
 }
 
+vector<UString>
+UString::split_set (const UString &a_delim_set) const
+{
+    vector<UString> result ;
+    if (size () == Glib::ustring::size_type (0)) {return result;}
+
+    gint len = bytes () + 1 ;
+    CharSafePtr buf (new gchar[len]);
+    memset (buf.get (), 0, len);
+    memcpy (buf.get (), c_str (), bytes ());
+
+    gchar **splited = g_strsplit_set (buf.get (), a_delim_set.c_str (), -1);
+    try {
+        for (gchar **cur = splited ; cur && *cur; ++cur) {
+            result.push_back (UString (*cur));
+        }
+    } catch (...) {
+    }
+
+    if (splited) {
+        g_strfreev (splited);
+    }
+    return result;
+}
+
 UString
 UString::join (const vector<UString> &a_elements,
                const UString &a_delim)
diff --git a/src/common/nmv-ustring.h b/src/common/nmv-ustring.h
index bb98e87..95e8bff 100644
--- a/src/common/nmv-ustring.h
+++ b/src/common/nmv-ustring.h
@@ -63,6 +63,7 @@ public:
     UString& operator= (UString const &a_cstr) ;
     bool operator! () const ;
     vector<UString> split (const UString &a_delim) const ;
+    vector<UString> split_set (const UString &a_delim_set) const ;
     static UString join (const vector<UString> &a_elements,
                          const UString &a_delim=" ") ;
     static UString join (vector<UString>::const_iterator &a_from,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]