/*
- process command line, GNU style.
+ This file is part of LilyPond, the GNU music typesetter.
- this is Copyleft (c) 1996--2006 Han-Wen Nienhuys, <hanwen@xs4all.nl>
+ Copyright (C) 1996--2014 Han-Wen Nienhuys, <hanwen@xs4all.nl>
+
+ LilyPond 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 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond 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 LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#include "getopt-long.hh"
assert (*optnm);
char const *endopt = strchr (optnm, '=');
- int searchlen = (endopt) ? endopt - optnm : strlen (optnm);
+ size_t searchlen = (endopt) ? (size_t) (endopt - optnm) : strlen (optnm);
found_option_ = 0;
for (int i = 0; i < table_len_; i++)
char const *ln = option_a_[i].longname_str0_;
if (ln && !strncmp (ln, optnm, searchlen))
- {
- found_option_ = option_a_ + i;
- break;
- }
+ {
+ found_option_ = option_a_ + i;
+ break;
+ }
}
if (!found_option_)
if (found_option_->take_arg_str0_)
{
if (endopt)
- optional_argument_str0_ = endopt +1; // a '='
+ optional_argument_str0_ = endopt + 1; // a '='
else
- {
- optional_argument_str0_ = arg_value_char_a_a_[array_index_];
- array_index_++;
- }
+ {
+ optional_argument_str0_ = arg_value_char_a_a_[array_index_];
+ array_index_++;
+ }
if (!optional_argument_str0_)
- report (E_ARGEXPECT);
+ report (E_ARGEXPECT);
}
else
{
optional_argument_str0_ = 0;
if (endopt)
- report (E_NOARGEXPECT);
+ report (E_NOARGEXPECT);
}
return found_option_;
if (take_arg_str0_)
{
if (longname_str0_)
- s = s + "=";
+ s = s + "=";
else
- s = s + " ";
+ s = s + " ";
s = s + gettext (take_arg_str0_);
}
{
case E_ARGEXPECT:
str += _f ("option `%s' requires an argument",
- found_option_->to_string ());
+ found_option_->to_string ());
break;
case E_NOARGEXPECT:
- str += _f ("option `%s' doesn't allow an argument",
- found_option_->to_string ());
+ str += _f ("option `%s' does not allow an argument",
+ found_option_->to_string ());
break;
case E_UNKNOWNOPTION:
str += _f ("unrecognized option: `%s'",
- string (argument_index_
- ? string ("-" + string (1, arg_value_char_a_a_[array_index_][argument_index_]))
- : string (arg_value_char_a_a_[array_index_])));
+ string (argument_index_
+ ? string ("-" + string (1, arg_value_char_a_a_[array_index_][argument_index_]))
+ : string (arg_value_char_a_a_[array_index_])));
break;
case E_ILLEGALARG:
str += _f ("invalid argument `%s' to option `%s'",
- optional_argument_str0_, found_option_->to_string ());
+ optional_argument_str0_, found_option_->to_string ());
break;
default:
assert (false);
for (int i = 0; i < table_len_; i++)
if (option_a_[i].shortname_char_ == c)
{
- found_option_ = option_a_ + i;
- break;
+ found_option_ = option_a_ + i;
+ break;
}
if (!found_option_)
if (argument[0] != '-')
return 0;
- if (argument[1] == '-') {// what to do with "command -- bla"
- if (argument[2])
- return parselong ();
- else
- return 0;
- }
+ if (argument[1] == '-') // what to do with "command -- bla"
+ {
+ if (argument[2])
+ return parselong ();
+ else
+ return 0;
+ }
else
{
if (argument[ 1 ])
- {
- argument_index_ = 1;
- return parseshort ();
- }
+ {
+ argument_index_ = 1;
+ return parseshort ();
+ }
else
- return 0;
+ return 0;
}
}
{
error_ = E_NOERROR;
while (array_index_ < argument_count_
- && !arg_value_char_a_a_[array_index_][argument_index_])
+ && !arg_value_char_a_a_[array_index_][argument_index_])
{
array_index_++;
argument_index_ = 0;
{
string tabstr = "";
- int wid = 0;
+ size_t wid = 0;
for (int i = 0; l[i].shortname_char_ || l[i].longname_str0_; i++)
- wid = max (int(wid), int(l[i].str_for_help ().length ()));
+ wid = max (wid, l[i].str_for_help ().length ());
for (int i = 0; l[i].shortname_char_ || l[i].longname_str0_; i++)
{
s += string (wid - s.length () + EXTRA_SPACES, ' ');
string help_text (gettext (l[i].help_str0_));
- replace_all (help_text, "\n",
- "\n" + string (wid + EXTRA_SPACES + 2, ' '));
+ replace_all (&help_text, "\n",
+ "\n" + string (wid + EXTRA_SPACES + 2, ' '));
tabstr += s + help_text + "\n";
}
int
Long_option_init::compare (Long_option_init const &a, Long_option_init const &b)
{
- if (a.shortname_char_ && b.shortname_char_ && a.shortname_char_- b.shortname_char_)
+ if (a.shortname_char_ && b.shortname_char_ && a.shortname_char_ - b.shortname_char_)
return a.shortname_char_ - b.shortname_char_;
if (b.shortname_char_ && a.longname_str0_)