// // aegis - project change supervisor // Copyright (C) 1999, 2001, 2003-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 // for assert #include #include #include #include #include #include #include #include #include #include #include void list_change_history(change_identifier &cid, string_list_ty *) { trace(("list_change_history()\n{\n")); cstate_ty *cstate_data = cid.get_cp()->cstate_get(); // // create the columns // col::pointer colp = col::open((string_ty *)0); string_ty *line1 = str_format ( "Project \"%s\" Change %ld", project_name_get(cid.get_pp())->str_text, magic_zero_decode(cid.get_cp()->number) ); colp->title(line1->str_text, "History"); str_free(line1); int left = 0; output::pointer what_col = colp->create(left, left + WHAT_WIDTH, "What\n------"); left += WHAT_WIDTH + 1; output::pointer when_col = colp->create(left, left + WHEN_WIDTH, "When\n------"); left += WHEN_WIDTH + 1; output::pointer who_col = colp->create(left, left + WHO_WIDTH, "Who\n-----"); left += WHO_WIDTH + 1; output::pointer why_col = colp->create(left, 0, "Comment\n---------"); // // list the history // for (size_t j = 0; j < cstate_data->history->length; ++j) { cstate_history_ty *history_data = cstate_data->history->list[j]; what_col->fputs(cstate_history_what_ename(history_data->what)); time_t t = history_data->when; when_col->fputs(ctime(&t)); who_col->fputs(history_data->who->str_text); if (history_data->why) why_col->fputs(history_data->why->str_text); if (history_data->what != cstate_history_what_integrate_pass) { time_t finish = 0; if (j + 1 < cstate_data->history->length) finish = cstate_data->history->list[j + 1]->when; else time(&finish); if (finish - t >= ELAPSED_TIME_THRESHOLD) { why_col->end_of_line(); why_col->fprintf ( "Elapsed time: %5.3f days.\n", working_days(t, finish) ); } } colp->eoln(); } trace(("}\n")); }