Attachment Details
Not logged in
Overview

Artifact ID: f8e0efba6c9f42afc9f6dca22e9e46d5ae1974a7
Ticket: 5ff2043c966820498ce41c0dd425b4b2155fa025
Date: 2011-04-22 03:06:40
User: anonymous
Artifact Attached: fe3f8aa606605097b47c67179d1e92131ee8a5a1
Filename:markuppatch.diff.txt
Description:Patches markup to be valid xhtml
Content Appended
     1  Index: src/event.c
     2  ===================================================================
     3  --- src/event.c
     4  +++ src/event.c
     5  @@ -398,32 +398,32 @@
     6     @ <form method="post" action="%s(g.zTop)/eventedit"><div>
     7     login_insert_csrf_secret();
     8     @ <input type="hidden" name="name" value="%h(zEventId)" />
     9     @ <table border="0" cellspacing="10">
    10   
    11  -  @ <tr><td align="right" valign="top"><b>Event&nbsp;Time:</b></td>
    12  +  @ <tr><td align="right" valign="top"><b>Event&#160;Time:</b></td>
    13     @ <td valign="top">
    14     @   <input type="text" name="t" size="25" value="%h(zETime)" />
    15     @ </td></tr>
    16   
    17  -  @ <tr><td align="right" valign="top"><b>Timeline&nbsp;Comment:</b></td>
    18  +  @ <tr><td align="right" valign="top"><b>Timeline&#160;Comment:</b></td>
    19     @ <td valign="top">
    20     @ <textarea name="c" class="eventedit" cols="80" 
    21     @  rows="3" wrap="virtual">%h(zComment)</textarea>
    22     @ </td></tr>
    23   
    24  -  @ <tr><td align="right" valign="top"><b>Background&nbsp;Color:</b></td>
    25  +  @ <tr><td align="right" valign="top"><b>Background&#160;Color:</b></td>
    26     @ <td valign="top">
    27     render_color_chooser(0, zClr, 0, "clr", "cclr");
    28     @ </td></tr>
    29     
    30     @ <tr><td align="right" valign="top"><b>Tags:</b></td>
    31     @ <td valign="top">
    32     @   <input type="text" name="g" size="40" value="%h(zTags)" />
    33     @ </td></tr>
    34     
    35  -  @ <tr><td align="right" valign="top"><b>Page&nbsp;Content:</b></td>
    36  +  @ <tr><td align="right" valign="top"><b>Page&#160;Content:</b></td>
    37     @ <td valign="top">
    38     @ <textarea name="w" class="eventedit" cols="80" 
    39     @  rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
    40     @ </td></tr>
    41   
    42  
    43  Index: src/info.c
    44  ===================================================================
    45  --- src/info.c
    46  +++ src/info.c
    47  @@ -221,11 +221,11 @@
    48         }else{
    49           @ propagates to descendants
    50         }
    51   #if 0
    52         if( zValue && strcmp(zTagname,"branch")==0 ){
    53  -        @ &nbsp;&nbsp;
    54  +        @ &#160;&#160;
    55           @ <a href="%s(g.zTop)/timeline?r=%T(zValue)">branch timeline</a>
    56         }
    57   #endif
    58       }
    59       if( zSrcUuid && zSrcUuid[0] ){
    60  @@ -320,11 +320,11 @@
    61       if( showDiff ){
    62         @ <blockquote><pre>
    63         append_diff(zOld, zNew);
    64         @ </pre></blockquote>
    65       }else if( zOld && zNew ){
    66  -      @ &nbsp;&nbsp;
    67  +      @ &#160;&#160;
    68         @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&amp;v2=%S(zNew)">[diff]</a>
    69       }
    70       @ </p>
    71     }
    72   }
    73  @@ -400,33 +400,33 @@
    74       zComment = db_column_text(&q, 3);
    75       zDate = db_column_text(&q,1);
    76       zOrigDate = db_column_text(&q, 4);
    77       @ <div class="section">Overview</div>
    78       @ <table class="label-value">
    79  -    @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
    80  +    @ <tr><th>SHA1&#160;Hash:</th><td>%s(zUuid)
    81       if( g.okSetup ){
    82         @ (Record ID: %d(rid))
    83       }
    84       @ </td></tr>
    85       @ <tr><th>Date:</th><td>
    86       hyperlink_to_date(zDate, "</td></tr>");
    87       if( zOrigDate && fossil_strcmp(zDate, zOrigDate)!=0 ){
    88  -      @ <tr><th>Original&nbsp;Date:</th><td>
    89  +      @ <tr><th>Original&#160;Date:</th><td>
    90         hyperlink_to_date(zOrigDate, "</td></tr>");
    91       }
    92       if( zEUser ){
    93  -      @ <tr><th>Edited&nbsp;User:</th><td>
    94  +      @ <tr><th>Edited&#160;User:</th><td>
    95         hyperlink_to_user(zEUser,zDate,"</td></tr>");
    96  -      @ <tr><th>Original&nbsp;User:</th><td>
    97  +      @ <tr><th>Original&#160;User:</th><td>
    98         hyperlink_to_user(zUser,zDate,"</td></tr>");
    99       }else{
   100         @ <tr><th>User:</th><td>
   101         hyperlink_to_user(zUser,zDate,"</td></tr>");
   102       }
   103       if( zEComment ){
   104  -      @ <tr><th>Edited&nbsp;Comment:</th><td>%w(zEComment)</td></tr>
   105  -      @ <tr><th>Original&nbsp;Comment:</th><td>%w(zComment)</td></tr>
   106  +      @ <tr><th>Edited&#160;Comment:</th><td>%w(zEComment)</td></tr>
   107  +      @ <tr><th>Original&#160;Comment:</th><td>%w(zComment)</td></tr>
   108       }else{
   109         @ <tr><th>Comment:</th><td>%w(zComment)</td></tr>
   110       }
   111       if( g.okAdmin ){
   112         db_prepare(&q, 
   113  @@ -438,11 +438,11 @@
   114         if( db_step(&q)==SQLITE_ROW ){
   115           const char *zIpAddr = db_column_text(&q, 0);
   116           const char *zUser = db_column_text(&q, 1);
   117           const char *zDate = db_column_text(&q, 2);
   118           if( zUser==0 || zUser[0]==0 ) zUser = "unknown";
   119  -        @ <tr><th>Received&nbsp;From:</th>
   120  +        @ <tr><th>Received&#160;From:</th>
   121           @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
   122         }
   123         db_finalize(&q);
   124       }
   125       if( g.okHistory ){
   126  @@ -466,11 +466,11 @@
   127           const char *zTagName = db_column_text(&q, 0);
   128           @  | <a href="%s(g.zTop)/timeline?r=%T(zTagName)">%h(zTagName)</a>
   129         }
   130         db_finalize(&q);
   131         @ </td></tr>
   132  -      @ <tr><th>Other&nbsp;Links:</th>
   133  +      @ <tr><th>Other&#160;Links:</th>
   134         @   <td>
   135         @     <a href="%s(g.zTop)/dir?ci=%S(zUuid)">files</a>
   136         if( g.okZip ){
   137           char *zUrl = mprintf("%s/tarball/%s-%S.tar.gz?uuid=%s",
   138                                g.zTop, zProjName, zUuid, zUuid);
   139  @@ -497,23 +497,23 @@
   140       @ <div class="section">Changes</div>
   141       showDiff = g.zPath[0]!='c';
   142       if( db_get_boolean("show-version-diffs", 0)==0 ){
   143         showDiff = !showDiff;
   144         if( showDiff ){
   145  -        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&nbsp;diffs]</a>
   146  +        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&#160;diffs]</a>
   147         }else{
   148  -        @ <a href="%s(g.zTop)/ci/%T(zName)">[show&nbsp;diffs]</a>
   149  +        @ <a href="%s(g.zTop)/ci/%T(zName)">[show&#160;diffs]</a>
   150         }
   151       }else{
   152         if( showDiff ){
   153  -        @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&nbsp;diffs]</a>
   154  +        @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&#160;diffs]</a>
   155         }else{
   156  -        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&nbsp;diffs]</a>
   157  +        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&#160;diffs]</a>
   158         }
   159       }
   160  -    @ &nbsp;&nbsp;
   161  -    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a><br/>
   162  +    @ &#160;&#160;
   163  +    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&amp;to=%S(zUuid)">[patch]</a><br/>
   164       db_prepare(&q,
   165          "SELECT name, mperm,"
   166          "       (SELECT uuid FROM blob WHERE rid=mlink.pid),"
   167          "       (SELECT uuid FROM blob WHERE rid=mlink.fid)"
   168          "  FROM mlink JOIN filename ON filename.fnid=mlink.fnid"
   169  @@ -578,11 +578,11 @@
   170       @ <tr><th>Date:</th><td>
   171       hyperlink_to_date(zDate, "</td></tr>");
   172       if( g.okSetup ){
   173         @ <tr><th>Record ID:</th><td>%d(rid)</td></tr>
   174       }
   175  -    @ <tr><th>Original&nbsp;User:</th><td>
   176  +    @ <tr><th>Original&#160;User:</th><td>
   177       hyperlink_to_user(zUser, zDate, "</td></tr>");
   178       if( g.okHistory ){
   179         @ <tr><th>Commands:</th>
   180         @   <td>
   181         @     <a href="%s(g.zTop)/whistory?name=%t(zName)">history</a>
   182  @@ -966,11 +966,11 @@
   183     text_diff(&c1, &c2, pOut, 4, 1);
   184     blob_reset(&c1);
   185     blob_reset(&c2);
   186     if( !isPatch ){
   187       style_header("Diff");
   188  -    style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
   189  +    style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&amp;v2=%T&amp;patch",
   190                             g.zTop, P("v1"), P("v2"));
   191       @ <h2>Differences From:</h2>
   192       @ <blockquote><p>
   193       object_description(v1, 1, 0);
   194       @ </p></blockquote>
   195  @@ -1282,11 +1282,11 @@
   196           @ <pre>
   197           @ %h(z)
   198           @ </pre>
   199         }
   200       }else if( strncmp(zMime, "image/", 6)==0 ){
   201  -      @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
   202  +      @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)" />
   203       }else{
   204         @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
   205       }
   206       @ </blockquote>
   207     }
   208  @@ -1525,11 +1525,11 @@
   209     }else{
   210       @ <td style="background-color: %h(zDefaultColor);" colspan="6">
   211       @ <input type="radio" name="%s(zId)" value="%h(aColor[nColor].zColor)"
   212       @  checked="checked" />
   213     }
   214  -  @ %h(aColor[i].zCName)&nbsp;
   215  +  @ %h(aColor[i].zCName)&#160;
   216     @ <input type="text" name="%s(zIdCustom)"
   217     @  id="%s(zIdCustom)" class="checkinUserColor"
   218     @  value="%h(stdClrFound?"":zDefaultColor)" />
   219     @ </td>
   220     @ </tr>
   221  
   222  Index: src/report.c
   223  ===================================================================
   224  --- src/report.c
   225  +++ src/report.c
   226  @@ -58,11 +58,11 @@
   227       if( zTitle[0] == '_' ){
   228         blob_appendf(&ril, "%s", zTitle);
   229       } else {
   230         blob_appendf(&ril, "<a href=\"rptview?rn=%d\" rel=\"nofollow\">%h</a>", rn, zTitle);
   231       }
   232  -    blob_appendf(&ril, "&nbsp;&nbsp;&nbsp;");
   233  +    blob_appendf(&ril, "&#160;&#160;&#160;");
   234       if( g.okWrite && zOwner && zOwner[0] ){
   235         blob_appendf(&ril, "(by <i>%h</i></i>) ", zOwner);
   236       }
   237       if( g.okTktFmt ){
   238         blob_appendf(&ril, "[<a href=\"rptedit?rn=%d&amp;copy=1\" rel=\"nofollow\">copy</a>] ", rn);
   239  @@ -664,11 +664,11 @@
   240       for(i=0; i<nArg; i++){
   241         char *zName = azName[i];
   242         if( i==pState->iBg ) continue;
   243         if( pState->iNewRow>=0 && i>=pState->iNewRow ){
   244           if( g.okWrite && zTid ){
   245  -          @ <th>&nbsp;</th>
   246  +          @ <th>&#160;</th>
   247             zTid = 0;
   248           }
   249           if( zName[0]=='_' ) zName++;
   250           @ </tr><tr><th colspan=%d(pState->nCol)>%h(zName)</th>
   251         }else{
   252  @@ -677,11 +677,11 @@
   253           }
   254           @ <th>%h(zName)</th>
   255         }
   256       }
   257       if( g.okWrite && zTid ){
   258  -      @ <th>&nbsp;</th>
   259  +      @ <th>&#160;</th>
   260       }
   261       @ </tr>
   262     }
   263     if( azArg==0 ){
   264       @ <tr><td colspan="%d(pState->nCol)">
   265  @@ -693,11 +693,11 @@
   266   
   267     /* Output the separator above each entry in a table which has multiple lines
   268     ** per database entry.
   269     */
   270     if( pState->iNewRow>=0 ){
   271  -    @ <tr><td colspan=%d(pState->nCol)><font size=1>&nbsp;</font></td></tr>
   272  +    @ <tr><td colspan=%d(pState->nCol)><font size=1>&#160;</font></td></tr>
   273     }
   274   
   275     /* Output the data for this entry from the database
   276     */
   277     zBg = pState->iBg>=0 ? azArg[pState->iBg] : 0;
   278  @@ -728,11 +728,11 @@
   279           @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td>
   280         }else{
   281           @ <td valign="top">%h(zData)</td>
   282         }
   283       }else if( zData[0]==0 ){
   284  -      @ <td valign="top">&nbsp;</td>
   285  +      @ <td valign="top">&#160;</td>
   286       }else{
   287         @ <td valign="top">
   288         @ %h(zData)
   289         @ </td>
   290       }
   291  
   292  Index: src/setup.c
   293  ===================================================================
   294  --- src/setup.c
   295  +++ src/setup.c
   296  @@ -118,13 +118,13 @@
   297     @ <table class="usetupLayoutTable">
   298     @ <tr><td class="usetupColumnLayout">
   299     @ <span class="note">Users:</span>
   300     @ <table class="usetupUserList">
   301     @ <tr>
   302  -  @   <th class="usetupListUser" style="text-align: right;padding-right: 20px;">User&nbsp;ID</th>
   303  +  @   <th class="usetupListUser" style="text-align: right;padding-right: 20px;">User&#160;ID</th>
   304     @   <th class="usetupListCap" style="text-align: center;padding-right: 15px;">Capabilities</th>
   305  -  @   <th class="usetupListCon"  style="text-align: left;">Contact&nbsp;Info</th>
   306  +  @   <th class="usetupListCon"  style="text-align: left;">Contact&#160;Info</th>
   307     @ </tr>
   308     db_prepare(&s, "SELECT uid, login, cap, info FROM user ORDER BY login");
   309     while( db_step(&s)==SQLITE_ROW ){
   310       const char *zCap = db_column_text(&s, 2);
   311       @ <tr>
   312  @@ -497,11 +497,11 @@
   313     @ <tr>
   314     @   <td class="usetupEditLabel">Login:</td>
   315     @   <td><input type="text" name="login" value="%h(zLogin)" /></td>
   316     @ </tr>
   317     @ <tr>
   318  -  @   <td class="usetupEditLabel">Contact&nbsp;Info:</td>
   319  +  @   <td class="usetupEditLabel">Contact&#160;Info:</td>
   320     @   <td><input type="text" name="info" size="40" value="%h(zInfo)" /></td>
   321     @ </tr>
   322     @ <tr>
   323     @   <td class="usetupEditLabel">Capabilities:</td>
   324     @   <td>
   325  @@ -554,11 +554,11 @@
   326       @ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
   327       @ login group.</td></tr>
   328     }
   329     if( !higherUser ){
   330       @ <tr>
   331  -    @   <td>&nbsp;</td>
   332  +    @   <td>&#160;</td>
   333       @   <td><input type="submit" name="submit" value="Apply Changes" /></td>
   334       @ </tr>
   335     }
   336     @ </table>
   337     @ </div></form>
   338  
   339  Index: src/shun.c
   340  ===================================================================
   341  --- src/shun.c
   342  +++ src/shun.c
   343  @@ -233,11 +233,11 @@
   344     @
   345     @ <table cellpadding="0" cellspacing="0" border="0">
   346     @ <tr><th style="padding-right: 15px;text-align: right;">rcvid</th>
   347     @     <th style="padding-right: 15px;text-align: left;">Date</th>
   348     @     <th style="padding-right: 15px;text-align: left;">User</th>
   349  -  @     <th style="text-align: left;">IP&nbsp;Address</th></tr>
   350  +  @     <th style="text-align: left;">IP&#160;Address</th></tr>
   351     cnt = 0;
   352     while( db_step(&q)==SQLITE_ROW ){
   353       int rcvid = db_column_int(&q, 0);
   354       const char *zUser = db_column_text(&q, 1);
   355       const char *zDate = db_column_text(&q, 2);
   356  @@ -289,11 +289,11 @@
   357       const char *zIpAddr = db_column_text(&q, 2);
   358       @ <tr><td valign="top" align="right"><b>User:</b></td>
   359       @ <td valign="top">%s(zUser)</td></tr>
   360       @ <tr><td valign="top" align="right"><b>Date:</b></td>
   361       @ <td valign="top">%s(zDate)</td></tr>
   362  -    @ <tr><td valign="top" align="right"><b>IP&nbsp;Address:</b></td>
   363  +    @ <tr><td valign="top" align="right"><b>IP&#160;Address:</b></td>
   364       @ <td valign="top">%s(zIpAddr)</td></tr>
   365     }
   366     db_finalize(&q);
   367     db_prepare(&q,
   368       "SELECT rid, uuid, size FROM blob WHERE rcvid=%d", rcvid
   369  
   370  Index: src/skins.c
   371  ===================================================================
   372  --- src/skins.c
   373  +++ src/skins.c
   374  @@ -163,11 +163,11 @@
   375   @       media="screen">
   376   @ </head>
   377   @ <body>
   378   @ <div class="header">
   379   @   <div class="logo">
   380  -@     <img src="$home/logo" alt="logo">
   381  +@     <img src="$home/logo" alt="logo" />
   382   @   </div>
   383   @   <div class="title"><small>$<project_name></small><br />$<title></div>
   384   @   <div class="status"><nobr><th1>
   385   @      if {[info exists login]} {
   386   @        puts "Logged in as $login"
   387  @@ -597,11 +597,11 @@
   388   @       media="screen">
   389   @ </head>
   390   @ <body>
   391   @ <div class="header">
   392   @   <div class="logo">
   393  -@     <img src="$home/logo" alt="logo">
   394  +@     <img src="$home/logo" alt="logo" />
   395   @     <br /><nobr>$<project_name></nobr>
   396   @   </div>
   397   @   <div class="title">$<title></div>
   398   @   <div class="status"><nobr><th1>
   399   @      if {[info exists login]} {
   400  @@ -891,11 +891,11 @@
   401   @       media="screen">
   402   @ </head>
   403   @ <body>
   404   @ <div class="header">
   405   @   <div class="logo">
   406  -@     <img src="$home/logo" alt="logo">
   407  +@     <img src="$home/logo" alt="logo" />
   408   @     <br /><nobr>$<project_name></nobr>
   409   @   </div>
   410   @   <div class="title">$<title></div>
   411   @   <div class="status"><nobr><th1>
   412   @      if {[info exists login]} {
   413  @@ -1103,14 +1103,14 @@
   414     @ <h2>Available Skins:</h2>
   415     @ <ol>
   416     for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
   417       z = aBuiltinSkin[i].zName;
   418       if( strcmp(aBuiltinSkin[i].zValue, zCurrent)==0 ){
   419  -      @ <li><p>%h(z).&nbsp;&nbsp; <b>Currently In Use</b></p>
   420  +      @ <li><p>%h(z).&#160;&#160; <b>Currently In Use</b></p>
   421       }else{
   422         @ <li><form action="%s(g.zTop)/setup_skin" method="post"><div>
   423  -      @ %h(z).&nbsp;&nbsp; 
   424  +      @ %h(z).&#160;&#160; 
   425         @ <input type="hidden" name="sn" value="%h(z)" />
   426         @ <input type="submit" name="load" value="Use This Skin" />
   427         @ </div></form></li>
   428       }
   429     }
   430  @@ -1121,14 +1121,14 @@
   431     );
   432     while( db_step(&q)==SQLITE_ROW ){
   433       const char *zN = db_column_text(&q, 0);
   434       const char *zV = db_column_text(&q, 1);
   435       if( strcmp(zV, zCurrent)==0 ){
   436  -      @ <li><p>%h(zN).&nbsp;&nbsp;  <b>Currently In Use</b></p>
   437  +      @ <li><p>%h(zN).&#160;&#160;  <b>Currently In Use</b></p>
   438       }else{
   439         @ <li><form action="%s(g.zTop)/setup_skin" method="post">
   440  -      @ %h(zN).&nbsp;&nbsp; 
   441  +      @ %h(zN).&#160;&#160; 
   442         @ <input type="hidden" name="sn" value="%h(zN)">
   443         @ <input type="submit" name="load" value="Use This Skin">
   444         @ <input type="submit" name="del1" value="Delete This Skin">
   445         @ </form></li>
   446       }
   447  
   448  Index: src/stat.c
   449  ===================================================================
   450  --- src/stat.c
   451  +++ src/stat.c
   452  @@ -36,24 +36,24 @@
   453   
   454     login_check_credentials();
   455     if( !g.okRead ){ login_needed(); return; }
   456     style_header("Repository Statistics");
   457     @ <table class="label-value">
   458  -  @ <tr><th>Repository&nbsp;Size:</th><td>
   459  +  @ <tr><th>Repository&#160;Size:</th><td>
   460     fsize = file_size(g.zRepositoryName);
   461     sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", fsize);
   462     @ %s(zBuf) bytes
   463     @ </td></tr>
   464  -  @ <tr><th>Number&nbsp;Of&nbsp;Artifacts:</th><td>
   465  +  @ <tr><th>Number&#160;Of&#160;Artifacts:</th><td>
   466     n = db_int(0, "SELECT count(*) FROM blob");
   467     m = db_int(0, "SELECT count(*) FROM delta");
   468     @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs)
   469     @ </td></tr>
   470     if( n>0 ){
   471       int a, b;
   472       Stmt q;
   473  -    @ <tr><th>Uncompressed&nbsp;Artifact&nbsp;Size:</th><td>
   474  +    @ <tr><th>Uncompressed&#160;Artifact&#160;Size:</th><td>
   475       db_prepare(&q, "SELECT total(size), avg(size), max(size)"
   476                      " FROM blob WHERE size>0");
   477       db_step(&q);
   478       t = db_column_int64(&q, 0);
   479       szAvg = db_column_int(&q, 1);
   480  @@ -60,11 +60,11 @@
   481       szMax = db_column_int(&q, 2);
   482       db_finalize(&q);
   483       sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t);
   484       @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total
   485       @ </td></tr>
   486  -    @ <tr><th>Compression&nbsp;Ratio:</th><td>
   487  +    @ <tr><th>Compression&#160;Ratio:</th><td>
   488       if( t/fsize < 5 ){
   489         b = 10;
   490         fsize /= 10;
   491       }else{
   492         b = 1;
   493  @@ -71,52 +71,52 @@
   494       }
   495       a = t/fsize;
   496       @ %d(a):%d(b)
   497       @ </td></tr>
   498     }
   499  -  @ <tr><th>Number&nbsp;Of&nbsp;Check-ins:</th><td>
   500  +  @ <tr><th>Number&#160;Of&#160;Check-ins:</th><td>
   501     n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/");
   502     @ %d(n)
   503     @ </td></tr>
   504  -  @ <tr><th>Number&nbsp;Of&nbsp;Files:</th><td>
   505  +  @ <tr><th>Number&#160;Of&#160;Files:</th><td>
   506     n = db_int(0, "SELECT count(*) FROM filename /*scan*/");
   507     @ %d(n)
   508     @ </td></tr>
   509  -  @ <tr><th>Number&nbsp;Of&nbsp;Wiki&nbsp;Pages:</th><td>
   510  +  @ <tr><th>Number&#160;Of&#160;Wiki&#160;Pages:</th><td>
   511     n = db_int(0, "SELECT count(*) FROM tag  /*scan*/"
   512                   " WHERE +tagname GLOB 'wiki-*'");
   513     @ %d(n)
   514     @ </td></tr>
   515  -  @ <tr><th>Number&nbsp;Of&nbsp;Tickets:</th><td>
   516  +  @ <tr><th>Number&#160;Of&#160;Tickets:</th><td>
   517     n = db_int(0, "SELECT count(*) FROM tag  /*scan*/"
   518                   " WHERE +tagname GLOB 'tkt-*'");
   519     @ %d(n)
   520     @ </td></tr>
   521  -  @ <tr><th>Duration&nbsp;Of&nbsp;Project:</th><td>
   522  +  @ <tr><th>Duration&#160;Of&#160;Project:</th><td>
   523     n = db_int(0, "SELECT julianday('now') - (SELECT min(mtime) FROM event)"
   524                   " + 0.99");
   525     @ %d(n) days
   526     sqlite3_snprintf(sizeof(zBuf), zBuf, "%.2f", n/365.24);
   527     @ or approximately %s(zBuf) years
   528     @ </td></tr>
   529  -  @ <tr><th>Project&nbsp;ID:</th><td>
   530  +  @ <tr><th>Project&#160;ID:</th><td>
   531     @ %h(db_get("project-code",""))
   532     @ </td></tr>
   533  -  @ <tr><th>Server&nbsp;ID:</th><td>
   534  +  @ <tr><th>Server&#160;ID:</th><td>
   535     @ %h(db_get("server-code",""))
   536     @ </td></tr>
   537   
   538  -  @ <tr><th>Fossil&nbsp;Version:</th><td>
   539  +  @ <tr><th>Fossil&#160;Version:</th><td>
   540     @ %h(MANIFEST_DATE) %h(MANIFEST_VERSION) (%h(COMPILER_NAME))
   541     @ </td></tr>
   542  -  @ <tr><th>SQLite&nbsp;Version:</th><td>
   543  +  @ <tr><th>SQLite&#160;Version:</th><td>
   544     sqlite3_snprintf(sizeof(zBuf), zBuf, "%.19s [%.10s] (%s)",
   545                      SQLITE_SOURCE_ID, &SQLITE_SOURCE_ID[20], SQLITE_VERSION);
   546     zDb = db_name("repository");
   547     @ %s(zBuf)
   548     @ </td></tr>
   549  -  @ <tr><th>Database&nbsp;Stats:</th><td>
   550  +  @ <tr><th>Database&#160;Stats:</th><td>
   551     @ %d(db_int(0, "PRAGMA %s.page_count", zDb)) pages,
   552     @ %d(db_int(0, "PRAGMA %s.page_size", zDb)) bytes/page,
   553     @ %d(db_int(0, "PRAGMA %s.freelist_count", zDb)) free pages,
   554     @ %s(db_text(0, "PRAGMA %s.encoding", zDb)),
   555     @ %s(db_text(0, "PRAGMA %s.journal_mode", zDb)) mode
   556  
   557  Index: src/th_main.c
   558  ===================================================================
   559  --- src/th_main.c
   560  +++ src/th_main.c
   561  @@ -511,11 +511,11 @@
   562       }else{
   563         i++;
   564       }
   565     }
   566     if( rc==TH_ERROR ){
   567  -    sendText("<hr><p class=\"thmainError\">ERROR: ", -1, 0);
   568  +    sendText("<hr /><p class=\"thmainError\">ERROR: ", -1, 0);
   569       zResult = (char*)Th_GetResult(g.interp, &n);
   570       sendText((char*)zResult, n, 1);
   571       sendText("</p>", -1, 0);
   572     }else{
   573       sendText(z, i, 0);
   574  
   575  Index: src/timeline.c
   576  ===================================================================
   577  --- src/timeline.c
   578  +++ src/timeline.c
   579  @@ -161,11 +161,11 @@
   580     Blob comment;
   581     int prevTagid = 0;
   582     int suppressCnt = 0;
   583     char zPrevDate[20];
   584     GraphContext *pGraph = 0;
   585  -  int prevWasDivider = 0;     /* True if previous output row was <hr> */
   586  +  int prevWasDivider = 0;     /* True if previous output row was <hr /> */
   587     int fchngQueryInit = 0;     /* True if fchngQuery is initialized */
   588     Stmt fchngQuery;            /* Query for file changes on check-ins */
   589   
   590     zPrevDate[0] = 0;
   591     mxWikiLen = db_get_int("timeline-max-comment", 0);
   592  @@ -301,11 +301,11 @@
   593       /* Generate the "user: USERNAME" at the end of the comment, together
   594       ** with a hyperlink to another timeline for that user.
   595       */
   596       if( zTagList && zTagList[0]==0 ) zTagList = 0;
   597       if( g.okHistory && fossil_strcmp(zUser, zThisUser)!=0 ){
   598  -      char *zLink = mprintf("%s/timeline?u=%h&c=%t&nd",
   599  +      char *zLink = mprintf("%s/timeline?u=%h&amp;c=%t&amp;nd",
   600                               g.zTop, zUser, zDate);
   601         @ (user: <a href="%s(zLink)">%h(zUser)</a>%s(zTagList?",":"\051")
   602         fossil_free(zLink);
   603       }else{
   604         @ (user: %h(zUser)%s(zTagList?",":"\051")
   605  @@ -322,11 +322,11 @@
   606           blob_zero(&links);
   607           while( z && z[0] ){
   608             for(i=0; z[i] && (z[i]!=',' || z[i+1]!=' '); i++){}
   609             if( zThisTag==0 || memcmp(z, zThisTag, i)!=0 || zThisTag[i]!=0 ){
   610               blob_appendf(&links,
   611  -                  "<a href=\"%s/timeline?r=%.*t&nd&c=%s\">%.*h</a>%.2s",
   612  +                  "<a href=\"%s/timeline?r=%.*t&amp;nd&amp;c=%s\">%.*h</a>%.2s",
   613                     g.zTop, i, z, zDate, i, z, &z[i]
   614               );
   615             }else{
   616               blob_appendf(&links, "%.*h", i+2, z);
   617             }
   618  @@ -371,18 +371,18 @@
   619           if( !inUl ){
   620             @ <ul class="filelist">
   621             inUl = 1;
   622           }
   623           if( isNew ){
   624  -          @ <li> %h(zFilename) (new file) &nbsp;
   625  +          @ <li> %h(zFilename) (new file) &#160;
   626             @ <a href="%s(g.zTop)/artifact/%S(zNew)" target="diffwindow">[view]
   627             @ </a></li>
   628           }else if( isDel ){
   629             @ <li> %h(zFilename) (deleted)</li>
   630           }else{
   631  -          @ <li> %h(zFilename) &nbsp;
   632  -          @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&v2=%S(zNew)"
   633  +          @ <li> %h(zFilename) &#160;
   634  +          @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&amp;v2=%S(zNew)"
   635             @ target="diffwindow">[diff]</a></li>
   636           }
   637         }
   638         db_reset(&fchngQuery);
   639         if( inUl ){
   640  @@ -741,11 +741,11 @@
   641   }
   642   
   643   
   644   /*
   645   ** zDate is a localtime date.  Insert records into the
   646  -** "timeline" table to cause <hr> to be inserted before and after
   647  +** "timeline" table to cause <hr /> to be inserted before and after
   648   ** entries of that date.  If zDate==NULL then put dividers around
   649   ** the event identified by rid.
   650   */
   651   static void timeline_add_dividers(const char *zDate, int rid){
   652     char *zToDel = 0;
   653  
   654  Index: src/tktsetup.c
   655  ===================================================================
   656  --- src/tktsetup.c
   657  +++ src/tktsetup.c
   658  @@ -354,11 +354,11 @@
   659     );
   660   }
   661   
   662   static const char zDefaultView[] =
   663   @ <table cellpadding="5">
   664  -@ <tr><td class="tktDspLabel">Ticket&nbsp;UUID:</td>
   665  +@ <tr><td class="tktDspLabel">Ticket&#160;UUID:</td>
   666   @ <td class="tktDspValue" colspan="3">$<tkt_uuid></td></tr>
   667   @ <tr><td class="tktDspLabel">Title:</td>
   668   @ <td class="tktDspValue" colspan="3">
   669   @ <th1>wiki $title</th1>
   670   @ </td></tr>
   671  @@ -378,20 +378,20 @@
   672   @ $<subsystem>
   673   @ </td>
   674   @ <td class="tktDspLabel">Resolution:</td><td class="tktDspValue">
   675   @ $<resolution>
   676   @ </td></tr>
   677  -@ <tr><td class="tktDspLabel">Last&nbsp;Modified:</td><td class="tktDspValue">
   678  +@ <tr><td class="tktDspLabel">Last&#160;Modified:</td><td class="tktDspValue">
   679   @ $<tkt_datetime>
   680   @ </td>
   681   @ <th1>enable_output [hascap e]</th1>
   682   @   <td class="tktDspLabel">Contact:</td><td class="tktDspValue">
   683   @   $<private_contact>
   684   @   </td>
   685   @ <th1>enable_output 1</th1>
   686   @ </tr>
   687  -@ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td>
   688  +@ <tr><td class="tktDspLabel">Version&#160;Found&#160;In:</td>
   689   @ <td colspan="3" valign="top" class="tktDspValue">
   690   @ $<foundin>
   691   @ </td></tr>
   692   @ <tr><td>Description &amp; Comments:</td></tr>
   693   @ <tr><td colspan="4" class="tktDspValue">
   694  @@ -469,11 +469,11 @@
   695   @   <tr><td class="tktDspLabel">Contact:</td><td>
   696   @   <input type="text" name="private_contact" size="40"
   697   @    value="$<private_contact>" />
   698   @   </td></tr>
   699   @ <th1>enable_output 1</th1>
   700  -@ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td><td>
   701  +@ <tr><td class="tktDspLabel">Version&#160;Found&#160;In:</td><td>
   702   @ <input type="text" name="foundin" size="50" value="$<foundin>" />
   703   @ </td></tr>
   704   @ <tr><td colspan="2">
   705   @ <th1>
   706   @   if {![info exists eall]} {set eall 0}
   707  
   708  Index: src/user.c
   709  ===================================================================
   710  --- src/user.c
   711  +++ src/user.c
   712  @@ -425,11 +425,11 @@
   713       blob_append(&sql, "  WHERE NOT success", -1);
   714     }
   715     blob_appendf(&sql,"  ORDER BY rowid DESC LIMIT %d OFFSET %d", n+1, skip);
   716     if( skip ){
   717       style_submenu_element("Newer", "Newer entries",
   718  -              "%s/access_log?o=%d&n=%d&y=%d", g.zTop, skip>=n ? skip-n : 0,
   719  +              "%s/access_log?o=%d&amp;n=%d&amp;y=%d", g.zTop, skip>=n ? skip-n : 0,
   720                 n, y);
   721     }
   722     rc = db_prepare_ignore_error(&q, blob_str(&sql));
   723     @ <center><table border="1" cellpadding="5">
   724     @ <tr><th width="33%%">Date</th><th width="34%%">User</th>
   725  @@ -440,11 +440,11 @@
   726       const char *zDate = db_column_text(&q, 2);
   727       int bSuccess = db_column_int(&q, 3);
   728       cnt++;
   729       if( cnt>n ){
   730         style_submenu_element("Older", "Older entries",
   731  -                  "%s/access_log?o=%d&n=%d&y=%d", g.zTop, skip+n, n, y);
   732  +                  "%s/access_log?o=%d&amp;n=%d&amp;y=%d", g.zTop, skip+n, n, y);
   733         break;
   734       }
   735       if( bSuccess ){
   736         @ <tr>
   737       }else{
   738  @@ -456,11 +456,11 @@
   739       style_submenu_element("All", "All entries",
   740             "%s/access_log?n=10000000", g.zTop);
   741     }
   742     @ </table></center>
   743     db_finalize(&q);
   744  -  @ <hr>
   745  +  @ <hr />
   746     @ <form method="post" action="%s(g.zTop)/access_log">
   747     @ <input type="checkbox" name="delold">
   748     @ Delete all but the most recent 200 entries</input>
   749     @ <input type="submit" name="deloldbtn" value="Delete"></input>
   750     @ </form>
   751  
   752  Index: src/wiki.c
   753  ===================================================================
   754  --- src/wiki.c
   755  +++ src/wiki.c
   756  @@ -162,11 +162,11 @@
   757       }
   758       @ <li> <a href="%s(g.zTop)/wcontent">List of All Wiki Pages</a>
   759       @      available on this server.</li>
   760       @ <li> <form method="get" action="%s(g.zTop)/wfind"><div>
   761       @     Search wiki titles: <input type="text" name="title"/>
   762  -    @  &nbsp; <input type="submit" /></div></form>
   763  +    @  &#160; <input type="submit" /></div></form>
   764       @ </li>
   765       @ </ul>
   766       style_footer();
   767       return;
   768     }
   769  @@ -411,11 +411,11 @@
   770     const char *zRemark;
   771     char *zId;
   772   
   773     zDate = db_text(0, "SELECT datetime('now')");
   774     zId = db_text(0, "SELECT lower(hex(randomblob(8)))");
   775  -  blob_appendf(p, "\n\n<hr><div id=\"%s\"><i>On %s UTC %h", 
   776  +  blob_appendf(p, "\n\n<hr /><div id=\"%s\"><i>On %s UTC %h", 
   777       zId, zDate, g.zLogin);
   778     free(zDate);
   779     zUser = PD("u",g.zLogin);
   780     if( zUser[0] && strcmp(zUser,g.zLogin) ){
   781       blob_appendf(p, " (claiming to be %h)", zUser);
   782  @@ -512,13 +512,13 @@
   783     style_header(zHtmlPageName);
   784     if( P("preview")!=0 ){
   785       Blob preview;
   786       blob_zero(&preview);
   787       appendRemark(&preview);
   788  -    @ Preview:<hr>
   789  +    @ Preview:<hr />
   790       wiki_convert(&preview, 0, 0);
   791  -    @ <hr>
   792  +    @ <hr />
   793       blob_reset(&preview);
   794     }
   795     zUser = PD("u", g.zLogin);
   796     @ <form method="post" action="%s(g.zTop)/wikiappend">
   797     login_insert_csrf_secret();
   798  
   799  Index: src/wikiformat.c
   800  ===================================================================
   801  --- src/wikiformat.c
   802  +++ src/wikiformat.c
   803  @@ -1157,11 +1157,11 @@
   804       p->state &= ~(AT_NEWLINE|AT_PARAGRAPH);
   805       switch( tokenType ){
   806         case TOKEN_PARAGRAPH: {
   807           if( inlineOnly ){
   808             /* blob_append(p->pOut, " &para; ", -1); */
   809  -          blob_append(p->pOut, " &nbsp;&nbsp; ", -1);
   810  +          blob_append(p->pOut, " &#160;&#160; ", -1);
   811           }else{
   812             if( p->wikiList ){
   813               popStackToTag(p, p->wikiList);
   814               p->wikiList = 0;
   815             }
   816