diff --git a/Adapt/Adapt.cpp b/Adapt/Adapt.cpp
index 4dd75a2a8c992fc52bbb6cc4d457a7328181bd7d..c397866c2db150e62d1b80a9268d41758bb5dbd6 100644
--- a/Adapt/Adapt.cpp
+++ b/Adapt/Adapt.cpp
@@ -1,4 +1,4 @@
-// $Id: Adapt.cpp,v 1.4 2001-01-09 19:40:56 remacle Exp $
+// $Id: Adapt.cpp,v 1.5 2001-01-12 13:28:51 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Adapt.h"
@@ -134,7 +134,7 @@ double AdaptMesh (int N,        /* Number of elements */
     }
     contr = fabs(minf);
 
-    Msg(INFOS, "H-Refinement 1, Error %g=>%g, Objective %g, Reduction Factor %g->%g",
+    Msg(INFO, "H-Refinement 1, Error %g=>%g, Objective %g, Reduction Factor %g->%g",
         e0, sqrt(obj), -minf, minri, maxri);
     break;
 
@@ -153,7 +153,7 @@ double AdaptMesh (int N,        /* Number of elements */
     }
     contr = sqrt(fabs(minf));
 
-    Msg(INFOS, "H-Refinement 2, Elements %g=>%g, Objective %g, Reduction Factor %g->%g",
+    Msg(INFO, "H-Refinement 2, Elements %g=>%g, Objective %g, Reduction Factor %g->%g",
         e0, obj, 100. * sqrt(fabs(minf)), minri, maxri);
     break;
 
@@ -175,7 +175,7 @@ double AdaptMesh (int N,        /* Number of elements */
     }
     contr = fabs(minf);
 
-    Msg(INFOS, "P-Refinement, Error %g=%g=>%g, Objective %g",
+    Msg(INFO, "P-Refinement, Error %g=%g=>%g, Objective %g",
         e0, sqrt(obj), sqrt(obj2), minf);
     break;
 
diff --git a/Common/Context.cpp b/Common/Context.cpp
index 9f78fc1756d4f646651002f85e5421bb4955616f..3932fadc4a3cb6f6a5769cbf34884a47addc4817 100644
--- a/Common/Context.cpp
+++ b/Common/Context.cpp
@@ -1,4 +1,4 @@
-// $Id: Context.cpp,v 1.31 2001-01-11 12:53:57 geuzaine Exp $
+// $Id: Context.cpp,v 1.32 2001-01-12 13:28:54 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -280,8 +280,8 @@ void Print_Context(char *filename){
   Print_ColorOptions(PrintOptions_Color, "Print.", file);
 
   if(filename){
-    Msg (INFOS, "Options Output Complete '%s'", filename);
-    Msg (INFO, "Wrote File '%s'", filename);
+    Msg(INFO, "Options Output Complete '%s'", filename);
+    Msg(STATUS2, "Wrote File '%s'", filename);
     fclose(file);
   }
 }
diff --git a/Common/Message.h b/Common/Message.h
index f185ef5bd3123e01da99a4991f7045519c74cfa2..df153d4ba17f2cb9d03badce4922390b3a634695 100644
--- a/Common/Message.h
+++ b/Common/Message.h
@@ -3,36 +3,43 @@
 
 #include <stdarg.h>
 
-#define FATAL          0  // Fatal error (causes Gmsh to exit)
-#define FATAL1        10  
-#define FATAL2        20  
-#define FATAL3        30  
-
-#define GERROR         1  // Error (but Gmsh can live with it)
-#define GERROR1       11
-#define GERROR2       21
-#define GERROR3       31
-
-#define WARNING        2  // Warning
-#define WARNING1      12
-#define WARNING2      22
-#define WARNING3      32
-
-#define INFOS          3  // Long informations
-#define INFOS1        13
-#define INFOS2        23
-#define INFOS3        33
-
-#define INFO           4  // Small information in status bar
-#define SELECT         5  // Small interaction message in status bar, e.g. for select
-#define STATUS         6  // Gmsh status in status bar
-#define PARSER_ERROR   7  // Error during syntax parsing
-#define PARSER_INFO    8  // Info during syntax parsing
-
-#define DEBUG          9  // Long debug information
-#define DEBUG1        19
-#define DEBUG2        29
-#define DEBUG3        39
+#define FATAL          1  // Fatal error (causes Gmsh to exit)
+#define FATAL1         2  // First part of a multiline FATAL message 
+#define FATAL2         3  // Middle part of a multiline FATAL message
+#define FATAL3         4  // Last part of a multiline FATAL message  
+
+#define GERROR         5  // Error (but Gmsh can live with it)
+#define GERROR1        6  // First part of a multiline ERROR message 
+#define GERROR2        7  // Middle part of a multiline ERROR message
+#define GERROR3        8  // Last part of a multiline ERROR message  
+
+#define WARNING        9  // Warning
+#define WARNING1      10  // First part of a multiline WARNING message 
+#define WARNING2      11  // Middle part of a multiline WARNING message
+#define WARNING3      12  // Last part of a multiline WARNING message  
+
+#define INFO          13  // Long informations
+#define INFO1         14  // First part of a multiline INFO message 
+#define INFO2         15  // Middle part of a multiline INFO message
+#define INFO3         16  // Last part of a multiline INFO message  
+
+#define DEBUG         17  // Long debug information
+#define DEBUG1        18  // First part of a multiline DEBUG message 
+#define DEBUG2        19  // Middle part of a multiline DEBUG message
+#define DEBUG3        20  // Last part of a multiline DEBUG message  
+
+#define STATUS1       21  // Small information in status bar (left)
+#define STATUS2       22  // Small interaction in status bar (middle)
+#define STATUS3       23  // Small interaction in status bar (right)
+
+#define STATUS1N      24  // Same as STATUS1, but not going into the log file
+#define STATUS2N      25  // Same as STATUS2, but not going into the log file
+#define STATUS3N      26  // Same as STATUS3, but not going into the log file
+
+#define PARSER_ERROR  27  // Error during syntax parsing
+#define PARSER_INFO   28  // Info during syntax parsing
+#define LOG_INFO      29  // Info put only in the logfile
+
 
 #define FATAL_STR          "Fatal Error : "
 #define FATAL_NIL          "            : "
@@ -40,13 +47,10 @@
 #define ERROR_NIL          "      : "
 #define WARNING_STR        "Warning : "
 #define WARNING_NIL        "        : "
-#define INFOS_STR          "Info : "
-#define INFOS_NIL          "     : "
+#define INFO_STR           "Info : "
+#define INFO_NIL           "     : "
 #define DEBUG_STR          "Debug : "
 #define DEBUG_NIL          "      : "
-
-#define INFO_STR           "Info : "
-#define SELECT_STR         "Info : "
 #define STATUS_STR         "Info : "
 #define PARSER_ERROR_STR   "Parse Error : "
 #define PARSER_INFO_STR    "Parse Info : "
diff --git a/Common/Views.cpp b/Common/Views.cpp
index 872aa8bb83e4f73141cdfb55cf5317e6e8b9e6ee..d86998068e736684581362a54a61bcb7eaed2f08 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.22 2001-01-09 19:40:56 remacle Exp $
+// $Id: Views.cpp,v 1.23 2001-01-12 13:28:54 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Views.h"
@@ -281,7 +281,7 @@ bool FreeView(int num){
   List_Suppress(Post_ViewList, v, fcmpPostViewNum);
   CTX.post.nb_views = List_Nbr(Post_ViewList);
 
-  Msg(INFOS, "View %d deleted (%d views left)",num, List_Nbr(Post_ViewList));
+  Msg(INFO, "View %d deleted (%d views left)",num, List_Nbr(Post_ViewList));
   return true;
 }
 
@@ -530,7 +530,7 @@ void Read_View(FILE *file, char *filename){
       if(format == LIST_FORMAT_BINARY){
 	fread(&testone, sizeof(int), 1, file);
 	if(testone != 1){
-	  Msg(INFOS, "Swapping Bytes from Binary File");
+	  Msg(INFO, "Swapping Bytes from Binary File");
 	  swap = 1;
 	}
       }
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 703ff22fcdf5b6b93df4b2bc0951f446a2bab3a4..4c3e090bd42b413ca954263c44710de1b4b01ce2 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.18 2001-01-12 00:43:05 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.19 2001-01-12 13:28:55 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -86,7 +86,7 @@ pthread_t  MeshThread ;
 void* StartMeshThread(void * data){
   pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
   mai3d(&M,MeshDim);
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
   CTX.mesh.draw = 1;
   CTX.threads_lock = 0;
   XtSetSensitive(WID.G.Butt[6], 0);
@@ -102,9 +102,9 @@ void CancelMeshThread(void){
     CTX.mesh.draw = 1;
     CTX.threads_lock = 0;
     XtSetSensitive(WID.G.Butt[6], 0);    
-    Msg(INFO,"Mesh Aborted");
+    Msg(STATUS2,"Mesh Aborted");
     mesh_event_handler(MESH_DELETE);
-    Msg(STATUS,"Ready");
+    Msg(STATUS3N,"Ready");
     Init();
     Draw();
   }
@@ -607,7 +607,7 @@ static void _new_line_spline(int dim){
 
   n = 0;
   while(1){
-    Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+    Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
     ib = SelectEntity(ENT_POINT, &v,&c,&s);
     if(ib == 1){ /* left mouse butt */
       p[n++] = v->Num; 
@@ -630,7 +630,7 @@ static void _new_line_spline(int dim){
       break;
     }
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 
 void geometry_elementary_add_new_line_cb(CALLBACK_ARGS){
@@ -648,9 +648,9 @@ void geometry_elementary_add_new_circle_cb(CALLBACK_ARGS){
 
   n=0;
   while(1){
-    if(n == 0) Msg(STATUS,"Select Center ('q'=quit)");
-    if(n == 1) Msg(STATUS,"Select Starting Point ('q'=quit)");
-    if(n == 2) Msg(STATUS,"Select Ending Point ('q'=quit)");
+    if(n == 0) Msg(STATUS3N,"Select Center ('q'=quit)");
+    if(n == 1) Msg(STATUS3N,"Select Starting Point ('q'=quit)");
+    if(n == 2) Msg(STATUS3N,"Select Ending Point ('q'=quit)");
     ib = SelectEntity(ENT_POINT, &v,&c,&s);
     if(ib == 1) { /* left mouse butt */
       p[n++] = v->Num; 
@@ -668,7 +668,7 @@ void geometry_elementary_add_new_circle_cb(CALLBACK_ARGS){
       n=0;
     }
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS){
   Vertex   *v;
@@ -679,10 +679,10 @@ void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS){
 
   n=0;
   while(1){
-    if(n == 0) Msg(STATUS,"Select Center ('q'=quit)");
-    if(n == 1) Msg(STATUS,"Select an Axis Point ('q'=quit)");
-    if(n == 2) Msg(STATUS,"Select Starting Point ('q'=quit)");
-    if(n == 3) Msg(STATUS,"Select Ending Point ('q'=quit)");
+    if(n == 0) Msg(STATUS3N,"Select Center ('q'=quit)");
+    if(n == 1) Msg(STATUS3N,"Select an Axis Point ('q'=quit)");
+    if(n == 2) Msg(STATUS3N,"Select Starting Point ('q'=quit)");
+    if(n == 3) Msg(STATUS3N,"Select Ending Point ('q'=quit)");
     ib = SelectEntity(ENT_POINT, &v,&c,&s);
     if(ib == 1) { /* left mouse butt */
       p[n++] = v->Num; 
@@ -700,7 +700,7 @@ void geometry_elementary_add_new_ellipsis_cb(CALLBACK_ARGS){
       n=0;
     }
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 
 static void _new_surface_volume(int mode){
@@ -723,7 +723,7 @@ static void _new_surface_volume(int mode){
     List_Reset(Liste2);
     
     while(1) {        
-      Msg(STATUS,"Select Boundary ('q'=quit)");
+      Msg(STATUS3N,"Select Boundary ('q'=quit)");
       ib = SelectEntity(type, &v,&c,&s);
       if(ib <= 0){
 	ZeroHighlight(&M);
@@ -738,7 +738,7 @@ static void _new_surface_volume(int mode){
 	List_Reset(Liste1);
 	List_Add(Liste2,&zone);
 	while(1){
-	  Msg(STATUS,"Select Holes ('q'=quit)");
+	  Msg(STATUS3N,"Select Holes ('q'=quit)");
 	  ib = SelectEntity(type, &v,&c,&s); 
 	  if(ib <= 0){
 	    ZeroHighlight(&M);
@@ -770,7 +770,7 @@ static void _new_surface_volume(int mode){
   stopall : ;
   List_Delete(Liste1);
   List_Delete(Liste2);
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 
 void geometry_elementary_add_new_planesurface_cb(CALLBACK_ARGS){
@@ -797,7 +797,7 @@ static void _transform_point_curve_surface(int transfo, int mode, char *what){
     type = ENT_SURFACE;
 
   while(1){
-    Msg(STATUS,"Select %s ('q'=quit)", what);
+    Msg(STATUS3N,"Select %s ('q'=quit)", what);
     if(!SelectEntity(type, &v,&c,&s)){
       ZeroHighlight(&M);
       DrawUpdate();
@@ -820,7 +820,7 @@ static void _transform_point_curve_surface(int transfo, int mode, char *what){
     ZeroHighlight(&M);
     DrawUpdate();
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 
 void geometry_elementary_add_translate_cb(CALLBACK_ARGS){
@@ -1015,7 +1015,7 @@ static void _add_physical(char *what){
 
   Liste1 = List_Create(5,5,sizeof(int));
   while(1){
-    Msg(STATUS,"Select %s ('e'=end, 'q'=quit)", what); 
+    Msg(STATUS3N,"Select %s ('e'=end, 'q'=quit)", what); 
     ib = SelectEntity(type, &v,&c,&s);
     if(ib == 1){ /* left mouse */
       switch(type){
@@ -1038,7 +1038,7 @@ static void _add_physical(char *what){
       break;
     }
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 
 void geometry_physical_add_cb(CALLBACK_ARGS){
@@ -1074,7 +1074,7 @@ void mesh_1d_cb(CALLBACK_ARGS){
     mai3d(&M, 1); 
   Init(); 
   Draw();
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 void mesh_2d_cb(CALLBACK_ARGS){
 #ifdef _USETHREADS
@@ -1088,7 +1088,7 @@ void mesh_2d_cb(CALLBACK_ARGS){
     mai3d(&M, 2);
   Init(); 
   Draw();
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 } 
 void mesh_3d_cb(CALLBACK_ARGS){
 #ifdef _USETHREADS
@@ -1102,7 +1102,7 @@ void mesh_3d_cb(CALLBACK_ARGS){
     mai3d(&M, 3); 
   Init(); 
   Draw();
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 } 
 void mesh_define_length_cb (CALLBACK_ARGS){
   Vertex   *v;
@@ -1114,7 +1114,7 @@ void mesh_define_length_cb (CALLBACK_ARGS){
   WID->create_mesh_context_window(0);
 
   while(1){
-    Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+    Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
     ib = SelectEntity(ENT_POINT, &v,&c,&s);
     if(ib == 1){ /* left mouse butt */
       p[n++] = v->Num; 
@@ -1135,7 +1135,7 @@ void mesh_define_length_cb (CALLBACK_ARGS){
       break;
     }
   }
-  Msg(STATUS,"Ready");
+  Msg(STATUS3N,"Ready");
 }
 void mesh_define_recombine_cb (CALLBACK_ARGS){
   Vertex   *v;
@@ -1146,7 +1146,7 @@ void mesh_define_recombine_cb (CALLBACK_ARGS){
 
   n=0;
   while(1){
-    Msg(STATUS,"Select Surface ('e'=end, 'q'=quit)");
+    Msg(STATUS3N,"Select Surface ('e'=end, 'q'=quit)");
     ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
     if(ib == 1){ /* left mouse butt */
       p[n++] = s->Num; 
@@ -1166,7 +1166,7 @@ void mesh_define_recombine_cb (CALLBACK_ARGS){
       break;
     }
   }
-  Msg(STATUS, "Ready");
+  Msg(STATUS3N, "Ready");
 }
 void mesh_define_transfinite_cb (CALLBACK_ARGS){
   WID->set_context(menu_mesh_define_transfinite, 0);
@@ -1183,11 +1183,11 @@ static void _add_transfinite(int dim){
   while(1){
     switch (dim) {
     case 1 :
-      Msg(STATUS,"Select Line ('e'=end, 'q'=quit)");
+      Msg(STATUS3N,"Select Line ('e'=end, 'q'=quit)");
       ib = SelectEntity(ENT_LINE, &v,&c,&s);
       break ;
     case 2 :
-      Msg(STATUS,"Select Surface ('e'=end, 'q'=quit)");
+      Msg(STATUS3N,"Select Surface ('e'=end, 'q'=quit)");
       ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
       break;
     case 3 :
@@ -1200,7 +1200,7 @@ static void _add_transfinite(int dim){
       case 2 : p[n++] = s->Num; // fall-through
       case 3 :
 	while(1){
-	  Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+	  Msg(STATUS3N,"Select Point ('e'=end, 'q'=quit)");
 	  ib = SelectEntity(ENT_POINT, &v,&c,&s);
 	  if(ib == 1){ /* left mouse butt */
 	    p[n++] = v->Num ;
@@ -1211,13 +1211,13 @@ static void _add_transfinite(int dim){
 	      if(n == 3+1 || n == 4+1)
 		add_trsfsurf(n,p,CTX.filename); 
 	      else
-		Msg(INFO, "Wrong Number of Points for Transfinite Surface");
+		Msg(STATUS2, "Wrong Number of Points for Transfinite Surface");
 	      break;
 	    case 3 :
 	      if(n == 6 || n == 8)
 		add_trsfvol(n,p,CTX.filename);
 	      else
-		Msg(INFO, "Wrong Number of Points for Transfinite Volume");
+		Msg(STATUS2, "Wrong Number of Points for Transfinite Volume");
 	      break;
 	    }
 	    n=0;
@@ -1250,7 +1250,7 @@ static void _add_transfinite(int dim){
       break;
     }
   }
-  Msg(STATUS, "Ready");
+  Msg(STATUS3N, "Ready");
 }
 
 void mesh_define_transfinite_line_cb(CALLBACK_ARGS){
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 340f73ce311c94f8181475b0c0d292cd4d4d9ed2..e1cbdd5115344e10d65e88de4b2b45158810a0fb 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -479,7 +479,7 @@ void GUI::set_context(Context_Item *menu_asked, int flag){
     }
   }
   else{ // geometry and mesh contexts
-    Msg(INFO, menu[0].label+1);
+    Msg(STATUS2, menu[0].label+1);
     for(i=0 ; i < NB_BUTT_MAX ; i++){
       m_toggle_butt[i]->hide();
       m_popup_butt[i]->hide();
@@ -1326,8 +1326,8 @@ void GUI::save_message(char *name){
   for(int i = 1 ; i<=msg_browser->size() ; i++)
     fprintf(fp, "%s\n", msg_browser->text(i));
 
-  Msg(INFOS, "Log Creation Complete '%s'", name);
-  Msg (INFO, "Wrote File '%s'", name);
+  Msg(INFO, "Log Creation Complete '%s'", name);
+  Msg(STATUS2, "Wrote File '%s'", name);
   fclose(fp);
 }
 
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 52c52817e69dbf1ff2c3d31b6dcc12b1f9b82c2c..2902e5003c548eb6535161c1e4c4b2855695e04e 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.7 2001-01-11 12:25:23 geuzaine Exp $
+// $Id: Main.cpp,v 1.8 2001-01-12 13:28:55 geuzaine Exp $
 
 #include <signal.h>
 
@@ -95,8 +95,13 @@ int main(int argc, char *argv[]){
 
   // Say welcome!
 
-  Msg(STATUS, "Ready");
-  Msg(SELECT, "Gmsh %.2f", GMSH_VERSION);
+  Msg(STATUS3, "Ready");
+  Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION);
+
+  Msg(LOG_INFO, gmsh_os);
+  Msg(LOG_INFO, gmsh_date);
+  Msg(LOG_INFO, gmsh_host);
+  Msg(LOG_INFO, gmsh_packager);
 
   // Display the GUI to have a quick "a la Windows" launch time
 
diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
index d67c28427f52a7471675e4bcd07790ecc67c9607..e62220f2e930000a051dd4831cf5738f83e8e082 100644
--- a/Fltk/Message.cpp
+++ b/Fltk/Message.cpp
@@ -1,4 +1,4 @@
-// $Id: Message.cpp,v 1.7 2001-01-12 00:43:05 geuzaine Exp $
+// $Id: Message.cpp,v 1.8 2001-01-12 13:28:55 geuzaine Exp $
 
 #include <signal.h>
 #ifndef WIN32
@@ -51,110 +51,85 @@ void Signal (int sig_num){
 
 void Msg(int level, char *fmt, ...){
   va_list  args;
-  int      abort=0, verb;
-  char     *str;
-  static char buff1[1024], buff2[1024];
+  int      abort = 0, verb = 0, window = -1, log = 1;
+  char     *str = NULL;
 
-  if(level != FATAL && level != GERROR && level != PARSER_ERROR &&
-     CTX.interactive && !CTX.verbosity) 
-    return ;
+  switch(level){
+  case STATUS1N : log = 0; //fallthrough
+  case STATUS1  : window = 0; break ;
+  case STATUS2N : log = 0; //fallthrough
+  case STATUS2  : window = 1; break ;
+  case STATUS3N : log = 0; //fallthrough
+  case STATUS3  : window = 2; break ;
+
+  case FATAL    : str = FATAL_STR; abort = 1; break ;
+  case FATAL1   : str = FATAL_STR; break ;
+  case FATAL2   : str = FATAL_NIL; break ;
+  case FATAL3   : str = FATAL_NIL; abort = 1; break ;
+				     		  
+  case GERROR   : 		     		  
+  case GERROR1  : str = ERROR_STR; break ;
+  case GERROR2  : 		     
+  case GERROR3  : str = ERROR_NIL; break ;
+				     	  
+  case WARNING  : 		     	  
+  case WARNING1 : str = WARNING_STR; verb = 1; break ;
+  case WARNING2 : 		     	  
+  case WARNING3 : str = WARNING_NIL; verb = 1; break ;
+				     	  
+  case INFO     :		     	  
+  case INFO1    : str = INFO_STR; verb = 2; break ;
+  case INFO2    :		     	  
+  case INFO3    : str = INFO_NIL; verb = 2; break ;
+				     	  
+  case DEBUG    :		     	  
+  case DEBUG1   : str = DEBUG_STR; verb = 3; break ;
+  case DEBUG2   :		     	  
+  case DEBUG3   : str = DEBUG_NIL; verb = 3; break ;
+
+  case PARSER_ERROR : str = PARSER_ERROR_STR ; break ;
 
-  WID->check();
+  case PARSER_INFO : str = PARSER_INFO_STR ; verb = 2; break ;
 
-  va_start (args, fmt);
+  case LOG_INFO : verb = 2 ; window = 3; break ;
 
-  switch(level){
-  case INFO :
-    if(CTX.interactive){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, INFO_STR);
-        vfprintf(stderr, fmt, args);
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      static char buffer[128];
-      vsprintf(buffer, fmt, args);
-      WID->set_status(buffer, 1) ;
-    }
-    va_end (args);
-    return ;
-  case SELECT :
-    if(CTX.interactive){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, SELECT_STR);
-        vfprintf(stderr, fmt, args); 
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      static char buffer[128];
-      vsprintf(buffer, fmt, args);
-      WID->set_status(buffer, 0) ;
-    }
-    va_end (args);
-    return ;
-  case STATUS :
-    if(CTX.interactive){
-      if(CTX.verbosity > 1){
-        fprintf(stderr, STATUS_STR);
-        vfprintf(stderr, fmt, args);
-        fprintf(stderr, "\n");
-      }
-    }
-    else{
-      static char buffer[128];
-      vsprintf(buffer, fmt, args);
-      WID->set_status(buffer, 2) ;
-    }
-    va_end (args);
-    return ;
+  default : return;
   }
 
-  switch(level){
-  case FATAL : str = FATAL_STR ; abort = 1; verb=0; break ;
-  case FATAL1 : str = FATAL_STR ; abort = 0; verb=0; break ;
-  case FATAL2 : str = FATAL_NIL ; abort = 0; verb=0; break ;
-  case FATAL3 : str = FATAL_NIL ; abort = 1; verb=0; break ;
-  case GERROR :
-  case GERROR1 : str = ERROR_STR ; verb = 0; break ;
-  case GERROR2 : 
-  case GERROR3 : str = ERROR_NIL ; verb = 0; break ;
-  case WARNING : 
-  case WARNING1 : str = WARNING_STR ; verb = 1; break ;
-  case WARNING2 : 
-  case WARNING3 : str = WARNING_NIL ; verb = 1; break ;
-  case INFOS :
-  case INFOS1 : str = INFOS_STR ; verb = 2; break ;
-  case INFOS2 :
-  case INFOS3 : str = INFOS_NIL ; verb = 2; break ;
-  case PARSER_ERROR : str = PARSER_ERROR_STR ; verb = 0; break ;
-  case PARSER_INFO : str = PARSER_INFO_STR ; verb = 2; break ;
-  case DEBUG :
-  case DEBUG1 : str = DEBUG_STR ; verb = 3; break ;
-  case DEBUG2 :
-  case DEBUG3 : str = DEBUG_NIL ; verb = 3; break ;
-  default : str = NULL ; verb = 3; break ;
+  static char buff1[1024], buff2[1024], buff[4][1024];
+
+  if(CTX.interactive){
+    if(verb) return;
+    window = -1;
   }
+  else 
+    WID->check();
 
   if(CTX.verbosity >= verb){
-    strcpy(buff1, "@C1");
-    if(str) strcat(buff1, str);
-    vsprintf(buff2, fmt, args); 
-    strcat(buff1,buff2);
-    fprintf(stderr, "%s\n", &buff1[3]);
-    if(!CTX.interactive){
-      if(verb<2)
-	WID->add_message(buff1);
-      else
-	WID->add_message(&buff1[3]);
+    va_start (args, fmt);
+
+    if(window >= 0){
+      vsprintf(buff[window], fmt, args); 
+      if(window <= 2) WID->set_status(buff[window], window);
+      if(log && strlen(buff[window])) WID->add_message(buff[window]);
+    }
+    else{
+      strcpy(buff1, "@C1");
+      if(str && window<0) strcat(buff1, str);
+      vsprintf(buff2, fmt, args); 
+      strcat(buff1,buff2);
+      fprintf(stderr, "%s\n", &buff1[3]);
+      if(!CTX.interactive){
+	if(verb<2)
+	  WID->add_message(buff1);
+	else
+	  WID->add_message(&buff1[3]);
+	if(!verb) WID->create_message_window();
+      }
     }
+    va_end (args);
   }
 
-  va_end (args);
-
-  if(!verb) WID->create_message_window();
-
   if(abort){
     WID->save_message("error.log");
     exit(1);
diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp
index 7a55ee9d5448f0063457326d24e00fe81f50853e..48ab7bf07e8f7e573e0b96370ebd9d1a048bc092 100644
--- a/Geo/CAD.cpp
+++ b/Geo/CAD.cpp
@@ -1,4 +1,4 @@
-// $Id: CAD.cpp,v 1.14 2001-01-09 19:40:56 remacle Exp $
+// $Id: CAD.cpp,v 1.15 2001-01-12 13:28:57 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -1164,7 +1164,7 @@ bool IntersectAllSegmentsTogether (void) {
         List_Read(TempList,j,&c2);
         if(c1->Num > 0 && c2->Num >0 && i!=j && intersectionfound == false){
           if(IntersectCurves(c1,c2,&c11,&c12,&c21,&c22,&v)){
-            Msg(INFOS, "Intersection Curve %d->%d",c1->Num,c2->Num);
+            Msg(INFO, "Intersection Curve %d->%d",c1->Num,c2->Num);
             intersectionfound = true;
             DeleteCurve(c1->Num);
             DeleteCurve(c2->Num);
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index 36a453740221eced4b2628ec58d112a3638ee1ff..dd84ea293355a5469571b509cfd41b4b92fb781c 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.15 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: Geo.cpp,v 1.16 2001-01-12 13:28:57 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -72,7 +72,7 @@ void add_infile(char *text, char *fich){
     return;
   }
   fprintf(yyin,"%s\n",text);
-  Msg(SELECT,"%s",text);
+  Msg(STATUS1,"%s",text);
   fclose(yyin);
   yyin = fopen("gmsh.tmp","r");
   while(!feof(yyin)){
diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp
index 9c8bda1755d9b124f4c02775a3ff8d5684ff6468..94d21667fdaa5ed00984889a3e72392aeda67632 100644
--- a/Geo/Print_Geo.cpp
+++ b/Geo/Print_Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Print_Geo.cpp,v 1.12 2001-01-09 19:40:56 remacle Exp $
+// $Id: Print_Geo.cpp,v 1.13 2001-01-12 13:28:57 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -239,8 +239,8 @@ void Print_Geo(Mesh *M, char *filename){
   List_Action(M->PhysicalGroups,Print_PhysicalGroups);
 
   if(filename){
-    Msg (INFOS, "Geo Output Complete '%s'", filename);
-    Msg (INFO, "Wrote File '%s'", filename);
+    Msg(INFO, "Geo Output Complete '%s'", filename);
+    Msg(STATUS2, "Wrote File '%s'", filename);
     fclose(FOUT);
   }
 
diff --git a/Graphics/CreateFile.cpp b/Graphics/CreateFile.cpp
index 8fd922c612048c798caca4ae2a01e9ae37098c7e..e1cddb66b227f1df2fff89eb8226231dc4e6b005 100644
--- a/Graphics/CreateFile.cpp
+++ b/Graphics/CreateFile.cpp
@@ -1,4 +1,4 @@
-// $Id: CreateFile.cpp,v 1.9 2001-01-11 16:00:28 colignon Exp $
+// $Id: CreateFile.cpp,v 1.10 2001-01-12 13:28:58 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -98,8 +98,8 @@ void CreateFile (char *name, int format) {
       return;
     }
     Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), fp);    
-    Msg(INFOS, "XPM Creation Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "XPM Creation Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose(fp);
     break;
 #endif
@@ -114,8 +114,8 @@ void CreateFile (char *name, int format) {
     create_jpeg(fp, CTX.viewport[2]-CTX.viewport[0],
 		CTX.viewport[3]-CTX.viewport[1],
 		CTX.print.jpeg_quality);
-    Msg(INFOS, "JPEG Creation Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "JPEG Creation Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose(fp);
     break;
 #endif
@@ -135,8 +135,8 @@ void CreateFile (char *name, int format) {
 	       UNPACK_RED(CTX.color.bg),
 	       UNPACK_GREEN(CTX.color.bg),
 	       UNPACK_BLUE(CTX.color.bg));
-    Msg(INFOS, "GIF Creation Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "GIF Creation Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose(fp);
     break;
 
@@ -148,8 +148,8 @@ void CreateFile (char *name, int format) {
     DrawUpdate();
     create_ppm(fp, CTX.viewport[2]-CTX.viewport[0],
 	       CTX.viewport[3]-CTX.viewport[1]);
-    Msg(INFOS, "PPM Creation Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "PPM Creation Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose(fp);
     break;
 
@@ -161,8 +161,8 @@ void CreateFile (char *name, int format) {
     DrawUpdate();
     create_yuv(fp, CTX.viewport[2]-CTX.viewport[0],
 	       CTX.viewport[3]-CTX.viewport[1]);
-    Msg(INFOS, "YUV Creation Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "YUV Creation Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose(fp);
     break;
 
@@ -183,11 +183,11 @@ void CreateFile (char *name, int format) {
       Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), tmp);
       fclose(tmp);
       sprintf(cmd, "xpr -device ps -gray 4 %s >%s", tmpFileName, name);
-      Msg(INFOS, "Executing '%s'", cmd);
+      Msg(INFO, "Executing '%s'", cmd);
       system(cmd);
       unlink(tmpFileName);
-      Msg(INFOS, "Bitmap EPS Creation Complete '%s'", name);
-      Msg (INFO, "Wrote File '%s'", name);
+      Msg(INFO, "Bitmap EPS Creation Complete '%s'", name);
+      Msg(STATUS2, "Wrote File '%s'", name);
       fclose(fp);
       break;
 #endif
@@ -211,8 +211,8 @@ void CreateFile (char *name, int format) {
 	CTX.stream = TO_SCREEN ;
 	res = gl2psEndPage();
       }
-      Msg(INFOS, "EPS Creation Complete '%s'", name);
-      Msg (INFO, "Wrote File '%s'", name);
+      Msg(INFO, "EPS Creation Complete '%s'", name);
+      Msg(STATUS2, "Wrote File '%s'", name);
       fclose(fp);
       CTX.print.gl_fonts = 1;
       break;
diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp
index a952f0ff436cf669696cd53417ff35f8cfdf4f15..424bcbf428fdf014cfe793f9a902066c84bab142 100644
--- a/Graphics/Geom.cpp
+++ b/Graphics/Geom.cpp
@@ -1,4 +1,4 @@
-// $Id: Geom.cpp,v 1.11 2001-01-11 14:11:57 geuzaine Exp $
+// $Id: Geom.cpp,v 1.12 2001-01-12 13:28:58 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -481,7 +481,7 @@ void Draw_Plane_Surface (Surface *s){
     }
     if(k)List_Add(s->Orientations,&vv);
 
-    Msg(INFO, "Plane Surface %d (%d points)",s->Num,List_Nbr(s->Orientations)); 
+    Msg(STATUS2, "Plane Surface %d (%d points)",s->Num,List_Nbr(s->Orientations)); 
   }
 
   if(CTX.geom.surfaces){
@@ -814,7 +814,7 @@ void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){
   if(v){
     if(permanent) v->Frozen = 1;
     if(CTX.geom.highlight) Draw_GeoPoint(&v,NULL);
-    Msg(SELECT,"Point %d {%.5g,%.5g,%.5g} (%.5g)", v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
+    Msg(STATUS1N,"Point %d {%.5g,%.5g,%.5g} (%.5g)", v->Num,v->Pos.X,v->Pos.Y,v->Pos.Z,v->lc);
   }
   else if(c){
     if(permanent) c->ipar[3] = 1;
@@ -822,7 +822,7 @@ void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){
 
     List_Read(c->Control_Points,0,&v1);
     List_Read(c->Control_Points,List_Nbr(c->Control_Points)-1,&v2);
-    Msg(SELECT,"Curve %d  {%d->%d}",c->Num,v1->Num,v2->Num);
+    Msg(STATUS1N,"Curve %d  {%d->%d}",c->Num,v1->Num,v2->Num);
   }
   else if(s){
     if(permanent && s->Mat == 1) return;
@@ -844,10 +844,10 @@ void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){
       strcat(Message,"...");
     }
     strcat(Message,"}");
-    Msg(SELECT,Message);
+    Msg(STATUS1N,Message);
   }
   else{
-    Msg(SELECT," ");
+    Msg(STATUS1N," ");
   }
 
 }
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index c4f6433fd08a7cde3d5f2ee6d1b9bdb63a07d18f..5b6dfdafb059ca31a840bb49f3995ff75655c6ca 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -1,4 +1,4 @@
-// $Id: Post.cpp,v 1.10 2001-01-09 14:24:09 geuzaine Exp $
+// $Id: Post.cpp,v 1.11 2001-01-12 13:28:58 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -99,7 +99,7 @@ void Draw_Post (void) {
 
         if(CTX.display_lists){
           if(glIsList(v->Num)) glDeleteLists(v->Num,1);
-          // Msg(INFO, "New Display List");
+          // Msg(STATUS2, "New Display List");
           glNewList(v->Num, GL_COMPILE_AND_EXECUTE);
         }
 
diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp
index 597b202d058aabad659bccf77fe2a739870ad68b..f021d218b4cab8b2a76a79f69355f061b2dfe327 100644
--- a/Mesh/1D_Mesh.cpp
+++ b/Mesh/1D_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 1D_Mesh.cpp,v 1.10 2001-01-08 08:05:44 geuzaine Exp $
+// $Id: 1D_Mesh.cpp,v 1.11 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -97,7 +97,7 @@ void Maillage_Curve (void *data, void *dummy){
   if (c->Num < 0)
     return;
 
-  Msg(STATUS, "Meshing Curve %d", c->Num);
+  Msg(STATUS3, "Meshing Curve %d", c->Num);
 
   Points = List_Create (10, 10, sizeof (IntPoint));
   c->l = Integration (c->ubeg, c->uend, F_One, Points, 1.e-4);
diff --git a/Mesh/2D_Cylindrical.cpp b/Mesh/2D_Cylindrical.cpp
index 7a289fa575ed4cef6502fa15ad9055a37c0c8e20..508a8f31def9f64818aad866c52688f27eff77b6 100644
--- a/Mesh/2D_Cylindrical.cpp
+++ b/Mesh/2D_Cylindrical.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Cylindrical.cpp,v 1.4 2001-01-08 08:05:44 geuzaine Exp $
+// $Id: 2D_Cylindrical.cpp,v 1.5 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -17,9 +17,9 @@ void ChangePi (void *a, void *dum){
   v = *(Vertex **) a;
 
   if ((v->Pos.X / SURF->Cyl.radius1) >= TETAMIN + .99999 * Pi){
-    Msg(INFOS, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
+    Msg(INFO, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
     v->Pos.X -= (2. * Pi) * SURF->Cyl.radius1;
-    Msg(INFOS, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
+    Msg(INFO, "%g -> ", v->Pos.X / SURF->Cyl.radius1);
   }
 }
 
diff --git a/Mesh/2D_InitMesh.cpp b/Mesh/2D_InitMesh.cpp
index 029ee44a7e7dbcfe7bc02cd8e621c1e3d5e93d07..b4f5ff8ed519ba71a1d8ec0a1a1fa8dd67352d12 100644
--- a/Mesh/2D_InitMesh.cpp
+++ b/Mesh/2D_InitMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_InitMesh.cpp,v 1.5 2001-01-08 08:05:44 geuzaine Exp $
+// $Id: 2D_InitMesh.cpp,v 1.6 2001-01-12 13:29:00 geuzaine Exp $
 
 /*
  
@@ -174,7 +174,7 @@ void Print ( void *data , void *dummy){
   ED *e;
 
   e = (ED*)data;
-  Msg(INFO,"%d %d",e->from,e->to); 
+  Msg(STATUS2,"%d %d",e->from,e->to); 
 }
 
 void SwapED ( void *data , void *dummy){
@@ -349,7 +349,7 @@ void verify_edges (List_T *ListDelaunay, ContourRecord **ListContour,
     if(!ok){
       return;
     }
-    Msg(INFOS, "Swapping (%d Missing Edge(s))", ok); 
+    Msg(INFO, "Swapping (%d Missing Edge(s))", ok); 
     
     EDToSwap = NULL;
     if(EDToSwap)Tree_Delete(EDToSwap);
@@ -374,7 +374,7 @@ void verify_edges (List_T *ListDelaunay, ContourRecord **ListContour,
         
       }
     }
-    Msg(INFOS, "Elimination (%d Swaps)", Tree_Nbr(EDToSwap)); 
+    Msg(INFO, "Elimination (%d Swaps)", Tree_Nbr(EDToSwap)); 
 
     Tree_Action (EDToSwap , SuppressInETree);
     Tree_Action (EDToSwap , SwapED);
diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp
index 4c1c26f135343fc7710e68b1fe4cd51fb2f0969a..daa9eace07d6337049e09fc26cee756804605734 100644
--- a/Mesh/2D_Mesh.cpp
+++ b/Mesh/2D_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Mesh.cpp,v 1.16 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: 2D_Mesh.cpp,v 1.17 2001-01-12 13:29:00 geuzaine Exp $
 
 /*
    Maillage Delaunay d'une surface (Point insertion Technique)
@@ -1040,7 +1040,7 @@ void Maillage_Surface (void *data, void *dum){
     Tree_Delete (s->Vertices);
   s->Vertices = Tree_Create (sizeof (Vertex *), compareVertex);
 
-  Msg(STATUS, "Meshing Surface %d", s->Num);
+  Msg(STATUS3, "Meshing Surface %d", s->Num);
 
   if (MeshTransfiniteSurface (s) ||
       MeshEllipticSurface (s) ||
@@ -1084,7 +1084,7 @@ void Maillage_Surface (void *data, void *dum){
     AlgorithmeMaillage2DAnisotropeModeJF (s);
 
   if(CTX.mesh.nb_smoothing){
-    Msg(STATUS, "Mesh Smoothing");
+    Msg(STATUS3, "Mesh Smoothing");
     tnxe = Tree_Create (sizeof (NXE), compareNXE);
     create_NXE (s->Vertices, s->Simplexes, tnxe);
     for (int i = 0; i < CTX.mesh.nb_smoothing; i++)
diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp
index b1612c1b6fbeb85da3e50c488e905d6cdba409af..efcbe636721a9a6b0cf585a1a2399ac6af6417a6 100644
--- a/Mesh/2D_Mesh_Aniso.cpp
+++ b/Mesh/2D_Mesh_Aniso.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Mesh_Aniso.cpp,v 1.10 2001-01-09 19:40:56 remacle Exp $
+// $Id: 2D_Mesh_Aniso.cpp,v 1.11 2001-01-12 13:29:00 geuzaine Exp $
 
 /*
    Jean-Francois Remacle
@@ -301,7 +301,7 @@ void Recover_Edge (Surface * s, Edge * e, EdgesContainer & Edges){
   coquille = List_Create (3, 3, sizeof (Edge *));
   /*On cherche la coquille */
   Tree_Action (Edges.AllEdges, putaindecoquille_2D);
-  Msg(INFOS, "Edge %d->%d, %d Intersections", 
+  Msg(INFO, "Edge %d->%d, %d Intersections", 
       e->V[0]->Num, e->V[1]->Num, List_Nbr (coquille));
 
   if(List_Nbr(coquille)==1){
@@ -330,7 +330,7 @@ void Recover_Edge (Surface * s, Edge * e, EdgesContainer & Edges){
 
   List_Delete (coquille);
 
-  Msg(INFOS, "Edge Recovered");
+  Msg(INFO, "Edge Recovered");
   /*On swappe */
 }
 
@@ -376,7 +376,7 @@ void missing_edges_2d (Surface * s){
       e.V[0] = v1;
       e.V[1] = v2;
       if (!EdgesOnSurface.Search (v1, v2)) {
-        Msg(INFOS, "Missing Edge %d->%d", v1->Num, v2->Num);
+        Msg(INFO, "Missing Edge %d->%d", v1->Num, v2->Num);
         Recover_Edge (s, &e, EdgesOnSurface);
       }
     }
@@ -662,7 +662,7 @@ void Convex_Hull_Mesh_2D (List_T * Points, Surface * s){
 
   N = List_Nbr (Points);
 
-  Msg(INFO, "Mesh 2D... (Initial)");
+  Msg(STATUS2, "Mesh 2D... (Initial)");
 
   Box_2_Triangles (Points, s);
   for (i = 0; i < N; i++){
@@ -673,7 +673,7 @@ void Convex_Hull_Mesh_2D (List_T * Points, Surface * s){
       if(i%n == n-1){
         volume = 0.0;
         Tree_Action(s->Simplexes,VSIM_2D);
-        Msg(STATUS, %d->%d Nodes, %d Elements",i+1,N,Tree_Nbr(s->Simplexes));
+        Msg(STATUS3, %d->%d Nodes, %d Elements",i+1,N,Tree_Nbr(s->Simplexes));
       } 
     */
     if (!THES){
@@ -848,7 +848,7 @@ void Restore_Surface (Surface * s){
     iSurface = isListaSurface (ListCurves, s);
     
     N = Tree_Nbr (keep);
-    Msg (INFOS, "Initial Mesh of Surface %d: %d Simplices, %d/%d Curves, %d Faces",
+    Msg(INFO, "Initial Mesh of Surface %d: %d Simplices, %d/%d Curves, %d Faces",
          iSurface, N, List_Nbr (ListCurves), List_Nbr (ListAllCurves),
          Tree_Nbr (FacesTree));
 
@@ -1053,8 +1053,8 @@ int AlgorithmeMaillage2DAnisotropeModeJF (Surface * s){
              (simp->S[1] == &MyNewBoundary || !simp->S[1]->Pt_In_Simplex_2D (newv)) &&
              (simp->S[2] == &MyNewBoundary || !simp->S[2]->Pt_In_Simplex_2D (newv))){
         /*
-          Msg(INFO,"pt : %12.5E %12.5E",newv->Pos.X,newv->Pos.Y);
-          Msg(INFO,"not in : (%12.5E %12.5E) (%12.5E %12.5E) (%12.5E %12.5E)",
+          Msg(STATUS2,"pt : %12.5E %12.5E",newv->Pos.X,newv->Pos.Y);
+          Msg(STATUS2,"not in : (%12.5E %12.5E) (%12.5E %12.5E) (%12.5E %12.5E)",
           simp->V[0]->Pos.X,simp->V[0]->Pos.Y,simp->V[1]->Pos.X,
           simp->V[1]->Pos.Y,simp->V[2]->Pos.X,simp->V[2]->Pos.Y);
         */
@@ -1072,9 +1072,9 @@ int AlgorithmeMaillage2DAnisotropeModeJF (Surface * s){
       if (i % n == n - 1){
         volume = 0.0;
         Tree_Action (s->Simplexes, VSIM_2D);
-        Msg(STATUS, "Nod=%d Elm=%d",
+        Msg(STATUS3, "Nod=%d Elm=%d",
             Tree_Nbr (s->Vertices), Tree_Nbr (s->Simplexes));
-        Msg(SELECT, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
+        Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
       }
       Bowyer_Watson_2D (s, newv, simp, 0);
       Tree_Right (s->Simplexes, &simp);
diff --git a/Mesh/2D_Recombine.cpp b/Mesh/2D_Recombine.cpp
index c881da6b66b6b8e1cd66b97a5f81f9da21ef40e7..11dba3ae28d8aa5af0c8dfffbda194bc6f479653 100644
--- a/Mesh/2D_Recombine.cpp
+++ b/Mesh/2D_Recombine.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Recombine.cpp,v 1.4 2001-01-08 08:05:44 geuzaine Exp $
+// $Id: 2D_Recombine.cpp,v 1.5 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -109,7 +109,7 @@ void Recombine (Tree_T *TreeAllVert, Tree_T *TreeAllElg, double a){
     if(!RECNUM)break;
   }
 
-  Msg(INFO, "Recombined %d Quadrangles",ntot); 
+  Msg(STATUS2, "Recombined %d Quadrangles",ntot); 
 
   THEM->Statistics[7] -= ntot/2; 
   THEM->Statistics[8] += ntot; 
diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
index 3f2bc2f695d4068fc21979588904c347c4b20e0b..de84e5e40133b926c10a2e96eade299910ae29eb 100644
--- a/Mesh/3D_BGMesh.cpp
+++ b/Mesh/3D_BGMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_BGMesh.cpp,v 1.14 2001-01-09 19:40:56 remacle Exp $
+// $Id: 3D_BGMesh.cpp,v 1.15 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Mesh.h"
@@ -225,7 +225,7 @@ int BGMWithView (Post_View * ErrView){
 
   Tree_Action (m.Simplexes, AIG);
 
-  Msg(INFOS, "Background Mesh Loaded (%d Nodes, %d Elements)",
+  Msg(INFO, "Background Mesh Loaded (%d Nodes, %d Elements)",
       Tree_Nbr(m.Vertices), Tree_Nbr(m.Simplexes)); 
 
   return (1);
@@ -385,7 +385,7 @@ int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree,
   fprintf (f, "};\n");
   fclose (f);
 
-  Msg(INFOS, "Background Mesh Wriiten in '%s'", OutFile); 
+  Msg(INFO, "Background Mesh Wriiten in '%s'", OutFile); 
 
   return 1;
 
diff --git a/Mesh/3D_Coherence.cpp b/Mesh/3D_Coherence.cpp
index b037b77e31314466c99037f92c99d7301dee63ed..6102c11121148d2801d91211cfeb82302d008a3b 100644
--- a/Mesh/3D_Coherence.cpp
+++ b/Mesh/3D_Coherence.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Coherence.cpp,v 1.12 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: 3D_Coherence.cpp,v 1.13 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -1159,15 +1159,15 @@ int Coherence (Volume * v, Mesh * m){
   MissingFaces = Missing_Faces (v);
 
   /* Edges Recovery */
-  Msg(STATUS, "Boundary Edges Recovery");
+  Msg(STATUS3, "Boundary Edges Recovery");
 
   volume = 0;
   Tree_Action (v->Simplexes, VSIM);
-  Msg(INFOS, "Volume = %g", volume);
+  Msg(INFO, "Volume = %g", volume);
 
-  Msg(INFOS1, "===================================================");
-  Msg(INFOS2, "(1) Number of Missing Edges = %d", List_Nbr (Missing));
-  Msg(INFOS3, "===================================================");
+  Msg(INFO1, "===================================================");
+  Msg(INFO2, "(1) Number of Missing Edges = %d", List_Nbr (Missing));
+  Msg(INFO3, "===================================================");
 
   for (i = 0; i < List_Nbr (Missing); i++){
     
@@ -1197,7 +1197,7 @@ int Coherence (Volume * v, Mesh * m){
         }
       }
     */
-    Msg(INFOS, "Edge %d->%d => %d Division(s)", 
+    Msg(INFO, "Edge %d->%d => %d Division(s)", 
         pE1->V[0]->Num, pE1->V[1]->Num, List_Nbr(NewPoints));
 
     if (!List_Nbr (NewPoints))
@@ -1207,21 +1207,21 @@ int Coherence (Volume * v, Mesh * m){
     
   }
 
-  Msg(STATUS, "Boundary Faces Recovery");
+  Msg(STATUS3, "Boundary Faces Recovery");
   volume = 0;
   Tree_Action (v->Simplexes, VSIM);
-  Msg(INFOS, "Volume = %g", volume);
+  Msg(INFO, "Volume = %g", volume);
 
   /* Missing Faces */
 
-  Msg(INFOS1, "===================================================");
-  Msg(INFOS2, "(1) Number of Missing Faces = %d", List_Nbr (MissingFaces));
-  Msg(INFOS3, "===================================================");
+  Msg(INFO1, "===================================================");
+  Msg(INFO2, "(1) Number of Missing Faces = %d", List_Nbr (MissingFaces));
+  Msg(INFO3, "===================================================");
 
   for (i = 0; i < List_Nbr (MissingS); i++){
     List_Read (MissingS, i, &simp);
     TheFace = &simp->F[0];
-    Msg(INFOS, "Face %d %d %d", simp->F[0].V[0]->Num, 
+    Msg(INFO, "Face %d %d %d", simp->F[0].V[0]->Num, 
         simp->F[0].V[1]->Num, simp->F[0].V[2]->Num);
     E.V[0] = simp->F[0].V[0];
     E.V[1] = simp->F[0].V[1];
@@ -1280,7 +1280,7 @@ int Coherence (Volume * v, Mesh * m){
 
     if (1 || List_Nbr (ListFaces) == 2 * (Np - 1) - Nh){
       
-      Msg(INFOS, "Recoverable Face (%d <--> %d=2*(%d-1)-%d)",
+      Msg(INFO, "Recoverable Face (%d <--> %d=2*(%d-1)-%d)",
           List_Nbr (ListFaces), 2 * (Np - 1) - Nh, Np, Nh);
       
       for (j = 0; j < List_Nbr (v->Surfaces); j++){
@@ -1306,7 +1306,7 @@ int Coherence (Volume * v, Mesh * m){
           List_Nbr (ListFaces), 2 * (Np - 1) - Nh, Np, Nh);
       for (k = 0; k < List_Nbr (ListFaces); k++){
         List_Read (ListFaces, k, &Face);
-        Msg(INFO, "Face %d %d %d", Face.V[0]->Num, Face.V[1]->Num, Face.V[2]->Num);
+        Msg(STATUS2, "Face %d %d %d", Face.V[0]->Num, Face.V[1]->Num, Face.V[2]->Num);
       }
       Tree_Action (v->Simplexes, findEdges);
     }
@@ -1314,7 +1314,7 @@ int Coherence (Volume * v, Mesh * m){
 
   volume = 0;
   Tree_Action (v->Simplexes, VSIM);
-  Msg(INFOS, "Volume after Edge/Face Recovering = %g", volume);
+  Msg(INFO, "Volume after Edge/Face Recovering = %g", volume);
 
   /* Missing Edges */
   create_Edges (v);
@@ -1324,7 +1324,7 @@ int Coherence (Volume * v, Mesh * m){
   create_Faces (v);
   MissingFaces = Missing_Faces (v);
 
-  Msg(INFOS, "Final Check : Missing %d Edges, %d Faces", 
+  Msg(INFO, "Final Check : Missing %d Edges, %d Faces", 
       List_Nbr(MissingEdges), List_Nbr(MissingFaces));
 
   Impression_Resultats ();
@@ -1335,7 +1335,7 @@ int Coherence (Volume * v, Mesh * m){
   }
 
   Link_Simplexes (NULL, v->Simplexes);
-  Msg(STATUS, "Volume Recovery");
+  Msg(STATUS3, "Volume Recovery");
   Restore_Volume (v);
 
   return 1;
@@ -1492,7 +1492,7 @@ void Restore_Volume (Volume * v){
 
     for (i = 0; i < List_Nbr (ListSurfaces); i++){
       List_Read (ListSurfaces, i, &j);
-      Msg(INFO, "Surface %d", j);
+      Msg(STATUS2, "Surface %d", j);
     }
     
     iVolume = 0;
@@ -1519,11 +1519,11 @@ void Restore_Volume (Volume * v){
     
     for (i = 0; i < List_Nbr (ListSurfaces); i++){
       List_Read (ListSurfaces, i, &j);
-      Msg(INFO, "Surface %d", j);
+      Msg(STATUS2, "Surface %d", j);
     }
     
     N = Tree_Nbr (keep);
-    Msg(INFOS, "Initial Mesh of Volume %d: %d Simplices", iVolume, N);
+    Msg(INFO, "Initial Mesh of Volume %d: %d Simplices", iVolume, N);
     Tree_Action (keep, attribueVolume);
     Tree_Delete (keep);
     List_Reset (ListSurfaces);
diff --git a/Mesh/3D_Divide.cpp b/Mesh/3D_Divide.cpp
index af69f320f35db32a06e702a688062c282f7b3ba3..99788963356d8c3c5211dc5ac344eaf2c15585fb 100644
--- a/Mesh/3D_Divide.cpp
+++ b/Mesh/3D_Divide.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Divide.cpp,v 1.9 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: 3D_Divide.cpp,v 1.10 2001-01-12 13:29:00 geuzaine Exp $
 
 /* Routine de division des elements tetraedriques
    ou triangulaires
@@ -56,11 +56,11 @@ void Remise_A_Zero (void){
 
 void Impression_Resultats (void){
 
-  Msg(INFOS1, "===================================================");
-  Msg(INFOS2, "Surface Coherence Results (Number of Intersections)");
-  Msg(INFOS2, "%d EV, %d EE, %d FV, %d FF, %d FE, %d EEE, %d EEEE",
+  Msg(INFO1, "===================================================");
+  Msg(INFO2, "Surface Coherence Results (Number of Intersections)");
+  Msg(INFO2, "%d EV, %d EE, %d FV, %d FF, %d FE, %d EEE, %d EEEE",
       EV, EE, FV, FF, FE, EEE, EEEE);
-  Msg(INFOS3, "===================================================");
+  Msg(INFO3, "===================================================");
 	  
 }
 
@@ -73,7 +73,7 @@ void cut_prism (Vertex * v1, Vertex * v2, Vertex * v3,
   Simplex *news;
   Vertex *e1;
 
-  Msg(INFOS, "Prism Cut");
+  Msg(INFO, "Prism Cut");
 
   /* test des meilleures aretes a creer */
   /*
@@ -213,7 +213,7 @@ void cut_prism (Vertex * v1, Vertex * v2, Vertex * v3,
   else if (are_exists (v6, v1) &&
            are_exists (v5, v3) &&
            are_exists (v4, v2)) {
-    Msg(INFOS, "Found Steiner Prism 1!");
+    Msg(INFO, "Found Steiner Prism 1!");
     
     e1 = Create_Vertex 
       (++CurrentNodeNumber,
@@ -246,7 +246,7 @@ void cut_prism (Vertex * v1, Vertex * v2, Vertex * v3,
   else if (are_exists (v4, v3) &&
            are_exists (v6, v2) &&
            are_exists (v5, v1)){
-    Msg(INFOS, "Found Steiner Prism 2!");
+    Msg(INFO, "Found Steiner Prism 2!");
 
     e1 = Create_Vertex 
       (++CurrentNodeNumber,
diff --git a/Mesh/3D_Mesh.cpp b/Mesh/3D_Mesh.cpp
index 88c1eb0cd2bcb8855fd5acf1b8c2bee9ece364eb..9cb38afc57de5b137501c72d696a205acb605d0d 100644
--- a/Mesh/3D_Mesh.cpp
+++ b/Mesh/3D_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Mesh.cpp,v 1.14 2001-01-09 19:40:56 remacle Exp $
+// $Id: 3D_Mesh.cpp,v 1.15 2001-01-12 13:29:00 geuzaine Exp $
 
 /*
  
@@ -578,7 +578,7 @@ void Convex_Hull_Mesh (List_T * Points, Mesh * m){
   N = List_Nbr (Points);
   n = IMAX (N / 20, 1);
 
-  Msg(INFO, "Mesh 3D... (Initial)");
+  Msg(STATUS2, "Mesh 3D... (Initial)");
 
   Box_6_Tetraedron (Points, m);
   // List_Sort (Points, comparePosition);
@@ -602,8 +602,8 @@ void Convex_Hull_Mesh (List_T * Points, Mesh * m){
     if (i % n == n - 1){
       volume = 0.0;
       Tree_Action (m->Simplexes, VSIM);
-      Msg(STATUS, "Nod=%d/%d Elm=%d", i+1,N,Tree_Nbr(m->Simplexes)); 
-      Msg(SELECT, "Vol=%g",volume); 
+      Msg(STATUS3, "Nod=%d/%d Elm=%d", i+1,N,Tree_Nbr(m->Simplexes)); 
+      Msg(STATUS1, "Vol=%g",volume); 
     }
     if (!THES){
       Msg(WARNING, "Vertex (%g,%g,%g) in no Simplex",
@@ -616,7 +616,7 @@ void Convex_Hull_Mesh (List_T * Points, Mesh * m){
     bool  ca_marche = Bowyer_Watson (m, THEV, THES, 1);
     int count = 0;
     while(!ca_marche){
-      //Msg(INFOS, "Unable to Add Point %d (%g,%g,%g)",
+      //Msg(INFO, "Unable to Add Point %d (%g,%g,%g)",
       //	  THEV->Num, THEV->Pos.X,THEV->Pos.Y,THEV->Pos.Z );
       count ++;
       double dx = rand_sign() * 1000 * CTX.mesh.rand_factor * LC3D *
@@ -726,7 +726,7 @@ void Maillage_Volume (void *data, void *dum){
     MeshTransfiniteVolume (v);
   }
   else if (v->Typ == 99999){
-    Msg(STATUS, "Nod=0 Elm=0"); 
+    Msg(STATUS3, "Nod=0 Elm=0"); 
 
     LOCAL = &M;
     Create_BgMesh (THEM->BGM.Typ, .2, LOCAL);
@@ -790,7 +790,7 @@ void Maillage_Volume (void *data, void *dum){
     Bgm_With_Points (THEM, LOCAL);
     POINTS_TREE = THEM->Simplexes;
     
-    Msg(INFO, "Mesh 3D... (Final)");
+    Msg(STATUS2, "Mesh 3D... (Final)");
 
     Tree_Right (LOCAL->Simplexes, &simp);
     i = 0;
@@ -823,9 +823,9 @@ void Maillage_Volume (void *data, void *dum){
       if (i % n == n - 1){
         volume = 0.0;
         Tree_Action (LOCAL->Simplexes, VSIM);
-        Msg(STATUS, "Nod=%d Elm=%d",
+        Msg(STATUS3, "Nod=%d Elm=%d",
             Tree_Nbr (LOCAL->Vertices), Tree_Nbr (LOCAL->Simplexes));
-        Msg(SELECT, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
+        Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
         double adv = 100. * (CONV_VALUE / simp->Quality);
         Progress ((int) adv);
       }
@@ -842,23 +842,23 @@ void Maillage_Volume (void *data, void *dum){
 
     if (CTX.mesh.quality){
       extern void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order);
-      Msg(STATUS, "Swapping Edges (1st pass)");
+      Msg(STATUS3, "Swapping Edges (1st pass)");
       SwapEdges3D (THEM, v, CTX.mesh.quality, true);
-      Msg(STATUS, "Swapping Edges (2nd pass)");
+      Msg(STATUS3, "Swapping Edges (2nd pass)");
       SwapEdges3D (THEM, v, CTX.mesh.quality, false);
-      Msg(STATUS, "Swapping Edges (last pass)");
+      Msg(STATUS3, "Swapping Edges (last pass)");
       SwapEdges3D (THEM, v, CTX.mesh.quality, true);
     }
 
     if (CTX.mesh.nb_smoothing){
       /*
-      Msg(STATUS, "Laplacian Smoothing");
+      Msg(STATUS3, "Laplacian Smoothing");
       tnxe = Tree_Create (sizeof (NXE), compareNXE);
       create_NXE (v->Vertices, v->Simplexes, tnxe);
       for (int i = 0; i < CTX.mesh.nb_smoothing; i++)
         Tree_Action (tnxe, ActionLiss);
       Tree_Delete (tnxe);
-      Msg(STATUS, "Swapping Edges (last pass)");
+      Msg(STATUS3, "Swapping Edges (last pass)");
       SwapEdges3D (THEM, v, 0.5, true);
       */
     }
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index ec856d16bfc2ea52186531c681d4df14a9f509aa..0d2e418e1f5c1d065385959cb65da570a47e8e64 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,4 @@
-// $Id: Create.cpp,v 1.7 2001-01-08 08:05:45 geuzaine Exp $
+// $Id: Create.cpp,v 1.8 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -489,7 +489,7 @@ Curve *Create_Curve (int Num, int Typ, int Order, List_T * Liste,
   else {
     if ((v = FindVertex (p1, THEM))){
       pC->beg = v;
-      Msg(INFOS, "Curve %d First Control Point %d ", pC->Num, v->Num);
+      Msg(INFO, "Curve %d First Control Point %d ", pC->Num, v->Num);
     }
     else{
       List_Read (pC->Control_Points, 0, &pC->beg);
@@ -497,7 +497,7 @@ Curve *Create_Curve (int Num, int Typ, int Order, List_T * Liste,
     }
     if ((v = FindVertex (p2, THEM))){
       pC->end = v;
-      Msg(INFOS, "Curve %d First Control Point %d ", pC->Num, v->Num);
+      Msg(INFO, "Curve %d First Control Point %d ", pC->Num, v->Num);
     }
     else{
       List_Read (pC->Control_Points, List_Nbr (pC->Control_Points) - 1, &pC->end);
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 430393f3e9dad5aa4afe49a2d9eb3f32ea1b6152..0c5c102156ba4ba66222a29af07c443da5033872 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.8 2001-01-08 08:05:45 geuzaine Exp $
+// $Id: Generator.cpp,v 1.9 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -203,11 +203,11 @@ void mai3d (Mesh * M, int Asked){
   
   if ((Asked > oldstatus && Asked > 0 && oldstatus < 1) ||
       (Asked < oldstatus && Asked > 0)){
-    Msg (INFO, "Mesh 1D...");
+    Msg(STATUS2, "Mesh 1D...");
     t1 = Cpu();
     Maillage_Dimension_1 (M);
     t2 = Cpu();
-    Msg (INFO, "Mesh 1D complete (%g s)", t2 - t1);
+    Msg(STATUS2, "Mesh 1D complete (%g s)", t2 - t1);
     M->status = 1;
   }
   
@@ -215,11 +215,11 @@ void mai3d (Mesh * M, int Asked){
   
   if ((Asked > oldstatus && Asked > 1 && oldstatus < 2) ||
       (Asked < oldstatus && Asked > 1)){
-    Msg (INFO, "Mesh 2D...");
+    Msg(STATUS2, "Mesh 2D...");
     t1 = Cpu();
     Maillage_Dimension_2 (M);
     t2 = Cpu();
-    Msg (INFO, "Mesh 2D complete (%g s)", t2 - t1);
+    Msg(STATUS2, "Mesh 2D complete (%g s)", t2 - t1);
     M->status = 2;
   }
 
@@ -227,11 +227,11 @@ void mai3d (Mesh * M, int Asked){
 
   if ((Asked > oldstatus && Asked > 2 && oldstatus < 3) ||
       (Asked < oldstatus && Asked > 2)){
-    Msg (INFO, "Mesh 3D...");
+    Msg(STATUS2, "Mesh 3D...");
     t1 = Cpu();
     Maillage_Dimension_3 (M);
     t2 = Cpu();
-    Msg (INFO, "Mesh 3D complete (%g s)", t2 - t1);
+    Msg(STATUS2, "Mesh 3D complete (%g s)", t2 - t1);
     M->status = 3;
   }
 
diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp
index e9c1c3b35d5fb181cee8f2c554f6357a81879221..541ef16b335f2743372946ae5058308fe87c2c98 100644
--- a/Mesh/Print_Mesh.cpp
+++ b/Mesh/Print_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Print_Mesh.cpp,v 1.11 2001-01-09 19:40:56 remacle Exp $
+// $Id: Print_Mesh.cpp,v 1.12 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -984,7 +984,7 @@ void ConsecutiveNodes (Mesh * M, Tree_T * ConsecutiveNTree, Tree_T * Consecutive
   }
   nbedges = -newnum - nbnod;
   nbdof = nbnod + nbedges;
-  Msg(INFOS, "%d Dofs", nbdof);
+  Msg(INFO, "%d Dofs", nbdof);
 }
 
 void EndConsecutiveNodes (Mesh * M){
@@ -1030,12 +1030,12 @@ void Print_Mesh (Mesh * M, char *c, int Type){
       Msg(WARNING, "Unable to Open File '%s'", name);
       return;
     }
-    Msg (INFOS, "Writing File '%s'", name);
+    Msg(INFO, "Writing File '%s'", name);
     process_msh_nodes (M);
     process_msh_elements (M);
-    Msg (INFOS, "Msh Ouput Complete '%s' (%d Nodes, %d Elements)",
+    Msg(INFO, "Msh Ouput Complete '%s' (%d Nodes, %d Elements)",
          name, MSH_NODE_NUM, MSH_ELEMENT_NUM - 1);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
     fclose (mshfile);
   }
   else if (Type == FORMAT_UNV){
@@ -1045,7 +1045,7 @@ void Print_Mesh (Mesh * M, char *c, int Type){
       Msg(WARNING, "Unable to Open File '%s'", name);
       return;
     }
-    Msg (INFOS, "Writing File '%s'", name);
+    Msg(INFO, "Writing File '%s'", name);
     process_nodes (unvfile, M);
     fprintf (unvfile, "%6d\n", -1);
     fprintf (unvfile, "%6d\n", ELEMENTS);
@@ -1056,8 +1056,8 @@ void Print_Mesh (Mesh * M, char *c, int Type){
     fprintf (unvfile, "%6d\n", -1);
     PrintGroups (M);
     fclose (unvfile);
-    Msg (INFOS, "Unv Ouput Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "Unv Ouput Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
   }
   else if (Type == FORMAT_GREF){
     c ? strcpy (name, c) : strcat (name, ".Gref");
@@ -1068,7 +1068,7 @@ void Print_Mesh (Mesh * M, char *c, int Type){
       Msg(WARNING, "Unable to Open File '%s'", name);
       return;
     }
-    Msg (INFOS, "Writing File '%s'", name);
+    Msg(INFO, "Writing File '%s'", name);
     process_Gref_nodes (Greffile, M, TRN, TRE);
     process_Gref_elements (Greffile, M, Tree_Nbr (TRN));
     process_Gref_poundarybonditions (Greffile, M, TRN, TRE);
@@ -1076,7 +1076,7 @@ void Print_Mesh (Mesh * M, char *c, int Type){
     Tree_Delete (TRN);
     Tree_Delete (TRE);
     EndConsecutiveNodes (M);
-    Msg (INFOS, "Gref Ouput Complete '%s'", name);
-    Msg (INFO, "Wrote File '%s'", name);
+    Msg(INFO, "Gref Ouput Complete '%s'", name);
+    Msg(STATUS2, "Wrote File '%s'", name);
   }
 }
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index 2abec1c903ea408a7446cdc00bc4ac4b852f3509..88e7acf046ba0fbe160bb78b949547a918e2c610 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.6 2001-01-09 19:40:56 remacle Exp $
+// $Id: Read_Mesh.cpp,v 1.7 2001-01-12 13:29:00 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -57,7 +57,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
     if (!strncmp(&String[1], "PTS", 3)) {
 
       fscanf(File_GEO, "%d", &Nbr_Nodes) ;
-      Msg(INFOS, "%d Points", Nbr_Nodes);
+      Msg(INFO, "%d Points", Nbr_Nodes);
 
       for (i_Node = 0 ; i_Node < Nbr_Nodes ; i_Node++) {
         fscanf(File_GEO, "%d %lf %lf %lf %lf %lf", &Num, &x, &y, &z, &lc1, &lc2) ;
@@ -71,7 +71,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
     if (!strncmp(&String[1], "NO", 2)) { /* $NOE or $NOD */
 
       fscanf(File_GEO, "%d", &Nbr_Nodes) ;
-      Msg(INFOS, "%d Nodes", Nbr_Nodes);
+      Msg(INFO, "%d Nodes", Nbr_Nodes);
 
       for (i_Node = 0 ; i_Node < Nbr_Nodes ; i_Node++) {
         fscanf(File_GEO, "%d %lf %lf %lf", &Num, &x, &y, &z) ;
@@ -85,7 +85,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
     else if (!strncmp(&String[1], "ELM", 3)) {
 
       fscanf(File_GEO, "%d", &Nbr_Elements) ;
-      Msg(INFOS, "%d Elements", Nbr_Elements);
+      Msg(INFO, "%d Elements", Nbr_Elements);
 
       for (i_Element = 0 ; i_Element < Nbr_Elements ; i_Element++) {
         
diff --git a/Motif/CbContext.cpp b/Motif/CbContext.cpp
index 41188d4da3cbe88fe3f76aff6f6f561504fb75b8..50b100aed13ce4545c1837081403720790e4c733 100644
--- a/Motif/CbContext.cpp
+++ b/Motif/CbContext.cpp
@@ -1,4 +1,4 @@
-// $Id: CbContext.cpp,v 1.3 2001-01-10 08:50:31 geuzaine Exp $
+// $Id: CbContext.cpp,v 1.4 2001-01-12 13:29:02 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -149,135 +149,135 @@ void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data){
     XtVaSetValues(WID.M.modButt, XmNlabelString, XmStringCreateSimple("Geometry"), NULL);
     CTX.geom.level = ELEMENTARY;
     //if(M.status>0) mesh_event_handler(MESH_DELETE);
-    Msg(INFO, "");
+    Msg(STATUS2, "");
     ButtonText = txt_geom;
     break;
 
   case CONTEXT_GEOM_ELEM :
     actual_global_context = CONTEXT_GEOM;
     CTX.geom.level = ELEMENTARY;
-    Msg(INFO, "Elementary");
+    Msg(STATUS2, "Elementary");
     ButtonText = txt_elem;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD :       
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add");
+    Msg(STATUS2, "Elementary Add");
     ButtonText = txt_add;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD_NEW :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add Create");
+    Msg(STATUS2, "Elementary Add Create");
     ButtonText = txt_new;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD_TRANSLATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add Translate");
+    Msg(STATUS2, "Elementary Add Translate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD_ROTATE : 
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add Rotate");
+    Msg(STATUS2, "Elementary Add Rotate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD_DILATE : 
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add Dilate"); 
+    Msg(STATUS2, "Elementary Add Dilate"); 
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_ADD_SYMMETRY :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Add Symmetry");
+    Msg(STATUS2, "Elementary Add Symmetry");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_MOVE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Move");
+    Msg(STATUS2, "Elementary Move");
     ButtonText = txt_move;
     break;
 
   case CONTEXT_GEOM_ELEM_MOVE_TRANSLATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Move Translate");
+    Msg(STATUS2, "Elementary Move Translate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_MOVE_ROTATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Move Rotate");
+    Msg(STATUS2, "Elementary Move Rotate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_MOVE_DILATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Move Dilate");
+    Msg(STATUS2, "Elementary Move Dilate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_MOVE_SYMMETRY :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Move Symmetry");
+    Msg(STATUS2, "Elementary Move Symmetry");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_EXTRUDE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Extrude");
+    Msg(STATUS2, "Elementary Extrude");
     ButtonText = txt_move;
     break;
 
   case CONTEXT_GEOM_ELEM_EXTRUDE_TRANSLATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Extrude Translate");
+    Msg(STATUS2, "Elementary Extrude Translate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_EXTRUDE_ROTATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Extrude Rotate");
+    Msg(STATUS2, "Elementary Extrude Rotate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_EXTRUDE_DILATE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Extrude Dilate");
+    Msg(STATUS2, "Elementary Extrude Dilate");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_EXTRUDE_SYMMETRY :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Extrude Symmetry");
+    Msg(STATUS2, "Elementary Extrude Symmetry");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_ELEM_DELETE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Elementary Delete");
+    Msg(STATUS2, "Elementary Delete");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
   case CONTEXT_GEOM_PHYS :
     actual_global_context = CONTEXT_GEOM;
     CTX.geom.level = PHYSICAL;
-    Msg(INFO, "Physical");
+    Msg(STATUS2, "Physical");
     ButtonText = txt_phys;
     break;
 
   case CONTEXT_GEOM_PHYS_ADD :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Physical Add");
+    Msg(STATUS2, "Physical Add");
     ButtonText = txt_phys_add;
     break;
 
   case CONTEXT_GEOM_PHYS_DELETE :
     actual_global_context = CONTEXT_GEOM;
-    Msg(INFO, "Physical Delete");
+    Msg(STATUS2, "Physical Delete");
     ButtonText = txt_translate_rotate_dilate_symmetry_delete;
     break;
 
@@ -285,13 +285,13 @@ void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data){
     actual_global_context = CONTEXT_MESH;
     XtVaSetValues(WID.M.modButt, XmNlabelString, 
                   XmStringCreateSimple("Mesh"), NULL); 
-    Msg(INFO,"");
+    Msg(STATUS2,"");
     ButtonText = txt_mesh;
     break;
 
   case CONTEXT_MESH_DEFINE :
     actual_global_context = CONTEXT_MESH;
-    Msg(INFO,"Define");
+    Msg(STATUS2,"Define");
     ButtonText = txt_mesh_define;
     break;
 
@@ -299,7 +299,7 @@ void ActualizeContextCb (Widget w, XtPointer client_data, XtPointer call_data){
     actual_global_context = CONTEXT_POST;
     XtVaSetValues(WID.M.modButt, XmNlabelString, 
                   XmStringCreateSimple("Post Processing"), NULL);
-    Msg(INFO,"");
+    Msg(STATUS2,"");
     UpdatePostButtons();
     return;    
 
diff --git a/Motif/CbGeom.cpp b/Motif/CbGeom.cpp
index eba6f285509c9fbbb1cd8507e5f88d6cf9162883..e7ef0c67d41716375f60d7d194794395d0a2a011 100644
--- a/Motif/CbGeom.cpp
+++ b/Motif/CbGeom.cpp
@@ -1,4 +1,4 @@
-// $Id: CbGeom.cpp,v 1.3 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: CbGeom.cpp,v 1.4 2001-01-12 13:29:02 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -89,7 +89,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_NEW_BSPLINE :
     n=0;
     while(1){
-      Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+      Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
       ib = SelectEntity(ENT_POINT, &v,&c,&s);
       if(ib == 1){ /* left mouse butt */
         p[n++] = v->Num; 
@@ -119,9 +119,9 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_NEW_CIRCLE :
     n=0;
     while(1){
-      if(n == 0) Msg(STATUS,"Select Center ('q'=quit)");
-      if(n == 1) Msg(STATUS,"Select Starting Point ('q'=quit)");
-      if(n == 2) Msg(STATUS,"Select Ending Point ('q'=quit)");
+      if(n == 0) Msg(STATUS3,"Select Center ('q'=quit)");
+      if(n == 1) Msg(STATUS3,"Select Starting Point ('q'=quit)");
+      if(n == 2) Msg(STATUS3,"Select Ending Point ('q'=quit)");
       ib = SelectEntity(ENT_POINT, &v,&c,&s);
       if(ib == 1) { /* left mouse butt */
         p[n++] = v->Num; 
@@ -144,10 +144,10 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_NEW_ELLIPSIS :
     n = 0;
     while(1){
-      if(n == 0) Msg(STATUS,"Select Center ('q'=quit)");
-      if(n == 1) Msg(STATUS,"Select an Axis Point ('q'=quit)");
-      if(n == 2) Msg(STATUS,"Select Starting Point ('q'=quit)");
-      if(n == 3) Msg(STATUS,"Select Ending Point ('q'=quit)");
+      if(n == 0) Msg(STATUS3,"Select Center ('q'=quit)");
+      if(n == 1) Msg(STATUS3,"Select an Axis Point ('q'=quit)");
+      if(n == 2) Msg(STATUS3,"Select Starting Point ('q'=quit)");
+      if(n == 3) Msg(STATUS3,"Select Ending Point ('q'=quit)");
       ib = SelectEntity(ENT_POINT, &v,&c,&s);
       if(ib == 1) { /* left mouse butt */
         p[n++] = v->Num; 
@@ -183,7 +183,7 @@ void geom_event_handler (int event) {
       List_Reset(Liste2);
       
       while(1) {        
-        Msg(STATUS,"Select Boundary ('q'=quit)");
+        Msg(STATUS3,"Select Boundary ('q'=quit)");
         ib = SelectEntity(type, &v,&c,&s);
         if(ib <= 0){
           ZeroHighlight(&M);
@@ -198,7 +198,7 @@ void geom_event_handler (int event) {
           List_Reset(Liste1);
           List_Add(Liste2,&zone);
           while(1){
-            Msg(STATUS,"Select Holes ('q'=quit)");
+            Msg(STATUS3,"Select Holes ('q'=quit)");
             ib = SelectEntity(type, &v,&c,&s); 
             if(ib <= 0){
               ZeroHighlight(&M);
@@ -236,7 +236,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_TRANSLATE_POINT :
   case GEOM_ELEM_MOVE_TRANSLATE_POINT :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_POINT, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -250,7 +250,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_TRANSLATE_LINE :
   case GEOM_ELEM_MOVE_TRANSLATE_LINE :
     while(1){
-      Msg(STATUS,"Select Line ('q'=quit)");
+      Msg(STATUS3,"Select Line ('q'=quit)");
       if(!SelectEntity(ENT_LINE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -264,7 +264,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_TRANSLATE_SURF :
   case GEOM_ELEM_MOVE_TRANSLATE_SURF :
     while(1){
-      Msg(STATUS,"Select Surface ('q'=quit)");
+      Msg(STATUS3,"Select Surface ('q'=quit)");
       if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -280,7 +280,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_ROTATE_POINT :
   case GEOM_ELEM_MOVE_ROTATE_POINT :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_POINT, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -294,7 +294,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_ROTATE_LINE :
   case GEOM_ELEM_MOVE_ROTATE_LINE :
     while(1){
-      Msg(STATUS,"Select Line ('q'=quit)");
+      Msg(STATUS3,"Select Line ('q'=quit)");
       if(!SelectEntity(ENT_LINE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -308,7 +308,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_ROTATE_SURF :
   case GEOM_ELEM_MOVE_ROTATE_SURF :
     while(1){
-      Msg(STATUS,"Select Surface ('q'=quit)");
+      Msg(STATUS3,"Select Surface ('q'=quit)");
       if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -325,7 +325,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_EXTRUDE_TRANSLATE_POINT :
   case GEOM_ELEM_EXTRUDE_ROTATE_POINT :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_POINT, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot(); 
@@ -341,7 +341,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_EXTRUDE_TRANSLATE_LINE :
   case GEOM_ELEM_EXTRUDE_ROTATE_LINE :
     while(1){
-      Msg(STATUS,"Select Line ('q'=quit)");
+      Msg(STATUS3,"Select Line ('q'=quit)");
       if(!SelectEntity(ENT_LINE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -357,7 +357,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_EXTRUDE_TRANSLATE_SURF :
   case GEOM_ELEM_EXTRUDE_ROTATE_SURF :
     while(1){
-      Msg(STATUS,"Select Surface ('q'=quit)");
+      Msg(STATUS3,"Select Surface ('q'=quit)");
       if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -377,7 +377,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_SYMMETRY_POINT :
   case GEOM_ELEM_MOVE_SYMMETRY_POINT :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_POINT, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -406,7 +406,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_SYMMETRY_LINE :
   case GEOM_ELEM_MOVE_SYMMETRY_LINE :
     while(1){
-      Msg(STATUS,"Select Line ('q'=quit)");
+      Msg(STATUS3,"Select Line ('q'=quit)");
       if(!SelectEntity(ENT_LINE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -435,7 +435,7 @@ void geom_event_handler (int event) {
   case GEOM_ELEM_ADD_SYMMETRY_SURF :
   case GEOM_ELEM_MOVE_SYMMETRY_SURF :
     while(1){
-      Msg(STATUS,"Select Surface ('q'=quit)");
+      Msg(STATUS3,"Select Surface ('q'=quit)");
       if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -465,7 +465,7 @@ void geom_event_handler (int event) {
 
   case GEOM_ELEM_DELETE_POINT :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_POINT, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -478,20 +478,20 @@ void geom_event_handler (int event) {
     break;
   case GEOM_ELEM_DELETE_LINE :
     while(1){
-      Msg(STATUS,"Select Line ('q'=quit)");
+      Msg(STATUS3,"Select Line ('q'=quit)");
       if(!SelectEntity(ENT_LINE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
         break;
       }
-      del(c->Num,CTX.filename, "Line");
+      delet(c->Num,CTX.filename, "Line");
       ZeroHighlight(&M);
       Replot();
     }
     break;
   case GEOM_ELEM_DELETE_SURF :
     while(1){
-      Msg(STATUS,"Select Point ('q'=quit)");
+      Msg(STATUS3,"Select Point ('q'=quit)");
       if(!SelectEntity(ENT_SURFACE, &v,&c,&s)){
         ZeroHighlight(&M);
         Replot();
@@ -505,7 +505,7 @@ void geom_event_handler (int event) {
 
 
   case GEOM_ELEM_SKETCH :
-    Msg(STATUS,"Verifying Geometry");
+    Msg(STATUS3,"Verifying Geometry");
     add_infile("Coherence;",CTX.filename);
     ZeroHighlight(&M);
     Replot();
@@ -518,15 +518,15 @@ void geom_event_handler (int event) {
     while(1){
       switch(event){
         case GEOM_PHYS_ADD_POINT:
-          Msg(STATUS,"Select Point ('e'=end, 'q'=quit)"); 
+          Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)"); 
           type = ENT_POINT;
           break;
         case GEOM_PHYS_ADD_LINE:
-          Msg(STATUS,"Select Line ('e'=end, 'q'=quit)"); 
+          Msg(STATUS3,"Select Line ('e'=end, 'q'=quit)"); 
           type = ENT_LINE;
           break;
         case GEOM_PHYS_ADD_SURF:
-          Msg(STATUS,"Select Surface ('e'=end, 'q'=quit)"); 
+          Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)"); 
           type = ENT_SURFACE;
           break;
       }
@@ -575,7 +575,7 @@ void geom_event_handler (int event) {
 
   }
 
-  Msg(STATUS,"Ready");
+  Msg(STATUS3,"Ready");
 }
 
 
diff --git a/Motif/CbInput.cpp b/Motif/CbInput.cpp
index 8dc640bd89bc925659fee2dd27c41fb694976fdf..a471a9fd34e270bfb49355a5a7bc856955c8a26f 100644
--- a/Motif/CbInput.cpp
+++ b/Motif/CbInput.cpp
@@ -1,4 +1,4 @@
-// $Id: CbInput.cpp,v 1.2 2001-01-10 10:06:18 geuzaine Exp $
+// $Id: CbInput.cpp,v 1.3 2001-01-12 13:29:02 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -203,8 +203,8 @@ void KeyboardAccel(XEvent *event){
       break;
     case XK_h : case XK_H :
       CTX.geom.highlight = !CTX.geom.highlight;
-      CTX.geom.highlight ? Msg(INFOS, "Highlight Enabled") : 
-        Msg(INFOS, "Highlight Disabled");
+      CTX.geom.highlight ? Msg(INFO, "Highlight Enabled") : 
+        Msg(INFO, "Highlight Disabled");
       break;
     case XK_c : case XK_C :
       if(CTX.color.id==0) Init_Colors(1);
diff --git a/Motif/CbMesh.cpp b/Motif/CbMesh.cpp
index e56b142a26747f67b171aa2e407b3a800518698a..db35b37a7eb26eee9eba5f78029174a2d1861d55 100644
--- a/Motif/CbMesh.cpp
+++ b/Motif/CbMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: CbMesh.cpp,v 1.2 2001-01-11 07:32:35 geuzaine Exp $
+// $Id: CbMesh.cpp,v 1.3 2001-01-12 13:29:02 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -31,7 +31,7 @@ void* StartMeshThread(void * data){
   //  pthread_mutex_unlock(&MeshMutex);
 
   mai3d(&M,MeshDim);
-  Msg(STATUS,"Ready");
+  Msg(STATUS3,"Ready");
   CTX.mesh.draw = 1;
   CTX.threads_lock = 0;
   XtSetSensitive(WID.G.Butt[6], 0);
@@ -51,9 +51,9 @@ void CancelMeshThread(void){
     CTX.mesh.draw = 1;
     CTX.threads_lock = 0;
     XtSetSensitive(WID.G.Butt[6], 0);    
-    Msg(INFO,"Mesh Aborted");
+    Msg(STATUS2,"Mesh Aborted");
     mesh_event_handler(MESH_DELETE);
-    Msg(STATUS,"Ready");
+    Msg(STATUS3,"Ready");
     Init();
     Draw();
   }
@@ -130,7 +130,7 @@ void mesh_event_handler (int event) {
   case MESH_DEFINE_CHAR_LENGTH :
     n=0;
     while(1){
-      Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+      Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
       ib = SelectEntity(ENT_POINT, &v,&c,&s);
       if(ib == 1){ /* left mouse butt */
         p[n++] = v->Num; 
@@ -155,7 +155,7 @@ void mesh_event_handler (int event) {
   case MESH_DEFINE_RECOMBINE :
     n=0;
     while(1){
-      Msg(STATUS,"Select Surface ('e'=end, 'q'=quit)");
+      Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)");
       ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
       if(ib == 1){ /* left mouse butt */
         p[n++] = s->Num; 
@@ -184,11 +184,11 @@ void mesh_event_handler (int event) {
     while(1){
       switch (event) {    
       case MESH_DEFINE_TRSF_LINE :
-        Msg(STATUS,"Select Line ('e'=end, 'q'=quit)");
+        Msg(STATUS3,"Select Line ('e'=end, 'q'=quit)");
         ib = SelectEntity(ENT_LINE, &v,&c,&s);
         break ;
       case MESH_DEFINE_TRSF_SURFACE :
-        Msg(STATUS,"Select Surface ('e'=end, 'q'=quit)");
+        Msg(STATUS3,"Select Surface ('e'=end, 'q'=quit)");
         ib = SelectEntity(ENT_SURFACE, &v,&c,&s);
         break;
       case MESH_DEFINE_TRSF_VOLUME :
@@ -201,7 +201,7 @@ void mesh_event_handler (int event) {
         case MESH_DEFINE_TRSF_SURFACE : p[n++] = s->Num;
         case MESH_DEFINE_TRSF_VOLUME :
           while(1){
-            Msg(STATUS,"Select Point ('e'=end, 'q'=quit)");
+            Msg(STATUS3,"Select Point ('e'=end, 'q'=quit)");
             ib = SelectEntity(ENT_POINT, &v,&c,&s);
             if(ib == 1){ /* left mouse butt */
               p[n++] = v->Num ;
@@ -212,13 +212,13 @@ void mesh_event_handler (int event) {
                 if(n == 3+1 || n == 4+1)
                   add_trsfsurf(n,p,CTX.filename); 
                 else
-                  Msg(INFO, "Wrong Number of Points for Transfinite Surface");
+                  Msg(STATUS2, "Wrong Number of Points for Transfinite Surface");
                 break;
               case MESH_DEFINE_TRSF_VOLUME :
                 if(n == 6 || n == 8)
                   add_trsfvol(n,p,CTX.filename);
                 else
-                  Msg(INFO, "Wrong Number of Points for Transfinite Volume");
+                  Msg(STATUS2, "Wrong Number of Points for Transfinite Volume");
                 break;
               }
               n=0;
@@ -265,7 +265,7 @@ void mesh_event_handler (int event) {
   }
 
   if(!CTX.threads){
-    Msg(STATUS,"Ready");
+    Msg(STATUS3,"Ready");
     Init();
     Draw();
   }
diff --git a/Motif/Main.cpp b/Motif/Main.cpp
index b276bd3754ad9f9444835251f8c2c6231c8d32c9..014f0198d11af53aaffc8088afc8c620e4f54ac8 100644
--- a/Motif/Main.cpp
+++ b/Motif/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.4 2001-01-11 22:27:55 geuzaine Exp $
+// $Id: Main.cpp,v 1.5 2001-01-12 13:29:02 geuzaine Exp $
 
 #include <signal.h>
 
@@ -374,8 +374,8 @@ int main(int argc, char *argv[]){
   /* Say welcome! */
 
   TextBuffer = (char*)Malloc(1024*sizeof(char));
-  Msg(STATUS, "Ready");
-  Msg(SELECT, "Gmsh %.2f", GMSH_VERSION);
+  Msg(STATUS3, "Ready");
+  Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION);
 
   /* Open input file */
 
diff --git a/Motif/Message.cpp b/Motif/Message.cpp
index 6a775b81b7377efba1d3a4cc4592ad7d6f222ab3..7b0b3cc0ca5bb089f18a7addb9b0941dc649a66a 100644
--- a/Motif/Message.cpp
+++ b/Motif/Message.cpp
@@ -1,4 +1,4 @@
-// $Id: Message.cpp,v 1.2 2001-01-10 10:06:18 geuzaine Exp $
+// $Id: Message.cpp,v 1.3 2001-01-12 13:29:02 geuzaine Exp $
 
 #include <signal.h>
 #include <sys/resource.h>
@@ -95,10 +95,10 @@ void Msg(int level, char *fmt, ...){
       PUT_IN_COMMAND_WIN ;
     }
     break;
-  case INFOS :
+  case INFO :
     if(CTX.interactive || !CTX.command_win){
       if(CTX.verbosity > 1){
-        fprintf(stderr, INFOS_STR);
+        fprintf(stderr, INFO_STR);
         vfprintf(stderr, fmt, args); 
         fprintf(stderr, "\n");
       }
@@ -107,10 +107,10 @@ void Msg(int level, char *fmt, ...){
       PUT_IN_COMMAND_WIN ;
     }
     break;
-  case INFO :
+  case STATUS2 :
     if(CTX.interactive){
       if(CTX.verbosity > 1){
-        fprintf(stderr, INFO_STR);
+        fprintf(stderr, STATUS_STR);
         vfprintf(stderr, fmt, args);
         fprintf(stderr, "\n");
       }
@@ -122,10 +122,10 @@ void Msg(int level, char *fmt, ...){
       XmUpdateDisplay(WID.G.infoLabel);
     }
     break;
-  case SELECT :
+  case STATUS1:
     if(CTX.interactive){
       if(CTX.verbosity > 1){
-        fprintf(stderr, SELECT_STR);
+        fprintf(stderr, STATUS_STR);
         vfprintf(stderr, fmt, args); 
         fprintf(stderr, "\n");
       }
@@ -137,7 +137,7 @@ void Msg(int level, char *fmt, ...){
       XmUpdateDisplay(WID.G.selectLabel);
     }
     break;
-  case STATUS :
+  case STATUS3:
     if(CTX.interactive){
       if(CTX.verbosity > 1){
         fprintf(stderr, STATUS_STR);
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index f4d1ff6fb271976bb09185868b0b562e5f638971..41fdd53f0a2790394f7d81647998b7bd6396fc4b 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.4 2001-01-10 08:41:08 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.5 2001-01-12 13:29:04 geuzaine Exp $
 #include "Gmsh.h"
 #include "Const.h"
 #include "Context.h"
@@ -34,7 +34,7 @@ void ParseFile(char *f){
   yylineno=1;
 
   if(!(yyin = fopen(yyname,"r"))){
-    //Msg(INFO, "File '%s' Does not Exist", f);
+    //Msg(STATUS2, "File '%s' Does not Exist", f);
     return;
   }
   
@@ -60,7 +60,7 @@ void ParseFile(char *f){
 }
 
 void MergeProblem(char *name){
-  Msg(INFOS, "Merging '%s'",name); 
+  Msg(INFO, "Merging '%s'",name); 
 
   ParseFile(name);  
   if (yyerrorstate) return;
@@ -106,7 +106,7 @@ void OpenProblem(char *name){
 #endif
   }
 
-  Msg(INFOS, "Opening '%s'", CTX.filename); 
+  Msg(INFO, "Opening '%s'", CTX.filename); 
 
   ParseFile(CTX.filename);