diff --git a/Box/Main.cpp b/Box/Main.cpp
index 4cacd9456964693793e76ced989718fe239ef64c..7f6fdead050792df6f9df693c3797a897edf3a9d 100644
--- a/Box/Main.cpp
+++ b/Box/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.21 2002-05-20 18:28:24 geuzaine Exp $
+// $Id: Main.cpp,v 1.22 2002-09-24 02:04:33 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -41,7 +41,7 @@
 #include "Context.h"
 #include "Options.h"
 #include "OpenFile.h"
-#include "GetOptions.h"
+#include "CommandLine.h"
 #include "MinMax.h"
 
 char        yyname[256];
diff --git a/Box/Makefile b/Box/Makefile
index a93e415573712111d63d0371005da84ad06be85c..63912e2b90542892d56fb14409e8369d21e01dfd 100644
--- a/Box/Makefile
+++ b/Box/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.18 2002-05-18 16:31:16 geuzaine Exp $
+# $Id: Makefile,v 1.19 2002-09-24 02:04:33 geuzaine Exp $
 #
 # Makefile for "libGmshBox.a"
 #
@@ -52,4 +52,4 @@ Main.o: Main.cpp ../Parallel/ParUtil.h ../Plugin/PluginManager.h \
   ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
   ../Common/Views.h ../Common/ColorTable.h ../Parser/Parser.h \
   ../Common/Context.h ../Common/Options.h ../Parser/OpenFile.h \
-  ../Common/GetOptions.h ../Geo/MinMax.h
+  ../Common/CommandLine.h ../Geo/MinMax.h
diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..51d0932ccdbe30cbefa3bca26194d3619fde8a0d
--- /dev/null
+++ b/Common/CommandLine.cpp
@@ -0,0 +1,541 @@
+// $Id: CommandLine.cpp,v 1.1 2002-09-24 02:04:33 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+// 
+// Please report all bugs and problems to "gmsh@geuz.org".
+
+#include <unistd.h>
+#include "Gmsh.h"
+#include "GmshUI.h"
+#include "GmshVersion.h"
+#include "Numeric.h"
+#include "Context.h"
+#include "Options.h"
+#include "Geo.h"
+#include "Mesh.h"
+#include "Views.h"
+#include "OpenFile.h"
+#include "Parser.h"
+
+#ifndef GMSH_MAJOR_VERSION
+#error 
+#error Common/GmshVersion.h is not up-to-date. 
+#error Please run 'make tag'.
+#error
+#endif
+
+extern Context_T  CTX;
+
+char  *TheFileNameTab[MAX_OPEN_FILES];
+char  *TheBgmFileName=NULL, *TheOptString=NULL;
+
+char gmsh_progname[]  = "This is Gmsh" ;
+char gmsh_copyright[] = "Copyright (C) 1997-2002 Jean-Francois Remacle and Christophe Geuzaine";
+char gmsh_version[]   = "Version        : " ;
+char gmsh_os[]        = "Build OS       : " GMSH_OS ;
+char gmsh_gui[]       = "GUI toolkit    : " ;
+char gmsh_date[]      = "Build date     : " GMSH_DATE ;
+char gmsh_host[]      = "Build host     : " GMSH_HOST ;
+char gmsh_packager[]  = "Packager       : " GMSH_PACKAGER ;
+char gmsh_url[]       = "Web site       : http://www.geuz.org/gmsh/" ;
+char gmsh_email[]     = "Mailing list   : gmsh@geuz.org" ;
+
+void Print_Usage(char *name){
+  Msg(DIRECT, "Usage: %s [options] [files]", name);
+  Msg(DIRECT, "Geometry options:");
+  Msg(DIRECT, "  -0                    parse input files, output unrolled geometry, and exit");
+  Msg(DIRECT, "Mesh options:");
+  Msg(DIRECT, "  -1, -2, -3            perform batch 1D, 2D and 3D mesh generation");
+  Msg(DIRECT, "  -saveall              save all elements (discard physical group definitions)");
+  Msg(DIRECT, "  -o file               specify mesh output file name");
+  Msg(DIRECT, "  -format msh|unv|gref  set output mesh format (default: msh)");
+  Msg(DIRECT, "  -algo iso|tri|aniso   select 2D mesh algorithm (default: iso)");
+  Msg(DIRECT, "  -smooth int           set mesh smoothing (default: 0)");
+  //  Msg(DIRECT, "  -degree int           set mesh degree (default: 1)");
+  Msg(DIRECT, "  -scale float          set global scaling factor (default: 1.0)");
+  Msg(DIRECT, "  -meshscale float      set mesh scaling factor (default: 1.0)");
+  Msg(DIRECT, "  -clscale float        set characteristic length scaling factor (default: 1.0)");
+  Msg(DIRECT, "  -rand float           set random perturbation factor (default: 1.e-4)");
+  Msg(DIRECT, "  -bgm file             load backround mesh from file");
+  Msg(DIRECT, "  -constrain            constrain background mesh with characteristic lengths");
+  Msg(DIRECT, "  -histogram            print mesh quality histogram");
+  Msg(DIRECT, "  -extrude              use old extrusion mesh generator");
+  Msg(DIRECT, "  -recombine            recombine meshes from old extrusion mesh generator");
+#ifndef _BLACKBOX
+  Msg(DIRECT, "  -interactive          display 2D mesh construction interactively");
+  Msg(DIRECT, "Post-processing options:");
+  Msg(DIRECT, "  -dl                   enable display lists");
+  Msg(DIRECT, "  -noview               hide all views on startup");
+  Msg(DIRECT, "  -link int             select link mode between views (default: 0)");
+  Msg(DIRECT, "  -smoothview           smooth views");
+  Msg(DIRECT, "  -convert file file    convert an ascii view into a binary one");
+  Msg(DIRECT, "Display options:");    
+  Msg(DIRECT, "  -nodb                 disable double buffering");
+  Msg(DIRECT, "  -fontsize int         specify the font size for the GUI (default: 12)");
+  Msg(DIRECT, "  -theme string         specify GUI theme");
+  Msg(DIRECT, "  -alpha                enable alpha blending");
+  Msg(DIRECT, "  -notrack              don't use trackball mode for rotations");
+  Msg(DIRECT, "  -display string       specify display");
+  Msg(DIRECT, "  -perspective          set projection mode to perspective");
+#endif
+  Msg(DIRECT, "Other options:");      
+#ifndef _BLACKBOX
+  Msg(DIRECT, "  -a, -g, -m, -s, -p    start in automatic, geometry, mesh, solver or");
+  Msg(DIRECT, "                        post-processing mode (default: automatic)");
+#endif
+  Msg(DIRECT, "  -v int                set verbosity level (default: 2)");
+  Msg(DIRECT, "  -string \"string\"      parse string before project file");
+  Msg(DIRECT, "  -option file          parse option file before GUI creation");
+  Msg(DIRECT, "  -version              show version number");
+  Msg(DIRECT, "  -info                 show detailed version information");
+  Msg(DIRECT, "  -help                 show this message");
+}
+
+
+void Get_Options (int argc, char *argv[], int *nbfiles) {
+  int i=1;
+
+  // Parse session and option files
+
+  InitSymbols(); //this symbol context is local to option parsing (the
+                 //symbols will not interfere with subsequent OpenFiles)
+
+  ParseFile(CTX.sessionrc_filename,1);
+  ParseFile(CTX.optionsrc_filename,1);
+
+  // Get command line options
+
+  TheFileNameTab[0] = CTX.default_filename ;
+  *nbfiles = 0;
+  
+  while (i < argc) {
+    
+    if (argv[i][0] == '-') {
+      
+      if(!strcmp(argv[i]+1, "string")){
+	i++;
+        if(argv[i]!=NULL) TheOptString = argv[i++];
+	else{
+          fprintf(stderr, ERROR_STR "Missing string\n");
+          exit(1);
+	}
+      }
+      else if(!strcmp(argv[i]+1, "a")){ 
+        CTX.initial_context = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "g")){ 
+        CTX.initial_context = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "m")){ 
+        CTX.initial_context = 2; i++;
+      }
+      else if(!strcmp(argv[i]+1, "s")){ 
+        CTX.initial_context = 3; i++;
+      }
+      else if(!strcmp(argv[i]+1, "p")){ 
+        CTX.initial_context = 4; i++;
+      }
+      else if(!strcmp(argv[i]+1, "0")){ 
+        CTX.batch = -1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "1")){ 
+        CTX.batch = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "2")){ 
+        CTX.batch = 2; i++;
+      }
+      else if(!strcmp(argv[i]+1, "3")){ 
+        CTX.batch = 3; i++;
+      }
+      else if(!strcmp(argv[i]+1, "saveall")){ 
+        CTX.mesh.save_all = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "extrude")){ //old extrusion mesh generator
+        CTX.mesh.oldxtrude = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "recombine")){ //old extrusion mesh generator
+        CTX.mesh.oldxtrude_recombine = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "dupli")){
+        CTX.mesh.check_duplicates = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "histogram")){ 
+        CTX.mesh.histogram = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "option")){ 
+        i++;
+        if(argv[i] != NULL) ParseFile(argv[i++],1);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing file name\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "o")){ 
+        i++;
+        if(argv[i] != NULL) CTX.output_filename = argv[i++];
+        else {    
+          fprintf(stderr, ERROR_STR "Missing file name\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "bgm")){ 
+        i++;
+        if(argv[i] != NULL) TheBgmFileName = argv[i++];
+        else {    
+          fprintf(stderr, ERROR_STR "Missing file name\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "constrain")){ 
+	CTX.mesh.constrained_bgmesh = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "convert")){ 
+	i++;
+	CTX.terminal = 1;
+	if(argv[i] && argv[i+1]){
+	  ParseFile(argv[i],0);
+	  if(List_Nbr(CTX.post.list))
+	    Write_View(1,(Post_View*)List_Pointer(CTX.post.list, 0),argv[i+1]);
+	  else
+	    fprintf(stderr, ERROR_STR "No view to convert\n");
+	}
+	else
+	  fprintf(stderr, "Usage: %s -convert view.ascii view.binary\n", argv[0]);
+	exit(1);
+      }
+      else if(!strcmp(argv[i]+1, "old")){ 
+        CTX.geom.old_circle = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "initial")){
+        i++;
+        if(argv[i]!=NULL) CTX.mesh.initial_only = atoi(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "quality")){
+        i++;
+        if(argv[i]!=NULL) CTX.mesh.quality = atof(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "scale")){
+        i++;
+        if(argv[i]!=NULL) CTX.geom.scaling_factor = atof(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "meshscale")){
+        i++;
+        if(argv[i]!=NULL) CTX.mesh.scaling_factor = atof(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "rand")){
+        i++;
+        if(argv[i]!=NULL) CTX.mesh.rand_factor = atof(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "clscale")){
+        i++;
+        if(argv[i]!=NULL){
+          CTX.mesh.lc_factor = atof(argv[i++]);
+          if(CTX.mesh.lc_factor <= 0.0){
+            fprintf(stderr, ERROR_STR 
+                    "Characteristic length factor must be > 0\n");
+            exit(1);
+          }
+        }
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "smooth")){ 
+        i++;
+        if(argv[i]!=NULL) CTX.mesh.nb_smoothing = atoi(argv[i++]);
+        else{
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "degree")){  
+        i++;
+        if(argv[i]!=NULL)
+          opt_mesh_degree(0, GMSH_SET, atof(argv[i++]));
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "format") ||  
+              !strcmp(argv[i]+1, "f")){  
+        i++;
+        if(argv[i]!=NULL){
+          if(!strcmp(argv[i],"msh") || 
+             !strcmp(argv[i],"MSH") || 
+             !strcmp(argv[i],"gmsh")){
+            CTX.mesh.format = FORMAT_MSH ;
+          }
+          else if(!strcmp(argv[i],"unv") ||
+                  !strcmp(argv[i],"UNV") || 
+                  !strcmp(argv[i],"ideas")){
+            CTX.mesh.format = FORMAT_UNV ;
+          }
+          else if(!strcmp(argv[i],"gref") ||
+                  !strcmp(argv[i],"GREF") || 
+                  !strcmp(argv[i],"Gref")){
+            CTX.mesh.format = FORMAT_GREF ;
+          }
+          else{
+            fprintf(stderr, ERROR_STR "Unknown mesh format\n");
+            exit(1);
+          }
+          i++;
+        }
+        else {    
+          fprintf(stderr, ERROR_STR "Missing format\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "algo")){  
+        i++;
+        if(argv[i]!=NULL){
+          if(!strncmp(argv[i],"iso",3))
+            CTX.mesh.algo = DELAUNAY_ISO ;
+          else if(!strncmp(argv[i],"tri",3))
+            CTX.mesh.algo = DELAUNAY_SHEWCHUK ;
+          else if(!strncmp(argv[i],"aniso",5))
+            CTX.mesh.algo = DELAUNAY_ANISO ;
+          else{
+            fprintf(stderr, ERROR_STR "Unknown mesh algorithm\n");
+            exit(1);
+          }
+          i++;
+        }
+        else {    
+          fprintf(stderr, ERROR_STR "Missing algorithm\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "version") || 
+              !strcmp(argv[i]+1, "-version")){
+        fprintf(stderr, "%d.%d.%d\n", GMSH_MAJOR_VERSION, GMSH_MINOR_VERSION, 
+		GMSH_PATCH_VERSION);
+        exit(1);
+      }
+      else if(!strcmp(argv[i]+1, "info") || 
+              !strcmp(argv[i]+1, "-info")){
+        fprintf(stderr, "%s%d.%d.%d\n", gmsh_version, GMSH_MAJOR_VERSION, 
+	      GMSH_MINOR_VERSION, GMSH_PATCH_VERSION);
+        fprintf(stderr, "%s\n", gmsh_os);
+#if _FLTK
+        fprintf(stderr, "%sFLTK %d.%d.%d\n", gmsh_gui, FL_MAJOR_VERSION, 
+		FL_MINOR_VERSION, FL_PATCH_VERSION);
+#else
+        fprintf(stderr, "%snone\n", gmsh_gui);
+#endif
+        fprintf(stderr, "%s\n", gmsh_date);
+        fprintf(stderr, "%s\n", gmsh_host);
+        fprintf(stderr, "%s\n", gmsh_packager);
+        fprintf(stderr, "%s\n", gmsh_url);
+        fprintf(stderr, "%s\n", gmsh_email);
+        exit(1) ; 
+      }
+      else if(!strcmp(argv[i]+1, "help") || 
+              !strcmp(argv[i]+1, "-help")){
+        fprintf(stderr, "%s\n", gmsh_progname);
+        fprintf(stderr, "%s\n", gmsh_copyright);
+	CTX.terminal = 1 ;
+        Print_Usage(argv[0]);
+        exit(1);
+      }
+      else if(!strcmp(argv[i]+1, "v")){  
+        i++;
+        if(argv[i]!=NULL) CTX.verbosity = atoi(argv[i++]);
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+#ifndef _BLACKBOX
+      else if(!strcmp(argv[i]+1, "noterm")){ 
+        CTX.terminal = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "term")){ 
+        CTX.terminal = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "alpha")){ 
+        CTX.alpha = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "notrack")){ 
+        CTX.useTrackball = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "dual")){ 
+        CTX.mesh.dual = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "interactive")){ 
+        CTX.mesh.interactive = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "noview")){ 
+        opt_view_visible(0, GMSH_SET, 0); i++;
+      }
+      else if(!strcmp(argv[i]+1, "plugin")){ 
+	opt_general_default_plugins(0, GMSH_SET, 1); i++;
+      }
+      else if(!strcmp(argv[i]+1, "noplugin")){ 
+	opt_general_default_plugins(0, GMSH_SET, 0); i++;
+      }
+      else if(!strcmp(argv[i]+1, "link")){ 
+        i++ ;
+        if(argv[i]!=NULL)
+	  CTX.post.link = atoi(argv[i++]);
+        else{
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "fill")){ 
+        opt_view_intervals_type(0, GMSH_SET, DRAW_POST_CONTINUOUS) ; i++;
+      }
+      else if(!strcmp(argv[i]+1, "smoothview")){ 
+	CTX.post.smooth=1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nbiso")){ 
+        i++ ;
+        if(argv[i]!=NULL)
+	  opt_view_nb_iso(0, GMSH_SET, atoi(argv[i++]));
+        else{
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "command") || 
+              !strcmp(argv[i]+1, "c")){ 
+        CTX.command_win = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nocommand") ||
+              !strcmp(argv[i]+1, "noc")){ 
+        CTX.command_win = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "overlay") ||
+              !strcmp(argv[i]+1, "ov")){ 
+        CTX.overlay = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nooverlay") ||
+              !strcmp(argv[i]+1, "noov")){ 
+        CTX.overlay = CTX.geom.highlight = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "hh")){ 
+        CTX.overlay = 0 ; CTX.geom.highlight = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "perspective") ||
+              !strcmp(argv[i]+1, "p")){ 
+        CTX.ortho = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "ortho") ||
+              !strcmp(argv[i]+1, "o")){ 
+        CTX.ortho = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "threads")){
+        CTX.threads = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nothreads")){
+        CTX.threads = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "db")){ 
+        CTX.db = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nodb")){ 
+        CTX.db = 0; CTX.geom.highlight = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "dl")){ 
+        CTX.display_lists = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "nodl")){ 
+        CTX.display_lists = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "fontsize")){
+        i++;
+        if(argv[i]!=NULL){
+	  CTX.fontsize = atoi(argv[i]);
+          i++;
+	}
+        else {    
+          fprintf(stderr, ERROR_STR "Missing number\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "theme")){
+        i++;
+        if(argv[i]!=NULL){
+	  CTX.theme = argv[i];
+          i++;
+	}
+        else {    
+          fprintf(stderr, ERROR_STR "Missing argument\n");
+          exit(1);
+        }
+      }
+      else if(!strcmp(argv[i]+1, "display")){
+        i++;
+        if(argv[i]!=NULL){
+	  CTX.display = argv[i];
+          i++;
+	}
+        else {    
+          fprintf(stderr, ERROR_STR "Missing argument\n");
+          exit(1);
+        }
+      }
+#endif // !_BLACKBOX
+
+
+      else{
+        fprintf(stderr, "Unknown option '%s'\n", argv[i]);
+	CTX.terminal = 1 ;
+        Print_Usage(argv[0]);
+        exit(1);
+      }
+    }
+
+    else {
+      if(*nbfiles < MAX_OPEN_FILES)
+        TheFileNameTab[(*nbfiles)++] = argv[i++]; 
+      else{
+        fprintf(stderr, ERROR_STR "Too many input files\n");
+        exit(1);
+      }
+    }
+
+  }
+
+  strncpy(CTX.filename, TheFileNameTab[0], 255);
+
+}
+
diff --git a/Common/CommandLine.h b/Common/CommandLine.h
new file mode 100644
index 0000000000000000000000000000000000000000..8d532f0fe8ac3946ef29563de2f110c9780c4451
--- /dev/null
+++ b/Common/CommandLine.h
@@ -0,0 +1,32 @@
+#ifndef _COMMAND_LINE_H_
+#define _COMMAND_LINE_H_
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+// 
+// Please report all bugs and problems to "gmsh@geuz.org".
+
+extern char gmsh_progname[], gmsh_copyright[], gmsh_version[], gmsh_os[];
+extern char gmsh_date[], gmsh_host[], gmsh_packager[], gmsh_url[];
+extern char gmsh_email[], gmsh_gui[];
+
+extern char *TheFileNameTab[MAX_OPEN_FILES], *TheBgmFileName, *TheOptString;
+
+void Get_Options(int argc, char *argv[], int *nbfiles);
+void Print_Usage(char *name);
+
+#endif
diff --git a/Common/Makefile b/Common/Makefile
index 33883279bf5966e6ce88882364a481e1c84bc0b0..a5a6510c2255945a829d4f2208a64075031392b4 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.35 2002-05-18 16:31:16 geuzaine Exp $
+# $Id: Makefile,v 1.36 2002-09-24 02:04:34 geuzaine Exp $
 #
 # Makefile for "libGmshCommon.a"
 #
@@ -23,7 +23,7 @@ CFLAGS  = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
 SRC = Context.cpp\
       Views.cpp\
       Options.cpp\
-      GetOptions.cpp\
+      CommandLine.cpp\
       Timer.cpp\
       ColorTable.cpp\
       Trackball.cpp
@@ -67,7 +67,7 @@ Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Context.h \
   Options.h ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
   ../Fltk/Colorbar_Window.h
-GetOptions.o: GetOptions.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
+CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   GmshUI.h GmshVersion.h ../Numeric/Numeric.h Context.h Options.h \
   ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 8c746ce241abfc50cbe38dc7cbea6c88376d467b..aadef9e97fb3ec0979c3080664a0dbac5c3db114 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.140 2002-09-20 04:06:43 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.141 2002-09-24 02:04:34 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -33,7 +33,7 @@
 #include "Timer.h"
 #include "CreateFile.h"
 #include "OpenFile.h"
-#include "GetOptions.h"
+#include "CommandLine.h"
 #include "Context.h"
 #include "Options.h"
 #include "GUI.h"
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index f554959e34150b822e6d54c8a8f20fe714e2073f..c8526af088cf696b0ea5a9acd3f69a0497d6b033 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.195 2002-09-02 15:44:40 geuzaine Exp $
+// $Id: GUI.cpp,v 1.196 2002-09-24 02:04:34 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -40,7 +40,7 @@
 #include "Bitmaps.h"
 #include "Icon.h"
 #include "OpenFile.h"
-#include "GetOptions.h"
+#include "CommandLine.h"
 
 #if (FL_MAJOR_VERSION == 1) && (FL_MINOR_VERSION == 0)
 #define WINDOW_BOX FL_FLAT_BOX
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 216910dd50874bf94231677f3376638ab32c21bc..435ef5a652865e74feba256fae48f7aea50da0a1 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.39 2002-05-20 18:28:25 geuzaine Exp $
+// $Id: Main.cpp,v 1.40 2002-09-24 02:04:34 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -37,7 +37,7 @@
 #include "Parser.h"
 #include "GUI.h"
 #include "OpenFile.h"
-#include "GetOptions.h"
+#include "CommandLine.h"
 
 char        yyname[256];
 int         yyerrorstate;
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 2610c2875df6ab234fe5b476a6c9d6b74e6d5f24..dfa779c0379e86c999bd8b680dc7f2dd7f653d8f 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.36 2002-05-18 21:08:22 geuzaine Exp $
+# $Id: Makefile,v 1.37 2002-09-24 02:04:34 geuzaine Exp $
 #
 # Makefile for "libGmshFltk.a"
 #
@@ -66,7 +66,7 @@ Main.o: Main.cpp ../Plugin/PluginManager.h ../Common/Gmsh.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/Context.h ../Common/Options.h ../Parser/Parser.h GUI.h \
   Opengl_Window.h Colorbar_Window.h ../Parser/OpenFile.h \
-  ../Common/GetOptions.h
+  ../Common/CommandLine.h
 Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
@@ -81,7 +81,7 @@ GUI.o: GUI.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
   Opengl_Window.h Colorbar_Window.h Callbacks.h Bitmaps.h \
-  ../Parser/OpenFile.h ../Common/GetOptions.h Solvers.h
+  ../Parser/OpenFile.h ../Common/CommandLine.h Solvers.h
 Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
@@ -89,7 +89,7 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
   ../Geo/Verif.h ../Graphics/Draw.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/Timer.h ../Graphics/CreateFile.h \
-  ../Parser/OpenFile.h ../Common/GetOptions.h ../Common/Context.h \
+  ../Parser/OpenFile.h ../Common/CommandLine.h ../Common/Context.h \
   ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h Callbacks.h \
   ../Plugin/Plugin.h ../Graphics/Visibility.h Solvers.h
 Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
diff --git a/Makefile b/Makefile
index 94ee403bc502ea8cd8ee81a4c59d112b5b2439ba..592953a9b8e1eb362a7ff47a0657eb61ddfd4323 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.227 2002-09-09 17:24:02 geuzaine Exp $
+# $Id: Makefile,v 1.228 2002-09-24 02:04:33 geuzaine Exp $
 
 GMSH_MAJOR_VERSION = 1
 GMSH_MINOR_VERSION = 35
@@ -69,7 +69,7 @@ default:
 # Source distribution
 #
 source:
-	tar zcvf gmsh.tgz `ls README* Makefile */Makefile */*.[chyl] */*.cpp\
+	tar zcvf gmsh.tgz `ls README* Makefile */Makefile */*.[chyl] */*.[ch]pp\
                            */*.rc */*.res */*.ico */*.pl */*.pm */*.opt */*.spec`\
                            doc demos tutorial
 	mkdir gmsh-$(GMSH_RELEASE)
@@ -596,7 +596,8 @@ tgz:
 	chmod 640 $(GMSH_ARCHIVE).tar.gz
 
 minizip:
-	tar jcvf gmsh-`date "+%Y.%m.%d"`.tar.bz2 `ls Makefile */Makefile */*.[chyl] */*.cpp`
+	tar jcvf gmsh-`date "+%Y.%m.%d"`.tar.bz2 \
+        `ls Makefile */Makefile */*.[chyl] */*.[ch]pp */*.rc */*.res */*.ico`
 
 # Add doc/COPYING as soon as we are GPL'ed
 
diff --git a/Parser/Makefile b/Parser/Makefile
index 2dda875f3a4313c5471bc404ea1925fb3bd52f5f..e4bcafb998162ad360fdf87bfc4b63b99dd6a709 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.41 2002-09-01 21:54:13 geuzaine Exp $
+# $Id: Makefile,v 1.42 2002-09-24 02:04:34 geuzaine Exp $
 #
 # Makefile for "libGmshParser.a"
 #
@@ -74,7 +74,7 @@ Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Parallel/ParUtil.h \
 OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h \
-  ../Common/Context.h Parser.h OpenFile.h ../Common/GetOptions.h \
+  ../Common/Context.h Parser.h OpenFile.h ../Common/CommandLine.h \
   ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
   ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
   ../Common/Views.h ../Common/ColorTable.h ../Geo/MinMax.h \
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 2e9d3dced924328ffa5b45459acfd8cf1551422c..787856b0b1d66b4c6c008e119814cbe59ed71e1c 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.30 2002-05-20 18:28:29 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.31 2002-09-24 02:04:34 geuzaine Exp $
 //
 // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
 //
@@ -24,7 +24,7 @@
 #include "Context.h"
 #include "Parser.h"
 #include "OpenFile.h"
-#include "GetOptions.h"
+#include "CommandLine.h"
 #include "Geo.h"
 #include "Mesh.h"
 #include "Views.h"