//
// aegis - project change supervisor
// Copyright (C) 2007, 2008 Walter Franzini
//
// 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
#include
#include
#include
#include
#include
#include
static void
usage(void)
{
const char *progname;
progname = progname_get();
fprintf(stderr,
"%s -PROJect P [ -Delta d | -BaseLine ] filename\n", progname);
exit(EXIT_FAILURE);
}
int
main(int argc, char **argv)
{
os_become_init_mortal();
arglex2_init(argc, argv);
project_identifier_subset_plain pid;
project_identifier_subset_branch branch_id(pid);
change_identifier_subset change_id(branch_id);
nstring filename;
arglex();
while (arglex_token != arglex_token_eoln)
{
switch (arglex_token)
{
default:
generic_argument(usage);
// NOTREACHED
case arglex_token_baseline:
case arglex_token_delta:
case arglex_token_project:
change_id.command_line_parse(usage);
continue;
case arglex_token_string:
filename = nstring(arglex_value.alv_string);
break;
}
arglex();
}
if (filename.empty())
usage();
if (!change_id.set())
usage();
change::pointer cp = change_id.get_cp();
project_file_roll_forward historian;
historian.set(change_id.get_pp(), change_completion_timestamp(cp), true);
file_event_list::pointer felp = historian.get(filename);
if (!felp)
return 0;
for (size_t j = 0; j < felp->size(); ++j)
{
file_event *fep = felp->get(j);
fstate_src_ty *fstate_src = fep->get_src();
change::pointer cp2 = fep->get_change();
nstring version(change_version_get(cp2));
printf("%s|", version.c_str());
printf("%s|", file_action_ename(fstate_src->action));
printf("%s|", fstate_src->uuid ? fstate_src->uuid->str_text : "");
printf("%s|", fstate_src->file_name->str_text);
switch (fstate_src->action)
{
case file_action_create:
case file_action_remove:
if (fstate_src->move)
printf("%s", fstate_src->move->str_text);
break;
case file_action_insulate:
case file_action_modify:
case file_action_transparent:
break;
}
puts("");
}
return 0;
}