Fossil SCM

Add the ability to extend a Fossil server using CGI. This is a refactor of the prior sub-cgi branch.

drh 2019-07-25 17:07 trunk
Commit ed2def5ffb96d74ce462ce8f5ad0df2acd2c387e6c6eba0caf678f0eaf63ac71
+13 -9
--- 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
@@ -995,14 +1000,10 @@
9951000
process_multipart_form_data(z, len);
9961001
}
9971002
}else if( fossil_strcmp(zType, "application/x-fossil")==0 ){
9981003
blob_read_from_channel(&g.cgiIn, g.httpIn, len);
9991004
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);
10041005
}
10051006
#ifdef FOSSIL_ENABLE_JSON
10061007
else if( fossil_strcmp(zType, "application/json")
10071008
|| fossil_strcmp(zType,"text/plain")/*assume this MIGHT be JSON*/
10081009
|| fossil_strcmp(zType,"application/javascript")){
@@ -1024,10 +1025,13 @@
10241025
need to process QUERY_STRING _after_ reading the POST data.
10251026
*/
10261027
cgi_set_content_type(json_guess_content_type());
10271028
}
10281029
#endif /* FOSSIL_ENABLE_JSON */
1030
+ else{
1031
+ blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1032
+ }
10291033
}
10301034
10311035
}
10321036
10331037
/*
10341038
--- 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
@@ -995,14 +1000,10 @@
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,10 +1025,13 @@
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
--- 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
@@ -995,14 +1000,10 @@
1000 process_multipart_form_data(z, len);
1001 }
1002 }else if( fossil_strcmp(zType, "application/x-fossil")==0 ){
1003 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1004 blob_uncompress(&g.cgiIn, &g.cgiIn);
 
 
 
 
1005 }
1006 #ifdef FOSSIL_ENABLE_JSON
1007 else if( fossil_strcmp(zType, "application/json")
1008 || fossil_strcmp(zType,"text/plain")/*assume this MIGHT be JSON*/
1009 || fossil_strcmp(zType,"application/javascript")){
@@ -1024,10 +1025,13 @@
1025 need to process QUERY_STRING _after_ reading the POST data.
1026 */
1027 cgi_set_content_type(json_guess_content_type());
1028 }
1029 #endif /* FOSSIL_ENABLE_JSON */
1030 else{
1031 blob_read_from_channel(&g.cgiIn, g.httpIn, len);
1032 }
1033 }
1034
1035 }
1036
1037 /*
1038
+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
+12
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,12 @@
1
+/* }
2
+ }SER",
3
+ if( zName[0]=='.' || zName[0]=='-'/* }
4
+ }SER",
5
+ zPath[i-1]=='/'* }
6
+ }SER",
7
+ }
8
+ }g.zPathint nName /* Length of zNnName = (int)strlen(zName%h(zFailReason)
9
+ }
10
+ return;
11
+}
12
+int nPathLength of zPathnPath = nRoot+nName+1zLine[i] = 0"HTTP_ACCEPT_ENCODING",
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/extcgi.c
+++ b/src/extcgi.c
@@ -0,0 +1,12 @@
1 /* }
2 }SER",
3 if( zName[0]=='.' || zName[0]=='-'/* }
4 }SER",
5 zPath[i-1]=='/'* }
6 }SER",
7 }
8 }g.zPathint nName /* Length of zNnName = (int)strlen(zName%h(zFailReason)
9 }
10 return;
11 }
12 int nPathLength of zPathnPath = nRoot+nName+1zLine[i] = 0"HTTP_ACCEPT_ENCODING",
--- 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
+11 -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 */
@@ -1941,10 +1942,13 @@
19411942
**
19421943
** debug: FILE Causing debugging information to be written
19431944
** into FILE.
19441945
**
19451946
** errorlog: FILE Warnings, errors, and panics written to FILE.
1947
+**
1948
+** extroot: DIR Directory that is the root of the sub-CGI tree
1949
+** on the /ext page.
19461950
**
19471951
** redirect: REPO URL Extract the "name" query parameter and search
19481952
** REPO for a check-in or ticket that matches the
19491953
** value of "name", then redirect to URL. There
19501954
** can be multiple "redirect:" lines that are
@@ -2240,16 +2244,17 @@
22402244
** for requests coming from localhost, if the "localauth" setting is not
22412245
** enabled.
22422246
**
22432247
** Options:
22442248
** --baseurl URL base URL (useful with reverse proxies)
2249
+** --extroot DIR document root for the /ext extension mechanism
22452250
** --files GLOB comma-separate glob patterns for static file to serve
2246
-** --localauth enable automatic login for local connections
22472251
** --host NAME specify hostname of the server
22482252
** --https signal a request coming in via https
22492253
** --in FILE Take input from FILE instead of standard input
22502254
** --ipaddr ADDR Assume the request comes from the given IP address
2255
+** --localauth enable automatic login for local connections
22512256
** --nocompress do not compress HTTP replies
22522257
** --nodelay omit backoffice processing if it would delay process exit
22532258
** --nojail drop root privilege but do not enter the chroot jail
22542259
** --nossl signal that no SSL connections are available
22552260
** --notfound URL use URL as "HTTP 404, object not found" page.
@@ -2297,10 +2302,11 @@
22972302
noJail = find_option("nojail",0,0)!=0;
22982303
allowRepoList = find_option("repolist",0,0)!=0;
22992304
g.useLocalauth = find_option("localauth", 0, 0)!=0;
23002305
g.sslNotAvailable = find_option("nossl", 0, 0)!=0;
23012306
g.fNoHttpCompress = find_option("nocompress",0,0)!=0;
2307
+ g.zExtRoot = find_option("extroot",0,1);
23022308
zInFile = find_option("in",0,1);
23032309
if( zInFile ){
23042310
backoffice_disable();
23052311
g.httpIn = fossil_fopen(zInFile, "rb");
23062312
if( g.httpIn==0 ) fossil_fatal("cannot open \"%s\" for reading", zInFile);
@@ -2391,10 +2397,11 @@
23912397
Th_InitTraceLog();
23922398
login_set_capabilities("sx", 0);
23932399
g.useLocalauth = 1;
23942400
g.httpIn = stdin;
23952401
g.httpOut = stdout;
2402
+ g.zExtRoot = find_option("extroot",0,1);
23962403
find_server_repository(2, 0);
23972404
g.cgiOutput = 1;
23982405
g.fNoHttpCompress = 1;
23992406
g.fullHttpReply = 1;
24002407
zIpAddr = cgi_ssh_remote_addr(0);
@@ -2484,11 +2491,11 @@
24842491
** by default.
24852492
**
24862493
** Options:
24872494
** --baseurl URL Use URL as the base (useful for reverse proxies)
24882495
** --create Create a new REPOSITORY if it does not already exist
2489
-** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
2496
+** --extroot DIR Document root for the /ext extension mechanism
24902497
** --files GLOBLIST Comma-separated list of glob patterns for static files
24912498
** --localauth enable automatic login for requests from localhost
24922499
** --localhost listen on 127.0.0.1 only (always true for "ui")
24932500
** --https Indicates that the input is coming through a reverse
24942501
** proxy that has already translated HTTPS into HTTP.
@@ -2497,10 +2504,11 @@
24972504
** --nocompress Do not compress HTTP replies
24982505
** --nojail Drop root privileges but do not enter the chroot jail
24992506
** --nossl signal that no SSL connections are available (Always
25002507
** set by default for the "ui" command)
25012508
** --notfound URL Redirect
2509
+** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
25022510
** -P|--port TCPPORT listen to request on port TCPPORT
25032511
** --th-trace trace TH1 execution (for debugging purposes)
25042512
** --repolist If REPOSITORY is dir, URL "/" lists repos.
25052513
** --scgi Accept SCGI rather than HTTP
25062514
** --skin LABEL Use override skin LABEL
@@ -2537,10 +2545,11 @@
25372545
#endif
25382546
25392547
if( g.zErrlog==0 ){
25402548
g.zErrlog = "-";
25412549
}
2550
+ g.zExtRoot = find_option("extroot",0,1);
25422551
zFileGlob = find_option("files-urlenc",0,1);
25432552
if( zFileGlob ){
25442553
char *z = mprintf("%s", zFileGlob);
25452554
dehttpize(z);
25462555
zFileGlob = z;
25472556
--- 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 */
@@ -1941,10 +1942,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
@@ -2240,16 +2244,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 +2302,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 +2397,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 +2491,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 +2504,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 +2545,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 */
@@ -1941,10 +1942,13 @@
1942 **
1943 ** debug: FILE Causing debugging information to be written
1944 ** into FILE.
1945 **
1946 ** errorlog: FILE Warnings, errors, and panics written to FILE.
1947 **
1948 ** extroot: DIR Directory that is the root of the sub-CGI tree
1949 ** on the /ext page.
1950 **
1951 ** redirect: REPO URL Extract the "name" query parameter and search
1952 ** REPO for a check-in or ticket that matches the
1953 ** value of "name", then redirect to URL. There
1954 ** can be multiple "redirect:" lines that are
@@ -2240,16 +2244,17 @@
2244 ** for requests coming from localhost, if the "localauth" setting is not
2245 ** enabled.
2246 **
2247 ** Options:
2248 ** --baseurl URL base URL (useful with reverse proxies)
2249 ** --extroot DIR document root for the /ext extension mechanism
2250 ** --files GLOB comma-separate glob patterns for static file to serve
 
2251 ** --host NAME specify hostname of the server
2252 ** --https signal a request coming in via https
2253 ** --in FILE Take input from FILE instead of standard input
2254 ** --ipaddr ADDR Assume the request comes from the given IP address
2255 ** --localauth enable automatic login for local connections
2256 ** --nocompress do not compress HTTP replies
2257 ** --nodelay omit backoffice processing if it would delay process exit
2258 ** --nojail drop root privilege but do not enter the chroot jail
2259 ** --nossl signal that no SSL connections are available
2260 ** --notfound URL use URL as "HTTP 404, object not found" page.
@@ -2297,10 +2302,11 @@
2302 noJail = find_option("nojail",0,0)!=0;
2303 allowRepoList = find_option("repolist",0,0)!=0;
2304 g.useLocalauth = find_option("localauth", 0, 0)!=0;
2305 g.sslNotAvailable = find_option("nossl", 0, 0)!=0;
2306 g.fNoHttpCompress = find_option("nocompress",0,0)!=0;
2307 g.zExtRoot = find_option("extroot",0,1);
2308 zInFile = find_option("in",0,1);
2309 if( zInFile ){
2310 backoffice_disable();
2311 g.httpIn = fossil_fopen(zInFile, "rb");
2312 if( g.httpIn==0 ) fossil_fatal("cannot open \"%s\" for reading", zInFile);
@@ -2391,10 +2397,11 @@
2397 Th_InitTraceLog();
2398 login_set_capabilities("sx", 0);
2399 g.useLocalauth = 1;
2400 g.httpIn = stdin;
2401 g.httpOut = stdout;
2402 g.zExtRoot = find_option("extroot",0,1);
2403 find_server_repository(2, 0);
2404 g.cgiOutput = 1;
2405 g.fNoHttpCompress = 1;
2406 g.fullHttpReply = 1;
2407 zIpAddr = cgi_ssh_remote_addr(0);
@@ -2484,11 +2491,11 @@
2491 ** by default.
2492 **
2493 ** Options:
2494 ** --baseurl URL Use URL as the base (useful for reverse proxies)
2495 ** --create Create a new REPOSITORY if it does not already exist
2496 ** --extroot DIR Document root for the /ext extension mechanism
2497 ** --files GLOBLIST Comma-separated list of glob patterns for static files
2498 ** --localauth enable automatic login for requests from localhost
2499 ** --localhost listen on 127.0.0.1 only (always true for "ui")
2500 ** --https Indicates that the input is coming through a reverse
2501 ** proxy that has already translated HTTPS into HTTP.
@@ -2497,10 +2504,11 @@
2504 ** --nocompress Do not compress HTTP replies
2505 ** --nojail Drop root privileges but do not enter the chroot jail
2506 ** --nossl signal that no SSL connections are available (Always
2507 ** set by default for the "ui" command)
2508 ** --notfound URL Redirect
2509 ** --page PAGE Start "ui" on PAGE. ex: --page "timeline?y=ci"
2510 ** -P|--port TCPPORT listen to request on port TCPPORT
2511 ** --th-trace trace TH1 execution (for debugging purposes)
2512 ** --repolist If REPOSITORY is dir, URL "/" lists repos.
2513 ** --scgi Accept SCGI rather than HTTP
2514 ** --skin LABEL Use override skin LABEL
@@ -2537,10 +2545,11 @@
2545 #endif
2546
2547 if( g.zErrlog==0 ){
2548 g.zErrlog = "-";
2549 }
2550 g.zExtRoot = find_option("extroot",0,1);
2551 zFileGlob = find_option("files-urlenc",0,1);
2552 if( zFileGlob ){
2553 char *z = mprintf("%s", zFileGlob);
2554 dehttpize(z);
2555 zFileGlob = z;
2556
+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
+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
+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