]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/main.cc
release: 0.1.54
[lilypond.git] / lily / main.cc
index 0f250ceba1ccb7e7a9f32346e0ffb6b893fb6d5a..dc66e42aa207b62b82741e4454290e50cf382b41 100644 (file)
@@ -6,6 +6,7 @@
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
 
+#include <stdlib.h>
 #include <iostream.h>
 #include <assert.h>
 #include "proto.hh"
 #include "debug.hh"
 #include "my-lily-parser.hh"
 
-Sources* source_l_g = 0;
-bool only_midi = false;
-bool version_ignore_b_ = false;
+static bool version_ignore_b = false;
+Sources* source_global_l = 0;
+bool no_paper_global_b = false;
+bool no_timestamps_global_b = false;
+
+bool experimental_features_global_b = false;
+bool postscript_global_b = true;
 int exit_status_i_;
 
 void destill_inname (String &name_str_r);
@@ -31,19 +36,22 @@ Long_option_init theopts[] = {
   {1, "output", 'o'},
   {0, "warranty", 'w'},
   {0, "help", 'h'},
+  {0, "test", 't'},
   {0, "debug", 'd'},
   {1, "init", 'i'},
   {1, "include", 'I'},
-  {0, "midi", 'M'},
+  {0, "no-paper", 'M'},
+  {0, "no-postscript", 'P'},
+  {0, "no-timestamps", 'T'},
   {0, "ignore-version", 'V'},
   {0,0,0}
 };
 
 void
-usage()
+usage ()
 {
   cout <<
-    _("Usage: lilypond [options] [mudela-file]\n"
+    _("Usage: lilypond [options] [mudela-files]\n"
     "Typeset and or produce midi output from mudela-file or stdin\n"
     "\n"
     "Options:\n"
@@ -53,8 +61,11 @@ usage()
     "  -h, --help             this help\n"
     "  -w, --warranty         show warranty and copyright\n"
     "  -o, --output=FILE      set FILE as default output\n"
-    "  -M, --midi             produce midi output only\n"
+    "  -t, --test             switch on experimental features\n"
+    "  -M, --no-paper         produce midi output only\n"
     "  -V, --ignore-version   ignore mudela version\n"
+    "  -P, --no-postscript    don't use PostScript\n"
+    "  -T, --no-timestamps    don't timestamp the output\n"
     "\n"
     "GNU LilyPond was compiled with the following settings:\n")
 #ifdef NDEBUG
@@ -76,12 +87,12 @@ usage()
 }
 
 void
-notice()
+notice ()
 {
   cout <<
     _("\n"
     "GNU LilyPond -- The GNU Project music typesetter.\n"
-    "Copyright 1996,97 by\n"
+    "Copyright 1996, 97, 98 by\n"
     "  Han-Wen Nienhuys <hanwen@stack.nl>\n"
     "  Jan Nieuwenhuizen <jan@digicash.com>\n"
     "\n"
@@ -118,48 +129,73 @@ do_one_file (String init_str, String file_str)
     }
 
   Sources sources;
-  source_l_g = &sources;
-  source_l_g->set_path (&path);
+  source_global_l = &sources;
+  source_global_l->set_path (&path);
   {
-    My_lily_parser parser (source_l_g);
-    parser.set_version_check (version_ignore_b_);
+    My_lily_parser parser (source_global_l);
+    parser.set_version_check (version_ignore_b);
     parser.parse_file (init_str, file_str);
-    exit_status_i_ |= parser.error_level_i_;
+    
+    if (file_str.length_i () && file_str[0] != '-')
+      {
+       String a,b,c,d;
+       split_path (file_str, a, b, c, d);
+       default_outname_base_global = c;
+      }
+    else
+      default_outname_base_global = "lelie";
+  
+    if (parser.error_level_i_)
+      {
+       exit_status_i_  = 1;
+      }
+    else
+      do_scores ();
+    clear_scores ();
   }
-  do_scores();
-  source_l_g = 0;
+  source_global_l = 0;
+}
+
+void
+identify ()
+{
+  cout << get_version_str () << endl;
 }
 
 int
 main (int argc, char **argv)
 {
-  debug_init();                // should be first
+  identify ();
+  call_constructors ();
+  debug_init ();               // should be first
 
 
-  // must override (come before) "/usr/local/share/lilypond"!
-  char const * env_l=getenv ("LILYINCLUDE");
-  if (env_l)
-    {
-      path.add (env_l);
-    }
+  
   path.add ("");
+  // must override (come before) "/usr/local/share/lilypond"!
+  char const *env_sz = getenv ("LILYINCLUDE");
+  if (env_sz)
+    path.parse_path (env_sz);
+
   path.add (String (DIR_DATADIR) + "/init/");
 
   path.push (DIR_DATADIR);
 
   Getopt_long oparser (argc, argv,theopts);
-  cout << get_version_str() << endl;
-  String init_str ("symbol.ly");
+  String init_str ("lily-init.ly");
 
-  while (Long_option_init const * opt = oparser())
+  while (Long_option_init const * opt = oparser ())
     {
       switch (opt->shortname)
        {
+       case 't':
+         experimental_features_global_b = true;
+         break;
        case 'o':
-         set_default_output (oparser.optional_argument_ch_C_);
+         default_outname_base_global = oparser.optional_argument_ch_C_;
          break;
        case 'w':
-         notice();
+         notice ();
          exit (0);
          break;
        case 'I':
@@ -169,17 +205,23 @@ main (int argc, char **argv)
          init_str = oparser.optional_argument_ch_C_;
          break;
        case 'h':
-         usage();
+         usage ();
          exit (0);
          break;
        case 'V':
-         version_ignore_b_ = true;
+         version_ignore_b = true;
+         break;
+       case 'P':
+         postscript_global_b = false;
          break;
        case 'd':
          set_debug (true);
          break;
        case 'M':
-         only_midi = true;
+         no_paper_global_b = true;
+         break;
+       case 'T':
+         no_timestamps_global_b = true;
          break;
        default:
          assert (false);
@@ -189,7 +231,7 @@ main (int argc, char **argv)
 
   int p=0;
   const char *arg ;
-  while ((arg= oparser.get_next_arg()))
+  while ((arg= oparser.get_next_arg ()))
     {
       String f (arg);
       destill_inname (f);
@@ -208,7 +250,7 @@ main (int argc, char **argv)
 void
 destill_inname (String &name_str_r)
 {
-  if (name_str_r.length_i())
+  if (name_str_r.length_i ())
     {
       if (name_str_r[ 0 ] != '-')
        {