Fossil SCM
show references to commandline on webpages; add httptrace to windows http server
Commit
d1d1cd122b279dbdf089540c4b24355df59cbf4b
Parent
e1d15514fba7871…
12 files changed
+1
-1
+5
+1
-1
+1
-1
+6
-6
+2
-2
+20
+3
-1
+1
-1
+6
+5
-2
+16
+1
-1
| --- src/browse.c | ||
| +++ src/browse.c | ||
| @@ -247,7 +247,7 @@ | ||
| 247 | 247 | @ </a></li> |
| 248 | 248 | } |
| 249 | 249 | } |
| 250 | 250 | db_finalize(&q); |
| 251 | 251 | @ </ul></td></tr></table> |
| 252 | - style_footer(); | |
| 252 | + style_footer_cmdref("ls"); | |
| 253 | 253 | } |
| 254 | 254 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -247,7 +247,7 @@ | |
| 247 | @ </a></li> |
| 248 | } |
| 249 | } |
| 250 | db_finalize(&q); |
| 251 | @ </ul></td></tr></table> |
| 252 | style_footer(); |
| 253 | } |
| 254 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -247,7 +247,7 @@ | |
| 247 | @ </a></li> |
| 248 | } |
| 249 | } |
| 250 | db_finalize(&q); |
| 251 | @ </ul></td></tr></table> |
| 252 | style_footer_cmdref("ls"); |
| 253 | } |
| 254 |
+5
| --- src/configure.c | ||
| +++ src/configure.c | ||
| @@ -407,10 +407,15 @@ | ||
| 407 | 407 | ** Restore the configuration to the default. AREA as above. |
| 408 | 408 | ** |
| 409 | 409 | ** WARNING: Do not import or merge or pull configurations from an |
| 410 | 410 | ** untrusted source. The inbound configuration is not checked for |
| 411 | 411 | ** safety and can introduce security vulnerabilities. |
| 412 | +** | |
| 413 | +** The different parts of this configuration can also be controlled | |
| 414 | +** using the gui: | |
| 415 | +** * Go to page <a href="setup">Admin</a> and use the subcommands | |
| 416 | +** | |
| 412 | 417 | */ |
| 413 | 418 | void configuration_cmd(void){ |
| 414 | 419 | int n; |
| 415 | 420 | const char *zMethod; |
| 416 | 421 | if( g.argc<3 ){ |
| 417 | 422 |
| --- src/configure.c | |
| +++ src/configure.c | |
| @@ -407,10 +407,15 @@ | |
| 407 | ** Restore the configuration to the default. AREA as above. |
| 408 | ** |
| 409 | ** WARNING: Do not import or merge or pull configurations from an |
| 410 | ** untrusted source. The inbound configuration is not checked for |
| 411 | ** safety and can introduce security vulnerabilities. |
| 412 | */ |
| 413 | void configuration_cmd(void){ |
| 414 | int n; |
| 415 | const char *zMethod; |
| 416 | if( g.argc<3 ){ |
| 417 |
| --- src/configure.c | |
| +++ src/configure.c | |
| @@ -407,10 +407,15 @@ | |
| 407 | ** Restore the configuration to the default. AREA as above. |
| 408 | ** |
| 409 | ** WARNING: Do not import or merge or pull configurations from an |
| 410 | ** untrusted source. The inbound configuration is not checked for |
| 411 | ** safety and can introduce security vulnerabilities. |
| 412 | ** |
| 413 | ** The different parts of this configuration can also be controlled |
| 414 | ** using the gui: |
| 415 | ** * Go to page <a href="setup">Admin</a> and use the subcommands |
| 416 | ** |
| 417 | */ |
| 418 | void configuration_cmd(void){ |
| 419 | int n; |
| 420 | const char *zMethod; |
| 421 | if( g.argc<3 ){ |
| 422 |
+1
-1
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -815,11 +815,11 @@ | ||
| 815 | 815 | for(i=0; i<ann.nOrig; i++){ |
| 816 | 816 | ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0; |
| 817 | 817 | @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z) |
| 818 | 818 | } |
| 819 | 819 | @ </pre> |
| 820 | - style_footer(); | |
| 820 | + style_footer_cmdref("annotate"); | |
| 821 | 821 | } |
| 822 | 822 | |
| 823 | 823 | /* |
| 824 | 824 | ** COMMAND: annotate |
| 825 | 825 | ** |
| 826 | 826 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -815,11 +815,11 @@ | |
| 815 | for(i=0; i<ann.nOrig; i++){ |
| 816 | ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0; |
| 817 | @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z) |
| 818 | } |
| 819 | @ </pre> |
| 820 | style_footer(); |
| 821 | } |
| 822 | |
| 823 | /* |
| 824 | ** COMMAND: annotate |
| 825 | ** |
| 826 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -815,11 +815,11 @@ | |
| 815 | for(i=0; i<ann.nOrig; i++){ |
| 816 | ((char*)ann.aOrig[i].z)[ann.aOrig[i].n] = 0; |
| 817 | @ %s(ann.aOrig[i].zSrc): %h(ann.aOrig[i].z) |
| 818 | } |
| 819 | @ </pre> |
| 820 | style_footer_cmdref("annotate"); |
| 821 | } |
| 822 | |
| 823 | /* |
| 824 | ** COMMAND: annotate |
| 825 | ** |
| 826 |
+1
-1
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -212,7 +212,7 @@ | ||
| 212 | 212 | @ </td></tr> |
| 213 | 213 | } |
| 214 | 214 | } |
| 215 | 215 | @ </table> |
| 216 | 216 | timeline_output_graph_javascript(pGraph); |
| 217 | - style_footer(); | |
| 217 | + style_footer_cmdref("finfo"); | |
| 218 | 218 | } |
| 219 | 219 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -212,7 +212,7 @@ | |
| 212 | @ </td></tr> |
| 213 | } |
| 214 | } |
| 215 | @ </table> |
| 216 | timeline_output_graph_javascript(pGraph); |
| 217 | style_footer(); |
| 218 | } |
| 219 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -212,7 +212,7 @@ | |
| 212 | @ </td></tr> |
| 213 | } |
| 214 | } |
| 215 | @ </table> |
| 216 | timeline_output_graph_javascript(pGraph); |
| 217 | style_footer_cmdref("finfo"); |
| 218 | } |
| 219 |
+6
-6
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -467,11 +467,11 @@ | ||
| 467 | 467 | const char *zOld = db_column_text(&q,1); |
| 468 | 468 | const char *zNew = db_column_text(&q,2); |
| 469 | 469 | append_file_change_line(zName, zOld, zNew, showDiff); |
| 470 | 470 | } |
| 471 | 471 | db_finalize(&q); |
| 472 | - style_footer(); | |
| 472 | + style_footer_cmdref("info"); | |
| 473 | 473 | } |
| 474 | 474 | |
| 475 | 475 | /* |
| 476 | 476 | ** WEBPAGE: winfo |
| 477 | 477 | ** URL: /winfo?name=RID |
| @@ -550,11 +550,11 @@ | ||
| 550 | 550 | wiki_convert(&wiki, 0, 0); |
| 551 | 551 | blob_reset(&wiki); |
| 552 | 552 | } |
| 553 | 553 | manifest_clear(&m); |
| 554 | 554 | } |
| 555 | - style_footer(); | |
| 555 | + style_footer_cmdref("info"); | |
| 556 | 556 | } |
| 557 | 557 | |
| 558 | 558 | /* |
| 559 | 559 | ** Show a webpage error message |
| 560 | 560 | */ |
| @@ -654,11 +654,11 @@ | ||
| 654 | 654 | @ <tr><td>details:</td><td><input type="checkbox" name="detail" |
| 655 | 655 | @ checked="checked" value="1" /></td></tr> |
| 656 | 656 | @ <tr><td></td><td></td><td> |
| 657 | 657 | @ <input type="submit" name="diff" value="diff" /></td></tr></table> |
| 658 | 658 | @ </div></form> |
| 659 | - style_footer(); | |
| 659 | + style_footer_cmdref("diff"); | |
| 660 | 660 | return; |
| 661 | 661 | }else if( vdiff_parse_manifest("from", &ridFrom, &mFrom) |
| 662 | 662 | || vdiff_parse_manifest("to", &ridTo, &mTo) |
| 663 | 663 | ){ |
| 664 | 664 | return; |
| @@ -701,11 +701,11 @@ | ||
| 701 | 701 | } |
| 702 | 702 | } |
| 703 | 703 | manifest_clear(&mFrom); |
| 704 | 704 | manifest_clear(&mTo); |
| 705 | 705 | |
| 706 | - style_footer(); | |
| 706 | + style_footer_cmdref("diff"); | |
| 707 | 707 | } |
| 708 | 708 | |
| 709 | 709 | /* |
| 710 | 710 | ** Write a description of an object to the www reply. |
| 711 | 711 | ** |
| @@ -1173,11 +1173,11 @@ | ||
| 1173 | 1173 | hexdump(&content); |
| 1174 | 1174 | @ </pre> |
| 1175 | 1175 | } |
| 1176 | 1176 | @ </blockquote> |
| 1177 | 1177 | } |
| 1178 | - style_footer(); | |
| 1178 | + style_footer_cmdref( "artifact" ); | |
| 1179 | 1179 | } |
| 1180 | 1180 | |
| 1181 | 1181 | /* |
| 1182 | 1182 | ** WEBPAGE: tinfo |
| 1183 | 1183 | ** URL: /tinfo?name=ARTIFACTID |
| @@ -1233,11 +1233,11 @@ | ||
| 1233 | 1233 | @ |
| 1234 | 1234 | @ <ol> |
| 1235 | 1235 | free(zDate); |
| 1236 | 1236 | ticket_output_change_artifact(&m); |
| 1237 | 1237 | manifest_clear(&m); |
| 1238 | - style_footer(); | |
| 1238 | + style_footer_cmdref("info"); | |
| 1239 | 1239 | } |
| 1240 | 1240 | |
| 1241 | 1241 | |
| 1242 | 1242 | /* |
| 1243 | 1243 | ** WEBPAGE: info |
| 1244 | 1244 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -467,11 +467,11 @@ | |
| 467 | const char *zOld = db_column_text(&q,1); |
| 468 | const char *zNew = db_column_text(&q,2); |
| 469 | append_file_change_line(zName, zOld, zNew, showDiff); |
| 470 | } |
| 471 | db_finalize(&q); |
| 472 | style_footer(); |
| 473 | } |
| 474 | |
| 475 | /* |
| 476 | ** WEBPAGE: winfo |
| 477 | ** URL: /winfo?name=RID |
| @@ -550,11 +550,11 @@ | |
| 550 | wiki_convert(&wiki, 0, 0); |
| 551 | blob_reset(&wiki); |
| 552 | } |
| 553 | manifest_clear(&m); |
| 554 | } |
| 555 | style_footer(); |
| 556 | } |
| 557 | |
| 558 | /* |
| 559 | ** Show a webpage error message |
| 560 | */ |
| @@ -654,11 +654,11 @@ | |
| 654 | @ <tr><td>details:</td><td><input type="checkbox" name="detail" |
| 655 | @ checked="checked" value="1" /></td></tr> |
| 656 | @ <tr><td></td><td></td><td> |
| 657 | @ <input type="submit" name="diff" value="diff" /></td></tr></table> |
| 658 | @ </div></form> |
| 659 | style_footer(); |
| 660 | return; |
| 661 | }else if( vdiff_parse_manifest("from", &ridFrom, &mFrom) |
| 662 | || vdiff_parse_manifest("to", &ridTo, &mTo) |
| 663 | ){ |
| 664 | return; |
| @@ -701,11 +701,11 @@ | |
| 701 | } |
| 702 | } |
| 703 | manifest_clear(&mFrom); |
| 704 | manifest_clear(&mTo); |
| 705 | |
| 706 | style_footer(); |
| 707 | } |
| 708 | |
| 709 | /* |
| 710 | ** Write a description of an object to the www reply. |
| 711 | ** |
| @@ -1173,11 +1173,11 @@ | |
| 1173 | hexdump(&content); |
| 1174 | @ </pre> |
| 1175 | } |
| 1176 | @ </blockquote> |
| 1177 | } |
| 1178 | style_footer(); |
| 1179 | } |
| 1180 | |
| 1181 | /* |
| 1182 | ** WEBPAGE: tinfo |
| 1183 | ** URL: /tinfo?name=ARTIFACTID |
| @@ -1233,11 +1233,11 @@ | |
| 1233 | @ |
| 1234 | @ <ol> |
| 1235 | free(zDate); |
| 1236 | ticket_output_change_artifact(&m); |
| 1237 | manifest_clear(&m); |
| 1238 | style_footer(); |
| 1239 | } |
| 1240 | |
| 1241 | |
| 1242 | /* |
| 1243 | ** WEBPAGE: info |
| 1244 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -467,11 +467,11 @@ | |
| 467 | const char *zOld = db_column_text(&q,1); |
| 468 | const char *zNew = db_column_text(&q,2); |
| 469 | append_file_change_line(zName, zOld, zNew, showDiff); |
| 470 | } |
| 471 | db_finalize(&q); |
| 472 | style_footer_cmdref("info"); |
| 473 | } |
| 474 | |
| 475 | /* |
| 476 | ** WEBPAGE: winfo |
| 477 | ** URL: /winfo?name=RID |
| @@ -550,11 +550,11 @@ | |
| 550 | wiki_convert(&wiki, 0, 0); |
| 551 | blob_reset(&wiki); |
| 552 | } |
| 553 | manifest_clear(&m); |
| 554 | } |
| 555 | style_footer_cmdref("info"); |
| 556 | } |
| 557 | |
| 558 | /* |
| 559 | ** Show a webpage error message |
| 560 | */ |
| @@ -654,11 +654,11 @@ | |
| 654 | @ <tr><td>details:</td><td><input type="checkbox" name="detail" |
| 655 | @ checked="checked" value="1" /></td></tr> |
| 656 | @ <tr><td></td><td></td><td> |
| 657 | @ <input type="submit" name="diff" value="diff" /></td></tr></table> |
| 658 | @ </div></form> |
| 659 | style_footer_cmdref("diff"); |
| 660 | return; |
| 661 | }else if( vdiff_parse_manifest("from", &ridFrom, &mFrom) |
| 662 | || vdiff_parse_manifest("to", &ridTo, &mTo) |
| 663 | ){ |
| 664 | return; |
| @@ -701,11 +701,11 @@ | |
| 701 | } |
| 702 | } |
| 703 | manifest_clear(&mFrom); |
| 704 | manifest_clear(&mTo); |
| 705 | |
| 706 | style_footer_cmdref("diff"); |
| 707 | } |
| 708 | |
| 709 | /* |
| 710 | ** Write a description of an object to the www reply. |
| 711 | ** |
| @@ -1173,11 +1173,11 @@ | |
| 1173 | hexdump(&content); |
| 1174 | @ </pre> |
| 1175 | } |
| 1176 | @ </blockquote> |
| 1177 | } |
| 1178 | style_footer_cmdref( "artifact" ); |
| 1179 | } |
| 1180 | |
| 1181 | /* |
| 1182 | ** WEBPAGE: tinfo |
| 1183 | ** URL: /tinfo?name=ARTIFACTID |
| @@ -1233,11 +1233,11 @@ | |
| 1233 | @ |
| 1234 | @ <ol> |
| 1235 | free(zDate); |
| 1236 | ticket_output_change_artifact(&m); |
| 1237 | manifest_clear(&m); |
| 1238 | style_footer_cmdref("info"); |
| 1239 | } |
| 1240 | |
| 1241 | |
| 1242 | /* |
| 1243 | ** WEBPAGE: info |
| 1244 |
+2
-2
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -217,11 +217,11 @@ | ||
| 217 | 217 | @ <span class="usertype">nobody</span>. |
| 218 | 218 | @ </p></li> |
| 219 | 219 | @ |
| 220 | 220 | @ </ol> |
| 221 | 221 | @ </td></tr></table> |
| 222 | - style_footer(); | |
| 222 | + style_footer_cmdref("user"); | |
| 223 | 223 | } |
| 224 | 224 | |
| 225 | 225 | /* |
| 226 | 226 | ** Return true if zPw is a valid password string. A valid |
| 227 | 227 | ** password string is: |
| @@ -664,11 +664,11 @@ | ||
| 664 | 664 | @ template for users who are allowed more access than |
| 665 | 665 | @ <span class="usertype">anonymous</span>, |
| 666 | 666 | @ but less than a <span class="usertype">developer</span>. |
| 667 | 667 | @ </p></li> |
| 668 | 668 | @ </ul> |
| 669 | - style_footer(); | |
| 669 | + style_footer_cmdref("user"); | |
| 670 | 670 | } |
| 671 | 671 | |
| 672 | 672 | |
| 673 | 673 | /* |
| 674 | 674 | ** Generate a checkbox for an attribute. |
| 675 | 675 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -217,11 +217,11 @@ | |
| 217 | @ <span class="usertype">nobody</span>. |
| 218 | @ </p></li> |
| 219 | @ |
| 220 | @ </ol> |
| 221 | @ </td></tr></table> |
| 222 | style_footer(); |
| 223 | } |
| 224 | |
| 225 | /* |
| 226 | ** Return true if zPw is a valid password string. A valid |
| 227 | ** password string is: |
| @@ -664,11 +664,11 @@ | |
| 664 | @ template for users who are allowed more access than |
| 665 | @ <span class="usertype">anonymous</span>, |
| 666 | @ but less than a <span class="usertype">developer</span>. |
| 667 | @ </p></li> |
| 668 | @ </ul> |
| 669 | style_footer(); |
| 670 | } |
| 671 | |
| 672 | |
| 673 | /* |
| 674 | ** Generate a checkbox for an attribute. |
| 675 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -217,11 +217,11 @@ | |
| 217 | @ <span class="usertype">nobody</span>. |
| 218 | @ </p></li> |
| 219 | @ |
| 220 | @ </ol> |
| 221 | @ </td></tr></table> |
| 222 | style_footer_cmdref("user"); |
| 223 | } |
| 224 | |
| 225 | /* |
| 226 | ** Return true if zPw is a valid password string. A valid |
| 227 | ** password string is: |
| @@ -664,11 +664,11 @@ | |
| 664 | @ template for users who are allowed more access than |
| 665 | @ <span class="usertype">anonymous</span>, |
| 666 | @ but less than a <span class="usertype">developer</span>. |
| 667 | @ </p></li> |
| 668 | @ </ul> |
| 669 | style_footer_cmdref("user"); |
| 670 | } |
| 671 | |
| 672 | |
| 673 | /* |
| 674 | ** Generate a checkbox for an attribute. |
| 675 |
+20
| --- src/style.c | ||
| +++ src/style.c | ||
| @@ -114,10 +114,21 @@ | ||
| 114 | 114 | cgi_destination(CGI_BODY); |
| 115 | 115 | g.cgiOutput = 1; |
| 116 | 116 | headerHasBeenGenerated = 1; |
| 117 | 117 | sideboxUsed = 0; |
| 118 | 118 | } |
| 119 | + | |
| 120 | +/* | |
| 121 | +** append a reference to command line to a web page | |
| 122 | +** and generate the footer | |
| 123 | +*/ | |
| 124 | +void style_footer_cmdref( const char * const zCmd ){ | |
| 125 | + @ <div class="cmdref">See also command line help: | |
| 126 | + @ <a href="help?cmd=%s(zCmd)">%s(zCmd)</a> | |
| 127 | + @ </div> | |
| 128 | + style_footer(); | |
| 129 | +} | |
| 119 | 130 | |
| 120 | 131 | /* |
| 121 | 132 | ** Draw the footer at the bottom of the page. |
| 122 | 133 | */ |
| 123 | 134 | void style_footer(void){ |
| @@ -239,10 +250,11 @@ | ||
| 239 | 250 | @ if {[info exists login]} { |
| 240 | 251 | @ html "<a href='$baseurl/login'>Logout</a> " |
| 241 | 252 | @ } else { |
| 242 | 253 | @ html "<a href='$baseurl/login'>Login</a> " |
| 243 | 254 | @ } |
| 255 | +@ html "<small><sup><a href='$baseurl/help'>?</a></sup></small>" | |
| 244 | 256 | @ </th1></div> |
| 245 | 257 | ; |
| 246 | 258 | |
| 247 | 259 | /* |
| 248 | 260 | ** The default page footer |
| @@ -735,10 +747,18 @@ | ||
| 735 | 747 | { "a.hidden", |
| 736 | 748 | "format for links, that should not be very visible", |
| 737 | 749 | @ font-size: xx-small; |
| 738 | 750 | @ color: #aaaaaa; |
| 739 | 751 | }, |
| 752 | + { "div.cmdref", | |
| 753 | + "format for references to command line help entries the actual gui page." | |
| 754 | + "set \"display\" to \"none\" to suppress the display", | |
| 755 | + @ font-size: small; | |
| 756 | + @ text-align: right; | |
| 757 | + @ font-family: monospace; | |
| 758 | + @ color: #777777; | |
| 759 | + }, | |
| 740 | 760 | { 0, |
| 741 | 761 | 0, |
| 742 | 762 | 0 |
| 743 | 763 | } |
| 744 | 764 | }; |
| 745 | 765 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -114,10 +114,21 @@ | |
| 114 | cgi_destination(CGI_BODY); |
| 115 | g.cgiOutput = 1; |
| 116 | headerHasBeenGenerated = 1; |
| 117 | sideboxUsed = 0; |
| 118 | } |
| 119 | |
| 120 | /* |
| 121 | ** Draw the footer at the bottom of the page. |
| 122 | */ |
| 123 | void style_footer(void){ |
| @@ -239,10 +250,11 @@ | |
| 239 | @ if {[info exists login]} { |
| 240 | @ html "<a href='$baseurl/login'>Logout</a> " |
| 241 | @ } else { |
| 242 | @ html "<a href='$baseurl/login'>Login</a> " |
| 243 | @ } |
| 244 | @ </th1></div> |
| 245 | ; |
| 246 | |
| 247 | /* |
| 248 | ** The default page footer |
| @@ -735,10 +747,18 @@ | |
| 735 | { "a.hidden", |
| 736 | "format for links, that should not be very visible", |
| 737 | @ font-size: xx-small; |
| 738 | @ color: #aaaaaa; |
| 739 | }, |
| 740 | { 0, |
| 741 | 0, |
| 742 | 0 |
| 743 | } |
| 744 | }; |
| 745 |
| --- src/style.c | |
| +++ src/style.c | |
| @@ -114,10 +114,21 @@ | |
| 114 | cgi_destination(CGI_BODY); |
| 115 | g.cgiOutput = 1; |
| 116 | headerHasBeenGenerated = 1; |
| 117 | sideboxUsed = 0; |
| 118 | } |
| 119 | |
| 120 | /* |
| 121 | ** append a reference to command line to a web page |
| 122 | ** and generate the footer |
| 123 | */ |
| 124 | void style_footer_cmdref( const char * const zCmd ){ |
| 125 | @ <div class="cmdref">See also command line help: |
| 126 | @ <a href="help?cmd=%s(zCmd)">%s(zCmd)</a> |
| 127 | @ </div> |
| 128 | style_footer(); |
| 129 | } |
| 130 | |
| 131 | /* |
| 132 | ** Draw the footer at the bottom of the page. |
| 133 | */ |
| 134 | void style_footer(void){ |
| @@ -239,10 +250,11 @@ | |
| 250 | @ if {[info exists login]} { |
| 251 | @ html "<a href='$baseurl/login'>Logout</a> " |
| 252 | @ } else { |
| 253 | @ html "<a href='$baseurl/login'>Login</a> " |
| 254 | @ } |
| 255 | @ html "<small><sup><a href='$baseurl/help'>?</a></sup></small>" |
| 256 | @ </th1></div> |
| 257 | ; |
| 258 | |
| 259 | /* |
| 260 | ** The default page footer |
| @@ -735,10 +747,18 @@ | |
| 747 | { "a.hidden", |
| 748 | "format for links, that should not be very visible", |
| 749 | @ font-size: xx-small; |
| 750 | @ color: #aaaaaa; |
| 751 | }, |
| 752 | { "div.cmdref", |
| 753 | "format for references to command line help entries the actual gui page." |
| 754 | "set \"display\" to \"none\" to suppress the display", |
| 755 | @ font-size: small; |
| 756 | @ text-align: right; |
| 757 | @ font-family: monospace; |
| 758 | @ color: #777777; |
| 759 | }, |
| 760 | { 0, |
| 761 | 0, |
| 762 | 0 |
| 763 | } |
| 764 | }; |
| 765 |
+3
-1
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -952,11 +952,11 @@ | ||
| 952 | 952 | db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/"); |
| 953 | 953 | @ <h2>%b(&desc)</h2> |
| 954 | 954 | blob_reset(&desc); |
| 955 | 955 | www_print_timeline(&q, tmFlags, 0); |
| 956 | 956 | db_finalize(&q); |
| 957 | - style_footer(); | |
| 957 | + style_footer_cmdref("timeline"); | |
| 958 | 958 | } |
| 959 | 959 | |
| 960 | 960 | /* |
| 961 | 961 | ** The input query q selects various records. Print a human-readable |
| 962 | 962 | ** summary of those records. |
| @@ -1095,10 +1095,12 @@ | ||
| 1095 | 1095 | ** t = tickets only |
| 1096 | 1096 | ** e = events only |
| 1097 | 1097 | ** |
| 1098 | 1098 | ** The information can also be used in the gui: |
| 1099 | 1099 | ** * go to the <a href="timeline">timeline</a> page |
| 1100 | +** | |
| 1101 | +** See also: <a>descendants</a> | |
| 1100 | 1102 | */ |
| 1101 | 1103 | void timeline_cmd(void){ |
| 1102 | 1104 | Stmt q; |
| 1103 | 1105 | int n, k; |
| 1104 | 1106 | const char *zCount; |
| 1105 | 1107 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -952,11 +952,11 @@ | |
| 952 | db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/"); |
| 953 | @ <h2>%b(&desc)</h2> |
| 954 | blob_reset(&desc); |
| 955 | www_print_timeline(&q, tmFlags, 0); |
| 956 | db_finalize(&q); |
| 957 | style_footer(); |
| 958 | } |
| 959 | |
| 960 | /* |
| 961 | ** The input query q selects various records. Print a human-readable |
| 962 | ** summary of those records. |
| @@ -1095,10 +1095,12 @@ | |
| 1095 | ** t = tickets only |
| 1096 | ** e = events only |
| 1097 | ** |
| 1098 | ** The information can also be used in the gui: |
| 1099 | ** * go to the <a href="timeline">timeline</a> page |
| 1100 | */ |
| 1101 | void timeline_cmd(void){ |
| 1102 | Stmt q; |
| 1103 | int n, k; |
| 1104 | const char *zCount; |
| 1105 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -952,11 +952,11 @@ | |
| 952 | db_prepare(&q, "SELECT * FROM timeline ORDER BY timestamp DESC /*scan*/"); |
| 953 | @ <h2>%b(&desc)</h2> |
| 954 | blob_reset(&desc); |
| 955 | www_print_timeline(&q, tmFlags, 0); |
| 956 | db_finalize(&q); |
| 957 | style_footer_cmdref("timeline"); |
| 958 | } |
| 959 | |
| 960 | /* |
| 961 | ** The input query q selects various records. Print a human-readable |
| 962 | ** summary of those records. |
| @@ -1095,10 +1095,12 @@ | |
| 1095 | ** t = tickets only |
| 1096 | ** e = events only |
| 1097 | ** |
| 1098 | ** The information can also be used in the gui: |
| 1099 | ** * go to the <a href="timeline">timeline</a> page |
| 1100 | ** |
| 1101 | ** See also: <a>descendants</a> |
| 1102 | */ |
| 1103 | void timeline_cmd(void){ |
| 1104 | Stmt q; |
| 1105 | int n, k; |
| 1106 | const char *zCount; |
| 1107 |
+1
-1
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -366,11 +366,11 @@ | ||
| 366 | 366 | @ </ul> |
| 367 | 367 | } |
| 368 | 368 | db_finalize(&q); |
| 369 | 369 | } |
| 370 | 370 | |
| 371 | - style_footer(); | |
| 371 | + style_footer_cmdref("info"); | |
| 372 | 372 | } |
| 373 | 373 | |
| 374 | 374 | /* |
| 375 | 375 | ** TH command: append_field FIELD STRING |
| 376 | 376 | ** |
| 377 | 377 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -366,11 +366,11 @@ | |
| 366 | @ </ul> |
| 367 | } |
| 368 | db_finalize(&q); |
| 369 | } |
| 370 | |
| 371 | style_footer(); |
| 372 | } |
| 373 | |
| 374 | /* |
| 375 | ** TH command: append_field FIELD STRING |
| 376 | ** |
| 377 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -366,11 +366,11 @@ | |
| 366 | @ </ul> |
| 367 | } |
| 368 | db_finalize(&q); |
| 369 | } |
| 370 | |
| 371 | style_footer_cmdref("info"); |
| 372 | } |
| 373 | |
| 374 | /* |
| 375 | ** TH command: append_field FIELD STRING |
| 376 | ** |
| 377 |
+6
| --- src/user.c | ||
| +++ src/user.c | ||
| @@ -171,10 +171,16 @@ | ||
| 171 | 171 | ** to exist in the database. |
| 172 | 172 | ** |
| 173 | 173 | ** %fossil user password USERNAME ?PASSWORD? |
| 174 | 174 | ** |
| 175 | 175 | ** Change the web access password for a user. |
| 176 | +** Users can change their own password on the | |
| 177 | +** <a href="login">Login/Logout</a> gui page. | |
| 178 | +** | |
| 179 | +** Administrators can also use the gui: | |
| 180 | +** * Go to page <a href="setup">Admin</a> | |
| 181 | +** ** and click <a href="setup_ulist">Users</a> | |
| 176 | 182 | */ |
| 177 | 183 | void user_cmd(void){ |
| 178 | 184 | int n; |
| 179 | 185 | db_find_and_open_repository(1); |
| 180 | 186 | if( g.argc<3 ){ |
| 181 | 187 |
| --- src/user.c | |
| +++ src/user.c | |
| @@ -171,10 +171,16 @@ | |
| 171 | ** to exist in the database. |
| 172 | ** |
| 173 | ** %fossil user password USERNAME ?PASSWORD? |
| 174 | ** |
| 175 | ** Change the web access password for a user. |
| 176 | */ |
| 177 | void user_cmd(void){ |
| 178 | int n; |
| 179 | db_find_and_open_repository(1); |
| 180 | if( g.argc<3 ){ |
| 181 |
| --- src/user.c | |
| +++ src/user.c | |
| @@ -171,10 +171,16 @@ | |
| 171 | ** to exist in the database. |
| 172 | ** |
| 173 | ** %fossil user password USERNAME ?PASSWORD? |
| 174 | ** |
| 175 | ** Change the web access password for a user. |
| 176 | ** Users can change their own password on the |
| 177 | ** <a href="login">Login/Logout</a> gui page. |
| 178 | ** |
| 179 | ** Administrators can also use the gui: |
| 180 | ** * Go to page <a href="setup">Admin</a> |
| 181 | ** ** and click <a href="setup_ulist">Users</a> |
| 182 | */ |
| 183 | void user_cmd(void){ |
| 184 | int n; |
| 185 | db_find_and_open_repository(1); |
| 186 | if( g.argc<3 ){ |
| 187 |
+5
-2
| --- src/wiki.c | ||
| +++ src/wiki.c | ||
| @@ -164,11 +164,11 @@ | ||
| 164 | 164 | @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div> |
| 165 | 165 | @ Search wiki titles: <input type="text" name="title"/> |
| 166 | 166 | @ <input type="submit" /></div></form> |
| 167 | 167 | @ </li> |
| 168 | 168 | @ </ul> |
| 169 | - style_footer(); | |
| 169 | + style_footer_cmdref("wiki"); | |
| 170 | 170 | return; |
| 171 | 171 | } |
| 172 | 172 | if( check_name(zPageName) ) return; |
| 173 | 173 | isSandbox = is_sandbox(zPageName); |
| 174 | 174 | if( isSandbox ){ |
| @@ -693,11 +693,11 @@ | ||
| 693 | 693 | @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li> |
| 694 | 694 | } |
| 695 | 695 | } |
| 696 | 696 | db_finalize(&q); |
| 697 | 697 | @ </ul> |
| 698 | - style_footer(); | |
| 698 | + style_footer_cmdref("wiki"); | |
| 699 | 699 | } |
| 700 | 700 | |
| 701 | 701 | /* |
| 702 | 702 | ** WEBPAGE: wfind |
| 703 | 703 | ** |
| @@ -899,10 +899,13 @@ | ||
| 899 | 899 | ** |
| 900 | 900 | ** %fossil wiki diff ?ARTIFACT? ?-f infile[=stdin]? EntryName |
| 901 | 901 | ** |
| 902 | 902 | ** Diffs the local copy of a page with a given version (defaulting |
| 903 | 903 | ** to the head version). |
| 904 | +** | |
| 905 | +** The wiki format is explained on the <a href="wiki">Wiki</a> subpage | |
| 906 | +** <a href="wiki_rules">Formatting rules</a>. | |
| 904 | 907 | */ |
| 905 | 908 | void wiki_cmd(void){ |
| 906 | 909 | int n; |
| 907 | 910 | db_find_and_open_repository(1); |
| 908 | 911 | if( g.argc<3 ){ |
| 909 | 912 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -164,11 +164,11 @@ | |
| 164 | @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div> |
| 165 | @ Search wiki titles: <input type="text" name="title"/> |
| 166 | @ <input type="submit" /></div></form> |
| 167 | @ </li> |
| 168 | @ </ul> |
| 169 | style_footer(); |
| 170 | return; |
| 171 | } |
| 172 | if( check_name(zPageName) ) return; |
| 173 | isSandbox = is_sandbox(zPageName); |
| 174 | if( isSandbox ){ |
| @@ -693,11 +693,11 @@ | |
| 693 | @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li> |
| 694 | } |
| 695 | } |
| 696 | db_finalize(&q); |
| 697 | @ </ul> |
| 698 | style_footer(); |
| 699 | } |
| 700 | |
| 701 | /* |
| 702 | ** WEBPAGE: wfind |
| 703 | ** |
| @@ -899,10 +899,13 @@ | |
| 899 | ** |
| 900 | ** %fossil wiki diff ?ARTIFACT? ?-f infile[=stdin]? EntryName |
| 901 | ** |
| 902 | ** Diffs the local copy of a page with a given version (defaulting |
| 903 | ** to the head version). |
| 904 | */ |
| 905 | void wiki_cmd(void){ |
| 906 | int n; |
| 907 | db_find_and_open_repository(1); |
| 908 | if( g.argc<3 ){ |
| 909 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -164,11 +164,11 @@ | |
| 164 | @ <li> <form method="get" action="%s(g.zBaseURL)/wfind"><div> |
| 165 | @ Search wiki titles: <input type="text" name="title"/> |
| 166 | @ <input type="submit" /></div></form> |
| 167 | @ </li> |
| 168 | @ </ul> |
| 169 | style_footer_cmdref("wiki"); |
| 170 | return; |
| 171 | } |
| 172 | if( check_name(zPageName) ) return; |
| 173 | isSandbox = is_sandbox(zPageName); |
| 174 | if( isSandbox ){ |
| @@ -693,11 +693,11 @@ | |
| 693 | @ <li><a href="%s(g.zTop)/wiki?name=%T(zName)"><s>%h(zName)</s></a></li> |
| 694 | } |
| 695 | } |
| 696 | db_finalize(&q); |
| 697 | @ </ul> |
| 698 | style_footer_cmdref("wiki"); |
| 699 | } |
| 700 | |
| 701 | /* |
| 702 | ** WEBPAGE: wfind |
| 703 | ** |
| @@ -899,10 +899,13 @@ | |
| 899 | ** |
| 900 | ** %fossil wiki diff ?ARTIFACT? ?-f infile[=stdin]? EntryName |
| 901 | ** |
| 902 | ** Diffs the local copy of a page with a given version (defaulting |
| 903 | ** to the head version). |
| 904 | ** |
| 905 | ** The wiki format is explained on the <a href="wiki">Wiki</a> subpage |
| 906 | ** <a href="wiki_rules">Formatting rules</a>. |
| 907 | */ |
| 908 | void wiki_cmd(void){ |
| 909 | int n; |
| 910 | db_find_and_open_repository(1); |
| 911 | if( g.argc<3 ){ |
| 912 |
+16
| --- src/winhttp.c | ||
| +++ src/winhttp.c | ||
| @@ -89,10 +89,13 @@ | ||
| 89 | 89 | if( z ){ |
| 90 | 90 | wanted = find_content_length(zHdr) + (&z[4]-zHdr) - amt; |
| 91 | 91 | break; |
| 92 | 92 | } |
| 93 | 93 | } |
| 94 | + if( g.fHttpTrace ){ | |
| 95 | + fprintf(stderr,"HTTPTRACE(%p): got header '%s'\n",pAppData,zHdr); | |
| 96 | + } | |
| 94 | 97 | if( amt>=sizeof(zHdr) ) goto end_request; |
| 95 | 98 | out = fopen(zRequestFName, "wb"); |
| 96 | 99 | if( out==0 ) goto end_request; |
| 97 | 100 | fwrite(zHdr, 1, amt, out); |
| 98 | 101 | while( wanted>0 ){ |
| @@ -109,16 +112,26 @@ | ||
| 109 | 112 | out = 0; |
| 110 | 113 | sprintf(zCmd, "\"%s\" http \"%s\" %s %s %s%s", |
| 111 | 114 | g.argv[0], g.zRepositoryName, zRequestFName, zReplyFName, |
| 112 | 115 | inet_ntoa(p->addr.sin_addr), p->zNotFound |
| 113 | 116 | ); |
| 117 | + if( g.fHttpTrace ){ | |
| 118 | + fprintf(stderr,"HTTPTRACE(%p): calling '%s'\n",pAppData,zCmd); | |
| 119 | + } | |
| 114 | 120 | portable_system(zCmd); |
| 115 | 121 | in = fopen(zReplyFName, "rb"); |
| 116 | 122 | if( in ){ |
| 123 | + if( g.fHttpTrace ){ | |
| 124 | + fprintf(stderr,"HTTPTRACE(%p): read reply '%s'\n",pAppData,zReplyFName); | |
| 125 | + } | |
| 117 | 126 | while( (got = fread(zHdr, 1, sizeof(zHdr), in))>0 ){ |
| 118 | 127 | send(p->s, zHdr, got, 0); |
| 119 | 128 | } |
| 129 | + }else{ | |
| 130 | + if( g.fHttpTrace ){ | |
| 131 | + fprintf(stderr,"HTTPTRACE(%p): no reply '%s'\n",pAppData,zReplyFName); | |
| 132 | + } | |
| 120 | 133 | } |
| 121 | 134 | |
| 122 | 135 | end_request: |
| 123 | 136 | if( out ) fclose(out); |
| 124 | 137 | if( in ) fclose(in); |
| @@ -215,12 +228,15 @@ | ||
| 215 | 228 | } |
| 216 | 229 | p->id = ++idCnt; |
| 217 | 230 | p->s = client; |
| 218 | 231 | p->addr = client_addr; |
| 219 | 232 | p->zNotFound = zNotFoundOption; |
| 233 | + if( g.fHttpTrace ){ | |
| 234 | + fprintf(stderr,"HTTPTRACE(%p): start new request thread\n",p); | |
| 235 | + } | |
| 220 | 236 | _beginthread(win32_process_one_http_request, 0, (void*)p); |
| 221 | 237 | } |
| 222 | 238 | closesocket(s); |
| 223 | 239 | WSACleanup(); |
| 224 | 240 | } |
| 225 | 241 | |
| 226 | 242 | #endif /* _WIN32 -- This code is for win32 only */ |
| 227 | 243 |
| --- src/winhttp.c | |
| +++ src/winhttp.c | |
| @@ -89,10 +89,13 @@ | |
| 89 | if( z ){ |
| 90 | wanted = find_content_length(zHdr) + (&z[4]-zHdr) - amt; |
| 91 | break; |
| 92 | } |
| 93 | } |
| 94 | if( amt>=sizeof(zHdr) ) goto end_request; |
| 95 | out = fopen(zRequestFName, "wb"); |
| 96 | if( out==0 ) goto end_request; |
| 97 | fwrite(zHdr, 1, amt, out); |
| 98 | while( wanted>0 ){ |
| @@ -109,16 +112,26 @@ | |
| 109 | out = 0; |
| 110 | sprintf(zCmd, "\"%s\" http \"%s\" %s %s %s%s", |
| 111 | g.argv[0], g.zRepositoryName, zRequestFName, zReplyFName, |
| 112 | inet_ntoa(p->addr.sin_addr), p->zNotFound |
| 113 | ); |
| 114 | portable_system(zCmd); |
| 115 | in = fopen(zReplyFName, "rb"); |
| 116 | if( in ){ |
| 117 | while( (got = fread(zHdr, 1, sizeof(zHdr), in))>0 ){ |
| 118 | send(p->s, zHdr, got, 0); |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | end_request: |
| 123 | if( out ) fclose(out); |
| 124 | if( in ) fclose(in); |
| @@ -215,12 +228,15 @@ | |
| 215 | } |
| 216 | p->id = ++idCnt; |
| 217 | p->s = client; |
| 218 | p->addr = client_addr; |
| 219 | p->zNotFound = zNotFoundOption; |
| 220 | _beginthread(win32_process_one_http_request, 0, (void*)p); |
| 221 | } |
| 222 | closesocket(s); |
| 223 | WSACleanup(); |
| 224 | } |
| 225 | |
| 226 | #endif /* _WIN32 -- This code is for win32 only */ |
| 227 |
| --- src/winhttp.c | |
| +++ src/winhttp.c | |
| @@ -89,10 +89,13 @@ | |
| 89 | if( z ){ |
| 90 | wanted = find_content_length(zHdr) + (&z[4]-zHdr) - amt; |
| 91 | break; |
| 92 | } |
| 93 | } |
| 94 | if( g.fHttpTrace ){ |
| 95 | fprintf(stderr,"HTTPTRACE(%p): got header '%s'\n",pAppData,zHdr); |
| 96 | } |
| 97 | if( amt>=sizeof(zHdr) ) goto end_request; |
| 98 | out = fopen(zRequestFName, "wb"); |
| 99 | if( out==0 ) goto end_request; |
| 100 | fwrite(zHdr, 1, amt, out); |
| 101 | while( wanted>0 ){ |
| @@ -109,16 +112,26 @@ | |
| 112 | out = 0; |
| 113 | sprintf(zCmd, "\"%s\" http \"%s\" %s %s %s%s", |
| 114 | g.argv[0], g.zRepositoryName, zRequestFName, zReplyFName, |
| 115 | inet_ntoa(p->addr.sin_addr), p->zNotFound |
| 116 | ); |
| 117 | if( g.fHttpTrace ){ |
| 118 | fprintf(stderr,"HTTPTRACE(%p): calling '%s'\n",pAppData,zCmd); |
| 119 | } |
| 120 | portable_system(zCmd); |
| 121 | in = fopen(zReplyFName, "rb"); |
| 122 | if( in ){ |
| 123 | if( g.fHttpTrace ){ |
| 124 | fprintf(stderr,"HTTPTRACE(%p): read reply '%s'\n",pAppData,zReplyFName); |
| 125 | } |
| 126 | while( (got = fread(zHdr, 1, sizeof(zHdr), in))>0 ){ |
| 127 | send(p->s, zHdr, got, 0); |
| 128 | } |
| 129 | }else{ |
| 130 | if( g.fHttpTrace ){ |
| 131 | fprintf(stderr,"HTTPTRACE(%p): no reply '%s'\n",pAppData,zReplyFName); |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | end_request: |
| 136 | if( out ) fclose(out); |
| 137 | if( in ) fclose(in); |
| @@ -215,12 +228,15 @@ | |
| 228 | } |
| 229 | p->id = ++idCnt; |
| 230 | p->s = client; |
| 231 | p->addr = client_addr; |
| 232 | p->zNotFound = zNotFoundOption; |
| 233 | if( g.fHttpTrace ){ |
| 234 | fprintf(stderr,"HTTPTRACE(%p): start new request thread\n",p); |
| 235 | } |
| 236 | _beginthread(win32_process_one_http_request, 0, (void*)p); |
| 237 | } |
| 238 | closesocket(s); |
| 239 | WSACleanup(); |
| 240 | } |
| 241 | |
| 242 | #endif /* _WIN32 -- This code is for win32 only */ |
| 243 |