//
// aegis - project change supervisor
// Copyright (C) 2004-2006, 2008 Peter Miller
//
// 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 3 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, see
// .
//
#include
#include
#include
#include
#include
#include
#include
#include
void
change_identifier_subset::command_line_parse(void (*usage)(void))
{
trace(("change_identifier_subset::command_line_parse()\n{\n"));
switch (arglex_token)
{
default:
fatal_raw
(
"%s: %d: option %s not handled in switch (bug)",
__FILE__,
__LINE__,
arglex_token_name(arglex_token)
);
// NOTREACHED
case arglex_token_baseline:
if (baseline)
duplicate_option(usage);
baseline = true;
break;
case arglex_token_development_directory:
if (devdir)
duplicate_option(usage);
devdir = true;
break;
case arglex_token_change:
case arglex_token_delta_from_change:
arglex();
// fall through...
case arglex_token_number:
pid.parse_change_with_branch(change_number, usage);
trace(("}\n"));
return;
case arglex_token_delta:
if (delta_number >= 0 || delta_name)
duplicate_option(usage);
switch (arglex())
{
default:
option_needs_number(arglex_token_delta, usage);
// NOTREACHED
case arglex_token_number:
delta_number = arglex_value.alv_number;
if (delta_number < 0)
{
sub_context_ty *scp = sub_context_new();
sub_var_set_long(scp, "Number", delta_number);
fatal_intl(scp, i18n("delta $number out of range"));
// NOTREACHED
sub_context_delete(scp);
}
break;
case arglex_token_string:
delta_name = arglex_value.alv_string;
break;
}
break;
case arglex_token_delta_date:
if (delta_date != NO_TIME_SET)
duplicate_option(usage);
if (arglex() != arglex_token_string)
{
option_needs_string(arglex_token_delta_date, usage);
// NOTREACHED
}
delta_date = date_scan(arglex_value.alv_string);
if (delta_date == NO_TIME_SET)
fatal_date_unknown(arglex_value.alv_string);
break;
case arglex_token_project:
case arglex_token_string:
case arglex_token_branch:
case arglex_token_trunk:
case arglex_token_grandparent:
pid.command_line_parse(usage);
trace(("}\n"));
return;
}
arglex();
trace(("}\n"));
}