// // aegis - project change supervisor // Copyright (C) 2004-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 // for assert #include #include #include #include change_functor_inventory_list::~change_functor_inventory_list() { } change_functor_inventory_list::change_functor_inventory_list(bool arg1, project_ty *pp) : change_functor(arg1) { colp = col::open((string_ty *)0); string_ty *line1 = str_format("Project \"%s\"", project_name_get(pp)->str_text); colp->title(line1->str_text, "Change Set Inventory"); str_free(line1); line1 = 0; int left = 0; vers_col = colp->create(left, left + VERSION_WIDTH, "Change\n-------"); left += VERSION_WIDTH + 1; uuid_col = colp->create(left, left + UUID_WIDTH, "UUID\n------"); left += UUID_WIDTH + 1; if (option_verbose_get()) when_col = colp->create(left, 0, "Date and Time\n---------------"); } void change_functor_inventory_list::print_one_line(change::pointer cp, string_ty *uuid) { vers_col->fputs(change_version_get(cp)); uuid_col->fputs(uuid); if (when_col) { // // Change UUIDs were introduces in 4.16 (public release // 4.17), so for backwards compatibility reasons, do not // expect all completed changes have UUIDs. // time_t when = change_completion_timestamp(cp); struct tm *theTm = localtime(&when); char buffer[30]; strftime(buffer, sizeof(buffer), "%Y-%b-%d %H:%M:%S", theTm); when_col->fputs(buffer); } colp->eoln(); } void change_functor_inventory_list::operator()(change::pointer cp) { cstate_ty *cstate_data = cp->cstate_get(); if (cstate_data->uuid) print_one_line(cp, cstate_data->uuid); if (!cstate_data->attribute) return; for (size_t j = 0; j < cstate_data->attribute->length; ++j) { attributes_ty *ap = cstate_data->attribute->list[j]; assert(ap->name); assert(ap->value); if ( ap->value && // users can edit, we will check universal_unique_identifier_valid(ap->value) ) { print_one_line(cp, ap->value); } } }