Fossil SCM

Add the /ext page that will run CGI or deliver static content from a document hierarchy specified by the --extroot command-line option on "fossil server" or the extroot: option in the CGI file.

drh 2019-07-25 21:11 trunk merge
Commit ec56c69fe98d26d91a3dac2bb3e6a02a673dd6932a87bd20136a2f7b1beab373
+33 -21
--- src/cgi.c
+++ src/cgi.c
@@ -13,15 +13,20 @@
1313
** [email protected]
1414
** http://www.hwaci.com/drh/
1515
**
1616
*******************************************************************************
1717
**
18
-** This file contains C functions and procedures that provide useful
19
-** services to CGI programs. There are procedures for parsing and
20
-** dispensing QUERY_STRING parameters and cookies, the "mprintf()"
21
-** formatting function and its cousins, and routines to encode and
22
-** decode strings in HTML or HTTP.
18
+** This file contains C functions and procedures used by CGI programs
19
+** (Fossil launched as CGI) to interpret CGI environment variables,
20
+** gather the results, and send they reply back to the CGI server.
21
+** This file also contains routines for running a simple web-server
22
+** (the "fossil ui" or "fossil server" command) and launching subprocesses
23
+** to handle each inbound HTTP request using CGI.
24
+**
25
+** This file contains routines used by Fossil when it is acting as a
26
+** CGI client. For the code used by Fossil when it is acting as a
27
+** CGI server (for the /ext webpage) see the "extcgi.c" source file.
2328
*/
2429
#include "config.h"
2530
#ifdef _WIN32
2631
# if !defined(_WIN32_WINNT)
2732
# define _WIN32_WINNT 0x0501
@@ -981,28 +986,13 @@
981986
982987
len = atoi(PD("CONTENT_LENGTH", "0"));
983988
g.zContentType = zType = P("CONTENT_TYPE");
984989
blob_zero(&g.cgiIn);
985990
if( len>0 && zType ){
986
- if( fossil_strcmp(zType,"application/x-www-form-urlencoded")==0
987
- || strncmp(zType,"multipart/form-data",19)==0 ){
988
- z = fossil_malloc( len+1 );
989
- len = fread(z, 1, len, g.httpIn);
990
- z[len] = 0;
991
- cgi_trace(z);
992
- if( zType[0]=='a' ){
993
- add_param_list(z, '&');
994
- }else{
995
- process_multipart_form_data(z, len);
996
- }
997
- }else if( fossil_strcmp(zType, "application/x-fossil")==0 ){
991
+ if( fossil_strcmp(zType, "application/x-fossil")==0 ){
998992
blob_read_from_channel(&g.cgiIn, g.httpIn, len);
999993
blob_uncompress(&g.cgiIn, &g.cgiIn);
1000
- }else if( fossil_strcmp(zType, "application/x-fossil-debug")==0 ){
1001
- blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1002
- }else if( fossil_strcmp(zType, "application/x-fossil-uncompressed")==0 ){
1003
- blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1004994
}
1005995
#ifdef FOSSIL_ENABLE_JSON
1006996
else if( fossil_strcmp(zType, "application/json")
1007997
|| fossil_strcmp(zType,"text/plain")/*assume this MIGHT be JSON*/
1008998
|| fossil_strcmp(zType,"application/javascript")){
@@ -1024,12 +1014,34 @@
10241014
need to process QUERY_STRING _after_ reading the POST data.
10251015
*/
10261016
cgi_set_content_type(json_guess_content_type());
10271017
}
10281018
#endif /* FOSSIL_ENABLE_JSON */
1019
+ else{
1020
+ blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1021
+ }
10291022
}
1023
+}
10301024
1025
+/*
1026
+** Decode POST parameter information in the cgiIn content, if any.
1027
+*/
1028
+void cgi_decode_post_parameters(void){
1029
+ int len = blob_size(&g.cgiIn);
1030
+ if( len==0 ) return;
1031
+ if( fossil_strcmp(g.zContentType,"application/x-www-form-urlencoded")==0
1032
+ || strncmp(g.zContentType,"multipart/form-data",19)==0
1033
+ ){
1034
+ char *z = blob_str(&g.cgiIn);
1035
+ cgi_trace(z);
1036
+ if( g.zContentType[0]=='a' ){
1037
+ add_param_list(z, '&');
1038
+ }else{
1039
+ process_multipart_form_data(z, len);
1040
+ }
1041
+ blob_init(&g.cgiIn, 0, 0);
1042
+ }
10311043
}
10321044
10331045
/*
10341046
** This is the comparison function used to sort the aParamQP[] array of
10351047
** query parameters and cookies.
10361048
--- src/cgi.c
+++ src/cgi.c
@@ -13,15 +13,20 @@
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This file contains C functions and procedures that provide useful
19 ** services to CGI programs. There are procedures for parsing and
20 ** dispensing QUERY_STRING parameters and cookies, the "mprintf()"
21 ** formatting function and its cousins, and routines to encode and
22 ** decode strings in HTML or HTTP.
 
 
 
 
 
23 */
24 #include "config.h"
25 #ifdef _WIN32
26 # if !defined(_WIN32_WINNT)
27 # define _WIN32_WINNT 0x0501
@@ -981,28 +986,13 @@
981
982 len = atoi(PD("CONTENT_LENGTH", "0"));
983 g.zContentType = zType = P("CONTENT_TYPE");
984 blob_zero(&g.cgiIn);
985 if( len>0 && zType ){
986 if( fossil_strcmp(zType,"application/x-www-form-urlencoded")==0
987 || strncmp(zType,"multipart/form-data",19)==0 ){
988 z = fossil_malloc( len+1 );
989 len = fread(z, 1, len, g.httpIn);
990 z[len] = 0;
991 cgi_trace(z);
992 if( zType[0]=='a' ){
993 add_param_list(z, '&');
994 }else{
995 process_multipart_form_data(z, len);
996 }
997 }else if( fossil_strcmp(zType, "application/x-fossil")==0 ){
998 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
999 blob_uncompress(&g.cgiIn, &g.cgiIn);
1000 }else if( fossil_strcmp(zType, "application/x-fossil-debug")==0 ){
1001 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1002 }else if( fossil_strcmp(zType, "application/x-fossil-uncompressed")==0 ){
1003 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1004 }
1005 #ifdef FOSSIL_ENABLE_JSON
1006 else if( fossil_strcmp(zType, "application/json")
1007 || fossil_strcmp(zType,"text/plain")/*assume this MIGHT be JSON*/
1008 || fossil_strcmp(zType,"application/javascript")){
@@ -1024,12 +1014,34 @@
1024 need to process QUERY_STRING _after_ reading the POST data.
1025 */
1026 cgi_set_content_type(json_guess_content_type());
1027 }
1028 #endif /* FOSSIL_ENABLE_JSON */
 
 
 
1029 }
 
1030
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1031 }
1032
1033 /*
1034 ** This is the comparison function used to sort the aParamQP[] array of
1035 ** query parameters and cookies.
1036
--- src/cgi.c
+++ src/cgi.c
@@ -13,15 +13,20 @@
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This file contains C functions and procedures used by CGI programs
19 ** (Fossil launched as CGI) to interpret CGI environment variables,
20 ** gather the results, and send they reply back to the CGI server.
21 ** This file also contains routines for running a simple web-server
22 ** (the "fossil ui" or "fossil server" command) and launching subprocesses
23 ** to handle each inbound HTTP request using CGI.
24 **
25 ** This file contains routines used by Fossil when it is acting as a
26 ** CGI client. For the code used by Fossil when it is acting as a
27 ** CGI server (for the /ext webpage) see the "extcgi.c" source file.
28 */
29 #include "config.h"
30 #ifdef _WIN32
31 # if !defined(_WIN32_WINNT)
32 # define _WIN32_WINNT 0x0501
@@ -981,28 +986,13 @@
986
987 len = atoi(PD("CONTENT_LENGTH", "0"));
988 g.zContentType = zType = P("CONTENT_TYPE");
989 blob_zero(&g.cgiIn);
990 if( len>0 && zType ){
991 if( fossil_strcmp(zType, "application/x-fossil")==0 ){
 
 
 
 
 
 
 
 
 
 
 
992 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
993 blob_uncompress(&g.cgiIn, &g.cgiIn);
 
 
 
 
994 }
995 #ifdef FOSSIL_ENABLE_JSON
996 else if( fossil_strcmp(zType, "application/json")
997 || fossil_strcmp(zType,"text/plain")/*assume this MIGHT be JSON*/
998 || fossil_strcmp(zType,"application/javascript")){
@@ -1024,12 +1014,34 @@
1014 need to process QUERY_STRING _after_ reading the POST data.
1015 */
1016 cgi_set_content_type(json_guess_content_type());
1017 }
1018 #endif /* FOSSIL_ENABLE_JSON */
1019 else{
1020 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1021 }
1022 }
1023 }
1024
1025 /*
1026 ** Decode POST parameter information in the cgiIn content, if any.
1027 */
1028 void cgi_decode_post_parameters(void){
1029 int len = blob_size(&g.cgiIn);
1030 if( len==0 ) return;
1031 if( fossil_strcmp(g.zContentType,"application/x-www-form-urlencoded")==0
1032 || strncmp(g.zContentType,"multipart/form-data",19)==0
1033 ){
1034 char *z = blob_str(&g.cgiIn);
1035 cgi_trace(z);
1036 if( g.zContentType[0]=='a' ){
1037 add_param_list(z, '&');
1038 }else{
1039 process_multipart_form_data(z, len);
1040 }
1041 blob_init(&g.cgiIn, 0, 0);
1042 }
1043 }
1044
1045 /*
1046 ** This is the comparison function used to sort the aParamQP[] array of
1047 ** query parameters and cookies.
1048
--- src/dispatch.c
+++ src/dispatch.c
@@ -47,10 +47,11 @@
4747
#define CMDFLAG_COMMAND 0x0010 /* A command */
4848
#define CMDFLAG_SETTING 0x0020 /* A setting */
4949
#define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
5050
#define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
5151
#define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
52
+#define CMDFLAG_RAWCONTENT 0x0200 /* Do not interpret POST content */
5253
/**************************************************************************/
5354
5455
/* Values for the 2nd parameter to dispatch_name_search() */
5556
#define CMDFLAG_ANY 0x0038 /* Match anything */
5657
#define CMDFLAG_PREFIX 0x0200 /* Prefix match is ok */
5758
--- src/dispatch.c
+++ src/dispatch.c
@@ -47,10 +47,11 @@
47 #define CMDFLAG_COMMAND 0x0010 /* A command */
48 #define CMDFLAG_SETTING 0x0020 /* A setting */
49 #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
50 #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
51 #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
 
52 /**************************************************************************/
53
54 /* Values for the 2nd parameter to dispatch_name_search() */
55 #define CMDFLAG_ANY 0x0038 /* Match anything */
56 #define CMDFLAG_PREFIX 0x0200 /* Prefix match is ok */
57
--- src/dispatch.c
+++ src/dispatch.c
@@ -47,10 +47,11 @@
47 #define CMDFLAG_COMMAND 0x0010 /* A command */
48 #define CMDFLAG_SETTING 0x0020 /* A setting */
49 #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
50 #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
51 #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
52 #define CMDFLAG_RAWCONTENT 0x0200 /* Do not interpret POST content */
53 /**************************************************************************/
54
55 /* Values for the 2nd parameter to dispatch_name_search() */
56 #define CMDFLAG_ANY 0x0038 /* Match anything */
57 #define CMDFLAG_PREFIX 0x0200 /* Prefix match is ok */
58
+77 -60
--- src/doc.c
+++ src/doc.c
@@ -529,10 +529,85 @@
529529
base = i+5;
530530
}
531531
}
532532
blob_append(cgi_output_blob(), &z[base], i-base);
533533
}
534
+
535
+/*
536
+** Render a document as the reply to the HTTP request. The body
537
+** of the document is contained in pBody. The body might be binary.
538
+** The mimetype is in zMimetype.
539
+*/
540
+void document_render(
541
+ Blob *pBody, /* Document content */
542
+ const char *zMime, /* MIME-type */
543
+ const char *zDefaultTitle, /* Default title */
544
+ const char *zFilename /* Name of the file being rendered */
545
+){
546
+ Blob title;
547
+ blob_init(&title,0,0);
548
+ if( fossil_strcmp(zMime, "text/x-fossil-wiki")==0 ){
549
+ Blob tail;
550
+ style_adunit_config(ADUNIT_RIGHT_OK);
551
+ if( wiki_find_title(pBody, &title, &tail) ){
552
+ style_header("%s", blob_str(&title));
553
+ wiki_convert(&tail, 0, WIKI_BUTTONS);
554
+ }else{
555
+ style_header("%s", zDefaultTitle);
556
+ wiki_convert(pBody, 0, WIKI_BUTTONS);
557
+ }
558
+ style_footer();
559
+ }else if( fossil_strcmp(zMime, "text/x-markdown")==0 ){
560
+ Blob tail = BLOB_INITIALIZER;
561
+ markdown_to_html(pBody, &title, &tail);
562
+ if( blob_size(&title)>0 ){
563
+ style_header("%s", blob_str(&title));
564
+ }else{
565
+ style_header("%s", zDefaultTitle);
566
+ }
567
+ convert_href_and_output(&tail);
568
+ style_footer();
569
+ }else if( fossil_strcmp(zMime, "text/plain")==0 ){
570
+ style_header("%s", zDefaultTitle);
571
+ @ <blockquote><pre>
572
+ @ %h(blob_str(pBody))
573
+ @ </pre></blockquote>
574
+ style_footer();
575
+ }else if( fossil_strcmp(zMime, "text/html")==0
576
+ && doc_is_embedded_html(pBody, &title) ){
577
+ if( blob_size(&title)==0 ) blob_append(&title,zFilename,-1);
578
+ style_header("%s", blob_str(&title));
579
+ convert_href_and_output(pBody);
580
+ style_footer();
581
+#ifdef FOSSIL_ENABLE_TH1_DOCS
582
+ }else if( Th_AreDocsEnabled() &&
583
+ fossil_strcmp(zMime, "application/x-th1")==0 ){
584
+ int raw = P("raw")!=0;
585
+ if( !raw ){
586
+ Blob tail;
587
+ blob_zero(&tail);
588
+ if( wiki_find_title(pBody, &title, &tail) ){
589
+ style_header("%s", blob_str(&title));
590
+ Th_Render(blob_str(&tail));
591
+ blob_reset(&tail);
592
+ }else{
593
+ style_header("%h", zName);
594
+ Th_Render(blob_str(pBody));
595
+ }
596
+ }else{
597
+ Th_Render(blob_str(pBody));
598
+ }
599
+ if( !raw ){
600
+ style_footer();
601
+ }
602
+#endif
603
+ }else{
604
+ cgi_set_content_type(zMime);
605
+ cgi_set_content(pBody);
606
+ }
607
+}
608
+
534609
535610
/*
536611
** WEBPAGE: uv
537612
** WEBPAGE: doc
538613
** URL: /uv/FILE
@@ -618,10 +693,11 @@
618693
zCheckin = "tip";
619694
}
620695
}
621696
if( nMiss==count(azSuffix) ){
622697
zName = "404.md";
698
+ zDfltTitle = "Not Found";
623699
}else if( zName[i]==0 ){
624700
assert( nMiss>=0 && nMiss<count(azSuffix) );
625701
zName = azSuffix[nMiss];
626702
}else if( !isUV ){
627703
zName += i;
@@ -690,70 +766,11 @@
690766
Th_Store("doc_version", db_text(0, "SELECT '[' || substr(uuid,1,10) || ']'"
691767
" FROM blob WHERE rid=%d", vid));
692768
Th_Store("doc_date", db_text(0, "SELECT datetime(mtime) FROM event"
693769
" WHERE objid=%d AND type='ci'", vid));
694770
}
695
- if( fossil_strcmp(zMime, "text/x-fossil-wiki")==0 ){
696
- Blob tail;
697
- style_adunit_config(ADUNIT_RIGHT_OK);
698
- if( wiki_find_title(&filebody, &title, &tail) ){
699
- style_header("%s", blob_str(&title));
700
- wiki_convert(&tail, 0, WIKI_BUTTONS);
701
- }else{
702
- style_header("%s", zDfltTitle);
703
- wiki_convert(&filebody, 0, WIKI_BUTTONS);
704
- }
705
- style_footer();
706
- }else if( fossil_strcmp(zMime, "text/x-markdown")==0 ){
707
- Blob tail = BLOB_INITIALIZER;
708
- markdown_to_html(&filebody, &title, &tail);
709
- if( blob_size(&title)>0 ){
710
- style_header("%s", blob_str(&title));
711
- }else{
712
- style_header("%s", nMiss>=count(azSuffix)?
713
- "Not Found" : zDfltTitle);
714
- }
715
- convert_href_and_output(&tail);
716
- style_footer();
717
- }else if( fossil_strcmp(zMime, "text/plain")==0 ){
718
- style_header("%s", zDfltTitle);
719
- @ <blockquote><pre>
720
- @ %h(blob_str(&filebody))
721
- @ </pre></blockquote>
722
- style_footer();
723
- }else if( fossil_strcmp(zMime, "text/html")==0
724
- && doc_is_embedded_html(&filebody, &title) ){
725
- if( blob_size(&title)==0 ) blob_append(&title,zName,-1);
726
- style_header("%s", blob_str(&title));
727
- convert_href_and_output(&filebody);
728
- style_footer();
729
-#ifdef FOSSIL_ENABLE_TH1_DOCS
730
- }else if( Th_AreDocsEnabled() &&
731
- fossil_strcmp(zMime, "application/x-th1")==0 ){
732
- int raw = P("raw")!=0;
733
- if( !raw ){
734
- Blob tail;
735
- blob_zero(&tail);
736
- if( wiki_find_title(&filebody, &title, &tail) ){
737
- style_header("%s", blob_str(&title));
738
- Th_Render(blob_str(&tail));
739
- blob_reset(&tail);
740
- }else{
741
- style_header("%h", zName);
742
- Th_Render(blob_str(&filebody));
743
- }
744
- }else{
745
- Th_Render(blob_str(&filebody));
746
- }
747
- if( !raw ){
748
- style_footer();
749
- }
750
-#endif
751
- }else{
752
- cgi_set_content_type(zMime);
753
- cgi_set_content(&filebody);
754
- }
771
+ document_render(&filebody, zMime, zDfltTitle, zName);
755772
if( nMiss>=count(azSuffix) ) cgi_set_status(404, "Not Found");
756773
db_end_transaction(0);
757774
return;
758775
759776
/* Jump here when unable to locate the document */
760777
761778
ADDED src/extcgi.c
--- src/doc.c
+++ src/doc.c
@@ -529,10 +529,85 @@
529 base = i+5;
530 }
531 }
532 blob_append(cgi_output_blob(), &z[base], i-base);
533 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
535 /*
536 ** WEBPAGE: uv
537 ** WEBPAGE: doc
538 ** URL: /uv/FILE
@@ -618,10 +693,11 @@
618 zCheckin = "tip";
619 }
620 }
621 if( nMiss==count(azSuffix) ){
622 zName = "404.md";
 
623 }else if( zName[i]==0 ){
624 assert( nMiss>=0 && nMiss<count(azSuffix) );
625 zName = azSuffix[nMiss];
626 }else if( !isUV ){
627 zName += i;
@@ -690,70 +766,11 @@
690 Th_Store("doc_version", db_text(0, "SELECT '[' || substr(uuid,1,10) || ']'"
691 " FROM blob WHERE rid=%d", vid));
692 Th_Store("doc_date", db_text(0, "SELECT datetime(mtime) FROM event"
693 " WHERE objid=%d AND type='ci'", vid));
694 }
695 if( fossil_strcmp(zMime, "text/x-fossil-wiki")==0 ){
696 Blob tail;
697 style_adunit_config(ADUNIT_RIGHT_OK);
698 if( wiki_find_title(&filebody, &title, &tail) ){
699 style_header("%s", blob_str(&title));
700 wiki_convert(&tail, 0, WIKI_BUTTONS);
701 }else{
702 style_header("%s", zDfltTitle);
703 wiki_convert(&filebody, 0, WIKI_BUTTONS);
704 }
705 style_footer();
706 }else if( fossil_strcmp(zMime, "text/x-markdown")==0 ){
707 Blob tail = BLOB_INITIALIZER;
708 markdown_to_html(&filebody, &title, &tail);
709 if( blob_size(&title)>0 ){
710 style_header("%s", blob_str(&title));
711 }else{
712 style_header("%s", nMiss>=count(azSuffix)?
713 "Not Found" : zDfltTitle);
714 }
715 convert_href_and_output(&tail);
716 style_footer();
717 }else if( fossil_strcmp(zMime, "text/plain")==0 ){
718 style_header("%s", zDfltTitle);
719 @ <blockquote><pre>
720 @ %h(blob_str(&filebody))
721 @ </pre></blockquote>
722 style_footer();
723 }else if( fossil_strcmp(zMime, "text/html")==0
724 && doc_is_embedded_html(&filebody, &title) ){
725 if( blob_size(&title)==0 ) blob_append(&title,zName,-1);
726 style_header("%s", blob_str(&title));
727 convert_href_and_output(&filebody);
728 style_footer();
729 #ifdef FOSSIL_ENABLE_TH1_DOCS
730 }else if( Th_AreDocsEnabled() &&
731 fossil_strcmp(zMime, "application/x-th1")==0 ){
732 int raw = P("raw")!=0;
733 if( !raw ){
734 Blob tail;
735 blob_zero(&tail);
736 if( wiki_find_title(&filebody, &title, &tail) ){
737 style_header("%s", blob_str(&title));
738 Th_Render(blob_str(&tail));
739 blob_reset(&tail);
740 }else{
741 style_header("%h", zName);
742 Th_Render(blob_str(&filebody));
743 }
744 }else{
745 Th_Render(blob_str(&filebody));
746 }
747 if( !raw ){
748 style_footer();
749 }
750 #endif
751 }else{
752 cgi_set_content_type(zMime);
753 cgi_set_content(&filebody);
754 }
755 if( nMiss>=count(azSuffix) ) cgi_set_status(404, "Not Found");
756 db_end_transaction(0);
757 return;
758
759 /* Jump here when unable to locate the document */
760
761 DDED src/extcgi.c
--- src/doc.c
+++ src/doc.c
@@ -529,10 +529,85 @@
529 base = i+5;
530 }
531 }
532 blob_append(cgi_output_blob(), &z[base], i-base);
533 }
534
535 /*
536 ** Render a document as the reply to the HTTP request. The body
537 ** of the document is contained in pBody. The body might be binary.
538 ** The mimetype is in zMimetype.
539 */
540 void document_render(
541 Blob *pBody, /* Document content */
542 const char *zMime, /* MIME-type */
543 const char *zDefaultTitle, /* Default title */
544 const char *zFilename /* Name of the file being rendered */
545 ){
546 Blob title;
547 blob_init(&title,0,0);
548 if( fossil_strcmp(zMime, "text/x-fossil-wiki")==0 ){
549 Blob tail;
550 style_adunit_config(ADUNIT_RIGHT_OK);
551 if( wiki_find_title(pBody, &title, &tail) ){
552 style_header("%s", blob_str(&title));
553 wiki_convert(&tail, 0, WIKI_BUTTONS);
554 }else{
555 style_header("%s", zDefaultTitle);
556 wiki_convert(pBody, 0, WIKI_BUTTONS);
557 }
558 style_footer();
559 }else if( fossil_strcmp(zMime, "text/x-markdown")==0 ){
560 Blob tail = BLOB_INITIALIZER;
561 markdown_to_html(pBody, &title, &tail);
562 if( blob_size(&title)>0 ){
563 style_header("%s", blob_str(&title));
564 }else{
565 style_header("%s", zDefaultTitle);
566 }
567 convert_href_and_output(&tail);
568 style_footer();
569 }else if( fossil_strcmp(zMime, "text/plain")==0 ){
570 style_header("%s", zDefaultTitle);
571 @ <blockquote><pre>
572 @ %h(blob_str(pBody))
573 @ </pre></blockquote>
574 style_footer();
575 }else if( fossil_strcmp(zMime, "text/html")==0
576 && doc_is_embedded_html(pBody, &title) ){
577 if( blob_size(&title)==0 ) blob_append(&title,zFilename,-1);
578 style_header("%s", blob_str(&title));
579 convert_href_and_output(pBody);
580 style_footer();
581 #ifdef FOSSIL_ENABLE_TH1_DOCS
582 }else if( Th_AreDocsEnabled() &&
583 fossil_strcmp(zMime, "application/x-th1")==0 ){
584 int raw = P("raw")!=0;
585 if( !raw ){
586 Blob tail;
587 blob_zero(&tail);
588 if( wiki_find_title(pBody, &title, &tail) ){
589 style_header("%s", blob_str(&title));
590 Th_Render(blob_str(&tail));
591 blob_reset(&tail);
592 }else{
593 style_header("%h", zName);
594 Th_Render(blob_str(pBody));
595 }
596 }else{
597 Th_Render(blob_str(pBody));
598 }
599 if( !raw ){
600 style_footer();
601 }
602 #endif
603 }else{
604 cgi_set_content_type(zMime);
605 cgi_set_content(pBody);
606 }
607 }
608
609
610 /*
611 ** WEBPAGE: uv
612 ** WEBPAGE: doc
613 ** URL: /uv/FILE
@@ -618,10 +693,11 @@
693 zCheckin = "tip";
694 }
695 }
696 if( nMiss==count(azSuffix) ){
697 zName = "404.md";
698 zDfltTitle = "Not Found";
699 }else if( zName[i]==0 ){
700 assert( nMiss>=0 && nMiss<count(azSuffix) );
701 zName = azSuffix[nMiss];
702 }else if( !isUV ){
703 zName += i;
@@ -690,70 +766,11 @@
766 Th_Store("doc_version", db_text(0, "SELECT '[' || substr(uuid,1,10) || ']'"
767 " FROM blob WHERE rid=%d", vid));
768 Th_Store("doc_date", db_text(0, "SELECT datetime(mtime) FROM event"
769 " WHERE objid=%d AND type='ci'", vid));
770 }
771 document_render(&filebody, zMime, zDfltTitle, zName);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
772 if( nMiss>=count(azSuffix) ) cgi_set_status(404, "Not Found");
773 db_end_transaction(0);
774 return;
775
776 /* Jump here when unable to locate the document */
777
778 DDED src/extcgi.c
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,8 @@
1
+/* }
2
+ }SER",
3
+ if( zName[0]=='.' || zName[0]=='-'/* }
4
+ }SER",
5
+ zPath[i-1]=='/'* }
6
+ }SER",
7
+ }
8
+ }g.zPath
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,8 @@
1 /* }
2 }SER",
3 if( zName[0]=='.' || zName[0]=='-'/* }
4 }SER",
5 zPath[i-1]=='/'* }
6 }SER",
7 }
8 }g.zPath
--- src/http_transport.c
+++ src/http_transport.c
@@ -140,11 +140,11 @@
140140
fossil_panic("ssh:// URI does not specify a path to the repository");
141141
}
142142
if( g.fSshTrace ){
143143
fossil_print("%s\n", blob_str(&zCmd)); /* Show the whole SSH command */
144144
}
145
- popen2(blob_str(&zCmd), &sshIn, &sshOut, &sshPid);
145
+ popen2(blob_str(&zCmd), &sshIn, &sshOut, &sshPid, 0);
146146
if( sshPid==0 ){
147147
socket_set_errmsg("cannot start ssh tunnel using [%b]", &zCmd);
148148
}
149149
blob_reset(&zCmd);
150150
return sshPid==0;
151151
--- src/http_transport.c
+++ src/http_transport.c
@@ -140,11 +140,11 @@
140 fossil_panic("ssh:// URI does not specify a path to the repository");
141 }
142 if( g.fSshTrace ){
143 fossil_print("%s\n", blob_str(&zCmd)); /* Show the whole SSH command */
144 }
145 popen2(blob_str(&zCmd), &sshIn, &sshOut, &sshPid);
146 if( sshPid==0 ){
147 socket_set_errmsg("cannot start ssh tunnel using [%b]", &zCmd);
148 }
149 blob_reset(&zCmd);
150 return sshPid==0;
151
--- src/http_transport.c
+++ src/http_transport.c
@@ -140,11 +140,11 @@
140 fossil_panic("ssh:// URI does not specify a path to the repository");
141 }
142 if( g.fSshTrace ){
143 fossil_print("%s\n", blob_str(&zCmd)); /* Show the whole SSH command */
144 }
145 popen2(blob_str(&zCmd), &sshIn, &sshOut, &sshPid, 0);
146 if( sshPid==0 ){
147 socket_set_errmsg("cannot start ssh tunnel using [%b]", &zCmd);
148 }
149 blob_reset(&zCmd);
150 return sshPid==0;
151
+23 -2
--- src/main.c
+++ src/main.c
@@ -173,10 +173,11 @@
173173
char *zPath; /* Name of webpage being served */
174174
char *zExtra; /* Extra path information past the webpage name */
175175
char *zBaseURL; /* Full text of the URL being served */
176176
char *zHttpsURL; /* zBaseURL translated to https: */
177177
char *zTop; /* Parent directory of zPath */
178
+ const char *zExtRoot; /* Document root for the /ext sub-website */
178179
const char *zContentType; /* The content type of the input HTTP request */
179180
int iErrPriority; /* Priority of current error message */
180181
char *zErrMsg; /* Text of an error message */
181182
int sslNotAvailable; /* SSL is not available. Do not redirect to https: */
182183
Blob cgiIn; /* Input to an xfer www method */
@@ -1783,10 +1784,13 @@
17831784
@ <h1>Server Configuration Error</h1>
17841785
@ <p>The database schema on the server is out-of-date. Please ask
17851786
@ the administrator to run <b>fossil rebuild</b>.</p>
17861787
}
17871788
}else{
1789
+ if( (pCmd->eCmdFlags & CMDFLAG_RAWCONTENT)==0 ){
1790
+ cgi_decode_post_parameters();
1791
+ }
17881792
if( g.fCgiTrace ){
17891793
fossil_trace("######## Calling %s #########\n", pCmd->zName);
17901794
cgi_print_all(1, 1);
17911795
}
17921796
#ifdef FOSSIL_ENABLE_TH1_HOOKS
@@ -1941,10 +1945,13 @@
19411945
**
19421946
** debug: FILE Causing debugging information to be written
19431947
** into FILE.
19441948
**
19451949
** errorlog: FILE Warnings, errors, and panics written to FILE.
1950
+**
1951
+** extroot: DIR Directory that is the root of the sub-CGI tree
1952
+** on the /ext page.
19461953
**
19471954
** redirect: REPO URL Extract the "name" query parameter and search
19481955
** REPO for a check-in or ticket that matches the
19491956
** value of "name", then redirect to URL. There
19501957
** can be multiple "redirect:" lines that are
@@ -2087,10 +2094,19 @@
20872094
** to FILENAME.
20882095
*/
20892096
g.zErrlog = mprintf("%s", blob_str(&value));
20902097
blob_reset(&value);
20912098
continue;
2099
+ }
2100
+ if( blob_eq(&key, "extroot:") && blob_token(&line, &value) ){
2101
+ /* extroot: DIRECTORY
2102
+ **
2103
+ ** Enables the /ext webpage to use sub-cgi rooted at DIRECTORY
2104
+ */
2105
+ g.zExtRoot = mprintf("%s", blob_str(&value));
2106
+ blob_reset(&value);
2107
+ continue;
20922108
}
20932109
if( blob_eq(&key, "HOME:") && blob_token(&line, &value) ){
20942110
/* HOME: VALUE
20952111
**
20962112
** Set CGI parameter "HOME" to VALUE. This is legacy. Use
@@ -2240,16 +2256,17 @@
22402256
** for requests coming from localhost, if the "localauth" setting is not
22412257
** enabled.
22422258
**
22432259
** Options:
22442260
** --baseurl URL base URL (useful with reverse proxies)
2261
+** --extroot DIR document root for the /ext extension mechanism
22452262
** --files GLOB comma-separate glob patterns for static file to serve
2246
-** --localauth enable automatic login for local connections
22472263
** --host NAME specify hostname of the server
22482264
** --https signal a request coming in via https
22492265
** --in FILE Take input from FILE instead of standard input
22502266
** --ipaddr ADDR Assume the request comes from the given IP address
2267
+** --localauth enable automatic login for local connections
22512268
** --nocompress do not compress HTTP replies
22522269
** --nodelay omit backoffice processing if it would delay process exit
22532270
** --nojail drop root privilege but do not enter the chroot jail
22542271
** --nossl signal that no SSL connections are available
22552272
** --notfound URL use URL as "HTTP 404, object not found" page.
@@ -2297,10 +2314,11 @@
22972314
noJail = find_option("nojail",0,0)!=0;
22982315
allowRepoList = find_option("repolist",0,0)!=0;
22992316
g.useLocalauth = find_option("localauth", 0, 0)!=0;
23002317
g.sslNotAvailable = find_option("nossl", 0, 0)!=0;
23012318
g.fNoHttpCompress = find_option("nocompress",0,0)!=0;
2319
+ g.zExtRoot = find_option("extroot",0,1);
23022320
zInFile = find_option("in",0,1);
23032321
if( zInFile ){
23042322
backoffice_disable();
23052323
g.httpIn = fossil_fopen(zInFile, "rb");
23062324
if( g.httpIn==0 ) fossil_fatal("cannot open \"%s\" for reading", zInFile);
@@ -2391,10 +2409,11 @@
23912409
Th_InitTraceLog();
23922410
login_set_capabilities("sx", 0);
23932411
g.useLocalauth = 1;
23942412
g.httpIn = stdin;
23952413
g.httpOut = stdout;
2414
+ g.zExtRoot = find_option("extroot",0,1);
23962415
find_server_repository(2, 0);
23972416
g.cgiOutput = 1;
23982417
g.fNoHttpCompress = 1;
23992418
g.fullHttpReply = 1;
24002419
zIpAddr = cgi_ssh_remote_addr(0);
@@ -2484,11 +2503,11 @@
24842503
** by default.
24852504
**
24862505
** Options:
24872506
** --baseurl URL Use URL as the base (useful for reverse proxies)
24882507
** --create Create a new REPOSITORY if it does not already exist
2489
-** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
2508
+** --extroot DIR Document root for the /ext extension mechanism
24902509
** --files GLOBLIST Comma-separated list of glob patterns for static files
24912510
** --localauth enable automatic login for requests from localhost
24922511
** --localhost listen on 127.0.0.1 only (always true for "ui")
24932512
** --https Indicates that the input is coming through a reverse
24942513
** proxy that has already translated HTTPS into HTTP.
@@ -2497,10 +2516,11 @@
24972516
** --nocompress Do not compress HTTP replies
24982517
** --nojail Drop root privileges but do not enter the chroot jail
24992518
** --nossl signal that no SSL connections are available (Always
25002519
** set by default for the "ui" command)
25012520
** --notfound URL Redirect
2521
+** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
25022522
** -P|--port TCPPORT listen to request on port TCPPORT
25032523
** --th-trace trace TH1 execution (for debugging purposes)
25042524
** --repolist If REPOSITORY is dir, URL "/" lists repos.
25052525
** --scgi Accept SCGI rather than HTTP
25062526
** --skin LABEL Use override skin LABEL
@@ -2537,10 +2557,11 @@
25372557
#endif
25382558
25392559
if( g.zErrlog==0 ){
25402560
g.zErrlog = "-";
25412561
}
2562
+ g.zExtRoot = find_option("extroot",0,1);
25422563
zFileGlob = find_option("files-urlenc",0,1);
25432564
if( zFileGlob ){
25442565
char *z = mprintf("%s", zFileGlob);
25452566
dehttpize(z);
25462567
zFileGlob = z;
25472568
--- src/main.c
+++ src/main.c
@@ -173,10 +173,11 @@
173 char *zPath; /* Name of webpage being served */
174 char *zExtra; /* Extra path information past the webpage name */
175 char *zBaseURL; /* Full text of the URL being served */
176 char *zHttpsURL; /* zBaseURL translated to https: */
177 char *zTop; /* Parent directory of zPath */
 
178 const char *zContentType; /* The content type of the input HTTP request */
179 int iErrPriority; /* Priority of current error message */
180 char *zErrMsg; /* Text of an error message */
181 int sslNotAvailable; /* SSL is not available. Do not redirect to https: */
182 Blob cgiIn; /* Input to an xfer www method */
@@ -1783,10 +1784,13 @@
1783 @ <h1>Server Configuration Error</h1>
1784 @ <p>The database schema on the server is out-of-date. Please ask
1785 @ the administrator to run <b>fossil rebuild</b>.</p>
1786 }
1787 }else{
 
 
 
1788 if( g.fCgiTrace ){
1789 fossil_trace("######## Calling %s #########\n", pCmd->zName);
1790 cgi_print_all(1, 1);
1791 }
1792 #ifdef FOSSIL_ENABLE_TH1_HOOKS
@@ -1941,10 +1945,13 @@
1941 **
1942 ** debug: FILE Causing debugging information to be written
1943 ** into FILE.
1944 **
1945 ** errorlog: FILE Warnings, errors, and panics written to FILE.
 
 
 
1946 **
1947 ** redirect: REPO URL Extract the "name" query parameter and search
1948 ** REPO for a check-in or ticket that matches the
1949 ** value of "name", then redirect to URL. There
1950 ** can be multiple "redirect:" lines that are
@@ -2087,10 +2094,19 @@
2087 ** to FILENAME.
2088 */
2089 g.zErrlog = mprintf("%s", blob_str(&value));
2090 blob_reset(&value);
2091 continue;
 
 
 
 
 
 
 
 
 
2092 }
2093 if( blob_eq(&key, "HOME:") && blob_token(&line, &value) ){
2094 /* HOME: VALUE
2095 **
2096 ** Set CGI parameter "HOME" to VALUE. This is legacy. Use
@@ -2240,16 +2256,17 @@
2240 ** for requests coming from localhost, if the "localauth" setting is not
2241 ** enabled.
2242 **
2243 ** Options:
2244 ** --baseurl URL base URL (useful with reverse proxies)
 
2245 ** --files GLOB comma-separate glob patterns for static file to serve
2246 ** --localauth enable automatic login for local connections
2247 ** --host NAME specify hostname of the server
2248 ** --https signal a request coming in via https
2249 ** --in FILE Take input from FILE instead of standard input
2250 ** --ipaddr ADDR Assume the request comes from the given IP address
 
2251 ** --nocompress do not compress HTTP replies
2252 ** --nodelay omit backoffice processing if it would delay process exit
2253 ** --nojail drop root privilege but do not enter the chroot jail
2254 ** --nossl signal that no SSL connections are available
2255 ** --notfound URL use URL as "HTTP 404, object not found" page.
@@ -2297,10 +2314,11 @@
2297 noJail = find_option("nojail",0,0)!=0;
2298 allowRepoList = find_option("repolist",0,0)!=0;
2299 g.useLocalauth = find_option("localauth", 0, 0)!=0;
2300 g.sslNotAvailable = find_option("nossl", 0, 0)!=0;
2301 g.fNoHttpCompress = find_option("nocompress",0,0)!=0;
 
2302 zInFile = find_option("in",0,1);
2303 if( zInFile ){
2304 backoffice_disable();
2305 g.httpIn = fossil_fopen(zInFile, "rb");
2306 if( g.httpIn==0 ) fossil_fatal("cannot open \"%s\" for reading", zInFile);
@@ -2391,10 +2409,11 @@
2391 Th_InitTraceLog();
2392 login_set_capabilities("sx", 0);
2393 g.useLocalauth = 1;
2394 g.httpIn = stdin;
2395 g.httpOut = stdout;
 
2396 find_server_repository(2, 0);
2397 g.cgiOutput = 1;
2398 g.fNoHttpCompress = 1;
2399 g.fullHttpReply = 1;
2400 zIpAddr = cgi_ssh_remote_addr(0);
@@ -2484,11 +2503,11 @@
2484 ** by default.
2485 **
2486 ** Options:
2487 ** --baseurl URL Use URL as the base (useful for reverse proxies)
2488 ** --create Create a new REPOSITORY if it does not already exist
2489 ** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
2490 ** --files GLOBLIST Comma-separated list of glob patterns for static files
2491 ** --localauth enable automatic login for requests from localhost
2492 ** --localhost listen on 127.0.0.1 only (always true for "ui")
2493 ** --https Indicates that the input is coming through a reverse
2494 ** proxy that has already translated HTTPS into HTTP.
@@ -2497,10 +2516,11 @@
2497 ** --nocompress Do not compress HTTP replies
2498 ** --nojail Drop root privileges but do not enter the chroot jail
2499 ** --nossl signal that no SSL connections are available (Always
2500 ** set by default for the "ui" command)
2501 ** --notfound URL Redirect
 
2502 ** -P|--port TCPPORT listen to request on port TCPPORT
2503 ** --th-trace trace TH1 execution (for debugging purposes)
2504 ** --repolist If REPOSITORY is dir, URL "/" lists repos.
2505 ** --scgi Accept SCGI rather than HTTP
2506 ** --skin LABEL Use override skin LABEL
@@ -2537,10 +2557,11 @@
2537 #endif
2538
2539 if( g.zErrlog==0 ){
2540 g.zErrlog = "-";
2541 }
 
2542 zFileGlob = find_option("files-urlenc",0,1);
2543 if( zFileGlob ){
2544 char *z = mprintf("%s", zFileGlob);
2545 dehttpize(z);
2546 zFileGlob = z;
2547
--- src/main.c
+++ src/main.c
@@ -173,10 +173,11 @@
173 char *zPath; /* Name of webpage being served */
174 char *zExtra; /* Extra path information past the webpage name */
175 char *zBaseURL; /* Full text of the URL being served */
176 char *zHttpsURL; /* zBaseURL translated to https: */
177 char *zTop; /* Parent directory of zPath */
178 const char *zExtRoot; /* Document root for the /ext sub-website */
179 const char *zContentType; /* The content type of the input HTTP request */
180 int iErrPriority; /* Priority of current error message */
181 char *zErrMsg; /* Text of an error message */
182 int sslNotAvailable; /* SSL is not available. Do not redirect to https: */
183 Blob cgiIn; /* Input to an xfer www method */
@@ -1783,10 +1784,13 @@
1784 @ <h1>Server Configuration Error</h1>
1785 @ <p>The database schema on the server is out-of-date. Please ask
1786 @ the administrator to run <b>fossil rebuild</b>.</p>
1787 }
1788 }else{
1789 if( (pCmd->eCmdFlags & CMDFLAG_RAWCONTENT)==0 ){
1790 cgi_decode_post_parameters();
1791 }
1792 if( g.fCgiTrace ){
1793 fossil_trace("######## Calling %s #########\n", pCmd->zName);
1794 cgi_print_all(1, 1);
1795 }
1796 #ifdef FOSSIL_ENABLE_TH1_HOOKS
@@ -1941,10 +1945,13 @@
1945 **
1946 ** debug: FILE Causing debugging information to be written
1947 ** into FILE.
1948 **
1949 ** errorlog: FILE Warnings, errors, and panics written to FILE.
1950 **
1951 ** extroot: DIR Directory that is the root of the sub-CGI tree
1952 ** on the /ext page.
1953 **
1954 ** redirect: REPO URL Extract the "name" query parameter and search
1955 ** REPO for a check-in or ticket that matches the
1956 ** value of "name", then redirect to URL. There
1957 ** can be multiple "redirect:" lines that are
@@ -2087,10 +2094,19 @@
2094 ** to FILENAME.
2095 */
2096 g.zErrlog = mprintf("%s", blob_str(&value));
2097 blob_reset(&value);
2098 continue;
2099 }
2100 if( blob_eq(&key, "extroot:") && blob_token(&line, &value) ){
2101 /* extroot: DIRECTORY
2102 **
2103 ** Enables the /ext webpage to use sub-cgi rooted at DIRECTORY
2104 */
2105 g.zExtRoot = mprintf("%s", blob_str(&value));
2106 blob_reset(&value);
2107 continue;
2108 }
2109 if( blob_eq(&key, "HOME:") && blob_token(&line, &value) ){
2110 /* HOME: VALUE
2111 **
2112 ** Set CGI parameter "HOME" to VALUE. This is legacy. Use
@@ -2240,16 +2256,17 @@
2256 ** for requests coming from localhost, if the "localauth" setting is not
2257 ** enabled.
2258 **
2259 ** Options:
2260 ** --baseurl URL base URL (useful with reverse proxies)
2261 ** --extroot DIR document root for the /ext extension mechanism
2262 ** --files GLOB comma-separate glob patterns for static file to serve
 
2263 ** --host NAME specify hostname of the server
2264 ** --https signal a request coming in via https
2265 ** --in FILE Take input from FILE instead of standard input
2266 ** --ipaddr ADDR Assume the request comes from the given IP address
2267 ** --localauth enable automatic login for local connections
2268 ** --nocompress do not compress HTTP replies
2269 ** --nodelay omit backoffice processing if it would delay process exit
2270 ** --nojail drop root privilege but do not enter the chroot jail
2271 ** --nossl signal that no SSL connections are available
2272 ** --notfound URL use URL as "HTTP 404, object not found" page.
@@ -2297,10 +2314,11 @@
2314 noJail = find_option("nojail",0,0)!=0;
2315 allowRepoList = find_option("repolist",0,0)!=0;
2316 g.useLocalauth = find_option("localauth", 0, 0)!=0;
2317 g.sslNotAvailable = find_option("nossl", 0, 0)!=0;
2318 g.fNoHttpCompress = find_option("nocompress",0,0)!=0;
2319 g.zExtRoot = find_option("extroot",0,1);
2320 zInFile = find_option("in",0,1);
2321 if( zInFile ){
2322 backoffice_disable();
2323 g.httpIn = fossil_fopen(zInFile, "rb");
2324 if( g.httpIn==0 ) fossil_fatal("cannot open \"%s\" for reading", zInFile);
@@ -2391,10 +2409,11 @@
2409 Th_InitTraceLog();
2410 login_set_capabilities("sx", 0);
2411 g.useLocalauth = 1;
2412 g.httpIn = stdin;
2413 g.httpOut = stdout;
2414 g.zExtRoot = find_option("extroot",0,1);
2415 find_server_repository(2, 0);
2416 g.cgiOutput = 1;
2417 g.fNoHttpCompress = 1;
2418 g.fullHttpReply = 1;
2419 zIpAddr = cgi_ssh_remote_addr(0);
@@ -2484,11 +2503,11 @@
2503 ** by default.
2504 **
2505 ** Options:
2506 ** --baseurl URL Use URL as the base (useful for reverse proxies)
2507 ** --create Create a new REPOSITORY if it does not already exist
2508 ** --extroot DIR Document root for the /ext extension mechanism
2509 ** --files GLOBLIST Comma-separated list of glob patterns for static files
2510 ** --localauth enable automatic login for requests from localhost
2511 ** --localhost listen on 127.0.0.1 only (always true for "ui")
2512 ** --https Indicates that the input is coming through a reverse
2513 ** proxy that has already translated HTTPS into HTTP.
@@ -2497,10 +2516,11 @@
2516 ** --nocompress Do not compress HTTP replies
2517 ** --nojail Drop root privileges but do not enter the chroot jail
2518 ** --nossl signal that no SSL connections are available (Always
2519 ** set by default for the "ui" command)
2520 ** --notfound URL Redirect
2521 ** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
2522 ** -P|--port TCPPORT listen to request on port TCPPORT
2523 ** --th-trace trace TH1 execution (for debugging purposes)
2524 ** --repolist If REPOSITORY is dir, URL "/" lists repos.
2525 ** --scgi Accept SCGI rather than HTTP
2526 ** --skin LABEL Use override skin LABEL
@@ -2537,10 +2557,11 @@
2557 #endif
2558
2559 if( g.zErrlog==0 ){
2560 g.zErrlog = "-";
2561 }
2562 g.zExtRoot = find_option("extroot",0,1);
2563 zFileGlob = find_option("files-urlenc",0,1);
2564 if( zFileGlob ){
2565 char *z = mprintf("%s", zFileGlob);
2566 dehttpize(z);
2567 zFileGlob = z;
2568
+12
--- src/main.mk
+++ src/main.mk
@@ -51,10 +51,11 @@
5151
$(SRCDIR)/doc.c \
5252
$(SRCDIR)/encode.c \
5353
$(SRCDIR)/etag.c \
5454
$(SRCDIR)/event.c \
5555
$(SRCDIR)/export.c \
56
+ $(SRCDIR)/extcgi.c \
5657
$(SRCDIR)/file.c \
5758
$(SRCDIR)/finfo.c \
5859
$(SRCDIR)/foci.c \
5960
$(SRCDIR)/forum.c \
6061
$(SRCDIR)/fshell.c \
@@ -264,10 +265,11 @@
264265
$(OBJDIR)/doc_.c \
265266
$(OBJDIR)/encode_.c \
266267
$(OBJDIR)/etag_.c \
267268
$(OBJDIR)/event_.c \
268269
$(OBJDIR)/export_.c \
270
+ $(OBJDIR)/extcgi_.c \
269271
$(OBJDIR)/file_.c \
270272
$(OBJDIR)/finfo_.c \
271273
$(OBJDIR)/foci_.c \
272274
$(OBJDIR)/forum_.c \
273275
$(OBJDIR)/fshell_.c \
@@ -403,10 +405,11 @@
403405
$(OBJDIR)/doc.o \
404406
$(OBJDIR)/encode.o \
405407
$(OBJDIR)/etag.o \
406408
$(OBJDIR)/event.o \
407409
$(OBJDIR)/export.o \
410
+ $(OBJDIR)/extcgi.o \
408411
$(OBJDIR)/file.o \
409412
$(OBJDIR)/finfo.o \
410413
$(OBJDIR)/foci.o \
411414
$(OBJDIR)/forum.o \
412415
$(OBJDIR)/fshell.o \
@@ -740,10 +743,11 @@
740743
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
741744
$(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
742745
$(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
743746
$(OBJDIR)/event_.c:$(OBJDIR)/event.h \
744747
$(OBJDIR)/export_.c:$(OBJDIR)/export.h \
748
+ $(OBJDIR)/extcgi_.c:$(OBJDIR)/extcgi.h \
745749
$(OBJDIR)/file_.c:$(OBJDIR)/file.h \
746750
$(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
747751
$(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
748752
$(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
749753
$(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1142,10 +1146,18 @@
11421146
11431147
$(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
11441148
$(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
11451149
11461150
$(OBJDIR)/export.h: $(OBJDIR)/headers
1151
+
1152
+$(OBJDIR)/extcgi_.c: $(SRCDIR)/extcgi.c $(OBJDIR)/translate
1153
+ $(OBJDIR)/translate $(SRCDIR)/extcgi.c >$@
1154
+
1155
+$(OBJDIR)/extcgi.o: $(OBJDIR)/extcgi_.c $(OBJDIR)/extcgi.h $(SRCDIR)/config.h
1156
+ $(XTCC) -o $(OBJDIR)/extcgi.o -c $(OBJDIR)/extcgi_.c
1157
+
1158
+$(OBJDIR)/extcgi.h: $(OBJDIR)/headers
11471159
11481160
$(OBJDIR)/file_.c: $(SRCDIR)/file.c $(OBJDIR)/translate
11491161
$(OBJDIR)/translate $(SRCDIR)/file.c >$@
11501162
11511163
$(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
11521164
--- src/main.mk
+++ src/main.mk
@@ -51,10 +51,11 @@
51 $(SRCDIR)/doc.c \
52 $(SRCDIR)/encode.c \
53 $(SRCDIR)/etag.c \
54 $(SRCDIR)/event.c \
55 $(SRCDIR)/export.c \
 
56 $(SRCDIR)/file.c \
57 $(SRCDIR)/finfo.c \
58 $(SRCDIR)/foci.c \
59 $(SRCDIR)/forum.c \
60 $(SRCDIR)/fshell.c \
@@ -264,10 +265,11 @@
264 $(OBJDIR)/doc_.c \
265 $(OBJDIR)/encode_.c \
266 $(OBJDIR)/etag_.c \
267 $(OBJDIR)/event_.c \
268 $(OBJDIR)/export_.c \
 
269 $(OBJDIR)/file_.c \
270 $(OBJDIR)/finfo_.c \
271 $(OBJDIR)/foci_.c \
272 $(OBJDIR)/forum_.c \
273 $(OBJDIR)/fshell_.c \
@@ -403,10 +405,11 @@
403 $(OBJDIR)/doc.o \
404 $(OBJDIR)/encode.o \
405 $(OBJDIR)/etag.o \
406 $(OBJDIR)/event.o \
407 $(OBJDIR)/export.o \
 
408 $(OBJDIR)/file.o \
409 $(OBJDIR)/finfo.o \
410 $(OBJDIR)/foci.o \
411 $(OBJDIR)/forum.o \
412 $(OBJDIR)/fshell.o \
@@ -740,10 +743,11 @@
740 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
741 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
742 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
743 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
744 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
 
745 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
746 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
747 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
748 $(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
749 $(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1142,10 +1146,18 @@
1142
1143 $(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
1144 $(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
1145
1146 $(OBJDIR)/export.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1147
1148 $(OBJDIR)/file_.c: $(SRCDIR)/file.c $(OBJDIR)/translate
1149 $(OBJDIR)/translate $(SRCDIR)/file.c >$@
1150
1151 $(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
1152
--- src/main.mk
+++ src/main.mk
@@ -51,10 +51,11 @@
51 $(SRCDIR)/doc.c \
52 $(SRCDIR)/encode.c \
53 $(SRCDIR)/etag.c \
54 $(SRCDIR)/event.c \
55 $(SRCDIR)/export.c \
56 $(SRCDIR)/extcgi.c \
57 $(SRCDIR)/file.c \
58 $(SRCDIR)/finfo.c \
59 $(SRCDIR)/foci.c \
60 $(SRCDIR)/forum.c \
61 $(SRCDIR)/fshell.c \
@@ -264,10 +265,11 @@
265 $(OBJDIR)/doc_.c \
266 $(OBJDIR)/encode_.c \
267 $(OBJDIR)/etag_.c \
268 $(OBJDIR)/event_.c \
269 $(OBJDIR)/export_.c \
270 $(OBJDIR)/extcgi_.c \
271 $(OBJDIR)/file_.c \
272 $(OBJDIR)/finfo_.c \
273 $(OBJDIR)/foci_.c \
274 $(OBJDIR)/forum_.c \
275 $(OBJDIR)/fshell_.c \
@@ -403,10 +405,11 @@
405 $(OBJDIR)/doc.o \
406 $(OBJDIR)/encode.o \
407 $(OBJDIR)/etag.o \
408 $(OBJDIR)/event.o \
409 $(OBJDIR)/export.o \
410 $(OBJDIR)/extcgi.o \
411 $(OBJDIR)/file.o \
412 $(OBJDIR)/finfo.o \
413 $(OBJDIR)/foci.o \
414 $(OBJDIR)/forum.o \
415 $(OBJDIR)/fshell.o \
@@ -740,10 +743,11 @@
743 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
744 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
745 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
746 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
747 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
748 $(OBJDIR)/extcgi_.c:$(OBJDIR)/extcgi.h \
749 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
750 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
751 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
752 $(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
753 $(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1142,10 +1146,18 @@
1146
1147 $(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
1148 $(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
1149
1150 $(OBJDIR)/export.h: $(OBJDIR)/headers
1151
1152 $(OBJDIR)/extcgi_.c: $(SRCDIR)/extcgi.c $(OBJDIR)/translate
1153 $(OBJDIR)/translate $(SRCDIR)/extcgi.c >$@
1154
1155 $(OBJDIR)/extcgi.o: $(OBJDIR)/extcgi_.c $(OBJDIR)/extcgi.h $(SRCDIR)/config.h
1156 $(XTCC) -o $(OBJDIR)/extcgi.o -c $(OBJDIR)/extcgi_.c
1157
1158 $(OBJDIR)/extcgi.h: $(OBJDIR)/headers
1159
1160 $(OBJDIR)/file_.c: $(SRCDIR)/file.c $(OBJDIR)/translate
1161 $(OBJDIR)/translate $(SRCDIR)/file.c >$@
1162
1163 $(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
1164
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -61,10 +61,11 @@
6161
dispatch
6262
doc
6363
encode
6464
etag
6565
event
66
+ extcgi
6667
export
6768
file
6869
finfo
6970
foci
7071
forum
7172
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -61,10 +61,11 @@
61 dispatch
62 doc
63 encode
64 etag
65 event
 
66 export
67 file
68 finfo
69 foci
70 forum
71
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -61,10 +61,11 @@
61 dispatch
62 doc
63 encode
64 etag
65 event
66 extcgi
67 export
68 file
69 finfo
70 foci
71 forum
72
--- src/mkindex.c
+++ src/mkindex.c
@@ -89,10 +89,11 @@
8989
#define CMDFLAG_COMMAND 0x0010 /* A command */
9090
#define CMDFLAG_SETTING 0x0020 /* A setting */
9191
#define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
9292
#define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
9393
#define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
94
+#define CMDFLAG_RAWCONTENT 0x0200 /* Do not interpret webpage content */
9495
/**************************************************************************/
9596
9697
/*
9798
** Each entry looks like this:
9899
*/
@@ -236,10 +237,12 @@
236237
aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
237238
aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
238239
}else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
239240
aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
240241
aEntry[nUsed].eType |= CMDFLAG_TEST;
242
+ }else if( j==11 && strncmp(&zLine[i], "raw-content", j)==0 ){
243
+ aEntry[nUsed].eType |= CMDFLAG_RAWCONTENT;
241244
}else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
242245
aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
243246
aEntry[nUsed].iWidth = 0;
244247
aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
245248
}else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
246249
--- src/mkindex.c
+++ src/mkindex.c
@@ -89,10 +89,11 @@
89 #define CMDFLAG_COMMAND 0x0010 /* A command */
90 #define CMDFLAG_SETTING 0x0020 /* A setting */
91 #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
92 #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
93 #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
 
94 /**************************************************************************/
95
96 /*
97 ** Each entry looks like this:
98 */
@@ -236,10 +237,12 @@
236 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
237 aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
238 }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
239 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
240 aEntry[nUsed].eType |= CMDFLAG_TEST;
 
 
241 }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
242 aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
243 aEntry[nUsed].iWidth = 0;
244 aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
245 }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
246
--- src/mkindex.c
+++ src/mkindex.c
@@ -89,10 +89,11 @@
89 #define CMDFLAG_COMMAND 0x0010 /* A command */
90 #define CMDFLAG_SETTING 0x0020 /* A setting */
91 #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
92 #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
93 #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
94 #define CMDFLAG_RAWCONTENT 0x0200 /* Do not interpret webpage content */
95 /**************************************************************************/
96
97 /*
98 ** Each entry looks like this:
99 */
@@ -236,10 +237,12 @@
237 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
238 aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
239 }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
240 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
241 aEntry[nUsed].eType |= CMDFLAG_TEST;
242 }else if( j==11 && strncmp(&zLine[i], "raw-content", j)==0 ){
243 aEntry[nUsed].eType |= CMDFLAG_RAWCONTENT;
244 }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
245 aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
246 aEntry[nUsed].iWidth = 0;
247 aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
248 }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
249
+12 -2
--- src/popen.c
+++ src/popen.c
@@ -121,11 +121,17 @@
121121
** Note that *ppIn is an unbuffered file descriptor, not a FILE.
122122
** The process ID of the child is written into *pChildPid.
123123
**
124124
** Return the number of errors.
125125
*/
126
-int popen2(const char *zCmd, int *pfdIn, FILE **ppOut, int *pChildPid){
126
+int popen2(
127
+ const char *zCmd, /* Command to run in the child process */
128
+ int *pfdIn, /* Read from child using this file descriptor */
129
+ FILE **ppOut, /* Write to child using this file descriptor */
130
+ int *pChildPid, /* PID of the child process */
131
+ int bDirect /* 0: run zCmd as a shell cmd. 1: run directly */
132
+){
127133
#ifdef _WIN32
128134
HANDLE hStdinRd, hStdinWr, hStdoutRd, hStdoutWr, hStderr;
129135
SECURITY_ATTRIBUTES saAttr;
130136
DWORD childPid = 0;
131137
int fd;
@@ -189,11 +195,15 @@
189195
close(1);
190196
fd = dup(pin[1]);
191197
if( fd!=1 ) nErr++;
192198
close(pin[0]);
193199
close(pin[1]);
194
- execl("/bin/sh", "/bin/sh", "-c", zCmd, (char*)0);
200
+ if( bDirect ){
201
+ execl(zCmd, zCmd, (char*)0);
202
+ }else{
203
+ execl("/bin/sh", "/bin/sh", "-c", zCmd, (char*)0);
204
+ }
195205
return 1;
196206
}else{
197207
/* This is the parent process */
198208
close(pin[1]);
199209
*pfdIn = pin[0];
200210
--- src/popen.c
+++ src/popen.c
@@ -121,11 +121,17 @@
121 ** Note that *ppIn is an unbuffered file descriptor, not a FILE.
122 ** The process ID of the child is written into *pChildPid.
123 **
124 ** Return the number of errors.
125 */
126 int popen2(const char *zCmd, int *pfdIn, FILE **ppOut, int *pChildPid){
 
 
 
 
 
 
127 #ifdef _WIN32
128 HANDLE hStdinRd, hStdinWr, hStdoutRd, hStdoutWr, hStderr;
129 SECURITY_ATTRIBUTES saAttr;
130 DWORD childPid = 0;
131 int fd;
@@ -189,11 +195,15 @@
189 close(1);
190 fd = dup(pin[1]);
191 if( fd!=1 ) nErr++;
192 close(pin[0]);
193 close(pin[1]);
194 execl("/bin/sh", "/bin/sh", "-c", zCmd, (char*)0);
 
 
 
 
195 return 1;
196 }else{
197 /* This is the parent process */
198 close(pin[1]);
199 *pfdIn = pin[0];
200
--- src/popen.c
+++ src/popen.c
@@ -121,11 +121,17 @@
121 ** Note that *ppIn is an unbuffered file descriptor, not a FILE.
122 ** The process ID of the child is written into *pChildPid.
123 **
124 ** Return the number of errors.
125 */
126 int popen2(
127 const char *zCmd, /* Command to run in the child process */
128 int *pfdIn, /* Read from child using this file descriptor */
129 FILE **ppOut, /* Write to child using this file descriptor */
130 int *pChildPid, /* PID of the child process */
131 int bDirect /* 0: run zCmd as a shell cmd. 1: run directly */
132 ){
133 #ifdef _WIN32
134 HANDLE hStdinRd, hStdinWr, hStdoutRd, hStdoutWr, hStderr;
135 SECURITY_ATTRIBUTES saAttr;
136 DWORD childPid = 0;
137 int fd;
@@ -189,11 +195,15 @@
195 close(1);
196 fd = dup(pin[1]);
197 if( fd!=1 ) nErr++;
198 close(pin[0]);
199 close(pin[1]);
200 if( bDirect ){
201 execl(zCmd, zCmd, (char*)0);
202 }else{
203 execl("/bin/sh", "/bin/sh", "-c", zCmd, (char*)0);
204 }
205 return 1;
206 }else{
207 /* This is the parent process */
208 close(pin[1]);
209 *pfdIn = pin[0];
210
+1 -1
--- src/xfer.c
+++ src/xfer.c
@@ -1120,11 +1120,11 @@
11201120
** of application/x-fossil or application/x-fossil-debug to this page,
11211121
** regardless of what path was specified in the HTTP header. This allows
11221122
** clone clients to specify a URL that omits default pathnames, such
11231123
** as "http://fossil-scm.org/" instead of "http://fossil-scm.org/index.cgi".
11241124
**
1125
-** WEBPAGE: xfer
1125
+** WEBPAGE: xfer raw-content
11261126
**
11271127
** This is the transfer handler on the server side. The transfer
11281128
** message has been uncompressed and placed in the g.cgiIn blob.
11291129
** Process this message and form an appropriate reply.
11301130
*/
11311131
--- src/xfer.c
+++ src/xfer.c
@@ -1120,11 +1120,11 @@
1120 ** of application/x-fossil or application/x-fossil-debug to this page,
1121 ** regardless of what path was specified in the HTTP header. This allows
1122 ** clone clients to specify a URL that omits default pathnames, such
1123 ** as "http://fossil-scm.org/" instead of "http://fossil-scm.org/index.cgi".
1124 **
1125 ** WEBPAGE: xfer
1126 **
1127 ** This is the transfer handler on the server side. The transfer
1128 ** message has been uncompressed and placed in the g.cgiIn blob.
1129 ** Process this message and form an appropriate reply.
1130 */
1131
--- src/xfer.c
+++ src/xfer.c
@@ -1120,11 +1120,11 @@
1120 ** of application/x-fossil or application/x-fossil-debug to this page,
1121 ** regardless of what path was specified in the HTTP header. This allows
1122 ** clone clients to specify a URL that omits default pathnames, such
1123 ** as "http://fossil-scm.org/" instead of "http://fossil-scm.org/index.cgi".
1124 **
1125 ** WEBPAGE: xfer raw-content
1126 **
1127 ** This is the transfer handler on the server side. The transfer
1128 ** message has been uncompressed and placed in the g.cgiIn blob.
1129 ** Process this message and form an appropriate reply.
1130 */
1131
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
2828
2929
SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
3030
3131
SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
3232
33
-SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
33
+SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3434
35
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
35
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3636
3737
3838
RC=$(DMDIR)\bin\rcc
3939
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
4040
@@ -49,11 +49,11 @@
4949
5050
$(OBJDIR)\fossil.res: $B\win\fossil.rc
5151
$(RC) $(RCFLAGS) -o$@ $**
5252
5353
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54
- +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
54
+ +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5555
+echo fossil >> $@
5656
+echo fossil >> $@
5757
+echo $(LIBS) >> $@
5858
+echo. >> $@
5959
+echo fossil >> $@
@@ -350,10 +350,16 @@
350350
$(OBJDIR)\export$O : export_.c export.h
351351
$(TCC) -o$@ -c export_.c
352352
353353
export_.c : $(SRCDIR)\export.c
354354
+translate$E $** > $@
355
+
356
+$(OBJDIR)\extcgi$O : extcgi_.c extcgi.h
357
+ $(TCC) -o$@ -c extcgi_.c
358
+
359
+extcgi_.c : $(SRCDIR)\extcgi.c
360
+ +translate$E $** > $@
355361
356362
$(OBJDIR)\file$O : file_.c file.h
357363
$(TCC) -o$@ -c file_.c
358364
359365
file_.c : $(SRCDIR)\file.c
@@ -952,7 +958,7 @@
952958
953959
zip_.c : $(SRCDIR)\zip.c
954960
+translate$E $** > $@
955961
956962
headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
957
- +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
963
+ +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
958964
@copy /Y nul: headers
959965
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -350,10 +350,16 @@
350 $(OBJDIR)\export$O : export_.c export.h
351 $(TCC) -o$@ -c export_.c
352
353 export_.c : $(SRCDIR)\export.c
354 +translate$E $** > $@
 
 
 
 
 
 
355
356 $(OBJDIR)\file$O : file_.c file.h
357 $(TCC) -o$@ -c file_.c
358
359 file_.c : $(SRCDIR)\file.c
@@ -952,7 +958,7 @@
952
953 zip_.c : $(SRCDIR)\zip.c
954 +translate$E $** > $@
955
956 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
957 +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
958 @copy /Y nul: headers
959
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -350,10 +350,16 @@
350 $(OBJDIR)\export$O : export_.c export.h
351 $(TCC) -o$@ -c export_.c
352
353 export_.c : $(SRCDIR)\export.c
354 +translate$E $** > $@
355
356 $(OBJDIR)\extcgi$O : extcgi_.c extcgi.h
357 $(TCC) -o$@ -c extcgi_.c
358
359 extcgi_.c : $(SRCDIR)\extcgi.c
360 +translate$E $** > $@
361
362 $(OBJDIR)\file$O : file_.c file.h
363 $(TCC) -o$@ -c file_.c
364
365 file_.c : $(SRCDIR)\file.c
@@ -952,7 +958,7 @@
958
959 zip_.c : $(SRCDIR)\zip.c
960 +translate$E $** > $@
961
962 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
963 +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
964 @copy /Y nul: headers
965
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -473,10 +473,11 @@
473473
$(SRCDIR)/doc.c \
474474
$(SRCDIR)/encode.c \
475475
$(SRCDIR)/etag.c \
476476
$(SRCDIR)/event.c \
477477
$(SRCDIR)/export.c \
478
+ $(SRCDIR)/extcgi.c \
478479
$(SRCDIR)/file.c \
479480
$(SRCDIR)/finfo.c \
480481
$(SRCDIR)/foci.c \
481482
$(SRCDIR)/forum.c \
482483
$(SRCDIR)/fshell.c \
@@ -686,10 +687,11 @@
686687
$(OBJDIR)/doc_.c \
687688
$(OBJDIR)/encode_.c \
688689
$(OBJDIR)/etag_.c \
689690
$(OBJDIR)/event_.c \
690691
$(OBJDIR)/export_.c \
692
+ $(OBJDIR)/extcgi_.c \
691693
$(OBJDIR)/file_.c \
692694
$(OBJDIR)/finfo_.c \
693695
$(OBJDIR)/foci_.c \
694696
$(OBJDIR)/forum_.c \
695697
$(OBJDIR)/fshell_.c \
@@ -825,10 +827,11 @@
825827
$(OBJDIR)/doc.o \
826828
$(OBJDIR)/encode.o \
827829
$(OBJDIR)/etag.o \
828830
$(OBJDIR)/event.o \
829831
$(OBJDIR)/export.o \
832
+ $(OBJDIR)/extcgi.o \
830833
$(OBJDIR)/file.o \
831834
$(OBJDIR)/finfo.o \
832835
$(OBJDIR)/foci.o \
833836
$(OBJDIR)/forum.o \
834837
$(OBJDIR)/fshell.o \
@@ -1184,10 +1187,11 @@
11841187
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
11851188
$(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
11861189
$(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
11871190
$(OBJDIR)/event_.c:$(OBJDIR)/event.h \
11881191
$(OBJDIR)/export_.c:$(OBJDIR)/export.h \
1192
+ $(OBJDIR)/extcgi_.c:$(OBJDIR)/extcgi.h \
11891193
$(OBJDIR)/file_.c:$(OBJDIR)/file.h \
11901194
$(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
11911195
$(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
11921196
$(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
11931197
$(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1588,10 +1592,18 @@
15881592
15891593
$(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
15901594
$(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
15911595
15921596
$(OBJDIR)/export.h: $(OBJDIR)/headers
1597
+
1598
+$(OBJDIR)/extcgi_.c: $(SRCDIR)/extcgi.c $(TRANSLATE)
1599
+ $(TRANSLATE) $(SRCDIR)/extcgi.c >$@
1600
+
1601
+$(OBJDIR)/extcgi.o: $(OBJDIR)/extcgi_.c $(OBJDIR)/extcgi.h $(SRCDIR)/config.h
1602
+ $(XTCC) -o $(OBJDIR)/extcgi.o -c $(OBJDIR)/extcgi_.c
1603
+
1604
+$(OBJDIR)/extcgi.h: $(OBJDIR)/headers
15931605
15941606
$(OBJDIR)/file_.c: $(SRCDIR)/file.c $(TRANSLATE)
15951607
$(TRANSLATE) $(SRCDIR)/file.c >$@
15961608
15971609
$(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
15981610
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -473,10 +473,11 @@
473 $(SRCDIR)/doc.c \
474 $(SRCDIR)/encode.c \
475 $(SRCDIR)/etag.c \
476 $(SRCDIR)/event.c \
477 $(SRCDIR)/export.c \
 
478 $(SRCDIR)/file.c \
479 $(SRCDIR)/finfo.c \
480 $(SRCDIR)/foci.c \
481 $(SRCDIR)/forum.c \
482 $(SRCDIR)/fshell.c \
@@ -686,10 +687,11 @@
686 $(OBJDIR)/doc_.c \
687 $(OBJDIR)/encode_.c \
688 $(OBJDIR)/etag_.c \
689 $(OBJDIR)/event_.c \
690 $(OBJDIR)/export_.c \
 
691 $(OBJDIR)/file_.c \
692 $(OBJDIR)/finfo_.c \
693 $(OBJDIR)/foci_.c \
694 $(OBJDIR)/forum_.c \
695 $(OBJDIR)/fshell_.c \
@@ -825,10 +827,11 @@
825 $(OBJDIR)/doc.o \
826 $(OBJDIR)/encode.o \
827 $(OBJDIR)/etag.o \
828 $(OBJDIR)/event.o \
829 $(OBJDIR)/export.o \
 
830 $(OBJDIR)/file.o \
831 $(OBJDIR)/finfo.o \
832 $(OBJDIR)/foci.o \
833 $(OBJDIR)/forum.o \
834 $(OBJDIR)/fshell.o \
@@ -1184,10 +1187,11 @@
1184 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
1185 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
1186 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
1187 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
1188 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
 
1189 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
1190 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
1191 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
1192 $(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
1193 $(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1588,10 +1592,18 @@
1588
1589 $(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
1590 $(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
1591
1592 $(OBJDIR)/export.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1593
1594 $(OBJDIR)/file_.c: $(SRCDIR)/file.c $(TRANSLATE)
1595 $(TRANSLATE) $(SRCDIR)/file.c >$@
1596
1597 $(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
1598
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -473,10 +473,11 @@
473 $(SRCDIR)/doc.c \
474 $(SRCDIR)/encode.c \
475 $(SRCDIR)/etag.c \
476 $(SRCDIR)/event.c \
477 $(SRCDIR)/export.c \
478 $(SRCDIR)/extcgi.c \
479 $(SRCDIR)/file.c \
480 $(SRCDIR)/finfo.c \
481 $(SRCDIR)/foci.c \
482 $(SRCDIR)/forum.c \
483 $(SRCDIR)/fshell.c \
@@ -686,10 +687,11 @@
687 $(OBJDIR)/doc_.c \
688 $(OBJDIR)/encode_.c \
689 $(OBJDIR)/etag_.c \
690 $(OBJDIR)/event_.c \
691 $(OBJDIR)/export_.c \
692 $(OBJDIR)/extcgi_.c \
693 $(OBJDIR)/file_.c \
694 $(OBJDIR)/finfo_.c \
695 $(OBJDIR)/foci_.c \
696 $(OBJDIR)/forum_.c \
697 $(OBJDIR)/fshell_.c \
@@ -825,10 +827,11 @@
827 $(OBJDIR)/doc.o \
828 $(OBJDIR)/encode.o \
829 $(OBJDIR)/etag.o \
830 $(OBJDIR)/event.o \
831 $(OBJDIR)/export.o \
832 $(OBJDIR)/extcgi.o \
833 $(OBJDIR)/file.o \
834 $(OBJDIR)/finfo.o \
835 $(OBJDIR)/foci.o \
836 $(OBJDIR)/forum.o \
837 $(OBJDIR)/fshell.o \
@@ -1184,10 +1187,11 @@
1187 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
1188 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
1189 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
1190 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
1191 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
1192 $(OBJDIR)/extcgi_.c:$(OBJDIR)/extcgi.h \
1193 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
1194 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
1195 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
1196 $(OBJDIR)/forum_.c:$(OBJDIR)/forum.h \
1197 $(OBJDIR)/fshell_.c:$(OBJDIR)/fshell.h \
@@ -1588,10 +1592,18 @@
1592
1593 $(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h
1594 $(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c
1595
1596 $(OBJDIR)/export.h: $(OBJDIR)/headers
1597
1598 $(OBJDIR)/extcgi_.c: $(SRCDIR)/extcgi.c $(TRANSLATE)
1599 $(TRANSLATE) $(SRCDIR)/extcgi.c >$@
1600
1601 $(OBJDIR)/extcgi.o: $(OBJDIR)/extcgi_.c $(OBJDIR)/extcgi.h $(SRCDIR)/config.h
1602 $(XTCC) -o $(OBJDIR)/extcgi.o -c $(OBJDIR)/extcgi_.c
1603
1604 $(OBJDIR)/extcgi.h: $(OBJDIR)/headers
1605
1606 $(OBJDIR)/file_.c: $(SRCDIR)/file.c $(TRANSLATE)
1607 $(TRANSLATE) $(SRCDIR)/file.c >$@
1608
1609 $(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h
1610
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -379,10 +379,11 @@
379379
doc_.c \
380380
encode_.c \
381381
etag_.c \
382382
event_.c \
383383
export_.c \
384
+ extcgi_.c \
384385
file_.c \
385386
finfo_.c \
386387
foci_.c \
387388
forum_.c \
388389
fshell_.c \
@@ -591,10 +592,11 @@
591592
$(OX)\doc$O \
592593
$(OX)\encode$O \
593594
$(OX)\etag$O \
594595
$(OX)\event$O \
595596
$(OX)\export$O \
597
+ $(OX)\extcgi$O \
596598
$(OX)\file$O \
597599
$(OX)\finfo$O \
598600
$(OX)\foci$O \
599601
$(OX)\forum$O \
600602
$(OX)\fshell$O \
@@ -792,10 +794,11 @@
792794
echo $(OX)\doc.obj >> $@
793795
echo $(OX)\encode.obj >> $@
794796
echo $(OX)\etag.obj >> $@
795797
echo $(OX)\event.obj >> $@
796798
echo $(OX)\export.obj >> $@
799
+ echo $(OX)\extcgi.obj >> $@
797800
echo $(OX)\file.obj >> $@
798801
echo $(OX)\finfo.obj >> $@
799802
echo $(OX)\foci.obj >> $@
800803
echo $(OX)\forum.obj >> $@
801804
echo $(OX)\fshell.obj >> $@
@@ -1236,10 +1239,16 @@
12361239
$(OX)\export$O : export_.c export.h
12371240
$(TCC) /Fo$@ -c export_.c
12381241
12391242
export_.c : $(SRCDIR)\export.c
12401243
translate$E $** > $@
1244
+
1245
+$(OX)\extcgi$O : extcgi_.c extcgi.h
1246
+ $(TCC) /Fo$@ -c extcgi_.c
1247
+
1248
+extcgi_.c : $(SRCDIR)\extcgi.c
1249
+ translate$E $** > $@
12411250
12421251
$(OX)\file$O : file_.c file.h
12431252
$(TCC) /Fo$@ -c file_.c
12441253
12451254
file_.c : $(SRCDIR)\file.c
@@ -1878,10 +1887,11 @@
18781887
doc_.c:doc.h \
18791888
encode_.c:encode.h \
18801889
etag_.c:etag.h \
18811890
event_.c:event.h \
18821891
export_.c:export.h \
1892
+ extcgi_.c:extcgi.h \
18831893
file_.c:file.h \
18841894
finfo_.c:finfo.h \
18851895
foci_.c:foci.h \
18861896
forum_.c:forum.h \
18871897
fshell_.c:fshell.h \
18881898
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -379,10 +379,11 @@
379 doc_.c \
380 encode_.c \
381 etag_.c \
382 event_.c \
383 export_.c \
 
384 file_.c \
385 finfo_.c \
386 foci_.c \
387 forum_.c \
388 fshell_.c \
@@ -591,10 +592,11 @@
591 $(OX)\doc$O \
592 $(OX)\encode$O \
593 $(OX)\etag$O \
594 $(OX)\event$O \
595 $(OX)\export$O \
 
596 $(OX)\file$O \
597 $(OX)\finfo$O \
598 $(OX)\foci$O \
599 $(OX)\forum$O \
600 $(OX)\fshell$O \
@@ -792,10 +794,11 @@
792 echo $(OX)\doc.obj >> $@
793 echo $(OX)\encode.obj >> $@
794 echo $(OX)\etag.obj >> $@
795 echo $(OX)\event.obj >> $@
796 echo $(OX)\export.obj >> $@
 
797 echo $(OX)\file.obj >> $@
798 echo $(OX)\finfo.obj >> $@
799 echo $(OX)\foci.obj >> $@
800 echo $(OX)\forum.obj >> $@
801 echo $(OX)\fshell.obj >> $@
@@ -1236,10 +1239,16 @@
1236 $(OX)\export$O : export_.c export.h
1237 $(TCC) /Fo$@ -c export_.c
1238
1239 export_.c : $(SRCDIR)\export.c
1240 translate$E $** > $@
 
 
 
 
 
 
1241
1242 $(OX)\file$O : file_.c file.h
1243 $(TCC) /Fo$@ -c file_.c
1244
1245 file_.c : $(SRCDIR)\file.c
@@ -1878,10 +1887,11 @@
1878 doc_.c:doc.h \
1879 encode_.c:encode.h \
1880 etag_.c:etag.h \
1881 event_.c:event.h \
1882 export_.c:export.h \
 
1883 file_.c:file.h \
1884 finfo_.c:finfo.h \
1885 foci_.c:foci.h \
1886 forum_.c:forum.h \
1887 fshell_.c:fshell.h \
1888
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -379,10 +379,11 @@
379 doc_.c \
380 encode_.c \
381 etag_.c \
382 event_.c \
383 export_.c \
384 extcgi_.c \
385 file_.c \
386 finfo_.c \
387 foci_.c \
388 forum_.c \
389 fshell_.c \
@@ -591,10 +592,11 @@
592 $(OX)\doc$O \
593 $(OX)\encode$O \
594 $(OX)\etag$O \
595 $(OX)\event$O \
596 $(OX)\export$O \
597 $(OX)\extcgi$O \
598 $(OX)\file$O \
599 $(OX)\finfo$O \
600 $(OX)\foci$O \
601 $(OX)\forum$O \
602 $(OX)\fshell$O \
@@ -792,10 +794,11 @@
794 echo $(OX)\doc.obj >> $@
795 echo $(OX)\encode.obj >> $@
796 echo $(OX)\etag.obj >> $@
797 echo $(OX)\event.obj >> $@
798 echo $(OX)\export.obj >> $@
799 echo $(OX)\extcgi.obj >> $@
800 echo $(OX)\file.obj >> $@
801 echo $(OX)\finfo.obj >> $@
802 echo $(OX)\foci.obj >> $@
803 echo $(OX)\forum.obj >> $@
804 echo $(OX)\fshell.obj >> $@
@@ -1236,10 +1239,16 @@
1239 $(OX)\export$O : export_.c export.h
1240 $(TCC) /Fo$@ -c export_.c
1241
1242 export_.c : $(SRCDIR)\export.c
1243 translate$E $** > $@
1244
1245 $(OX)\extcgi$O : extcgi_.c extcgi.h
1246 $(TCC) /Fo$@ -c extcgi_.c
1247
1248 extcgi_.c : $(SRCDIR)\extcgi.c
1249 translate$E $** > $@
1250
1251 $(OX)\file$O : file_.c file.h
1252 $(TCC) /Fo$@ -c file_.c
1253
1254 file_.c : $(SRCDIR)\file.c
@@ -1878,10 +1887,11 @@
1887 doc_.c:doc.h \
1888 encode_.c:encode.h \
1889 etag_.c:etag.h \
1890 event_.c:event.h \
1891 export_.c:export.h \
1892 extcgi_.c:extcgi.h \
1893 file_.c:file.h \
1894 finfo_.c:finfo.h \
1895 foci_.c:foci.h \
1896 forum_.c:forum.h \
1897 fshell_.c:fshell.h \
1898

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button