Changeset fca547 in git
- Timestamp:
- Apr 3, 1998, 7:38:45 PM (25 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 5480dab448af565abfd5b8f28e1766de56df7613
- Parents:
- 36ff0ee47861d9c243c573d5f915206fde045c9b
- Location:
- Singular
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/extra.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: extra.cc,v 1.3 1 1998-03-27 15:43:27 obachmanExp $ */4 /* $Id: extra.cc,v 1.32 1998-04-03 17:38:35 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: general interface to internals of Singular ("system" command) … … 74 74 if(h->Typ() == STRING_CMD) 75 75 { 76 /*==================== test ==================================*/77 if(strcmp((char*)(h->Data()),"x")==0)78 {79 int i=3;80 int j=2;81 j=i/(j-j);82 res->data=(void *)j;83 return FALSE;84 }85 else86 76 /*==================== lib ==================================*/ 87 77 if(strcmp((char*)(h->Data()),"LIB")==0) … … 102 92 if(strcmp((char*)(h->Data()),"proclist")==0) 103 93 { 104 intpiShowProcList();105 res->rtyp=STRING_CMD;106 res->data=(void *)mstrdup("");94 void piShowProcList(); 95 //res->rtyp=STRING_CMD; 96 //res->data=(void *)mstrdup(""); 107 97 piShowProcList(); 108 98 return FALSE; -
Singular/iparith.cc
r36ff0ee rfca547 209 209 { "monitor", 0, MONITOR_CMD , CMD_12}, 210 210 { "mult", 0, MULTIPLICITY_CMD , CMD_1}, 211 #ifdef OLD_RES 211 212 { "mres", 0, MRES_CMD , CMD_23}, 213 #else 214 { "mres", 0, MRES_CMD , CMD_2}, 215 #endif 212 216 { "mstd", 0, MSTD_CMD , CMD_1}, 213 217 { "nameof", 0, NAMEOF_CMD , CMD_1}, … … 243 247 { "reduce", 0, REDUCE_CMD , CMD_23}, 244 248 { "regularity", 0, REGULARITY_CMD , CMD_1}, 249 #ifdef OLD_RES 245 250 { "res", 0, RES_CMD , CMD_23}, 251 #else 252 { "res", 0, RES_CMD , CMD_2}, 253 #endif 246 254 { "reservedName",0, RESERVEDNAME_CMD , CMD_M}, 247 255 { "resolution", 0, RESOLUTION_CMD , RING_DECL}, … … 255 263 { "size", 0, COUNT_CMD , CMD_1}, 256 264 { "sortvec", 0, SORTVEC_CMD , CMD_1}, 265 #ifdef OLD_RES 257 266 { "sres", 0, SRES_CMD , CMD_23}, 267 #else 268 { "sres", 0, SRES_CMD , CMD_2}, 269 #endif 258 270 { "status", 0, STATUS_CMD, CMD_23}, 259 271 { "std", 0, STD_CMD , CMD_12}, … … 1699 1711 if (r==NULL) return TRUE; 1700 1712 res->data=(void *)liMakeResolv(r,l,wmaxl,u->Typ(),weights); 1713 //res->data=(void *)syMakeResolution(r,l); 1701 1714 return FALSE; 1702 1715 } … … 2041 2054 ,{jjRES, MRES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD PROFILER} 2042 2055 ,{jjRES, MRES_CMD, LIST_CMD, MODUL_CMD, INT_CMD PROFILER} 2056 //,{jjRES, MRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD PROFILER} 2057 //,{jjRES, MRES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD PROFILER} 2043 2058 ,{jjPARSTR2, PARSTR_CMD, STRING_CMD, RING_CMD, INT_CMD PROFILER} 2044 2059 ,{jjPARSTR2, PARSTR_CMD, STRING_CMD, QRING_CMD, INT_CMD PROFILER} … … 2057 2072 ,{jjRES, RES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD PROFILER} 2058 2073 ,{jjRES, RES_CMD, LIST_CMD, MODUL_CMD, INT_CMD PROFILER} 2074 //,{jjRES, RES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD PROFILER} 2075 //,{jjRES, RES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD PROFILER} 2059 2076 ,{jjSTATUS2, STATUS_CMD, STRING_CMD, LINK_CMD, STRING_CMD PROFILER} 2060 2077 ,{jjSIMPL_P, SIMPLIFY_CMD, POLY_CMD, POLY_CMD, INT_CMD PROFILER} … … 2064 2081 ,{jjRES, SRES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD PROFILER} 2065 2082 ,{jjRES, SRES_CMD, LIST_CMD, MODUL_CMD, INT_CMD PROFILER} 2083 //,{jjRES, SRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD PROFILER} 2084 //,{jjRES, SRES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD PROFILER} 2066 2085 ,{jjCALL2MANY, SYSTEM_CMD, ANY_TYPE/*set by p*/,STRING_CMD, DEF_CMD PROFILER} 2067 2086 ,{jjSTD_1, STD_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD PROFILER} … … 3124 3143 ,{jjKBASE, KBASE_CMD, MODUL_CMD, MODUL_CMD } 3125 3144 ,{atKILLATTR1, KILLATTR_CMD, NONE, IDHDL } 3126 ,{jjCALL1MANY, LIST_CMD, LIST_CMD, DEF_CMD }3127 3145 #ifdef MDEBUG 3128 3146 ,{jjpHead, LEAD_CMD, POLY_CMD, POLY_CMD } … … 3141 3159 ,{jjLEADEXP, LEADEXP_CMD, INTVEC_CMD, POLY_CMD } 3142 3160 ,{jjLEADEXP, LEADEXP_CMD, INTVEC_CMD, VECTOR_CMD } 3161 ,{jjCALL1MANY, LIST_CMD, LIST_CMD, DEF_CMD } 3143 3162 ,{jjWRONG, MAP_CMD, 0, ANY_TYPE} 3144 3163 ,{jjDUMMY, MATRIX_CMD, MATRIX_CMD, MATRIX_CMD } … … 3743 3762 return FALSE; 3744 3763 } 3764 #ifdef OLD_RES 3745 3765 static BOOLEAN jjRES3(leftv res, leftv u, leftv v, leftv w) 3746 3766 { 3747 #ifdef OLD_RES3748 3767 int maxl=(int)v->Data(); 3749 3768 int l=0; … … 3778 3797 iiMakeResolv(r,l,wmaxl,w->name,t3,weights); 3779 3798 return FALSE; 3780 #else3781 3799 return TRUE; 3800 } 3782 3801 #endif 3783 }3784 3802 static BOOLEAN jjSTATUS3(leftv res, leftv u, leftv v, leftv w) 3785 3803 { … … 3830 3848 ,{jjMATRIX_Ma, MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, INT_CMD } 3831 3849 ,{jjCALL3MANY, MODUL_CMD, MODUL_CMD, DEF_CMD, DEF_CMD, DEF_CMD } 3850 #ifdef OLD_RES 3832 3851 ,{jjRES3, MRES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE } 3833 3852 ,{jjRES3, MRES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE } 3853 #endif 3834 3854 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, RING_CMD, ANY_TYPE, ANY_TYPE } 3835 3855 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, QRING_CMD, ANY_TYPE, ANY_TYPE } … … 3841 3861 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, INT_CMD } 3842 3862 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, INT_CMD } 3863 #ifdef OLD_RES 3843 3864 ,{jjRES3, RES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE } 3844 3865 ,{jjRES3, RES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE } 3866 #endif 3845 3867 #ifdef HAVE_FACTORY 3846 3868 ,{jjRESULTANT, RESULTANT_CMD, POLY_CMD,POLY_CMD, POLY_CMD, POLY_CMD } … … 3848 3870 ,{jjWRONG3, RESULTANT_CMD, POLY_CMD,POLY_CMD, POLY_CMD, POLY_CMD } 3849 3871 #endif 3872 #ifdef OLD_RES 3850 3873 ,{jjRES3, SRES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE } 3851 3874 ,{jjRES3, SRES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE } 3875 #endif 3852 3876 ,{jjSTATUS3, STATUS_CMD, INT_CMD, LINK_CMD, STRING_CMD, STRING_CMD} 3853 3877 ,{jjSUBST_P, SUBST_CMD, POLY_CMD, POLY_CMD, POLY_CMD, POLY_CMD } -
Singular/ipassign.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipassign.cc,v 1.2 4 1998-03-13 15:18:16Singular Exp $ */4 /* $Id: ipassign.cc,v 1.25 1998-04-03 17:38:38 Singular Exp $ */ 5 5 6 6 /* … … 235 235 return FALSE; 236 236 } 237 static BOOLEAN jiA_LIST_RES(leftv res, leftv a,Subexpr e) 238 { 239 syStrategy r=(syStrategy)a->CopyD(); 240 if (res->data!=NULL) ((lists)res->data)->Clean(); 241 res->data=(void *)syConvRes(r); 242 //jiAssignAttr(res,a); 243 return FALSE; 244 } 237 245 static BOOLEAN jiA_LIST(leftv res, leftv a,Subexpr e) 238 246 { … … 505 513 ,{jiA_INTVEC, INTMAT_CMD, INTMAT_CMD } 506 514 ,{jiA_NUMBER, NUMBER_CMD, NUMBER_CMD } 515 ,{jiA_LIST_RES, LIST_CMD, RESOLUTION_CMD } 507 516 ,{jiA_LIST, LIST_CMD, LIST_CMD } 508 517 ,{jiA_LINK, LINK_CMD, STRING_CMD } … … 1222 1231 ||((l->rtyp>=VALTVARS)&&(l->rtyp<=VMINPOLY))) 1223 1232 { 1224 1225 1226 1227 1233 b=iiAssign_sys(l,r); 1234 r->CleanUp(); 1235 //l->CleanUp(); 1236 return b; 1228 1237 } 1229 1238 rt=r->Typ(); … … 1233 1242 &&((lt==rt)||(lt!=LIST_CMD))) 1234 1243 { 1235 b=jiAssign_1(l,r); 1236 if (l->rtyp==IDHDL) 1237 { 1238 if ((lt==DEF_CMD)||(lt=LIST_CMD)) ipMoveId((idhdl)l->data); 1239 l->attribute=IDATTR((idhdl)l->data); 1240 l->flag=IDFLAG((idhdl)l->data); 1241 l->CleanUp(); 1242 } 1243 r->CleanUp(); 1244 return b; 1245 } 1246 if ((lt!=LIST_CMD) 1247 &&((rt==MATRIX_CMD) 1248 ||(rt==INTMAT_CMD) 1249 ||(rt==INTVEC_CMD) 1250 ||(rt==MODUL_CMD))) 1251 { 1252 b=jiAssign_1(l,r); 1253 if((l->rtyp==IDHDL)&&(l->data!=NULL)) 1254 { 1255 if (lt==DEF_CMD) ipMoveId((idhdl)l->data); 1256 l->attribute=IDATTR((idhdl)l->data); 1257 l->flag=IDFLAG((idhdl)l->data); 1258 } 1259 r->CleanUp(); 1260 Subexpr h; 1261 while (l->e!=NULL) 1262 { 1263 h=l->e->next; 1264 Free((ADDRESS)l->e,sizeof(*(l->e))); 1265 l->e=h; 1266 } 1267 return b; 1244 b=jiAssign_1(l,r); 1245 if (l->rtyp==IDHDL) 1246 { 1247 if ((lt==DEF_CMD)||(lt=LIST_CMD)) ipMoveId((idhdl)l->data); 1248 l->attribute=IDATTR((idhdl)l->data); 1249 l->flag=IDFLAG((idhdl)l->data); 1250 l->CleanUp(); 1251 } 1252 r->CleanUp(); 1253 return b; 1254 } 1255 if (((lt!=LIST_CMD) 1256 &&((rt==MATRIX_CMD) 1257 ||(rt==INTMAT_CMD) 1258 ||(rt==INTVEC_CMD) 1259 ||(rt==MODUL_CMD))) 1260 ||((lt==LIST_CMD) 1261 &&(rt==RESOLUTION_CMD)) 1262 ) 1263 { 1264 b=jiAssign_1(l,r); 1265 if((l->rtyp==IDHDL)&&(l->data!=NULL)) 1266 { 1267 if (lt==DEF_CMD) ipMoveId((idhdl)l->data); 1268 l->attribute=IDATTR((idhdl)l->data); 1269 l->flag=IDFLAG((idhdl)l->data); 1270 } 1271 r->CleanUp(); 1272 Subexpr h; 1273 while (l->e!=NULL) 1274 { 1275 h=l->e->next; 1276 Free((ADDRESS)l->e,sizeof(*(l->e))); 1277 l->e=h; 1278 } 1279 return b; 1268 1280 } 1269 1281 } -
Singular/ipid.h
r36ff0ee rfca547 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: ipid.h,v 1.1 0 1998-03-23 22:50:58 obachmanExp $ */6 /* $Id: ipid.h,v 1.11 1998-04-03 17:38:39 Singular Exp $ */ 7 7 /* 8 8 * ABSTRACT: identfier handling … … 41 41 42 42 #ifdef RDEBUG 43 short no; 44 #endif 43 short no; /* unique id for rings */ 44 #endif 45 45 }; 46 46 -
Singular/iplib.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iplib.cc,v 1.1 2 1998-03-16 16:21:55Singular Exp $ */4 /* $Id: iplib.cc,v 1.13 1998-04-03 17:38:40 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: interpreter: LIB and help … … 242 242 } 243 243 /* start interpreter ======================================*/ 244 //Print("PStart <<%s>>\n",IDID(pn));245 244 myynest++; 245 //Print("%-*.*s PStart <<%s>>, level:%d\n",2*myynest,2*myynest," ",IDID(pn),myynest); 246 246 err=yyparse(); 247 247 killlocals(myynest); 248 248 myynest--; 249 249 si_echo=old_echo; 250 //Print(" PEnd <<%s>>\n",IDID(pn));250 //Print("%-*.*s PEnd <<%s>>, level:%d\n",2*myynest,2*myynest," ",IDID(pn),myynest); 251 251 252 252 return err; … … 303 303 if (traceit&TRACE_SHOW_PROC) 304 304 { 305 if (traceit&TRACE_SHOW_LINENO) printf("\n");306 printf("entering %s (level %d)\n",IDID(pn),myynest);305 if (traceit&TRACE_SHOW_LINENO) PrintLn(); 306 Print("entering%-*.*s %s (level %d)\n",myynest*2,myynest*2," ",IDID(pn),myynest); 307 307 } 308 308 #ifdef RDEBUG … … 332 332 if (traceit&TRACE_SHOW_PROC) 333 333 { 334 if (traceit&TRACE_SHOW_LINENO) printf("\n");335 printf("leaving %s (level %d)\n",IDID(pn),myynest);334 if (traceit&TRACE_SHOW_LINENO) PrintLn(); 335 Print("leaving %-*.*s %s (level %d)\n",myynest*2,myynest*2," ",IDID(pn),myynest); 336 336 } 337 337 #ifdef RDEBUG … … 722 722 723 723 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 724 intpiShowProcList()724 void piShowProcList() 725 725 { 726 726 idhdl h; … … 754 754 755 755 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 756 char *iiLineNo(char *procname, int lineno)757 {758 char buf[256];759 idhdl pn = ggetid(procname);760 procinfo *pi = IDPROC(pn);761 762 sprintf(buf, "%s %3d\0", procname, lineno);763 //sprintf(buf, "%s::%s %3d\0", pi->libname, pi->procname,764 // lineno + pi->data.s.body_lineno);765 return(buf);766 }756 //char *iiLineNo(char *procname, int lineno) 757 //{ 758 // char buf[256]; 759 // idhdl pn = ggetid(procname); 760 // procinfo *pi = IDPROC(pn); 761 // 762 // sprintf(buf, "%s %3d\0", procname, lineno); 763 // //sprintf(buf, "%s::%s %3d\0", pi->libname, pi->procname, 764 // // lineno + pi->data.s.body_lineno); 765 // return(buf); 766 //} 767 767 /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 768 768 #ifdef HAVE_LIBPARSER -
Singular/ipshell.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipshell.cc,v 1.1 6 1998-02-27 14:06:20Singular Exp $ */4 /* $Id: ipshell.cc,v 1.17 1998-04-03 17:38:41 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: … … 194 194 { 195 195 int vv; 196 //Print("consider %s, lev: %d:",IDID(h),IDLEV(h)); 196 197 if ((vv=IDLEV(h))>0) 197 198 { 198 199 if (vv < v) 199 200 { 200 if (iiNoKeepRing) return; 201 if (iiNoKeepRing) 202 { 203 //PrintS(" break\n"); 204 return; 205 } 201 206 h = IDNEXT(h); 207 //PrintLn(); 202 208 } 203 209 else if (vv >= v) 204 210 { 205 211 idhdl nexth = IDNEXT(h); 206 //Print("kill %s, lev: %d\n",IDID(h),IDLEV(h));207 212 killhdl(h,localhdl); 208 213 h = nexth; 214 //PrintS("kill\n"); 209 215 } 210 216 } 211 217 else 218 { 212 219 h = IDNEXT(h); 220 //PrintLn(); 221 } 213 222 } 214 223 } … … 238 247 rSetHdl(sh,TRUE); 239 248 } 240 i iNoKeepRing=TRUE;249 if (myynest<=1) iiNoKeepRing=TRUE; 241 250 } 242 251 -
Singular/ring.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ring.cc,v 1.2 0 1998-03-31 12:18:46 obachmanExp $ */4 /* $Id: ring.cc,v 1.21 1998-04-03 17:38:41 Singular Exp $ */ 5 5 6 6 /* … … 188 188 /*currRing->P = 0; Alloc0 in idhdl::set, ipid.cc*/ 189 189 #ifdef RDEBUG 190 currRing->no =rNumber; rNumber++; 190 rNumber++; 191 currRing->no =rNumber; 191 192 #endif 192 193 #ifdef SRING … … 653 654 654 655 #ifdef RDEBUG 655 currRing->no =rNumber; rNumber++; 656 #endif 656 rNumber++; 657 currRing->no =rNumber; 658 #endif 657 659 658 660 return currRingHdl; … … 1651 1653 res->idroot = NULL; 1652 1654 if (r->qideal!=NULL) res->qideal= idCopy(r->qideal); 1655 1653 1656 #ifdef RDEBUG 1654 res->no=rNumber; rNumber++; 1657 rNumber++; 1658 res->no=rNumber; 1655 1659 #endif 1660 1656 1661 return res; 1657 1662 } -
Singular/ring.h
r36ff0ee rfca547 7 7 * ABSTRACT - the interpreter related ring operations 8 8 */ 9 /* $Id: ring.h,v 1.1 1 1998-03-23 22:51:07 obachmanExp $ */9 /* $Id: ring.h,v 1.12 1998-04-03 17:38:42 Singular Exp $ */ 10 10 11 11 /* includes */ … … 81 81 82 82 #ifdef RDEBUG 83 extern short rNumber; 83 extern short rNumber; /* current ring id (r->no) */ 84 84 #endif 85 85 -
Singular/subexpr.cc
r36ff0ee rfca547 511 511 break; 512 512 } 513 case RESOLUTION_CMD: 514 data=(void*)syCopy((syStrategy)d); 515 break; 513 516 #ifdef TEST 514 517 case DEF_CMD: -
Singular/syz.h
r36ff0ee rfca547 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: syz.h,v 1. 6 1997-09-29 08:51:44 siebertExp $ */6 /* $Id: syz.h,v 1.7 1998-04-03 17:38:44 Singular Exp $ */ 7 7 /* 8 8 * ABSTRACT: Resolutions … … 85 85 syStrategy syForceMin(lists li); 86 86 syStrategy syMinimize(syStrategy syzstr); 87 syStrategy syMakeResolution(resolvente r, int length); 87 88 #endif -
Singular/syz1.cc
r36ff0ee rfca547 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: syz1.cc,v 1.2 3 1998-04-01 19:01:42Singular Exp $ */4 /* $Id: syz1.cc,v 1.24 1998-04-03 17:38:45 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: resolutions … … 2265 2265 } 2266 2266 Free((ADDRESS)fr,(result->length)*sizeof(ideal)); 2267 return result; 2268 } 2269 2270 syStrategy syMakeResolution(resolvente r, int length, 2271 intvec ** weights) 2272 { 2273 syStrategy result=(syStrategy)Alloc0(sizeof(ssyStrategy)); 2274 2275 length = max(length,0); 2276 int i=0; 2277 2278 while (i<length) 2279 { 2280 if (r[i]!=NULL) 2281 { 2282 if (i!=0) 2283 { 2284 int rank=IDELEMS(r[i-1]); 2285 if (idIs0(r[i-1])) 2286 { 2287 idDelete(&(r[i])); 2288 r[i]=idFreeModule(rank); 2289 } 2290 else 2291 { 2292 r[i]->rank=max(rank,idRankFreeModule(r[i])); 2293 } 2294 idSkipZeroes(r[i]); 2295 } 2296 } 2297 else 2298 { 2299 // should not happen: 2300 Warn("internal NULL in resolvente"); 2301 r[i]=idInit(1,1); 2302 } 2303 i++; 2304 } 2305 result->fullres = r; 2306 result->length = length; 2267 2307 return result; 2268 2308 }
Note: See TracChangeset
for help on using the changeset viewer.