From 80135280c95155363baf45c39b0403fb71b52e2e Mon Sep 17 00:00:00 2001
From: Francois Henrotte <francois.henrotte@ulg.ac.be>
Date: Wed, 12 Jun 2013 20:41:37 +0000
Subject: [PATCH] database management

---
 contrib/onelab/OnelabClients.cpp |  4 ++--
 contrib/onelab/OnelabMessage.cpp |  1 +
 contrib/onelab/OnelabParser.cpp  | 12 +++++++++---
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/contrib/onelab/OnelabClients.cpp b/contrib/onelab/OnelabClients.cpp
index 9ef46c4d26..d11c79cc40 100644
--- a/contrib/onelab/OnelabClients.cpp
+++ b/contrib/onelab/OnelabClients.cpp
@@ -1406,8 +1406,8 @@ std::string QuoteExecPath(const std::string &in)
 
 std::string removeBlanks(const std::string &in)
 {
-  size_t pos0=in.find_first_not_of(" ");
-  size_t pos=in.find_last_not_of(" ");
+  size_t pos0=in.find_first_not_of(" \t");
+  size_t pos=in.find_last_not_of(" \t");
   if( (pos0 != std::string::npos) && (pos != std::string::npos))
     return in.substr(pos0, pos-pos0+1);
   else
diff --git a/contrib/onelab/OnelabMessage.cpp b/contrib/onelab/OnelabMessage.cpp
index be750799dd..ee827c048f 100644
--- a/contrib/onelab/OnelabMessage.cpp
+++ b/contrib/onelab/OnelabMessage.cpp
@@ -315,6 +315,7 @@ void OLMsg::SetOnelabString(std::string name, std::string val, bool visible)
     }
     strings[0].setValue(val);
     strings[0].setVisible(visible);
+    strings[0].setAttribute("notInDb","True");
     _onelabClient->set(strings[0]);
   }
 }
diff --git a/contrib/onelab/OnelabParser.cpp b/contrib/onelab/OnelabParser.cpp
index e6b23a99ca..c72997b374 100644
--- a/contrib/onelab/OnelabParser.cpp
+++ b/contrib/onelab/OnelabParser.cpp
@@ -560,8 +560,8 @@ void localSolverClient::parse_sentence(std::string line) {
       	  val=atof(resolveGetVal(arguments[0]).c_str());
       	numbers[0].setValue(val);
       }
-      else if(arguments[0].empty()) // resets read only parameters
-      	  numbers[0].setValue(val);
+      // else if(arguments[0].empty()) // resets read only parameters
+      // 	  numbers[0].setValue(val);
 
       if(arguments.size()>2)
 	numbers[0].setLabel(unquote(arguments[2]));
@@ -577,6 +577,7 @@ void localSolverClient::parse_sentence(std::string line) {
     }
     else if(!action.compare("string")) { 
       // syntax: paramName.string(val,path,help)
+      std::string val = "";
       if(arguments.size()>1)
 	name.assign(FixOLPath(arguments[1]) + name); // append path
       _parameters.insert(name);
@@ -585,7 +586,12 @@ void localSolverClient::parse_sentence(std::string line) {
       if(strings.empty()){
 	strings.resize(1);
 	strings[0].setName(name);
-	std::string val=resolveGetVal(arguments[0]);
+      	if(arguments[0].empty()){
+      	  strings[0].setReadOnly(true);
+      	  strings[0].setNeverChanged(true);
+      	}
+	else
+	  std::string val=resolveGetVal(arguments[0]);
 	strings[0].setValue(val);
       }
       // choices list is reset
-- 
GitLab