diff --git a/Common/Gmsh.cpp b/Common/Gmsh.cpp
index b66c668cf0673fd19e6fdbc893b34a29abcc1212..62e960cafb69422ef3395b4c08cce91adc6acee2 100644
--- a/Common/Gmsh.cpp
+++ b/Common/Gmsh.cpp
@@ -149,26 +149,29 @@ void GmshSetColorOption(const std::string &category, const std::string &name,
 int GmshGetOption(const std::string &category, const std::string &name,
                   std::string &value, int index)
 {
-  return StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  return StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value,
+                      false);
 }
 
 int GmshGetOption(const std::string &category, const std::string &name,
                   double &value, int index)
 {
-  return NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  return NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value,
+                      false);
 }
 
 int GmshGetOption(const std::string &category, const std::string &name,
                   unsigned int &value, int index)
 {
-  return ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  return ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value,
+                     false);
 }
 
 std::string GmshGetStringOption(const std::string &category, const std::string &name,
                                 int index)
 {
   std::string value;
-  StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value, false);
   return value;
 }
 
@@ -176,7 +179,7 @@ double GmshGetNumberOption(const std::string &category, const std::string &name,
                            int index)
 {
   double value;
-  NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value, false);
   return value;
 }
 
@@ -184,7 +187,7 @@ int GmshGetColorOption(const std::string &category, const std::string &name,
                        int index)
 {
   unsigned int value;
-  ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
+  ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value, false);
   return value;
 }
 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 21d728f195599e2018c5ada2ed7aaaac6a3b423b..fbaf830300f4dfc6f771d9c4ebdce95a1edf3194 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -59,7 +59,7 @@
 // General routines for string options
 
 bool StringOption(int action, const char *category, int num,
-                  const char *name, std::string &val)
+                  const char *name, std::string &val, bool warnIfUnknown)
 {
   StringXString *s = 0;
   if(!strcmp(category, "General"))
@@ -77,14 +77,16 @@ bool StringOption(int action, const char *category, int num,
   else if(!strcmp(category, "Print"))
     s = PrintOptions_String;
   else{
-    Msg::Error("Unknown string option category '%s'", category);
+    if(warnIfUnknown)
+      Msg::Error("Unknown string option category '%s'", category);
     return false;
   }
 
   int i = 0;
   while(s[i].str && strcmp(s[i].str, name)) i++;
   if(!s[i].str){
-    Msg::Error("Unknown string option '%s.%s'", category, name);
+    if(warnIfUnknown)
+      Msg::Error("Unknown string option '%s.%s'", category, name);
     return false;
   }
 
@@ -179,7 +181,7 @@ static void PrintStringOptionsDoc(StringXString s[], const char *prefix, FILE *f
 // General routines for numeric options
 
 bool NumberOption(int action, const char *category, int num,
-                  const char *name, double &val)
+                  const char *name, double &val, bool warnIfUnknown)
 {
   StringXNumber *s = 0;
   if(!strcmp(category, "General"))
@@ -197,14 +199,16 @@ bool NumberOption(int action, const char *category, int num,
   else if(!strcmp(category, "Print"))
     s = PrintOptions_Number;
   else{
-    Msg::Error("Unknown number option category '%s'", category);
+    if(warnIfUnknown)
+      Msg::Error("Unknown number option category '%s'", category);
     return false;
   }
 
   int i = 0;
   while(s[i].str && strcmp(s[i].str, name)) i++;
   if(!s[i].str){
-    Msg::Error("Unknown number option '%s.%s'", category, name);
+    if(warnIfUnknown)
+      Msg::Error("Unknown number option '%s.%s'", category, name);
     return false;
   }
 
@@ -275,7 +279,7 @@ static void PrintNumberOptionsDoc(StringXNumber s[], const char *prefix, FILE *
 // General routines for color options
 
 bool ColorOption(int action, const char *category, int num,
-                 const char *name, unsigned int &val)
+                 const char *name, unsigned int &val, bool warnIfUnknown)
 {
   StringXColor *s = 0;
   if(!strcmp(category, "General"))
@@ -293,14 +297,16 @@ bool ColorOption(int action, const char *category, int num,
   else if(!strcmp(category, "Print"))
     s = PrintOptions_Color;
   else{
-    Msg::Error("Unknown color option category '%s'", category);
+    if(warnIfUnknown)
+      Msg::Error("Unknown color option category '%s'", category);
     return false;
   }
 
   int i = 0;
   while(s[i].str && strcmp(s[i].str, name)) i++;
   if(!s[i].str){
-    Msg::Error("Unknown color option '%s.%s'", category, name);
+    if(warnIfUnknown)
+      Msg::Error("Unknown color option '%s.%s'", category, name);
     return false;
   }
 
diff --git a/Common/Options.h b/Common/Options.h
index 53f78967702ad6dc6ef0e850d98c025d79f8221a..d337f7e8dc996dd52f945b7b37ebc74f32d9fa90 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -849,11 +849,11 @@ void PrintOptions(int num, int level, int diff, int help, const char *filename,
 void PrintOptionsDoc();
 
 bool StringOption(int action, const char *category, int num,
-                  const char *name, std::string &val);
+                  const char *name, std::string &val, bool warnIfUnknown=true);
 bool NumberOption(int action, const char *category, int num,
-                  const char *name, double &val);
+                  const char *name, double &val, bool warnIfUnknown=true);
 bool ColorOption(int action, const char *category, int num,
-                 const char *name, unsigned int &val);
+                 const char *name, unsigned int &val, bool warnIfUnknown=true);
 
 GmshColorTable *GetColorTable(int num);
 int GetColorForString(int alpha, const char *string, int *FlagError);