1*4fee23f9Smrg<!-- Get and update the GCC regression tester's web page. 2*4fee23f9Smrg Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc. 3*4fee23f9Smrg 4*4fee23f9SmrgThis file is part of GCC. 5*4fee23f9Smrg 6*4fee23f9SmrgGCC is free software; you can redistribute it and/or modify it under 7*4fee23f9Smrgthe terms of the GNU General Public License as published by the Free 8*4fee23f9SmrgSoftware Foundation; either version 3, or (at your option) any later 9*4fee23f9Smrgversion. 10*4fee23f9Smrg 11*4fee23f9SmrgGCC is distributed in the hope that it will be useful, but WITHOUT ANY 12*4fee23f9SmrgWARRANTY; without even the implied warranty of MERCHANTABILITY or 13*4fee23f9SmrgFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14*4fee23f9Smrgfor more details. 15*4fee23f9Smrg 16*4fee23f9SmrgYou should have received a copy of the GNU General Public License 17*4fee23f9Smrgalong with GCC; see the file COPYING3. If not see 18*4fee23f9Smrg<http://www.gnu.org/licenses/>. --> 19*4fee23f9Smrg<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 20*4fee23f9Smrg "http://www.w3.org/TR/html4/strict.dtd"> 21*4fee23f9Smrg<head> 22*4fee23f9Smrg<meta http-equiv="Content-Script-Type" content="text/javascript"> 23*4fee23f9Smrg<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 24*4fee23f9Smrg<title>Regression Tester Status</title> 25*4fee23f9Smrg<style type='text/css'> 26*4fee23f9Smrgbody { 27*4fee23f9Smrg margin: 0px; 28*4fee23f9Smrg padding: 0px; 29*4fee23f9Smrg} 30*4fee23f9Smrgpre { 31*4fee23f9Smrg font-family: Monaco; 32*4fee23f9Smrg font-size: 9px; 33*4fee23f9Smrg margin: 0px; 34*4fee23f9Smrg padding: 1px 2px 1px 2px; 35*4fee23f9Smrg color: black; 36*4fee23f9Smrg background-color: white; 37*4fee23f9Smrg opacity: 0.8; 38*4fee23f9Smrg} 39*4fee23f9Smrg</style> 40*4fee23f9Smrg<script type='text/javascript' defer> 41*4fee23f9Smrg// A string representing NUM, with a leading zero if it would be 1 digit long 42*4fee23f9Smrgfunction dig2 (num) 43*4fee23f9Smrg{ 44*4fee23f9Smrg var result = num.toString(); 45*4fee23f9Smrg if (result.length == 1) 46*4fee23f9Smrg return '0' + result; 47*4fee23f9Smrg else 48*4fee23f9Smrg return result; 49*4fee23f9Smrg} 50*4fee23f9Smrg 51*4fee23f9Smrg// Get DATE as a string in standard ISO format in UTC 52*4fee23f9Smrgfunction getISO (date) 53*4fee23f9Smrg{ 54*4fee23f9Smrg return (date.getUTCFullYear().toString() + '-' 55*4fee23f9Smrg + dig2 (date.getUTCMonth() + 1) + '-' 56*4fee23f9Smrg + dig2 (date.getUTCDate()) + 'T' 57*4fee23f9Smrg + dig2 (date.getUTCHours()) + ':' 58*4fee23f9Smrg + dig2 (date.getUTCMinutes()) + 'Z'); 59*4fee23f9Smrg} 60*4fee23f9Smrg 61*4fee23f9Smrg// STR is a bunch of lines of the form '<key>: <date>' where <date> is in 62*4fee23f9Smrg// standard ISO UTC format. Return a Date object corresponding to KEY, or null 63*4fee23f9Smrg// if none is found. 64*4fee23f9Smrgfunction fromISO (str, key) 65*4fee23f9Smrg{ 66*4fee23f9Smrg var rx = new RegExp (key + ": (\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+)Z"); 67*4fee23f9Smrg var match = rx.exec (str); 68*4fee23f9Smrg if (match == null || match.length != 7) 69*4fee23f9Smrg return null; 70*4fee23f9Smrg var date = new Date(0); 71*4fee23f9Smrg date.setUTCFullYear (match[1], match[2] - 1, match[3]); 72*4fee23f9Smrg date.setUTCHours (match[4], match[5], match[6], 0); 73*4fee23f9Smrg return date; 74*4fee23f9Smrg} 75*4fee23f9Smrg 76*4fee23f9Smrg// Update the data 77*4fee23f9Smrgfunction updateContents () { 78*4fee23f9Smrg var url = 'http://gcc.gnu.org/regtest/HEAD/status.txt'; 79*4fee23f9Smrg if (document.URL && document.URL.substring (0,5) == 'http:') { 80*4fee23f9Smrg url = document.URL.replace ('widget.html','status.txt'); 81*4fee23f9Smrg } 82*4fee23f9Smrg var xml_request = new XMLHttpRequest(); 83*4fee23f9Smrg 84*4fee23f9Smrg xml_request.onload = function(e) 85*4fee23f9Smrg { 86*4fee23f9Smrg gotContents(e, xml_request); 87*4fee23f9Smrg } 88*4fee23f9Smrg xml_request.open("GET", url); 89*4fee23f9Smrg xml_request.setRequestHeader("Cache-Control", "max-age=30"); 90*4fee23f9Smrg xml_request.send(null); 91*4fee23f9Smrg} 92*4fee23f9Smrg 93*4fee23f9Smrgfunction gotContents (event, request) { 94*4fee23f9Smrg if (request.status != 200) 95*4fee23f9Smrg return; 96*4fee23f9Smrg 97*4fee23f9Smrg if (! request.responseText) 98*4fee23f9Smrg return; 99*4fee23f9Smrg 100*4fee23f9Smrg var txt = request.responseText; 101*4fee23f9Smrg var today = new Date(); 102*4fee23f9Smrg var date_r = fromISO (txt, "Date"); 103*4fee23f9Smrg var completed_r = fromISO (txt, "Test-Completed"); 104*4fee23f9Smrg var now_test_r = fromISO (txt, "Now-Testing"); 105*4fee23f9Smrg var eta = ""; 106*4fee23f9Smrg 107*4fee23f9Smrg if (date_r != null && completed_r != null && now_test_r != null) 108*4fee23f9Smrg { 109*4fee23f9Smrg var eta_r = new Date (now_test_r.getTime() 110*4fee23f9Smrg + completed_r.getTime() - date_r.getTime()); 111*4fee23f9Smrg eta = "ETA: " + getISO (eta_r) + '\n'; 112*4fee23f9Smrg } 113*4fee23f9Smrg 114*4fee23f9Smrg var val = txt + "Now: " + getISO (today) + '\n' + eta; 115*4fee23f9Smrg var contEl = document.getElementById ("contents"); 116*4fee23f9Smrg contEl.removeChild(contEl.firstChild); 117*4fee23f9Smrg contEl.appendChild (document.createTextNode (val)); 118*4fee23f9Smrg} 119*4fee23f9Smrg 120*4fee23f9Smrgvar mainTimer = null; 121*4fee23f9Smrg 122*4fee23f9Smrgfunction myOnShow () 123*4fee23f9Smrg{ 124*4fee23f9Smrg if (! mainTimer) { 125*4fee23f9Smrg mainTimer = setInterval (updateContents, 60000); 126*4fee23f9Smrg } 127*4fee23f9Smrg updateContents(); 128*4fee23f9Smrg} 129*4fee23f9Smrg 130*4fee23f9Smrgfunction myOnHide () 131*4fee23f9Smrg{ 132*4fee23f9Smrg if (mainTimer) { 133*4fee23f9Smrg clearInterval (mainTimer); 134*4fee23f9Smrg mainTimer = null; 135*4fee23f9Smrg } 136*4fee23f9Smrg} 137*4fee23f9Smrg 138*4fee23f9Smrgfunction myOnLoad () 139*4fee23f9Smrg{ 140*4fee23f9Smrg if ( window.widget ) { 141*4fee23f9Smrg widget.onshow = myOnShow; 142*4fee23f9Smrg widget.onhide = myOnHide; 143*4fee23f9Smrg } 144*4fee23f9Smrg myOnShow(); 145*4fee23f9Smrg} 146*4fee23f9Smrg</script> 147*4fee23f9Smrg</head> 148*4fee23f9Smrg 149*4fee23f9Smrg<body onLoad='myOnLoad();'> 150*4fee23f9Smrg<pre id="contents">Loading...</pre> 151*4fee23f9Smrg</body> 152*4fee23f9Smrg</html> 153