/* * aegis - project change supervisor * Copyright (C) 1997-1999, 2001-2003, 2005-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 * . */ auto pn; pn = project_name(); auto script_name; script_name = getenv("SCRIPT_NAME"); if (script_name == "") script_name = "http://localhost/cgi-bin/aegis.cgi"; columns({width = 1000; }); print("Content-Type: text/html"); print(""); print(""); print(""); print(""); print(""); print(""); print(""); /* * Netscape 4.x has numerous CSS bugs, two of which need mentioning. * 1. If a style sheet is not present Netscape says 404 Not found, when * it should silently ignore it. 2. Style sheets who's media is not * "screen" will be ignored. Fortunately we can use (2) to get around (1). */ print(""); auto stack, depth, n; depth=0; stack[depth] = project[pn].state.name; while ("" != ( n = project[stack[depth]].state.parent_name )) { stack[++depth] = n; } while ( depth >= 0) { print(""); } print(""); print("Project " ## quote_html(project_name()) ## ", History Report"); print("

"); auto href; print("Project"); auto long_project_name; auto prj_name_parts; prj_name_parts = split(pn, '.'); href = script_name ## "?file@proj_menu+project@" ## quote_url(prj_name_parts[0]); long_project_name = "" ## quote_html(prj_name_parts[0]) ## ""; auto j; for (j = 1; j < count(prj_name_parts); j++) { href ##= '.' ## prj_name_parts[j]; long_project_name ##= "." ## quote_html(prj_name_parts[j]) ## ""; }; long_project_name = "“" ## long_project_name ## "”,
"; /* HTTP limits lines to 510 characters */ for (j in wrap(long_project_name, 510)) print(j); print("History"); print("

"); print("
"); auto ps; ps = project[project_name()].state; /* * scan all completed changes * for any of the named files */ print(""); print("" ## ""); auto ph, rownum; rownum = 0; for (ph in ps.branch.history) { if (rownum++ % 6 < 3) print(""); else print(""); print(""); } print(""); print("
DeltaWhenChangeDescriptionDownload
"); print(ph.delta_number); print(""); auto cs; cs = ps.branch.change[ph.change_number]; print(cs.history[count(cs.history) - 1].when); print(""); href = script_name ## "?file@chan_menu"; href ##= "+project@" ## quote_url(project_name()); href ##= "+change@" ## ph.change_number; print(""); print(ph.change_number ## ""); print(""); auto part; for (part in wrap_html(quote_html(cs.brief_description), 80)) print(part); /* * The download column. */ print(""); href = script_name ## "/" ## quote_url(project_name()); href ##= ".C" ## ph.change_number ## ".patch?file@aepatch"; href ##= "+project@" ## quote_url(project_name()); href ##= "+change@" ## ph.change_number; print("patch,"); href = script_name ## "/" ## quote_url(project_name()); href ##= ".C" ## ph.change_number ## ".tar.gz?file@aetar"; href ##= "+project@" ## quote_url(project_name()); href ##= "+change@" ## ph.change_number; print("tar.gz,"); href = script_name ## "/" ## quote_url(project_name()); href ##= ".C" ## ph.change_number ## ".ae?file@aedist"; href ##= "+project@" ## quote_url(project_name()); href ##= "+change@" ## ph.change_number; print("aedist"); print("
"); print("Listed " ## count(ps.branch.history) ## " completed changes."); print("
"); print("
"); print("
"); print("
"); print("A similar report may be obtained from the command line, with one of"); print("
ael proj_history -p " ## quote_html(project_name()));
print("aer proj_history -p " ## quote_html(project_name()) ##
    "
"); print("
"); print("
"); print("If you download via the patch links, they can be"); print("uncompressed with gunzip(1) and applied with the normal"); print("patch(1) program. Or you could use aepatch(1)"); print("from Aegis 3.28 or later to apply them to an Aegis project as"); print("a change. Depending on your browser, it may or may not have"); print("done the MIME64 and/or gunzip steps for you automagically."); print("

"); print("If you download via the tar.gz links, the tarball can be"); print("uncompressed with gunzip(1) and unpacked with the normal"); print("tar(1) program. Or you could use aetar(1)"); print("from Aegis 4.7 or later to apply them to an Aegis project as"); print("a change. Depending on your browser, it may or may not have"); print("done the gunzip step for you automagically."); print("

"); print("If you download via the aedist links, you will need"); print("aedist(1) from Aegis 4.11 or later to apply the"); print("change sets."); print("


"); print("

["); print("Project List |"); href = script_name ## "?file@proj_menu+project@" ## quote_url(pn); print("Project Menu"); print("]

"); print("
"); print("This page was generated " ## now() ## "."); print("");