{
long l;
if (!optional_argument_ch_C_
- || sscanf (optional_argument_ch_C_, "%ld", &l) != 1)
- report (E_ILLEGALARG);
+ || sscanf (optional_argument_ch_C_, "%ld", &l) != 1)
+ report (E_ILLEGALARG);
return l;
}
found_option_l_=0;
for (int i=0; i< table_len_i_; i++)
{
- char const *ln = option_a_[i].longname;
+ char const *ln = option_a_[i].longname;
- if (ln && !strncmp (ln, optnm, searchlen))
- {
- found_option_l_ = option_a_+i;
- break;
- }
- }
+ if (ln && !strncmp (ln, optnm, searchlen))
+ {
+ found_option_l_ = option_a_+i;
+ break;
+ }
+ }
if (!found_option_l_)
{
- report (E_UNKNOWNOPTION);
- return 0;
+ report (E_UNKNOWNOPTION);
+ return 0;
}
array_index_i_++;
argument_index_i_ = 0;
if (found_option_l_->take_arg)
{
- if (endopt)
- optional_argument_ch_C_ = endopt +1; // a '='
- else
- {
- optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_];
- array_index_i_++;
- }
- if (!optional_argument_ch_C_)
- report (E_ARGEXPECT);
+ if (endopt)
+ optional_argument_ch_C_ = endopt +1; // a '='
+ else
+ {
+ optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_];
+ array_index_i_++;
+ }
+ if (!optional_argument_ch_C_)
+ report (E_ARGEXPECT);
}
else
{
- optional_argument_ch_C_ = 0;
- if (endopt)
- report (E_NOARGEXPECT);
+ optional_argument_ch_C_ = 0;
+ if (endopt)
+ report (E_NOARGEXPECT);
}
return found_option_l_;
Long_option_init::printon (ostream &errorout) const
{
if (shortname)
- errorout <<"-" << shortname;
+ errorout <<"-" << shortname;
if (shortname && longname)
- errorout << ", ";
+ errorout << ", ";
if (longname)
- errorout << "`--" << longname << "'";
+ errorout << "`--" << longname << "'";
}
// report an error, GNU style.
{
error_ = c;
if (!error_ostream_l_)
- return;
+ return;
*error_ostream_l_ << arg_value_ch_a_a_[0] << ": ";
switch (c)
{
- case E_ARGEXPECT:
- *error_ostream_l_<< "option ";
- found_option_l_->printon (*error_ostream_l_);
- *error_ostream_l_ << "requires an argument"<<endl;
- break;
- case E_NOARGEXPECT:
- *error_ostream_l_ << "option `--" <<
- found_option_l_->longname << "' does not allow an argument"<<endl;
- break;
+ case E_ARGEXPECT:
+ *error_ostream_l_<< "option ";
+ found_option_l_->printon (*error_ostream_l_);
+ *error_ostream_l_ << "requires an argument"<<endl;
+ break;
+ case E_NOARGEXPECT:
+ *error_ostream_l_ << "option `--" <<
+ found_option_l_->longname << "' does not allow an argument"<<endl;
+ break;
- case E_UNKNOWNOPTION:
- *error_ostream_l_ << "unrecognized option ";
- if (argument_index_i_)
- *error_ostream_l_ << "-" << arg_value_ch_a_a_[array_index_i_][argument_index_i_] << endl;
- else
- *error_ostream_l_ << arg_value_ch_a_a_[array_index_i_] << endl;
+ case E_UNKNOWNOPTION:
+ *error_ostream_l_ << "unrecognized option ";
+ if (argument_index_i_)
+ *error_ostream_l_ << "-" << arg_value_ch_a_a_[array_index_i_][argument_index_i_] << endl;
+ else
+ *error_ostream_l_ << arg_value_ch_a_a_[array_index_i_] << endl;
- break;
- case E_ILLEGALARG:
- *error_ostream_l_ << "illegal argument `" << optional_argument_ch_C_ << "\'to option ";
- found_option_l_->printon (*error_ostream_l_);
- *error_ostream_l_ << '\n';
- default:
- assert (false);
+ break;
+ case E_ILLEGALARG:
+ *error_ostream_l_ << "illegal argument `" << optional_argument_ch_C_ << "\'to option ";
+ found_option_l_->printon (*error_ostream_l_);
+ *error_ostream_l_ << '\n';
+ default:
+ assert (false);
}
exit (2);
}
assert (c);
for (int i=0; i < table_len_i_; i++)
- if (option_a_[i].shortname == c)
- {
- found_option_l_ = option_a_+i;
- break;
- }
+ if (option_a_[i].shortname == c)
+ {
+ found_option_l_ = option_a_+i;
+ break;
+ }
if (!found_option_l_)
{
- report (E_UNKNOWNOPTION);
- return 0;
+ report (E_UNKNOWNOPTION);
+ return 0;
}
argument_index_i_++;
if (!found_option_l_->take_arg)
{
- optional_argument_ch_C_ = 0;
- return found_option_l_;
+ optional_argument_ch_C_ = 0;
+ return found_option_l_;
}
optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_] + argument_index_i_;
if (!optional_argument_ch_C_[0])
{
- optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_];
- array_index_i_ ++;
+ optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_];
+ array_index_i_ ++;
}
if (!optional_argument_ch_C_)
{
- report (E_ARGEXPECT);
+ report (E_ARGEXPECT);
}
return found_option_l_;
Getopt_long::operator()()
{
if (!ok())
- return 0;
+ return 0;
next();
+ if (!ok ())
+ return 0;
if (argument_index_i_)
- return parseshort();
+ return parseshort();
const char * argument_C = arg_value_ch_a_a_[array_index_i_];
if (argument_C[0] != '-')
- return 0;
+ return 0;
if (argument_C[1] == '-') {// what to do with "command -- bla"
- if (argument_C[2])
- return parselong();
- else
- return 0;
- }
+ if (argument_C[2])
+ return parselong();
+ else
+ return 0;
+ }
else
{
- if (argument_C[ 1 ])
- {
- argument_index_i_ = 1;
- return parseshort();
- }
- else
- {
- return 0;
- }
+ if (argument_C[ 1 ])
+ {
+ argument_index_i_ = 1;
+ return parseshort();
+ }
+ else
+ {
+ return 0;
+ }
}
}
// reached end of option table?
table_len_i_ =0;
for (int i = 0; option_a_[i].longname ||option_a_[i].shortname; i++)
- table_len_i_ ++;
+ table_len_i_ ++;
}
bool
{
error_ = E_NOERROR;
while (array_index_i_ < argument_count_i_
- && !arg_value_ch_a_a_[array_index_i_][argument_index_i_])
- {
- array_index_i_++;
- argument_index_i_ = 0;
+ && !arg_value_ch_a_a_[array_index_i_][argument_index_i_])
+ {
+ array_index_i_++;
+ argument_index_i_ = 0;
}
}
Getopt_long::current_arg()
{
if (array_index_i_ >= argument_count_i_)
- return 0;
+ return 0;
char const * a = arg_value_ch_a_a_[array_index_i_];
return a + argument_index_i_;
}
char const * a = current_arg();
if (a)
{
- array_index_i_ ++;
- argument_index_i_= 0;
+ array_index_i_ ++;
+ argument_index_i_= 0;
}
return a;
}