source file of the GNU LilyPond music typesetter
- (c) 1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <stdlib.h>
#include "global-ctor.hh"
#include "kpath.hh"
+Array<String> failed_files;
+
static int sane_putenv (char const* key, char const* value, bool overwrite = false);
/*
/* Current output name. */
String output_name_global;
-/* Run in safe mode? -- FIXME: should be re-analised */
+/* Run in safe mode? */
bool safe_global_b = false;
/* Verbose progress indication? */
/* another bug in option parser: --output=foe is taken as an abbreviation
for --output-format */
{_i ("EXT"), "format", 'f', _i ("use output format EXT")},
- {0, "help", 'h', _i ("this help")},
+ {0, "help", 'h', _i ("print this help")},
{_i ("FIELD"), "header", 'H', _i ("write header field to BASENAME.FIELD")},
{_i ("DIR"), "include", 'I', _i ("add DIR to search path")},
{_i ("FILE"), "init", 'i', _i ("use FILE as init file")},
{0, "no-paper", 'm', _i ("produce MIDI output only")},
{_i ("FILE"), "output", 'o', _i ("write output to FILE")},
{_i ("DIR"), "dep-prefix", 'P', _i ("prepend DIR to dependencies")},
-#if 0
- /*
- should audit again.
- */
- {0, "safe", 's', _i ("inhibit file output naming and exporting")},
-#endif
+ {0, "safe-mode", 's', _i ("run in safe mode")},
{0, "version", 'v', _i ("print version number")},
- {0, "verbose", 'V', _i ("verbose")},
+ {0, "verbose", 'V', _i ("be verbose")},
{0, "warranty", 'w', _i ("show warranty and copyright")},
{0,0,0,0}
};
{
fputs (gnu_lilypond_version_string ().to_str0 (), out);
}
-
+
void
dirinfo (FILE *out)
{
{
printf ("\n");
/* No version number or newline here. It confuses help2man. */
- printf (_f ("Usage: %s [OPTION]... FILE...", "lilypond").to_str0 ());
+ printf (_f ("Usage: %s [OPTIONS]... FILE...", "lilypond").to_str0 ());
printf ("\n\n");
- printf (_ ("Typeset music and or play MIDI from FILE").to_str0 ());
+ printf (_ ("Typeset music and/or produce MIDI from FILE.").to_str0 ());
printf ("\n\n");
- printf(_ (
-"LilyPond is a music typesetter. It produces beautiful sheet music\n"
-"using a high level description file as input. LilyPond is part of \n"
-"the GNU Project.\n"
+ printf(_ ("LilyPond produces beautiful music notation.\n"
+ "For more information, see http://lilypond.org/"
).to_str0 ());
printf ("\n");
printf ("\n");
printf (Long_option_init::table_string (options_static).to_str0 ());
printf ("\n");
+ printf (_f ("Report bugs to %s.", "bug-lilypond@gnu.org").to_str0 ());
printf ("\n");
-
- printf (_f ("Report bugs to %s", "bug-lilypond@gnu.org").to_str0 ());
printf ("\n");
}
"\n"
" You should have received a copy (refer to the file COPYING) of the\n"
"GNU General Public License along with this program; if not, write to\n"
- "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+ "the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n"
"USA.\n").to_str0 ());
}
distill_inname (String str)
{
Path p = split_path (str);
- if (str.empty_b () || str == "-")
+ if (str.is_empty () || str == "-")
p.base = "-";
else
{
for (int i = 0; extensions[i]; i++)
{
p.ext = orig_ext;
- if (*extensions[i] && !p.ext.empty_b ())
+ if (*extensions[i] && !p.ext.is_empty ())
p.ext += ".";
p.ext += extensions[i];
- if (!global_path.find (p.string ()).empty_b ())
+ if (!global_path.find (p.to_string ()).is_empty ())
break;
}
/* Reshuffle extension */
- p = split_path (p.string ());
+ p = split_path (p.to_string ());
}
return p;
}
-String
-format_to_ext (String format)
-{
- if (format == "tex")
- /* .lytex change put off */
- return "tex"; // "lytex";
- return format;
-}
-
void
prepend_load_path (String dir)
{
progress_indication ("\n");
- all_fonts_global = new All_font_metrics (global_path.string ());
+ all_fonts_global = new All_font_metrics (global_path.to_string ());
init_scheme_code_string += ")";
gh_eval_str ((char *)init_scheme_code_string.to_str0 ());
do
{
String infile (arg);
- Midi_def::reset_score_count ();
- Paper_def::reset_score_count ();
-
Path inpath = distill_inname (infile);
/* By default, use base name of input file for output file name */
Path outpath = inpath;
- if (inpath.string () != "-")
- outpath.ext = format_to_ext (output_format_global);
+ if (inpath.to_string () != "-")
+ outpath.ext = output_format_global;
/* By default, write output to cwd; do not copy directory part
of input file name */
outpath.root = "";
outpath.dir = "";
- if (!output_name_global.empty_b ())
+ if (!output_name_global.is_empty ())
outpath = split_path (output_name_global);
String init;
- if (!init_name_global.empty_b ())
+ if (!init_name_global.is_empty ())
init = init_name_global;
else
init = "init.ly";
- /* Burp: output name communication goes through _global */
- String save_output_name_global = output_name_global;
- output_name_global = outpath.string ();
- do_one_file (init, inpath.string ());
- output_name_global = save_output_name_global;
+ do_one_file (init, inpath.to_string (), outpath.to_string ());
p++;
} while ((arg = oparser_p_static->get_next_arg ()));
delete oparser_p_static;
oparser_p_static = 0;
+
+ if (exit_status_global)
+ {
+ printf ("Failed files: ");
+ for (int i = 0; i < failed_files.size (); i++)
+ printf ("%s ", failed_files[i].to_str0 ());
+ printf ("\n");
+ }
exit (exit_status_global);
}
sane_putenv ("GUILE_INIT_SEGMENT_SIZE_1", "4194304", false);
sane_putenv ("GUILE_MAX_SEGMENT_SIZE", "8388608", false);
- ly_init_kpath (argv[0]);
+ init_kpath (argv[0]);
bool help_b = false;
oparser_p_static = new Getopt_long (argc, argv, options_static);
{
String s = oparser_p_static->optional_argument_str0_;
Path p = split_path (s);
- if (s != "-" && p.ext.empty_b ())
- p.ext = format_to_ext (output_format_global);
- output_name_global = p.string ();
+ if (s != "-" && p.ext.is_empty ())
+ p.ext = output_format_global;
+
+ output_name_global = p.to_string ();
}
break;
case 'e':
case 'f':
if (oparser_p_static->optional_argument_str0_ == "help")
{
- printf("See http://lilypond.org/wiki?OutputFormats for more information.\n"\
- "This option is for developers only.\n");
+ printf("This option is for developers only; Read the source code for more information\n");
+
+ // actually it's not here,
+ // but we award you special points for looking here.
+
exit (0);
}
output_format_global = oparser_p_static->optional_argument_str0_;
break;
}
}
- identify (stderr);
if (help_b)
{