Fossil SCM

Merge the interwiki enhancement from trunk.

drh 2020-08-23 16:02 sec2020 merge
Commit 26ac4b1ccfb0d82713fe39f9063568ffe24361e349242f8669987e051a823e5e
+32 -6
--- src/cgi.c
+++ src/cgi.c
@@ -1053,29 +1053,56 @@
10531053
** assume that PATH_INFO is an empty string and set REQUEST_URI equal
10541054
** to PATH_INFO.
10551055
**
10561056
** SCGI typically omits PATH_INFO. CGI sometimes omits REQUEST_URI and
10571057
** PATH_INFO when it is empty.
1058
+**
1059
+** CGI Parameter quick reference:
1060
+**
1061
+** REQUEST_URI
1062
+** _____________|____________
1063
+** / \
1064
+** https://www.fossil-scm.org/forum/info/12736b30c072551a?t=c
1065
+** \________________/\____/\____________________/ \_/
1066
+** | | | |
1067
+** HTTP_HOST | PATH_INFO QUERY_STRING
1068
+** SCRIPT_NAME
10581069
*/
10591070
void cgi_init(void){
10601071
char *z;
10611072
const char *zType;
10621073
char *zSemi;
10631074
int len;
10641075
const char *zRequestUri = cgi_parameter("REQUEST_URI",0);
1065
- const char *zScriptName = cgi_parameter("SCRIPT_NAME",0);
1066
- const char *zPathInfo = cgi_parameter("PATH_INFO",0);
1076
+ const char *zScriptName = cgi_parameter("SCRIPT_NAME","");
1077
+ const char *zPathInfo = cgi_parameter("PATH_INFO","");
10671078
#ifdef _WIN32
10681079
const char *zServerSoftware = cgi_parameter("SERVER_SOFTWARE",0);
10691080
#endif
10701081
10711082
#ifdef FOSSIL_ENABLE_JSON
10721083
const int noJson = P("no_json")!=0;
10731084
#endif
10741085
g.isHTTP = 1;
10751086
cgi_destination(CGI_BODY);
1076
- if( zScriptName==0 ) malformed_request("missing SCRIPT_NAME");
1087
+
1088
+ /* We must have SCRIPT_NAME. If the web server did not supply it, try
1089
+ ** to compute it from REQUEST_URI and PATH_INFO. */
1090
+ if( zScriptName==0 ){
1091
+ size_t nRU, nPI;
1092
+ if( zRequestUri==0 || zPathInfo==0 ){
1093
+ malformed_request("missing SCRIPT_NAME"); /* Does not return */
1094
+ }
1095
+ nRU = strlen(zRequestUri);
1096
+ nPI = strlen(zPathInfo);
1097
+ if( nRU<nPI ){
1098
+ malformed_request("PATH_INFO is longer than REQUEST_URI");
1099
+ }
1100
+ zScriptName = mprintf("%.*s", (int)(nRU-nPI), zRequestUri);
1101
+ cgi_set_parameter("SCRIPT_NAME", zScriptName);
1102
+ }
1103
+
10771104
#ifdef _WIN32
10781105
/* The Microsoft IIS web server does not define REQUEST_URI, instead it uses
10791106
** PATH_INFO for virtually the same purpose. Define REQUEST_URI the same as
10801107
** PATH_INFO and redefine PATH_INFO with SCRIPT_NAME removed from the
10811108
** beginning. */
@@ -1257,16 +1284,15 @@
12571284
}
12581285
}
12591286
12601287
/* If no match is found and the name begins with an upper-case
12611288
** letter, then check to see if there is an environment variable
1262
- ** with the given name. Handle environment variables with empty values
1263
- ** the same as non-existent environment variables.
1289
+ ** with the given name.
12641290
*/
12651291
if( fossil_isupper(zName[0]) ){
12661292
const char *zValue = fossil_getenv(zName);
1267
- if( zValue && zValue[0] ){
1293
+ if( zValue ){
12681294
cgi_set_parameter_nocopy(zName, zValue, 0);
12691295
CGIDEBUG(("env-match [%s] = [%s]\n", zName, zValue));
12701296
return zValue;
12711297
}
12721298
}
12731299
--- src/cgi.c
+++ src/cgi.c
@@ -1053,29 +1053,56 @@
1053 ** assume that PATH_INFO is an empty string and set REQUEST_URI equal
1054 ** to PATH_INFO.
1055 **
1056 ** SCGI typically omits PATH_INFO. CGI sometimes omits REQUEST_URI and
1057 ** PATH_INFO when it is empty.
 
 
 
 
 
 
 
 
 
 
 
1058 */
1059 void cgi_init(void){
1060 char *z;
1061 const char *zType;
1062 char *zSemi;
1063 int len;
1064 const char *zRequestUri = cgi_parameter("REQUEST_URI",0);
1065 const char *zScriptName = cgi_parameter("SCRIPT_NAME",0);
1066 const char *zPathInfo = cgi_parameter("PATH_INFO",0);
1067 #ifdef _WIN32
1068 const char *zServerSoftware = cgi_parameter("SERVER_SOFTWARE",0);
1069 #endif
1070
1071 #ifdef FOSSIL_ENABLE_JSON
1072 const int noJson = P("no_json")!=0;
1073 #endif
1074 g.isHTTP = 1;
1075 cgi_destination(CGI_BODY);
1076 if( zScriptName==0 ) malformed_request("missing SCRIPT_NAME");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1077 #ifdef _WIN32
1078 /* The Microsoft IIS web server does not define REQUEST_URI, instead it uses
1079 ** PATH_INFO for virtually the same purpose. Define REQUEST_URI the same as
1080 ** PATH_INFO and redefine PATH_INFO with SCRIPT_NAME removed from the
1081 ** beginning. */
@@ -1257,16 +1284,15 @@
1257 }
1258 }
1259
1260 /* If no match is found and the name begins with an upper-case
1261 ** letter, then check to see if there is an environment variable
1262 ** with the given name. Handle environment variables with empty values
1263 ** the same as non-existent environment variables.
1264 */
1265 if( fossil_isupper(zName[0]) ){
1266 const char *zValue = fossil_getenv(zName);
1267 if( zValue && zValue[0] ){
1268 cgi_set_parameter_nocopy(zName, zValue, 0);
1269 CGIDEBUG(("env-match [%s] = [%s]\n", zName, zValue));
1270 return zValue;
1271 }
1272 }
1273
--- src/cgi.c
+++ src/cgi.c
@@ -1053,29 +1053,56 @@
1053 ** assume that PATH_INFO is an empty string and set REQUEST_URI equal
1054 ** to PATH_INFO.
1055 **
1056 ** SCGI typically omits PATH_INFO. CGI sometimes omits REQUEST_URI and
1057 ** PATH_INFO when it is empty.
1058 **
1059 ** CGI Parameter quick reference:
1060 **
1061 ** REQUEST_URI
1062 ** _____________|____________
1063 ** / \
1064 ** https://www.fossil-scm.org/forum/info/12736b30c072551a?t=c
1065 ** \________________/\____/\____________________/ \_/
1066 ** | | | |
1067 ** HTTP_HOST | PATH_INFO QUERY_STRING
1068 ** SCRIPT_NAME
1069 */
1070 void cgi_init(void){
1071 char *z;
1072 const char *zType;
1073 char *zSemi;
1074 int len;
1075 const char *zRequestUri = cgi_parameter("REQUEST_URI",0);
1076 const char *zScriptName = cgi_parameter("SCRIPT_NAME","");
1077 const char *zPathInfo = cgi_parameter("PATH_INFO","");
1078 #ifdef _WIN32
1079 const char *zServerSoftware = cgi_parameter("SERVER_SOFTWARE",0);
1080 #endif
1081
1082 #ifdef FOSSIL_ENABLE_JSON
1083 const int noJson = P("no_json")!=0;
1084 #endif
1085 g.isHTTP = 1;
1086 cgi_destination(CGI_BODY);
1087
1088 /* We must have SCRIPT_NAME. If the web server did not supply it, try
1089 ** to compute it from REQUEST_URI and PATH_INFO. */
1090 if( zScriptName==0 ){
1091 size_t nRU, nPI;
1092 if( zRequestUri==0 || zPathInfo==0 ){
1093 malformed_request("missing SCRIPT_NAME"); /* Does not return */
1094 }
1095 nRU = strlen(zRequestUri);
1096 nPI = strlen(zPathInfo);
1097 if( nRU<nPI ){
1098 malformed_request("PATH_INFO is longer than REQUEST_URI");
1099 }
1100 zScriptName = mprintf("%.*s", (int)(nRU-nPI), zRequestUri);
1101 cgi_set_parameter("SCRIPT_NAME", zScriptName);
1102 }
1103
1104 #ifdef _WIN32
1105 /* The Microsoft IIS web server does not define REQUEST_URI, instead it uses
1106 ** PATH_INFO for virtually the same purpose. Define REQUEST_URI the same as
1107 ** PATH_INFO and redefine PATH_INFO with SCRIPT_NAME removed from the
1108 ** beginning. */
@@ -1257,16 +1284,15 @@
1284 }
1285 }
1286
1287 /* If no match is found and the name begins with an upper-case
1288 ** letter, then check to see if there is an environment variable
1289 ** with the given name.
 
1290 */
1291 if( fossil_isupper(zName[0]) ){
1292 const char *zValue = fossil_getenv(zName);
1293 if( zValue ){
1294 cgi_set_parameter_nocopy(zName, zValue, 0);
1295 CGIDEBUG(("env-match [%s] = [%s]\n", zName, zValue));
1296 return zValue;
1297 }
1298 }
1299
+35 -12
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
3737
#define CONFIGSET_USER 0x000020 /* The USER table */
3838
#define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
3939
#define CONFIGSET_XFER 0x000080 /* Transfer configuration */
4040
#define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
4141
#define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42
-#define CONFIGSET_ALL 0x0003ff /* Everything */
42
+#define CONFIGSET_IWIKI 0x000400 /* Interwiki codes */
43
+#define CONFIGSET_ALL 0x0007ff /* Everything */
4344
4445
#define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
4546
4647
/*
4748
** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
5859
static struct {
5960
const char *zName; /* Name of the configuration set */
6061
int groupMask; /* Mask for that configuration set */
6162
const char *zHelp; /* What it does */
6263
} aGroupName[] = {
63
- { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
64
- { "/project", CONFIGSET_PROJ, "Project name and description" },
64
+ { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
65
+ { "/project", CONFIGSET_PROJ, "Project name and description" },
6566
{ "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
66
- "Web interface appearance settings" },
67
- { "/css", CONFIGSET_CSS, "Style sheet" },
68
- { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
69
- { "/ticket", CONFIGSET_TKT, "Ticket setup", },
70
- { "/user", CONFIGSET_USER, "Users and privilege settings" },
71
- { "/xfer", CONFIGSET_XFER, "Transfer setup", },
72
- { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
73
- { "/subscriber", CONFIGSET_SCRIBER,"Email notification subscriber list" },
74
- { "/all", CONFIGSET_ALL, "All of the above" },
67
+ "Web interface appearance settings" },
68
+ { "/css", CONFIGSET_CSS, "Style sheet" },
69
+ { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
70
+ { "/ticket", CONFIGSET_TKT, "Ticket setup", },
71
+ { "/user", CONFIGSET_USER, "Users and privilege settings" },
72
+ { "/xfer", CONFIGSET_XFER, "Transfer setup", },
73
+ { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
74
+ { "/subscriber", CONFIGSET_SCRIBER, "Email notification subscriber list" },
75
+ { "/interwiki", CONFIGSET_IWIKI, "Inter-wiki link prefixes" },
76
+ { "/all", CONFIGSET_ALL, "All of the above" },
7577
};
7678
7779
7880
/*
7981
** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
174176
175177
{ "@alias", CONFIGSET_ALIAS },
176178
177179
{ "@subscriber", CONFIGSET_SCRIBER },
178180
181
+ { "@interwiki", CONFIGSET_IWIKI },
182
+
179183
{ "xfer-common-script", CONFIGSET_XFER },
180184
{ "xfer-push-script", CONFIGSET_XFER },
181185
{ "xfer-commit-script", CONFIGSET_XFER },
182186
{ "xfer-ticket-script", CONFIGSET_XFER },
183187
@@ -256,10 +260,13 @@
256260
return m;
257261
}
258262
}
259263
if( strncmp(zName, "walias:/", 8)==0 ){
260264
return CONFIGSET_ALIAS;
265
+ }
266
+ if( strncmp(zName, "interwiki:", 10)==0 ){
267
+ return CONFIGSET_IWIKI;
261268
}
262269
return 0;
263270
}
264271
265272
/*
@@ -588,10 +595,26 @@
588595
while( db_step(&q)==SQLITE_ROW ){
589596
blob_appendf(&rec,"%s %s value %s",
590597
db_column_text(&q, 0),
591598
db_column_text(&q, 1),
592599
db_column_text(&q, 2)
600
+ );
601
+ blob_appendf(pOut, "config /config %d\n%s\n",
602
+ blob_size(&rec), blob_str(&rec));
603
+ nCard++;
604
+ blob_reset(&rec);
605
+ }
606
+ db_finalize(&q);
607
+ }
608
+ if( groupMask & CONFIGSET_IWIKI ){
609
+ db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config"
610
+ " WHERE name GLOB 'interwiki:*' AND mtime>=%lld", iStart);
611
+ while( db_step(&q)==SQLITE_ROW ){
612
+ blob_appendf(&rec,"%s %s value %s",
613
+ db_column_text(&q, 0),
614
+ db_column_text(&q, 1),
615
+ db_column_text(&q, 2)
593616
);
594617
blob_appendf(pOut, "config /config %d\n%s\n",
595618
blob_size(&rec), blob_str(&rec));
596619
nCard++;
597620
blob_reset(&rec);
598621
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40 #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
41 #define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42 #define CONFIGSET_ALL 0x0003ff /* Everything */
 
43
44 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
45
46 /*
47 ** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
58 static struct {
59 const char *zName; /* Name of the configuration set */
60 int groupMask; /* Mask for that configuration set */
61 const char *zHelp; /* What it does */
62 } aGroupName[] = {
63 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
64 { "/project", CONFIGSET_PROJ, "Project name and description" },
65 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
66 "Web interface appearance settings" },
67 { "/css", CONFIGSET_CSS, "Style sheet" },
68 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
69 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
70 { "/user", CONFIGSET_USER, "Users and privilege settings" },
71 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
72 { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
73 { "/subscriber", CONFIGSET_SCRIBER,"Email notification subscriber list" },
74 { "/all", CONFIGSET_ALL, "All of the above" },
 
75 };
76
77
78 /*
79 ** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
174
175 { "@alias", CONFIGSET_ALIAS },
176
177 { "@subscriber", CONFIGSET_SCRIBER },
178
 
 
179 { "xfer-common-script", CONFIGSET_XFER },
180 { "xfer-push-script", CONFIGSET_XFER },
181 { "xfer-commit-script", CONFIGSET_XFER },
182 { "xfer-ticket-script", CONFIGSET_XFER },
183
@@ -256,10 +260,13 @@
256 return m;
257 }
258 }
259 if( strncmp(zName, "walias:/", 8)==0 ){
260 return CONFIGSET_ALIAS;
 
 
 
261 }
262 return 0;
263 }
264
265 /*
@@ -588,10 +595,26 @@
588 while( db_step(&q)==SQLITE_ROW ){
589 blob_appendf(&rec,"%s %s value %s",
590 db_column_text(&q, 0),
591 db_column_text(&q, 1),
592 db_column_text(&q, 2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593 );
594 blob_appendf(pOut, "config /config %d\n%s\n",
595 blob_size(&rec), blob_str(&rec));
596 nCard++;
597 blob_reset(&rec);
598
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40 #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
41 #define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42 #define CONFIGSET_IWIKI 0x000400 /* Interwiki codes */
43 #define CONFIGSET_ALL 0x0007ff /* Everything */
44
45 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
46
47 /*
48 ** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
59 static struct {
60 const char *zName; /* Name of the configuration set */
61 int groupMask; /* Mask for that configuration set */
62 const char *zHelp; /* What it does */
63 } aGroupName[] = {
64 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
65 { "/project", CONFIGSET_PROJ, "Project name and description" },
66 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
67 "Web interface appearance settings" },
68 { "/css", CONFIGSET_CSS, "Style sheet" },
69 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
70 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
71 { "/user", CONFIGSET_USER, "Users and privilege settings" },
72 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
73 { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
74 { "/subscriber", CONFIGSET_SCRIBER, "Email notification subscriber list" },
75 { "/interwiki", CONFIGSET_IWIKI, "Inter-wiki link prefixes" },
76 { "/all", CONFIGSET_ALL, "All of the above" },
77 };
78
79
80 /*
81 ** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
176
177 { "@alias", CONFIGSET_ALIAS },
178
179 { "@subscriber", CONFIGSET_SCRIBER },
180
181 { "@interwiki", CONFIGSET_IWIKI },
182
183 { "xfer-common-script", CONFIGSET_XFER },
184 { "xfer-push-script", CONFIGSET_XFER },
185 { "xfer-commit-script", CONFIGSET_XFER },
186 { "xfer-ticket-script", CONFIGSET_XFER },
187
@@ -256,10 +260,13 @@
260 return m;
261 }
262 }
263 if( strncmp(zName, "walias:/", 8)==0 ){
264 return CONFIGSET_ALIAS;
265 }
266 if( strncmp(zName, "interwiki:", 10)==0 ){
267 return CONFIGSET_IWIKI;
268 }
269 return 0;
270 }
271
272 /*
@@ -588,10 +595,26 @@
595 while( db_step(&q)==SQLITE_ROW ){
596 blob_appendf(&rec,"%s %s value %s",
597 db_column_text(&q, 0),
598 db_column_text(&q, 1),
599 db_column_text(&q, 2)
600 );
601 blob_appendf(pOut, "config /config %d\n%s\n",
602 blob_size(&rec), blob_str(&rec));
603 nCard++;
604 blob_reset(&rec);
605 }
606 db_finalize(&q);
607 }
608 if( groupMask & CONFIGSET_IWIKI ){
609 db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config"
610 " WHERE name GLOB 'interwiki:*' AND mtime>=%lld", iStart);
611 while( db_step(&q)==SQLITE_ROW ){
612 blob_appendf(&rec,"%s %s value %s",
613 db_column_text(&q, 0),
614 db_column_text(&q, 1),
615 db_column_text(&q, 2)
616 );
617 blob_appendf(pOut, "config /config %d\n%s\n",
618 blob_size(&rec), blob_str(&rec));
619 nCard++;
620 blob_reset(&rec);
621
+35 -12
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
3737
#define CONFIGSET_USER 0x000020 /* The USER table */
3838
#define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
3939
#define CONFIGSET_XFER 0x000080 /* Transfer configuration */
4040
#define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
4141
#define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42
-#define CONFIGSET_ALL 0x0003ff /* Everything */
42
+#define CONFIGSET_IWIKI 0x000400 /* Interwiki codes */
43
+#define CONFIGSET_ALL 0x0007ff /* Everything */
4344
4445
#define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
4546
4647
/*
4748
** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
5859
static struct {
5960
const char *zName; /* Name of the configuration set */
6061
int groupMask; /* Mask for that configuration set */
6162
const char *zHelp; /* What it does */
6263
} aGroupName[] = {
63
- { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
64
- { "/project", CONFIGSET_PROJ, "Project name and description" },
64
+ { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
65
+ { "/project", CONFIGSET_PROJ, "Project name and description" },
6566
{ "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
66
- "Web interface appearance settings" },
67
- { "/css", CONFIGSET_CSS, "Style sheet" },
68
- { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
69
- { "/ticket", CONFIGSET_TKT, "Ticket setup", },
70
- { "/user", CONFIGSET_USER, "Users and privilege settings" },
71
- { "/xfer", CONFIGSET_XFER, "Transfer setup", },
72
- { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
73
- { "/subscriber", CONFIGSET_SCRIBER,"Email notification subscriber list" },
74
- { "/all", CONFIGSET_ALL, "All of the above" },
67
+ "Web interface appearance settings" },
68
+ { "/css", CONFIGSET_CSS, "Style sheet" },
69
+ { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
70
+ { "/ticket", CONFIGSET_TKT, "Ticket setup", },
71
+ { "/user", CONFIGSET_USER, "Users and privilege settings" },
72
+ { "/xfer", CONFIGSET_XFER, "Transfer setup", },
73
+ { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
74
+ { "/subscriber", CONFIGSET_SCRIBER, "Email notification subscriber list" },
75
+ { "/interwiki", CONFIGSET_IWIKI, "Inter-wiki link prefixes" },
76
+ { "/all", CONFIGSET_ALL, "All of the above" },
7577
};
7678
7779
7880
/*
7981
** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
174176
175177
{ "@alias", CONFIGSET_ALIAS },
176178
177179
{ "@subscriber", CONFIGSET_SCRIBER },
178180
181
+ { "@interwiki", CONFIGSET_IWIKI },
182
+
179183
{ "xfer-common-script", CONFIGSET_XFER },
180184
{ "xfer-push-script", CONFIGSET_XFER },
181185
{ "xfer-commit-script", CONFIGSET_XFER },
182186
{ "xfer-ticket-script", CONFIGSET_XFER },
183187
@@ -256,10 +260,13 @@
256260
return m;
257261
}
258262
}
259263
if( strncmp(zName, "walias:/", 8)==0 ){
260264
return CONFIGSET_ALIAS;
265
+ }
266
+ if( strncmp(zName, "interwiki:", 10)==0 ){
267
+ return CONFIGSET_IWIKI;
261268
}
262269
return 0;
263270
}
264271
265272
/*
@@ -588,10 +595,26 @@
588595
while( db_step(&q)==SQLITE_ROW ){
589596
blob_appendf(&rec,"%s %s value %s",
590597
db_column_text(&q, 0),
591598
db_column_text(&q, 1),
592599
db_column_text(&q, 2)
600
+ );
601
+ blob_appendf(pOut, "config /config %d\n%s\n",
602
+ blob_size(&rec), blob_str(&rec));
603
+ nCard++;
604
+ blob_reset(&rec);
605
+ }
606
+ db_finalize(&q);
607
+ }
608
+ if( groupMask & CONFIGSET_IWIKI ){
609
+ db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config"
610
+ " WHERE name GLOB 'interwiki:*' AND mtime>=%lld", iStart);
611
+ while( db_step(&q)==SQLITE_ROW ){
612
+ blob_appendf(&rec,"%s %s value %s",
613
+ db_column_text(&q, 0),
614
+ db_column_text(&q, 1),
615
+ db_column_text(&q, 2)
593616
);
594617
blob_appendf(pOut, "config /config %d\n%s\n",
595618
blob_size(&rec), blob_str(&rec));
596619
nCard++;
597620
blob_reset(&rec);
598621
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40 #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
41 #define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42 #define CONFIGSET_ALL 0x0003ff /* Everything */
 
43
44 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
45
46 /*
47 ** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
58 static struct {
59 const char *zName; /* Name of the configuration set */
60 int groupMask; /* Mask for that configuration set */
61 const char *zHelp; /* What it does */
62 } aGroupName[] = {
63 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
64 { "/project", CONFIGSET_PROJ, "Project name and description" },
65 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
66 "Web interface appearance settings" },
67 { "/css", CONFIGSET_CSS, "Style sheet" },
68 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
69 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
70 { "/user", CONFIGSET_USER, "Users and privilege settings" },
71 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
72 { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
73 { "/subscriber", CONFIGSET_SCRIBER,"Email notification subscriber list" },
74 { "/all", CONFIGSET_ALL, "All of the above" },
 
75 };
76
77
78 /*
79 ** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
174
175 { "@alias", CONFIGSET_ALIAS },
176
177 { "@subscriber", CONFIGSET_SCRIBER },
178
 
 
179 { "xfer-common-script", CONFIGSET_XFER },
180 { "xfer-push-script", CONFIGSET_XFER },
181 { "xfer-commit-script", CONFIGSET_XFER },
182 { "xfer-ticket-script", CONFIGSET_XFER },
183
@@ -256,10 +260,13 @@
256 return m;
257 }
258 }
259 if( strncmp(zName, "walias:/", 8)==0 ){
260 return CONFIGSET_ALIAS;
 
 
 
261 }
262 return 0;
263 }
264
265 /*
@@ -588,10 +595,26 @@
588 while( db_step(&q)==SQLITE_ROW ){
589 blob_appendf(&rec,"%s %s value %s",
590 db_column_text(&q, 0),
591 db_column_text(&q, 1),
592 db_column_text(&q, 2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593 );
594 blob_appendf(pOut, "config /config %d\n%s\n",
595 blob_size(&rec), blob_str(&rec));
596 nCard++;
597 blob_reset(&rec);
598
--- src/configure.c
+++ src/configure.c
@@ -37,11 +37,12 @@
37 #define CONFIGSET_USER 0x000020 /* The USER table */
38 #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */
39 #define CONFIGSET_XFER 0x000080 /* Transfer configuration */
40 #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */
41 #define CONFIGSET_SCRIBER 0x000200 /* Email subscribers */
42 #define CONFIGSET_IWIKI 0x000400 /* Interwiki codes */
43 #define CONFIGSET_ALL 0x0007ff /* Everything */
44
45 #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */
46
47 /*
48 ** This mask is used for the common TH1 configuration settings (i.e. those
@@ -58,22 +59,23 @@
59 static struct {
60 const char *zName; /* Name of the configuration set */
61 int groupMask; /* Mask for that configuration set */
62 const char *zHelp; /* What it does */
63 } aGroupName[] = {
64 { "/email", CONFIGSET_ADDR, "Concealed email addresses in tickets" },
65 { "/project", CONFIGSET_PROJ, "Project name and description" },
66 { "/skin", CONFIGSET_SKIN | CONFIGSET_CSS,
67 "Web interface appearance settings" },
68 { "/css", CONFIGSET_CSS, "Style sheet" },
69 { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" },
70 { "/ticket", CONFIGSET_TKT, "Ticket setup", },
71 { "/user", CONFIGSET_USER, "Users and privilege settings" },
72 { "/xfer", CONFIGSET_XFER, "Transfer setup", },
73 { "/alias", CONFIGSET_ALIAS, "URL Aliases", },
74 { "/subscriber", CONFIGSET_SCRIBER, "Email notification subscriber list" },
75 { "/interwiki", CONFIGSET_IWIKI, "Inter-wiki link prefixes" },
76 { "/all", CONFIGSET_ALL, "All of the above" },
77 };
78
79
80 /*
81 ** The following is a list of settings that we are willing to
@@ -174,10 +176,12 @@
176
177 { "@alias", CONFIGSET_ALIAS },
178
179 { "@subscriber", CONFIGSET_SCRIBER },
180
181 { "@interwiki", CONFIGSET_IWIKI },
182
183 { "xfer-common-script", CONFIGSET_XFER },
184 { "xfer-push-script", CONFIGSET_XFER },
185 { "xfer-commit-script", CONFIGSET_XFER },
186 { "xfer-ticket-script", CONFIGSET_XFER },
187
@@ -256,10 +260,13 @@
260 return m;
261 }
262 }
263 if( strncmp(zName, "walias:/", 8)==0 ){
264 return CONFIGSET_ALIAS;
265 }
266 if( strncmp(zName, "interwiki:", 10)==0 ){
267 return CONFIGSET_IWIKI;
268 }
269 return 0;
270 }
271
272 /*
@@ -588,10 +595,26 @@
595 while( db_step(&q)==SQLITE_ROW ){
596 blob_appendf(&rec,"%s %s value %s",
597 db_column_text(&q, 0),
598 db_column_text(&q, 1),
599 db_column_text(&q, 2)
600 );
601 blob_appendf(pOut, "config /config %d\n%s\n",
602 blob_size(&rec), blob_str(&rec));
603 nCard++;
604 blob_reset(&rec);
605 }
606 db_finalize(&q);
607 }
608 if( groupMask & CONFIGSET_IWIKI ){
609 db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config"
610 " WHERE name GLOB 'interwiki:*' AND mtime>=%lld", iStart);
611 while( db_step(&q)==SQLITE_ROW ){
612 blob_appendf(&rec,"%s %s value %s",
613 db_column_text(&q, 0),
614 db_column_text(&q, 1),
615 db_column_text(&q, 2)
616 );
617 blob_appendf(pOut, "config /config %d\n%s\n",
618 blob_size(&rec), blob_str(&rec));
619 nCard++;
620 blob_reset(&rec);
621
+1 -1
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732732
const char *zName = P("name");
733733
const char *zMode = PD("t","a");
734734
int bRaw = PB("raw");
735735
int bUnf = PB("unf");
736736
int bHist = PB("hist");
737
- int mode;
737
+ int mode = 0;
738738
login_check_credentials();
739739
if( !g.perm.RdForum ){
740740
login_needed(g.anon.RdForum);
741741
return;
742742
}
743743
744744
ADDED src/interwiki.c
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732 const char *zName = P("name");
733 const char *zMode = PD("t","a");
734 int bRaw = PB("raw");
735 int bUnf = PB("unf");
736 int bHist = PB("hist");
737 int mode;
738 login_check_credentials();
739 if( !g.perm.RdForum ){
740 login_needed(g.anon.RdForum);
741 return;
742 }
743
744 DDED src/interwiki.c
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732 const char *zName = P("name");
733 const char *zMode = PD("t","a");
734 int bRaw = PB("raw");
735 int bUnf = PB("unf");
736 int bHist = PB("hist");
737 int mode = 0;
738 login_check_credentials();
739 if( !g.perm.RdForum ){
740 login_needed(g.anon.RdForum);
741 return;
742 }
743
744 DDED src/interwiki.c
+1 -1
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732732
const char *zName = P("name");
733733
const char *zMode = PD("t","a");
734734
int bRaw = PB("raw");
735735
int bUnf = PB("unf");
736736
int bHist = PB("hist");
737
- int mode;
737
+ int mode = 0;
738738
login_check_credentials();
739739
if( !g.perm.RdForum ){
740740
login_needed(g.anon.RdForum);
741741
return;
742742
}
743743
744744
ADDED src/interwiki.c
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732 const char *zName = P("name");
733 const char *zMode = PD("t","a");
734 int bRaw = PB("raw");
735 int bUnf = PB("unf");
736 int bHist = PB("hist");
737 int mode;
738 login_check_credentials();
739 if( !g.perm.RdForum ){
740 login_needed(g.anon.RdForum);
741 return;
742 }
743
744 DDED src/interwiki.c
--- src/forum.c
+++ src/forum.c
@@ -732,11 +732,11 @@
732 const char *zName = P("name");
733 const char *zMode = PD("t","a");
734 int bRaw = PB("raw");
735 int bUnf = PB("unf");
736 int bHist = PB("hist");
737 int mode = 0;
738 login_check_credentials();
739 if( !g.perm.RdForum ){
740 login_needed(g.anon.RdForum);
741 return;
742 }
743
744 DDED src/interwiki.c
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -0,0 +1,26 @@
1
+/*
2
+** Copyright (c) 2020 D. Richard Hipp
3
+**
4
+** This program is free software; you can redistribute it and/or
5
+** modify it under the terms of the Simplified BSD License (also
6
+** known as the "2-Clause Ljson_extract(value,'$.base'),"
7
+re; you can redist/*
8
+** Copyright (c) 2020 Dre; you can redist/*
9
+** Copyright (c) 202json_extract(value,'$.base'json_extract(value,'$.hash'json_extract(value,'$.wiki')json_extract(value,'$.base')json_extract(value,'$.base'),"
10
+ " json_extract(value,'$.hash'),"
11
+ " j"interwiki");
12
+}
13
+c) 2020 D. Richard Hipp
14
+**
15
+** This program is free software; you can redistribute it and/or
16
+** modify it under the terms of the Simplified BSD License (also
17
+** known as the "2-Clause Ljson_extract(value,'$.base'),"
18
+re; you can/*
19
+** Copyright (c) 2020 D. Richard Hipp
20
+**
21
+** This program is free software; you can redistribute it and/or
22
+** modify it under the terms of the Simplifi'interwiki:%finalize(&qbody_and_footerbody_and_footer("interwiki");
23
+}
24
+footer(footer();
25
+}
26
+Setup
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -0,0 +1,26 @@
1 /*
2 ** Copyright (c) 2020 D. Richard Hipp
3 **
4 ** This program is free software; you can redistribute it and/or
5 ** modify it under the terms of the Simplified BSD License (also
6 ** known as the "2-Clause Ljson_extract(value,'$.base'),"
7 re; you can redist/*
8 ** Copyright (c) 2020 Dre; you can redist/*
9 ** Copyright (c) 202json_extract(value,'$.base'json_extract(value,'$.hash'json_extract(value,'$.wiki')json_extract(value,'$.base')json_extract(value,'$.base'),"
10 " json_extract(value,'$.hash'),"
11 " j"interwiki");
12 }
13 c) 2020 D. Richard Hipp
14 **
15 ** This program is free software; you can redistribute it and/or
16 ** modify it under the terms of the Simplified BSD License (also
17 ** known as the "2-Clause Ljson_extract(value,'$.base'),"
18 re; you can/*
19 ** Copyright (c) 2020 D. Richard Hipp
20 **
21 ** This program is free software; you can redistribute it and/or
22 ** modify it under the terms of the Simplifi'interwiki:%finalize(&qbody_and_footerbody_and_footer("interwiki");
23 }
24 footer(footer();
25 }
26 Setup
+1 -1
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -23,4 +23,4 @@
2323
}
2424
footer(footer();
2525
}
26
-Setup ? }else{
26
+Setup
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -23,4 +23,4 @@
23 }
24 footer(footer();
25 }
26 Setup ? }else{
--- a/src/interwiki.c
+++ b/src/interwiki.c
@@ -23,4 +23,4 @@
23 }
24 footer(footer();
25 }
26 Setup
+12
--- src/main.mk
+++ src/main.mk
@@ -73,10 +73,11 @@
7373
$(SRCDIR)/http_socket.c \
7474
$(SRCDIR)/http_ssl.c \
7575
$(SRCDIR)/http_transport.c \
7676
$(SRCDIR)/import.c \
7777
$(SRCDIR)/info.c \
78
+ $(SRCDIR)/interwiki.c \
7879
$(SRCDIR)/json.c \
7980
$(SRCDIR)/json_artifact.c \
8081
$(SRCDIR)/json_branch.c \
8182
$(SRCDIR)/json_config.c \
8283
$(SRCDIR)/json_diff.c \
@@ -325,10 +326,11 @@
325326
$(OBJDIR)/http_socket_.c \
326327
$(OBJDIR)/http_ssl_.c \
327328
$(OBJDIR)/http_transport_.c \
328329
$(OBJDIR)/import_.c \
329330
$(OBJDIR)/info_.c \
331
+ $(OBJDIR)/interwiki_.c \
330332
$(OBJDIR)/json_.c \
331333
$(OBJDIR)/json_artifact_.c \
332334
$(OBJDIR)/json_branch_.c \
333335
$(OBJDIR)/json_config_.c \
334336
$(OBJDIR)/json_diff_.c \
@@ -470,10 +472,11 @@
470472
$(OBJDIR)/http_socket.o \
471473
$(OBJDIR)/http_ssl.o \
472474
$(OBJDIR)/http_transport.o \
473475
$(OBJDIR)/import.o \
474476
$(OBJDIR)/info.o \
477
+ $(OBJDIR)/interwiki.o \
475478
$(OBJDIR)/json.o \
476479
$(OBJDIR)/json_artifact.o \
477480
$(OBJDIR)/json_branch.o \
478481
$(OBJDIR)/json_config.o \
479482
$(OBJDIR)/json_diff.o \
@@ -805,10 +808,11 @@
805808
$(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
806809
$(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
807810
$(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
808811
$(OBJDIR)/import_.c:$(OBJDIR)/import.h \
809812
$(OBJDIR)/info_.c:$(OBJDIR)/info.h \
813
+ $(OBJDIR)/interwiki_.c:$(OBJDIR)/interwiki.h \
810814
$(OBJDIR)/json_.c:$(OBJDIR)/json.h \
811815
$(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
812816
$(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
813817
$(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
814818
$(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1367,10 +1371,18 @@
13671371
13681372
$(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
13691373
$(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
13701374
13711375
$(OBJDIR)/info.h: $(OBJDIR)/headers
1376
+
1377
+$(OBJDIR)/interwiki_.c: $(SRCDIR)/interwiki.c $(OBJDIR)/translate
1378
+ $(OBJDIR)/translate $(SRCDIR)/interwiki.c >$@
1379
+
1380
+$(OBJDIR)/interwiki.o: $(OBJDIR)/interwiki_.c $(OBJDIR)/interwiki.h $(SRCDIR)/config.h
1381
+ $(XTCC) -o $(OBJDIR)/interwiki.o -c $(OBJDIR)/interwiki_.c
1382
+
1383
+$(OBJDIR)/interwiki.h: $(OBJDIR)/headers
13721384
13731385
$(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
13741386
$(OBJDIR)/translate $(SRCDIR)/json.c >$@
13751387
13761388
$(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
13771389
--- src/main.mk
+++ src/main.mk
@@ -73,10 +73,11 @@
73 $(SRCDIR)/http_socket.c \
74 $(SRCDIR)/http_ssl.c \
75 $(SRCDIR)/http_transport.c \
76 $(SRCDIR)/import.c \
77 $(SRCDIR)/info.c \
 
78 $(SRCDIR)/json.c \
79 $(SRCDIR)/json_artifact.c \
80 $(SRCDIR)/json_branch.c \
81 $(SRCDIR)/json_config.c \
82 $(SRCDIR)/json_diff.c \
@@ -325,10 +326,11 @@
325 $(OBJDIR)/http_socket_.c \
326 $(OBJDIR)/http_ssl_.c \
327 $(OBJDIR)/http_transport_.c \
328 $(OBJDIR)/import_.c \
329 $(OBJDIR)/info_.c \
 
330 $(OBJDIR)/json_.c \
331 $(OBJDIR)/json_artifact_.c \
332 $(OBJDIR)/json_branch_.c \
333 $(OBJDIR)/json_config_.c \
334 $(OBJDIR)/json_diff_.c \
@@ -470,10 +472,11 @@
470 $(OBJDIR)/http_socket.o \
471 $(OBJDIR)/http_ssl.o \
472 $(OBJDIR)/http_transport.o \
473 $(OBJDIR)/import.o \
474 $(OBJDIR)/info.o \
 
475 $(OBJDIR)/json.o \
476 $(OBJDIR)/json_artifact.o \
477 $(OBJDIR)/json_branch.o \
478 $(OBJDIR)/json_config.o \
479 $(OBJDIR)/json_diff.o \
@@ -805,10 +808,11 @@
805 $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
806 $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
807 $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
808 $(OBJDIR)/import_.c:$(OBJDIR)/import.h \
809 $(OBJDIR)/info_.c:$(OBJDIR)/info.h \
 
810 $(OBJDIR)/json_.c:$(OBJDIR)/json.h \
811 $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
812 $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
813 $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
814 $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1367,10 +1371,18 @@
1367
1368 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
1369 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
1370
1371 $(OBJDIR)/info.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1372
1373 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
1374 $(OBJDIR)/translate $(SRCDIR)/json.c >$@
1375
1376 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
1377
--- src/main.mk
+++ src/main.mk
@@ -73,10 +73,11 @@
73 $(SRCDIR)/http_socket.c \
74 $(SRCDIR)/http_ssl.c \
75 $(SRCDIR)/http_transport.c \
76 $(SRCDIR)/import.c \
77 $(SRCDIR)/info.c \
78 $(SRCDIR)/interwiki.c \
79 $(SRCDIR)/json.c \
80 $(SRCDIR)/json_artifact.c \
81 $(SRCDIR)/json_branch.c \
82 $(SRCDIR)/json_config.c \
83 $(SRCDIR)/json_diff.c \
@@ -325,10 +326,11 @@
326 $(OBJDIR)/http_socket_.c \
327 $(OBJDIR)/http_ssl_.c \
328 $(OBJDIR)/http_transport_.c \
329 $(OBJDIR)/import_.c \
330 $(OBJDIR)/info_.c \
331 $(OBJDIR)/interwiki_.c \
332 $(OBJDIR)/json_.c \
333 $(OBJDIR)/json_artifact_.c \
334 $(OBJDIR)/json_branch_.c \
335 $(OBJDIR)/json_config_.c \
336 $(OBJDIR)/json_diff_.c \
@@ -470,10 +472,11 @@
472 $(OBJDIR)/http_socket.o \
473 $(OBJDIR)/http_ssl.o \
474 $(OBJDIR)/http_transport.o \
475 $(OBJDIR)/import.o \
476 $(OBJDIR)/info.o \
477 $(OBJDIR)/interwiki.o \
478 $(OBJDIR)/json.o \
479 $(OBJDIR)/json_artifact.o \
480 $(OBJDIR)/json_branch.o \
481 $(OBJDIR)/json_config.o \
482 $(OBJDIR)/json_diff.o \
@@ -805,10 +808,11 @@
808 $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
809 $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
810 $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
811 $(OBJDIR)/import_.c:$(OBJDIR)/import.h \
812 $(OBJDIR)/info_.c:$(OBJDIR)/info.h \
813 $(OBJDIR)/interwiki_.c:$(OBJDIR)/interwiki.h \
814 $(OBJDIR)/json_.c:$(OBJDIR)/json.h \
815 $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
816 $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
817 $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
818 $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1367,10 +1371,18 @@
1371
1372 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
1373 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
1374
1375 $(OBJDIR)/info.h: $(OBJDIR)/headers
1376
1377 $(OBJDIR)/interwiki_.c: $(SRCDIR)/interwiki.c $(OBJDIR)/translate
1378 $(OBJDIR)/translate $(SRCDIR)/interwiki.c >$@
1379
1380 $(OBJDIR)/interwiki.o: $(OBJDIR)/interwiki_.c $(OBJDIR)/interwiki.h $(SRCDIR)/config.h
1381 $(XTCC) -o $(OBJDIR)/interwiki.o -c $(OBJDIR)/interwiki_.c
1382
1383 $(OBJDIR)/interwiki.h: $(OBJDIR)/headers
1384
1385 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(OBJDIR)/translate
1386 $(OBJDIR)/translate $(SRCDIR)/json.c >$@
1387
1388 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
1389
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -83,10 +83,11 @@
8383
http
8484
http_socket
8585
http_transport
8686
import
8787
info
88
+ interwiki
8889
json
8990
json_artifact
9091
json_branch
9192
json_config
9293
json_diff
9394
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -83,10 +83,11 @@
83 http
84 http_socket
85 http_transport
86 import
87 info
 
88 json
89 json_artifact
90 json_branch
91 json_config
92 json_diff
93
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -83,10 +83,11 @@
83 http
84 http_socket
85 http_transport
86 import
87 info
88 interwiki
89 json
90 json_artifact
91 json_branch
92 json_config
93 json_diff
94
+7 -3
--- src/markdown.md
+++ src/markdown.md
@@ -44,15 +44,16 @@
4444
> it may optionally be written **\<URL\>** (format 4).
4545
> Other **URL** formats include:
4646
> <ul>
4747
> <li> A relative pathname.
4848
> <li> A pathname starting with "/" in which case the Fossil server
49
-> URL prefix is prepended
49
+> URL prefix is prepended
5050
> <li> A wiki page name, or a wiki page name preceded by "wiki:"
51
-> <li> An artifact or ticket hash or hash prefix
51
+> <li> An artifact or ticket hash or hash prefix
5252
> <li> A date and time stamp: "YYYY-MM-DD HH:MM:SS" or a subset that
53
-> includes at least the day of the month.</ul>
53
+> includes at least the day of the month.
54
+> <li> An [interwiki link](#intermap) of the form "<i>Tag</i><b>:</b><i>PageName</i>"</ul>
5455
5556
> In format 8, then the URL becomes the display text. This is useful for
5657
> hyperlinks that refer to wiki pages and check-in and ticket hashes.
5758
5859
## Fonts ##
@@ -152,5 +153,8 @@
152153
> * For documents that begin with a top-level heading (ex: **# heading #**),
153154
> the heading is omitted from the body of the document and becomes the
154155
> document title displayed at the top of the Fossil page.
155156
156157
[daringfireball.net]: http://daringfireball.net/projects/markdown/syntax
158
+
159
+<a name="intermap"></a>
160
+## Interwiki Tag Map
157161
--- src/markdown.md
+++ src/markdown.md
@@ -44,15 +44,16 @@
44 > it may optionally be written **\<URL\>** (format 4).
45 > Other **URL** formats include:
46 > <ul>
47 > <li> A relative pathname.
48 > <li> A pathname starting with "/" in which case the Fossil server
49 > URL prefix is prepended
50 > <li> A wiki page name, or a wiki page name preceded by "wiki:"
51 > <li> An artifact or ticket hash or hash prefix
52 > <li> A date and time stamp: "YYYY-MM-DD HH:MM:SS" or a subset that
53 > includes at least the day of the month.</ul>
 
54
55 > In format 8, then the URL becomes the display text. This is useful for
56 > hyperlinks that refer to wiki pages and check-in and ticket hashes.
57
58 ## Fonts ##
@@ -152,5 +153,8 @@
152 > * For documents that begin with a top-level heading (ex: **# heading #**),
153 > the heading is omitted from the body of the document and becomes the
154 > document title displayed at the top of the Fossil page.
155
156 [daringfireball.net]: http://daringfireball.net/projects/markdown/syntax
 
 
 
157
--- src/markdown.md
+++ src/markdown.md
@@ -44,15 +44,16 @@
44 > it may optionally be written **\<URL\>** (format 4).
45 > Other **URL** formats include:
46 > <ul>
47 > <li> A relative pathname.
48 > <li> A pathname starting with "/" in which case the Fossil server
49 > URL prefix is prepended
50 > <li> A wiki page name, or a wiki page name preceded by "wiki:"
51 > <li> An artifact or ticket hash or hash prefix
52 > <li> A date and time stamp: "YYYY-MM-DD HH:MM:SS" or a subset that
53 > includes at least the day of the month.
54 > <li> An [interwiki link](#intermap) of the form "<i>Tag</i><b>:</b><i>PageName</i>"</ul>
55
56 > In format 8, then the URL becomes the display text. This is useful for
57 > hyperlinks that refer to wiki pages and check-in and ticket hashes.
58
59 ## Fonts ##
@@ -152,5 +153,8 @@
153 > * For documents that begin with a top-level heading (ex: **# heading #**),
154 > the heading is omitted from the body of the document and becomes the
155 > document title displayed at the top of the Fossil page.
156
157 [daringfireball.net]: http://daringfireball.net/projects/markdown/syntax
158
159 <a name="intermap"></a>
160 ## Interwiki Tag Map
161
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344344
i += 4;
345345
if( !fossil_isspace(zLine[i]) ) goto page_skip;
346346
while( fossil_isspace(zLine[i]) ){ i++; }
347347
for(j=0; fossil_isident(zLine[i+j]); j++){}
348348
if( j==0 ) goto page_skip;
349
+ }else{
350
+ j = 0;
349351
}
350352
for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
351353
nHelp = k+1;
352354
zHelp[nHelp] = 0;
353355
for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
354356
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344 i += 4;
345 if( !fossil_isspace(zLine[i]) ) goto page_skip;
346 while( fossil_isspace(zLine[i]) ){ i++; }
347 for(j=0; fossil_isident(zLine[i+j]); j++){}
348 if( j==0 ) goto page_skip;
 
 
349 }
350 for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
351 nHelp = k+1;
352 zHelp[nHelp] = 0;
353 for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
354
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344 i += 4;
345 if( !fossil_isspace(zLine[i]) ) goto page_skip;
346 while( fossil_isspace(zLine[i]) ){ i++; }
347 for(j=0; fossil_isident(zLine[i+j]); j++){}
348 if( j==0 ) goto page_skip;
349 }else{
350 j = 0;
351 }
352 for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
353 nHelp = k+1;
354 zHelp[nHelp] = 0;
355 for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
356
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344344
i += 4;
345345
if( !fossil_isspace(zLine[i]) ) goto page_skip;
346346
while( fossil_isspace(zLine[i]) ){ i++; }
347347
for(j=0; fossil_isident(zLine[i+j]); j++){}
348348
if( j==0 ) goto page_skip;
349
+ }else{
350
+ j = 0;
349351
}
350352
for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
351353
nHelp = k+1;
352354
zHelp[nHelp] = 0;
353355
for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
354356
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344 i += 4;
345 if( !fossil_isspace(zLine[i]) ) goto page_skip;
346 while( fossil_isspace(zLine[i]) ){ i++; }
347 for(j=0; fossil_isident(zLine[i+j]); j++){}
348 if( j==0 ) goto page_skip;
 
 
349 }
350 for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
351 nHelp = k+1;
352 zHelp[nHelp] = 0;
353 for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
354
--- src/mkindex.c
+++ src/mkindex.c
@@ -344,10 +344,12 @@
344 i += 4;
345 if( !fossil_isspace(zLine[i]) ) goto page_skip;
346 while( fossil_isspace(zLine[i]) ){ i++; }
347 for(j=0; fossil_isident(zLine[i+j]); j++){}
348 if( j==0 ) goto page_skip;
349 }else{
350 j = 0;
351 }
352 for(k=nHelp-1; k>=0 && fossil_isspace(zHelp[k]); k--){}
353 nHelp = k+1;
354 zHelp[nHelp] = 0;
355 for(k=0; k<nHelp && fossil_isspace(zHelp[k]); k++){}
356
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
10841084
@ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
10851085
@ in forum posts, make this setting be "<b>btw</b>". The default is an
10861086
@ empty string which means that Fossil never allows Markdown documents
10871087
@ to generate unsafe HTML.
10881088
@ (Property: "safe-html")</p>
1089
+ @ <hr />
1090
+ @ The current interwiki tag map is as follows:
1091
+ interwiki_append_map_table(cgi_output_blob());
1092
+ @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1093
+ @ modify the interwiki tag map.
10891094
@ <hr />
10901095
onoff_attribute("Use HTML as wiki markup language",
10911096
"wiki-use-html", "wiki-use-html", 0, 0);
10921097
@ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
10931098
@ but all other wiki formatting will be ignored.</p>
10941099
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
1084 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1085 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1086 @ empty string which means that Fossil never allows Markdown documents
1087 @ to generate unsafe HTML.
1088 @ (Property: "safe-html")</p>
 
 
 
 
 
1089 @ <hr />
1090 onoff_attribute("Use HTML as wiki markup language",
1091 "wiki-use-html", "wiki-use-html", 0, 0);
1092 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1093 @ but all other wiki formatting will be ignored.</p>
1094
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
1084 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1085 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1086 @ empty string which means that Fossil never allows Markdown documents
1087 @ to generate unsafe HTML.
1088 @ (Property: "safe-html")</p>
1089 @ <hr />
1090 @ The current interwiki tag map is as follows:
1091 interwiki_append_map_table(cgi_output_blob());
1092 @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1093 @ modify the interwiki tag map.
1094 @ <hr />
1095 onoff_attribute("Use HTML as wiki markup language",
1096 "wiki-use-html", "wiki-use-html", 0, 0);
1097 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1098 @ but all other wiki formatting will be ignored.</p>
1099
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
10841084
@ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
10851085
@ in forum posts, make this setting be "<b>btw</b>". The default is an
10861086
@ empty string which means that Fossil never allows Markdown documents
10871087
@ to generate unsafe HTML.
10881088
@ (Property: "safe-html")</p>
1089
+ @ <hr />
1090
+ @ The current interwiki tag map is as follows:
1091
+ interwiki_append_map_table(cgi_output_blob());
1092
+ @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1093
+ @ modify the interwiki tag map.
10891094
@ <hr />
10901095
onoff_attribute("Use HTML as wiki markup language",
10911096
"wiki-use-html", "wiki-use-html", 0, 0);
10921097
@ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
10931098
@ but all other wiki formatting will be ignored.</p>
10941099
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
1084 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1085 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1086 @ empty string which means that Fossil never allows Markdown documents
1087 @ to generate unsafe HTML.
1088 @ (Property: "safe-html")</p>
 
 
 
 
 
1089 @ <hr />
1090 onoff_attribute("Use HTML as wiki markup language",
1091 "wiki-use-html", "wiki-use-html", 0, 0);
1092 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1093 @ but all other wiki formatting will be ignored.</p>
1094
--- src/setup.c
+++ src/setup.c
@@ -1084,10 +1084,15 @@
1084 @ make this setting be just "<b>b</b>". To allow unsafe HTML anywhere except
1085 @ in forum posts, make this setting be "<b>btw</b>". The default is an
1086 @ empty string which means that Fossil never allows Markdown documents
1087 @ to generate unsafe HTML.
1088 @ (Property: "safe-html")</p>
1089 @ <hr />
1090 @ The current interwiki tag map is as follows:
1091 interwiki_append_map_table(cgi_output_blob());
1092 @ <p>Visit <a href="./intermap">%R/intermap</a> for details or to
1093 @ modify the interwiki tag map.
1094 @ <hr />
1095 onoff_attribute("Use HTML as wiki markup language",
1096 "wiki-use-html", "wiki-use-html", 0, 0);
1097 @ <p>Use HTML as the wiki markup language. Wiki links will still be parsed
1098 @ but all other wiki formatting will be ignored.</p>
1099
+4
--- src/wiki.c
+++ src/wiki.c
@@ -220,12 +220,14 @@
220220
if( fTxt ){
221221
style_submenu_element("Formatted", "%R/md_rules");
222222
}else{
223223
style_submenu_element("Plain-Text", "%R/md_rules?txt=1");
224224
}
225
+ style_submenu_element("Wiki", "%R/wiki_rules");
225226
blob_init(&x, builtin_text("markdown.md"), -1);
226227
blob_materialize(&x);
228
+ interwiki_append_map_table(&x);
227229
safe_html_context(DOCSRC_TRUSTED);
228230
wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-markdown");
229231
blob_reset(&x);
230232
style_footer();
231233
}
@@ -242,12 +244,14 @@
242244
if( fTxt ){
243245
style_submenu_element("Formatted", "%R/wiki_rules");
244246
}else{
245247
style_submenu_element("Plain-Text", "%R/wiki_rules?txt=1");
246248
}
249
+ style_submenu_element("Markdown","%R/md_rules");
247250
blob_init(&x, builtin_text("wiki.wiki"), -1);
248251
blob_materialize(&x);
252
+ interwiki_append_map_table(&x);
249253
safe_html_context(DOCSRC_TRUSTED);
250254
wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-fossil-wiki");
251255
blob_reset(&x);
252256
style_footer();
253257
}
254258
--- src/wiki.c
+++ src/wiki.c
@@ -220,12 +220,14 @@
220 if( fTxt ){
221 style_submenu_element("Formatted", "%R/md_rules");
222 }else{
223 style_submenu_element("Plain-Text", "%R/md_rules?txt=1");
224 }
 
225 blob_init(&x, builtin_text("markdown.md"), -1);
226 blob_materialize(&x);
 
227 safe_html_context(DOCSRC_TRUSTED);
228 wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-markdown");
229 blob_reset(&x);
230 style_footer();
231 }
@@ -242,12 +244,14 @@
242 if( fTxt ){
243 style_submenu_element("Formatted", "%R/wiki_rules");
244 }else{
245 style_submenu_element("Plain-Text", "%R/wiki_rules?txt=1");
246 }
 
247 blob_init(&x, builtin_text("wiki.wiki"), -1);
248 blob_materialize(&x);
 
249 safe_html_context(DOCSRC_TRUSTED);
250 wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-fossil-wiki");
251 blob_reset(&x);
252 style_footer();
253 }
254
--- src/wiki.c
+++ src/wiki.c
@@ -220,12 +220,14 @@
220 if( fTxt ){
221 style_submenu_element("Formatted", "%R/md_rules");
222 }else{
223 style_submenu_element("Plain-Text", "%R/md_rules?txt=1");
224 }
225 style_submenu_element("Wiki", "%R/wiki_rules");
226 blob_init(&x, builtin_text("markdown.md"), -1);
227 blob_materialize(&x);
228 interwiki_append_map_table(&x);
229 safe_html_context(DOCSRC_TRUSTED);
230 wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-markdown");
231 blob_reset(&x);
232 style_footer();
233 }
@@ -242,12 +244,14 @@
244 if( fTxt ){
245 style_submenu_element("Formatted", "%R/wiki_rules");
246 }else{
247 style_submenu_element("Plain-Text", "%R/wiki_rules?txt=1");
248 }
249 style_submenu_element("Markdown","%R/md_rules");
250 blob_init(&x, builtin_text("wiki.wiki"), -1);
251 blob_materialize(&x);
252 interwiki_append_map_table(&x);
253 safe_html_context(DOCSRC_TRUSTED);
254 wiki_render_by_mimetype(&x, fTxt ? "text/plain" : "text/x-fossil-wiki");
255 blob_reset(&x);
256 style_footer();
257 }
258
+11 -3
--- src/wiki.wiki
+++ src/wiki.wiki
@@ -4,11 +4,12 @@
44
# Bullets are "*" surrounded by two spaces at the beginning of a line
55
# Enumeration items are "#" or a digit and a "." surrounded by two
66
spaces at the beginning of a line
77
# Indented paragraphs begin with a tab or two spaces
88
# Hyperlinks are contained within square brackets:
9
- <nowiki>"[target]" or "[target|label]"</nowiki>
9
+ <nowiki>"<b>[</b><i>target</i><b>]</b>"
10
+ or "<b>[</b><i>target</i><b>|</b><i>label</i><b>]</b>"</nowiki>
1011
# Most ordinary HTML works
1112
# &lt;verbatim&gt; and &lt;nowiki&gt;
1213
1314
We call the first five rules above the "wiki" formatting rules.
1415
The last two rules are the HTML formatting rules.
@@ -42,11 +43,13 @@
4243
Use HTML for deeper indentation.
4344
4445
5. <b>Hyperlinks.</b>
4546
Text within square brackets <nowiki>("[...]")</nowiki> becomes a
4647
hyperlink. The target can be a wiki page name, the artifact ID of
47
- a check-in or ticket, the name of an image, or a URL.
48
+ a check-in or ticket, the name of an image, a URL, or an
49
+ [#intermap|interwiki link] of the form
50
+ "<i>Tag</i><b>:</b><i>PageName</i>".
4851
By default, the target is displayed as the text of the hyperlink.
4952
But you can specify alternative text after the target name
5053
separated by a "|" character.
5154
You can also link to internal anchor names using
5255
<nowiki>[#anchor-name],</nowiki> providing you have added the necessary
@@ -54,12 +57,14 @@
5457
5558
6. <b>HTML.</b>
5659
The following standard HTML elements may be used:
5760
&lt;a&gt; &lt;address&gt; &lt;article&gt; &lt;aside&gt; &lt;b&gt;
5861
&lt;big&gt; &lt;blockquote&gt; &lt;br&gt; &lt;center&gt; &lt;cite&gt;
59
- &lt;code&gt; &lt;col&gt; &lt;colgroup&gt; &lt;dd&gt; &lt;dfn&gt;
62
+ &lt;code&gt; &lt;col&gt; &lt;colgroup&gt; &lt;dd&gt;
63
+ &lt;del&gt; &lt;dfn&gt;
6064
&lt;div&gt; &lt;dl&gt; &lt;dt&gt; &lt;em&gt; &lt;font&gt; &lt;footer&gt;
65
+ &lt;ins&gt;
6166
&lt;h1&gt; &lt;h2&gt; &lt;h3&gt; &lt;h4&gt; &lt;h5&gt; &lt;h6&gt;
6267
&lt;header&gt; &lt;hr&gt; &lt;i&gt; &lt;img&gt; &lt;kbd&gt; &lt;li&gt;
6368
&lt;nav&gt; &lt;nobr&gt; &lt;nowiki&gt; &lt;ol&gt; &lt;p&gt; &lt;pre&gt;
6469
&lt;s&gt; &lt;samp&gt; &lt;section&gt; &lt;small&gt; &lt;span&gt;
6570
&lt;strike&gt; &lt;strong&gt; &lt;sub&gt; &lt;sup&gt; &lt;table&gt;
@@ -74,5 +79,8 @@
7479
7. <b>Special Markup.</b>
7580
The &lt;nowiki&gt; tag disables all wiki formatting rules through
7681
the matching &lt;/nowiki&gt; element. The &lt;verbatim&gt; tag works
7782
like &lt;pre&gt; with the addition that it also disables all wiki
7883
and HTML markup through the matching &lt;/verbatim&gt;.
84
+
85
+<a name="intermap"></a>
86
+<h2>Interwiki Tag Map</h2>
7987
--- src/wiki.wiki
+++ src/wiki.wiki
@@ -4,11 +4,12 @@
4 # Bullets are "*" surrounded by two spaces at the beginning of a line
5 # Enumeration items are "#" or a digit and a "." surrounded by two
6 spaces at the beginning of a line
7 # Indented paragraphs begin with a tab or two spaces
8 # Hyperlinks are contained within square brackets:
9 <nowiki>"[target]" or "[target|label]"</nowiki>
 
10 # Most ordinary HTML works
11 # &lt;verbatim&gt; and &lt;nowiki&gt;
12
13 We call the first five rules above the "wiki" formatting rules.
14 The last two rules are the HTML formatting rules.
@@ -42,11 +43,13 @@
42 Use HTML for deeper indentation.
43
44 5. <b>Hyperlinks.</b>
45 Text within square brackets <nowiki>("[...]")</nowiki> becomes a
46 hyperlink. The target can be a wiki page name, the artifact ID of
47 a check-in or ticket, the name of an image, or a URL.
 
 
48 By default, the target is displayed as the text of the hyperlink.
49 But you can specify alternative text after the target name
50 separated by a "|" character.
51 You can also link to internal anchor names using
52 <nowiki>[#anchor-name],</nowiki> providing you have added the necessary
@@ -54,12 +57,14 @@
54
55 6. <b>HTML.</b>
56 The following standard HTML elements may be used:
57 &lt;a&gt; &lt;address&gt; &lt;article&gt; &lt;aside&gt; &lt;b&gt;
58 &lt;big&gt; &lt;blockquote&gt; &lt;br&gt; &lt;center&gt; &lt;cite&gt;
59 &lt;code&gt; &lt;col&gt; &lt;colgroup&gt; &lt;dd&gt; &lt;dfn&gt;
 
60 &lt;div&gt; &lt;dl&gt; &lt;dt&gt; &lt;em&gt; &lt;font&gt; &lt;footer&gt;
 
61 &lt;h1&gt; &lt;h2&gt; &lt;h3&gt; &lt;h4&gt; &lt;h5&gt; &lt;h6&gt;
62 &lt;header&gt; &lt;hr&gt; &lt;i&gt; &lt;img&gt; &lt;kbd&gt; &lt;li&gt;
63 &lt;nav&gt; &lt;nobr&gt; &lt;nowiki&gt; &lt;ol&gt; &lt;p&gt; &lt;pre&gt;
64 &lt;s&gt; &lt;samp&gt; &lt;section&gt; &lt;small&gt; &lt;span&gt;
65 &lt;strike&gt; &lt;strong&gt; &lt;sub&gt; &lt;sup&gt; &lt;table&gt;
@@ -74,5 +79,8 @@
74 7. <b>Special Markup.</b>
75 The &lt;nowiki&gt; tag disables all wiki formatting rules through
76 the matching &lt;/nowiki&gt; element. The &lt;verbatim&gt; tag works
77 like &lt;pre&gt; with the addition that it also disables all wiki
78 and HTML markup through the matching &lt;/verbatim&gt;.
 
 
 
79
--- src/wiki.wiki
+++ src/wiki.wiki
@@ -4,11 +4,12 @@
4 # Bullets are "*" surrounded by two spaces at the beginning of a line
5 # Enumeration items are "#" or a digit and a "." surrounded by two
6 spaces at the beginning of a line
7 # Indented paragraphs begin with a tab or two spaces
8 # Hyperlinks are contained within square brackets:
9 <nowiki>"<b>[</b><i>target</i><b>]</b>"
10 or "<b>[</b><i>target</i><b>|</b><i>label</i><b>]</b>"</nowiki>
11 # Most ordinary HTML works
12 # &lt;verbatim&gt; and &lt;nowiki&gt;
13
14 We call the first five rules above the "wiki" formatting rules.
15 The last two rules are the HTML formatting rules.
@@ -42,11 +43,13 @@
43 Use HTML for deeper indentation.
44
45 5. <b>Hyperlinks.</b>
46 Text within square brackets <nowiki>("[...]")</nowiki> becomes a
47 hyperlink. The target can be a wiki page name, the artifact ID of
48 a check-in or ticket, the name of an image, a URL, or an
49 [#intermap|interwiki link] of the form
50 "<i>Tag</i><b>:</b><i>PageName</i>".
51 By default, the target is displayed as the text of the hyperlink.
52 But you can specify alternative text after the target name
53 separated by a "|" character.
54 You can also link to internal anchor names using
55 <nowiki>[#anchor-name],</nowiki> providing you have added the necessary
@@ -54,12 +57,14 @@
57
58 6. <b>HTML.</b>
59 The following standard HTML elements may be used:
60 &lt;a&gt; &lt;address&gt; &lt;article&gt; &lt;aside&gt; &lt;b&gt;
61 &lt;big&gt; &lt;blockquote&gt; &lt;br&gt; &lt;center&gt; &lt;cite&gt;
62 &lt;code&gt; &lt;col&gt; &lt;colgroup&gt; &lt;dd&gt;
63 &lt;del&gt; &lt;dfn&gt;
64 &lt;div&gt; &lt;dl&gt; &lt;dt&gt; &lt;em&gt; &lt;font&gt; &lt;footer&gt;
65 &lt;ins&gt;
66 &lt;h1&gt; &lt;h2&gt; &lt;h3&gt; &lt;h4&gt; &lt;h5&gt; &lt;h6&gt;
67 &lt;header&gt; &lt;hr&gt; &lt;i&gt; &lt;img&gt; &lt;kbd&gt; &lt;li&gt;
68 &lt;nav&gt; &lt;nobr&gt; &lt;nowiki&gt; &lt;ol&gt; &lt;p&gt; &lt;pre&gt;
69 &lt;s&gt; &lt;samp&gt; &lt;section&gt; &lt;small&gt; &lt;span&gt;
70 &lt;strike&gt; &lt;strong&gt; &lt;sub&gt; &lt;sup&gt; &lt;table&gt;
@@ -74,5 +79,8 @@
79 7. <b>Special Markup.</b>
80 The &lt;nowiki&gt; tag disables all wiki formatting rules through
81 the matching &lt;/nowiki&gt; element. The &lt;verbatim&gt; tag works
82 like &lt;pre&gt; with the addition that it also disables all wiki
83 and HTML markup through the matching &lt;/verbatim&gt;.
84
85 <a name="intermap"></a>
86 <h2>Interwiki Tag Map</h2>
87
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1230,10 +1230,12 @@
12301230
**
12311231
** [WikiPageName]
12321232
** [wiki:WikiPageName]
12331233
**
12341234
** [2010-02-27 07:13]
1235
+**
1236
+** [InterMap:Link] -> Interwiki link
12351237
*/
12361238
void wiki_resolve_hyperlink(
12371239
Blob *pOut, /* Write the HTML output here */
12381240
int mFlags, /* Rendering option flags */
12391241
const char *zTarget, /* Hyperlink target; text within [...] */
@@ -1244,10 +1246,11 @@
12441246
){
12451247
const char *zTerm = "</a>";
12461248
const char *z;
12471249
char *zExtra = 0;
12481250
const char *zExtraNS = 0;
1251
+ char *zRemote = 0;
12491252
12501253
if( zTitle ){
12511254
zExtra = mprintf(" title='%h'", zTitle);
12521255
zExtraNS = zExtra+1;
12531256
}
@@ -1303,10 +1306,13 @@
13031306
blob_appendf(pOut, "%z[",xhref(zExtraNS, "%R/info/%s", zTarget));
13041307
zTerm = "]</a>";
13051308
}else{
13061309
zTerm = "";
13071310
}
1311
+ }else if( (zRemote = interwiki_url(zTarget))!=0 ){
1312
+ blob_appendf(pOut, "<a href=\"%z\"%s>", zRemote, zExtra);
1313
+ zTerm = "</a>";
13081314
}else if( (z = validWikiPageName(mFlags, zTarget))!=0 ){
13091315
/* The link is to a valid wiki page name */
13101316
const char *zOverride = wiki_is_overridden(zTarget);
13111317
if( zOverride ){
13121318
blob_appendf(pOut, "<a href=\"%R/info/%S\"%s>", zOverride, zExtra);
13131319
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1230,10 +1230,12 @@
1230 **
1231 ** [WikiPageName]
1232 ** [wiki:WikiPageName]
1233 **
1234 ** [2010-02-27 07:13]
 
 
1235 */
1236 void wiki_resolve_hyperlink(
1237 Blob *pOut, /* Write the HTML output here */
1238 int mFlags, /* Rendering option flags */
1239 const char *zTarget, /* Hyperlink target; text within [...] */
@@ -1244,10 +1246,11 @@
1244 ){
1245 const char *zTerm = "</a>";
1246 const char *z;
1247 char *zExtra = 0;
1248 const char *zExtraNS = 0;
 
1249
1250 if( zTitle ){
1251 zExtra = mprintf(" title='%h'", zTitle);
1252 zExtraNS = zExtra+1;
1253 }
@@ -1303,10 +1306,13 @@
1303 blob_appendf(pOut, "%z[",xhref(zExtraNS, "%R/info/%s", zTarget));
1304 zTerm = "]</a>";
1305 }else{
1306 zTerm = "";
1307 }
 
 
 
1308 }else if( (z = validWikiPageName(mFlags, zTarget))!=0 ){
1309 /* The link is to a valid wiki page name */
1310 const char *zOverride = wiki_is_overridden(zTarget);
1311 if( zOverride ){
1312 blob_appendf(pOut, "<a href=\"%R/info/%S\"%s>", zOverride, zExtra);
1313
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1230,10 +1230,12 @@
1230 **
1231 ** [WikiPageName]
1232 ** [wiki:WikiPageName]
1233 **
1234 ** [2010-02-27 07:13]
1235 **
1236 ** [InterMap:Link] -> Interwiki link
1237 */
1238 void wiki_resolve_hyperlink(
1239 Blob *pOut, /* Write the HTML output here */
1240 int mFlags, /* Rendering option flags */
1241 const char *zTarget, /* Hyperlink target; text within [...] */
@@ -1244,10 +1246,11 @@
1246 ){
1247 const char *zTerm = "</a>";
1248 const char *z;
1249 char *zExtra = 0;
1250 const char *zExtraNS = 0;
1251 char *zRemote = 0;
1252
1253 if( zTitle ){
1254 zExtra = mprintf(" title='%h'", zTitle);
1255 zExtraNS = zExtra+1;
1256 }
@@ -1303,10 +1306,13 @@
1306 blob_appendf(pOut, "%z[",xhref(zExtraNS, "%R/info/%s", zTarget));
1307 zTerm = "]</a>";
1308 }else{
1309 zTerm = "";
1310 }
1311 }else if( (zRemote = interwiki_url(zTarget))!=0 ){
1312 blob_appendf(pOut, "<a href=\"%z\"%s>", zRemote, zExtra);
1313 zTerm = "</a>";
1314 }else if( (z = validWikiPageName(mFlags, zTarget))!=0 ){
1315 /* The link is to a valid wiki page name */
1316 const char *zOverride = wiki_is_overridden(zTarget);
1317 if( zOverride ){
1318 blob_appendf(pOut, "<a href=\"%R/info/%S\"%s>", zOverride, zExtra);
1319
+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_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 -DSQLITE_TRUSTED_SCHEMA=0
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_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 -DSQLITE_TRUSTED_SCHEMA=0 -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 ajax_.c alerts_.c allrepo_.c attach_.c backlink_.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 fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.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 terminal_.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 xfer_.c xfersetup_.c zip_.c
33
+SRC = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.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 fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.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 terminal_.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 xfer_.c xfersetup_.c zip_.c
3434
35
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$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)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$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)\terminal$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)\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)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$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)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\interwiki$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)\terminal$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)\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 ajax alerts allrepo attach backlink 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 fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook 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 terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
54
+ +echo add ajax alerts allrepo attach backlink 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 fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook http http_socket http_ssl http_transport import info interwiki 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 terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
5555
+echo fossil >> $@
5656
+echo fossil >> $@
5757
+echo $(LIBS) >> $@
5858
+echo. >> $@
5959
+echo fossil >> $@
@@ -475,10 +475,16 @@
475475
$(OBJDIR)\info$O : info_.c info.h
476476
$(TCC) -o$@ -c info_.c
477477
478478
info_.c : $(SRCDIR)\info.c
479479
+translate$E $** > $@
480
+
481
+$(OBJDIR)\interwiki$O : interwiki_.c interwiki.h
482
+ $(TCC) -o$@ -c interwiki_.c
483
+
484
+interwiki_.c : $(SRCDIR)\interwiki.c
485
+ +translate$E $** > $@
480486
481487
$(OBJDIR)\json$O : json_.c json.h
482488
$(TCC) -o$@ -c json_.c
483489
484490
json_.c : $(SRCDIR)\json.c
@@ -981,7 +987,7 @@
981987
982988
zip_.c : $(SRCDIR)\zip.c
983989
+translate$E $** > $@
984990
985991
headers: makeheaders$E page_index.h builtin_data.h VERSION.h
986
- +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.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 fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.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 terminal_.c:terminal.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 xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
992
+ +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.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 fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.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 interwiki_.c:interwiki.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 terminal_.c:terminal.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 xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
987993
@copy /Y nul: headers
988994
--- 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_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 -DSQLITE_TRUSTED_SCHEMA=0
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_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 -DSQLITE_TRUSTED_SCHEMA=0 -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 ajax_.c alerts_.c allrepo_.c attach_.c backlink_.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 fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.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 terminal_.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 xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$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)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$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)\terminal$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)\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 ajax alerts allrepo attach backlink 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 fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook 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 terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -475,10 +475,16 @@
475 $(OBJDIR)\info$O : info_.c info.h
476 $(TCC) -o$@ -c info_.c
477
478 info_.c : $(SRCDIR)\info.c
479 +translate$E $** > $@
 
 
 
 
 
 
480
481 $(OBJDIR)\json$O : json_.c json.h
482 $(TCC) -o$@ -c json_.c
483
484 json_.c : $(SRCDIR)\json.c
@@ -981,7 +987,7 @@
981
982 zip_.c : $(SRCDIR)\zip.c
983 +translate$E $** > $@
984
985 headers: makeheaders$E page_index.h builtin_data.h VERSION.h
986 +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.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 fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.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 terminal_.c:terminal.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 xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
987 @copy /Y nul: headers
988
--- 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_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 -DSQLITE_TRUSTED_SCHEMA=0
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_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 -DSQLITE_TRUSTED_SCHEMA=0 -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 ajax_.c alerts_.c allrepo_.c attach_.c backlink_.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 fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.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 terminal_.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 xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\ajax$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backlink$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)\fileedit$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\hook$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\interwiki$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)\terminal$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)\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 ajax alerts allrepo attach backlink 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 fileedit finfo foci forum fshell fusefs fuzz glob graph gzip hname hook http http_socket http_ssl http_transport import info interwiki 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 terminal th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -475,10 +475,16 @@
475 $(OBJDIR)\info$O : info_.c info.h
476 $(TCC) -o$@ -c info_.c
477
478 info_.c : $(SRCDIR)\info.c
479 +translate$E $** > $@
480
481 $(OBJDIR)\interwiki$O : interwiki_.c interwiki.h
482 $(TCC) -o$@ -c interwiki_.c
483
484 interwiki_.c : $(SRCDIR)\interwiki.c
485 +translate$E $** > $@
486
487 $(OBJDIR)\json$O : json_.c json.h
488 $(TCC) -o$@ -c json_.c
489
490 json_.c : $(SRCDIR)\json.c
@@ -981,7 +987,7 @@
987
988 zip_.c : $(SRCDIR)\zip.c
989 +translate$E $** > $@
990
991 headers: makeheaders$E page_index.h builtin_data.h VERSION.h
992 +makeheaders$E add_.c:add.h ajax_.c:ajax.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backlink_.c:backlink.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 fileedit_.c:fileedit.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h hook_.c:hook.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 interwiki_.c:interwiki.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 terminal_.c:terminal.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 xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
993 @copy /Y nul: headers
994
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -485,10 +485,11 @@
485485
$(SRCDIR)/http_socket.c \
486486
$(SRCDIR)/http_ssl.c \
487487
$(SRCDIR)/http_transport.c \
488488
$(SRCDIR)/import.c \
489489
$(SRCDIR)/info.c \
490
+ $(SRCDIR)/interwiki.c \
490491
$(SRCDIR)/json.c \
491492
$(SRCDIR)/json_artifact.c \
492493
$(SRCDIR)/json_branch.c \
493494
$(SRCDIR)/json_config.c \
494495
$(SRCDIR)/json_diff.c \
@@ -737,10 +738,11 @@
737738
$(OBJDIR)/http_socket_.c \
738739
$(OBJDIR)/http_ssl_.c \
739740
$(OBJDIR)/http_transport_.c \
740741
$(OBJDIR)/import_.c \
741742
$(OBJDIR)/info_.c \
743
+ $(OBJDIR)/interwiki_.c \
742744
$(OBJDIR)/json_.c \
743745
$(OBJDIR)/json_artifact_.c \
744746
$(OBJDIR)/json_branch_.c \
745747
$(OBJDIR)/json_config_.c \
746748
$(OBJDIR)/json_diff_.c \
@@ -882,10 +884,11 @@
882884
$(OBJDIR)/http_socket.o \
883885
$(OBJDIR)/http_ssl.o \
884886
$(OBJDIR)/http_transport.o \
885887
$(OBJDIR)/import.o \
886888
$(OBJDIR)/info.o \
889
+ $(OBJDIR)/interwiki.o \
887890
$(OBJDIR)/json.o \
888891
$(OBJDIR)/json_artifact.o \
889892
$(OBJDIR)/json_branch.o \
890893
$(OBJDIR)/json_config.o \
891894
$(OBJDIR)/json_diff.o \
@@ -1242,10 +1245,11 @@
12421245
$(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
12431246
$(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
12441247
$(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
12451248
$(OBJDIR)/import_.c:$(OBJDIR)/import.h \
12461249
$(OBJDIR)/info_.c:$(OBJDIR)/info.h \
1250
+ $(OBJDIR)/interwiki_.c:$(OBJDIR)/interwiki.h \
12471251
$(OBJDIR)/json_.c:$(OBJDIR)/json.h \
12481252
$(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
12491253
$(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
12501254
$(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
12511255
$(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1806,10 +1810,18 @@
18061810
18071811
$(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
18081812
$(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
18091813
18101814
$(OBJDIR)/info.h: $(OBJDIR)/headers
1815
+
1816
+$(OBJDIR)/interwiki_.c: $(SRCDIR)/interwiki.c $(TRANSLATE)
1817
+ $(TRANSLATE) $(SRCDIR)/interwiki.c >$@
1818
+
1819
+$(OBJDIR)/interwiki.o: $(OBJDIR)/interwiki_.c $(OBJDIR)/interwiki.h $(SRCDIR)/config.h
1820
+ $(XTCC) -o $(OBJDIR)/interwiki.o -c $(OBJDIR)/interwiki_.c
1821
+
1822
+$(OBJDIR)/interwiki.h: $(OBJDIR)/headers
18111823
18121824
$(OBJDIR)/json_.c: $(SRCDIR)/json.c $(TRANSLATE)
18131825
$(TRANSLATE) $(SRCDIR)/json.c >$@
18141826
18151827
$(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
18161828
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -485,10 +485,11 @@
485 $(SRCDIR)/http_socket.c \
486 $(SRCDIR)/http_ssl.c \
487 $(SRCDIR)/http_transport.c \
488 $(SRCDIR)/import.c \
489 $(SRCDIR)/info.c \
 
490 $(SRCDIR)/json.c \
491 $(SRCDIR)/json_artifact.c \
492 $(SRCDIR)/json_branch.c \
493 $(SRCDIR)/json_config.c \
494 $(SRCDIR)/json_diff.c \
@@ -737,10 +738,11 @@
737 $(OBJDIR)/http_socket_.c \
738 $(OBJDIR)/http_ssl_.c \
739 $(OBJDIR)/http_transport_.c \
740 $(OBJDIR)/import_.c \
741 $(OBJDIR)/info_.c \
 
742 $(OBJDIR)/json_.c \
743 $(OBJDIR)/json_artifact_.c \
744 $(OBJDIR)/json_branch_.c \
745 $(OBJDIR)/json_config_.c \
746 $(OBJDIR)/json_diff_.c \
@@ -882,10 +884,11 @@
882 $(OBJDIR)/http_socket.o \
883 $(OBJDIR)/http_ssl.o \
884 $(OBJDIR)/http_transport.o \
885 $(OBJDIR)/import.o \
886 $(OBJDIR)/info.o \
 
887 $(OBJDIR)/json.o \
888 $(OBJDIR)/json_artifact.o \
889 $(OBJDIR)/json_branch.o \
890 $(OBJDIR)/json_config.o \
891 $(OBJDIR)/json_diff.o \
@@ -1242,10 +1245,11 @@
1242 $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
1243 $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
1244 $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
1245 $(OBJDIR)/import_.c:$(OBJDIR)/import.h \
1246 $(OBJDIR)/info_.c:$(OBJDIR)/info.h \
 
1247 $(OBJDIR)/json_.c:$(OBJDIR)/json.h \
1248 $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
1249 $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
1250 $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
1251 $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1806,10 +1810,18 @@
1806
1807 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
1808 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
1809
1810 $(OBJDIR)/info.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1811
1812 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(TRANSLATE)
1813 $(TRANSLATE) $(SRCDIR)/json.c >$@
1814
1815 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
1816
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -485,10 +485,11 @@
485 $(SRCDIR)/http_socket.c \
486 $(SRCDIR)/http_ssl.c \
487 $(SRCDIR)/http_transport.c \
488 $(SRCDIR)/import.c \
489 $(SRCDIR)/info.c \
490 $(SRCDIR)/interwiki.c \
491 $(SRCDIR)/json.c \
492 $(SRCDIR)/json_artifact.c \
493 $(SRCDIR)/json_branch.c \
494 $(SRCDIR)/json_config.c \
495 $(SRCDIR)/json_diff.c \
@@ -737,10 +738,11 @@
738 $(OBJDIR)/http_socket_.c \
739 $(OBJDIR)/http_ssl_.c \
740 $(OBJDIR)/http_transport_.c \
741 $(OBJDIR)/import_.c \
742 $(OBJDIR)/info_.c \
743 $(OBJDIR)/interwiki_.c \
744 $(OBJDIR)/json_.c \
745 $(OBJDIR)/json_artifact_.c \
746 $(OBJDIR)/json_branch_.c \
747 $(OBJDIR)/json_config_.c \
748 $(OBJDIR)/json_diff_.c \
@@ -882,10 +884,11 @@
884 $(OBJDIR)/http_socket.o \
885 $(OBJDIR)/http_ssl.o \
886 $(OBJDIR)/http_transport.o \
887 $(OBJDIR)/import.o \
888 $(OBJDIR)/info.o \
889 $(OBJDIR)/interwiki.o \
890 $(OBJDIR)/json.o \
891 $(OBJDIR)/json_artifact.o \
892 $(OBJDIR)/json_branch.o \
893 $(OBJDIR)/json_config.o \
894 $(OBJDIR)/json_diff.o \
@@ -1242,10 +1245,11 @@
1245 $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h \
1246 $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h \
1247 $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h \
1248 $(OBJDIR)/import_.c:$(OBJDIR)/import.h \
1249 $(OBJDIR)/info_.c:$(OBJDIR)/info.h \
1250 $(OBJDIR)/interwiki_.c:$(OBJDIR)/interwiki.h \
1251 $(OBJDIR)/json_.c:$(OBJDIR)/json.h \
1252 $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h \
1253 $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h \
1254 $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h \
1255 $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h \
@@ -1806,10 +1810,18 @@
1810
1811 $(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h
1812 $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c
1813
1814 $(OBJDIR)/info.h: $(OBJDIR)/headers
1815
1816 $(OBJDIR)/interwiki_.c: $(SRCDIR)/interwiki.c $(TRANSLATE)
1817 $(TRANSLATE) $(SRCDIR)/interwiki.c >$@
1818
1819 $(OBJDIR)/interwiki.o: $(OBJDIR)/interwiki_.c $(OBJDIR)/interwiki.h $(SRCDIR)/config.h
1820 $(XTCC) -o $(OBJDIR)/interwiki.o -c $(OBJDIR)/interwiki_.c
1821
1822 $(OBJDIR)/interwiki.h: $(OBJDIR)/headers
1823
1824 $(OBJDIR)/json_.c: $(SRCDIR)/json.c $(TRANSLATE)
1825 $(TRANSLATE) $(SRCDIR)/json.c >$@
1826
1827 $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h
1828
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -407,10 +407,11 @@
407407
"$(OX)\http_socket_.c" \
408408
"$(OX)\http_ssl_.c" \
409409
"$(OX)\http_transport_.c" \
410410
"$(OX)\import_.c" \
411411
"$(OX)\info_.c" \
412
+ "$(OX)\interwiki_.c" \
412413
"$(OX)\json_.c" \
413414
"$(OX)\json_artifact_.c" \
414415
"$(OX)\json_branch_.c" \
415416
"$(OX)\json_config_.c" \
416417
"$(OX)\json_diff_.c" \
@@ -658,10 +659,11 @@
658659
"$(OX)\http_socket$O" \
659660
"$(OX)\http_ssl$O" \
660661
"$(OX)\http_transport$O" \
661662
"$(OX)\import$O" \
662663
"$(OX)\info$O" \
664
+ "$(OX)\interwiki$O" \
663665
"$(OX)\json$O" \
664666
"$(OX)\json_artifact$O" \
665667
"$(OX)\json_branch$O" \
666668
"$(OX)\json_config$O" \
667669
"$(OX)\json_diff$O" \
@@ -884,10 +886,11 @@
884886
echo "$(OX)\http_socket.obj" >> $@
885887
echo "$(OX)\http_ssl.obj" >> $@
886888
echo "$(OX)\http_transport.obj" >> $@
887889
echo "$(OX)\import.obj" >> $@
888890
echo "$(OX)\info.obj" >> $@
891
+ echo "$(OX)\interwiki.obj" >> $@
889892
echo "$(OX)\json.obj" >> $@
890893
echo "$(OX)\json_artifact.obj" >> $@
891894
echo "$(OX)\json_branch.obj" >> $@
892895
echo "$(OX)\json_config.obj" >> $@
893896
echo "$(OX)\json_diff.obj" >> $@
@@ -1548,10 +1551,16 @@
15481551
"$(OX)\info$O" : "$(OX)\info_.c" "$(OX)\info.h"
15491552
$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\info_.c"
15501553
15511554
"$(OX)\info_.c" : "$(SRCDIR)\info.c"
15521555
"$(OBJDIR)\translate$E" $** > $@
1556
+
1557
+"$(OX)\interwiki$O" : "$(OX)\interwiki_.c" "$(OX)\interwiki.h"
1558
+ $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\interwiki_.c"
1559
+
1560
+"$(OX)\interwiki_.c" : "$(SRCDIR)\interwiki.c"
1561
+ "$(OBJDIR)\translate$E" $** > $@
15531562
15541563
"$(OX)\json$O" : "$(OX)\json_.c" "$(OX)\json.h"
15551564
$(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\json_.c"
15561565
15571566
"$(OX)\json_.c" : "$(SRCDIR)\json.c"
@@ -2116,10 +2125,11 @@
21162125
"$(OX)\http_socket_.c":"$(OX)\http_socket.h" \
21172126
"$(OX)\http_ssl_.c":"$(OX)\http_ssl.h" \
21182127
"$(OX)\http_transport_.c":"$(OX)\http_transport.h" \
21192128
"$(OX)\import_.c":"$(OX)\import.h" \
21202129
"$(OX)\info_.c":"$(OX)\info.h" \
2130
+ "$(OX)\interwiki_.c":"$(OX)\interwiki.h" \
21212131
"$(OX)\json_.c":"$(OX)\json.h" \
21222132
"$(OX)\json_artifact_.c":"$(OX)\json_artifact.h" \
21232133
"$(OX)\json_branch_.c":"$(OX)\json_branch.h" \
21242134
"$(OX)\json_config_.c":"$(OX)\json_config.h" \
21252135
"$(OX)\json_diff_.c":"$(OX)\json_diff.h" \
21262136
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -407,10 +407,11 @@
407 "$(OX)\http_socket_.c" \
408 "$(OX)\http_ssl_.c" \
409 "$(OX)\http_transport_.c" \
410 "$(OX)\import_.c" \
411 "$(OX)\info_.c" \
 
412 "$(OX)\json_.c" \
413 "$(OX)\json_artifact_.c" \
414 "$(OX)\json_branch_.c" \
415 "$(OX)\json_config_.c" \
416 "$(OX)\json_diff_.c" \
@@ -658,10 +659,11 @@
658 "$(OX)\http_socket$O" \
659 "$(OX)\http_ssl$O" \
660 "$(OX)\http_transport$O" \
661 "$(OX)\import$O" \
662 "$(OX)\info$O" \
 
663 "$(OX)\json$O" \
664 "$(OX)\json_artifact$O" \
665 "$(OX)\json_branch$O" \
666 "$(OX)\json_config$O" \
667 "$(OX)\json_diff$O" \
@@ -884,10 +886,11 @@
884 echo "$(OX)\http_socket.obj" >> $@
885 echo "$(OX)\http_ssl.obj" >> $@
886 echo "$(OX)\http_transport.obj" >> $@
887 echo "$(OX)\import.obj" >> $@
888 echo "$(OX)\info.obj" >> $@
 
889 echo "$(OX)\json.obj" >> $@
890 echo "$(OX)\json_artifact.obj" >> $@
891 echo "$(OX)\json_branch.obj" >> $@
892 echo "$(OX)\json_config.obj" >> $@
893 echo "$(OX)\json_diff.obj" >> $@
@@ -1548,10 +1551,16 @@
1548 "$(OX)\info$O" : "$(OX)\info_.c" "$(OX)\info.h"
1549 $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\info_.c"
1550
1551 "$(OX)\info_.c" : "$(SRCDIR)\info.c"
1552 "$(OBJDIR)\translate$E" $** > $@
 
 
 
 
 
 
1553
1554 "$(OX)\json$O" : "$(OX)\json_.c" "$(OX)\json.h"
1555 $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\json_.c"
1556
1557 "$(OX)\json_.c" : "$(SRCDIR)\json.c"
@@ -2116,10 +2125,11 @@
2116 "$(OX)\http_socket_.c":"$(OX)\http_socket.h" \
2117 "$(OX)\http_ssl_.c":"$(OX)\http_ssl.h" \
2118 "$(OX)\http_transport_.c":"$(OX)\http_transport.h" \
2119 "$(OX)\import_.c":"$(OX)\import.h" \
2120 "$(OX)\info_.c":"$(OX)\info.h" \
 
2121 "$(OX)\json_.c":"$(OX)\json.h" \
2122 "$(OX)\json_artifact_.c":"$(OX)\json_artifact.h" \
2123 "$(OX)\json_branch_.c":"$(OX)\json_branch.h" \
2124 "$(OX)\json_config_.c":"$(OX)\json_config.h" \
2125 "$(OX)\json_diff_.c":"$(OX)\json_diff.h" \
2126
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -407,10 +407,11 @@
407 "$(OX)\http_socket_.c" \
408 "$(OX)\http_ssl_.c" \
409 "$(OX)\http_transport_.c" \
410 "$(OX)\import_.c" \
411 "$(OX)\info_.c" \
412 "$(OX)\interwiki_.c" \
413 "$(OX)\json_.c" \
414 "$(OX)\json_artifact_.c" \
415 "$(OX)\json_branch_.c" \
416 "$(OX)\json_config_.c" \
417 "$(OX)\json_diff_.c" \
@@ -658,10 +659,11 @@
659 "$(OX)\http_socket$O" \
660 "$(OX)\http_ssl$O" \
661 "$(OX)\http_transport$O" \
662 "$(OX)\import$O" \
663 "$(OX)\info$O" \
664 "$(OX)\interwiki$O" \
665 "$(OX)\json$O" \
666 "$(OX)\json_artifact$O" \
667 "$(OX)\json_branch$O" \
668 "$(OX)\json_config$O" \
669 "$(OX)\json_diff$O" \
@@ -884,10 +886,11 @@
886 echo "$(OX)\http_socket.obj" >> $@
887 echo "$(OX)\http_ssl.obj" >> $@
888 echo "$(OX)\http_transport.obj" >> $@
889 echo "$(OX)\import.obj" >> $@
890 echo "$(OX)\info.obj" >> $@
891 echo "$(OX)\interwiki.obj" >> $@
892 echo "$(OX)\json.obj" >> $@
893 echo "$(OX)\json_artifact.obj" >> $@
894 echo "$(OX)\json_branch.obj" >> $@
895 echo "$(OX)\json_config.obj" >> $@
896 echo "$(OX)\json_diff.obj" >> $@
@@ -1548,10 +1551,16 @@
1551 "$(OX)\info$O" : "$(OX)\info_.c" "$(OX)\info.h"
1552 $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\info_.c"
1553
1554 "$(OX)\info_.c" : "$(SRCDIR)\info.c"
1555 "$(OBJDIR)\translate$E" $** > $@
1556
1557 "$(OX)\interwiki$O" : "$(OX)\interwiki_.c" "$(OX)\interwiki.h"
1558 $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\interwiki_.c"
1559
1560 "$(OX)\interwiki_.c" : "$(SRCDIR)\interwiki.c"
1561 "$(OBJDIR)\translate$E" $** > $@
1562
1563 "$(OX)\json$O" : "$(OX)\json_.c" "$(OX)\json.h"
1564 $(TCC) /Fo$@ /Fd$(@D)\ -c "$(OX)\json_.c"
1565
1566 "$(OX)\json_.c" : "$(SRCDIR)\json.c"
@@ -2116,10 +2125,11 @@
2125 "$(OX)\http_socket_.c":"$(OX)\http_socket.h" \
2126 "$(OX)\http_ssl_.c":"$(OX)\http_ssl.h" \
2127 "$(OX)\http_transport_.c":"$(OX)\http_transport.h" \
2128 "$(OX)\import_.c":"$(OX)\import.h" \
2129 "$(OX)\info_.c":"$(OX)\info.h" \
2130 "$(OX)\interwiki_.c":"$(OX)\interwiki.h" \
2131 "$(OX)\json_.c":"$(OX)\json.h" \
2132 "$(OX)\json_artifact_.c":"$(OX)\json_artifact.h" \
2133 "$(OX)\json_branch_.c":"$(OX)\json_branch.h" \
2134 "$(OX)\json_config_.c":"$(OX)\json_config.h" \
2135 "$(OX)\json_diff_.c":"$(OX)\json_diff.h" \
2136
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,11 +1,11 @@
11
<title>Change Log</title>
22
33
<a name='v2_13'></a>
44
<h2>Changes for Version 2.13 (pending)</h2>
55
6
- * <i>TBD...</i>
6
+ * Added support for [./interwiki.md|interwiki links].
77
88
<a name='v2_12'></a>
99
<h2>Changes for Version 2.12.1 (2020-08-20)</h2>
1010
1111
* (2.12.1): Fix client-side vulnerabilities discovered by Max Justicz.
1212
1313
ADDED www/interwiki.md
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,11 +1,11 @@
1 <title>Change Log</title>
2
3 <a name='v2_13'></a>
4 <h2>Changes for Version 2.13 (pending)</h2>
5
6 * <i>TBD...</i>
7
8 <a name='v2_12'></a>
9 <h2>Changes for Version 2.12.1 (2020-08-20)</h2>
10
11 * (2.12.1): Fix client-side vulnerabilities discovered by Max Justicz.
12
13 DDED www/interwiki.md
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,11 +1,11 @@
1 <title>Change Log</title>
2
3 <a name='v2_13'></a>
4 <h2>Changes for Version 2.13 (pending)</h2>
5
6 * Added support for [./interwiki.md|interwiki links].
7
8 <a name='v2_12'></a>
9 <h2>Changes for Version 2.12.1 (2020-08-20)</h2>
10
11 * (2.12.1): Fix client-side vulnerabilities discovered by Max Justicz.
12
13 DDED www/interwiki.md
--- a/www/interwiki.md
+++ b/www/interwiki.md
@@ -0,0 +1,104 @@
1
+Interwiki_links)
2
+ * [](httInterwiki_links)
3
+
4
+Another example: The Fossil Forum is hosted in a separate repository
5
+from the Fossil source code. This page is part of the
6
+source code repository. Interwiki links can be used to more easily
7
+refer to the forum repository:
8
+
9
+ * [](forum:d5508c3bf44c6393df09c)
10
+ * [](https://fossil-scm.org/forum/info/d5508c3bf44c6393df09c)
11
+
12
+## Advantages Over Full URL Targets
13
+
14
+ * Interwiki links are easier to write. There is less typing,
15
+ and fewer op?cmd=ortunities to make mistakes.
16
+
17
+ * Interwiki links are easier to read. With well-chosen
18
+ intermap tags, the links are easier to understand.
19
+
20
+ * Interwiki links continue to work after a domain change on the
21
+ target. If the target of a link moves to a different domain,
22
+ an interwiki link will continue to work, if the intermap is adjusted,
23
+ but a hard-coded link will be permanently broken.
24
+
25
+ * Interwiki links allow clones to use a different target domain from the
26
+ original repository.
27
+
28
+## Details
29
+
30
+Fossil supports interwiki links in both the
31
+[Fossil Wiki](/wiki_rules) and [Markdown](/md_rules) markup
32
+styles. An interwiki link consists of a tag followed by a colon
33
+and the link target:
34
+
35
+> <i>Tag</i><b>:</b><i>PageName</i>
36
+
37
+The Tag must consist of ASCII alphanumeric characters only - no
38
+punctuation or whitespace or characters greater than U+007A.
39
+The PageName is the link notation on the target wiki.
40
+Th different classes of PageNames are recognized by Fossil:
41
+
42
+ 1. <b>Path Links</b> &rarr; the PageName begins with the "/" character
43
+ or is an empty string.
44
+
45
+ 2. <b>Hash Links</b> &rarr; the PageName is a hexadecimal number with
46
+ at least four digits.
47
+
48
+ n 3. <b>Wiki Links</b> &rarr; A PageName that is not a Path or Hash.
49
+
50
+The Intermap defiisg. Path links are appended
51
+directly to the URL contained in the Intermap. The Intermap can define
52
+additional text to put in between the base URL and the PageName for
53
+Hash and Wiki links, respectively.
54
+
55
+<a id="intermap"></a>
56
+## Intermap
57
+
58
+The intermap defines a mapping from interwiki Tags to full URLs. The
59
+Intermap can be viewed and managed using the [fossil s. fors) markup
60
+styles. An interwiki link consists of a tag followed by a colon
61
+and the link tanameet:
62
+
63
+> <i>Tag</i><b>:</b><i>PageName</i>
64
+
65
+The Tag must consist of ASCII alphanumeric characters only - no
66
+punctuation or whitespace or characters greater than U+007A.
67
+The PageName is the link notation on the targeiki link willhelp?cmd=/intermapki links in both the
68
+[Fossil Wiki](/wiki_rules) and [Markdown](/md_rules) markup
69
+styles. An interwiki link consists of a tag followed by a colon
70
+and the link target:
71
+
72
+> <i>Tag</i><b>:</b><i>PageName</i>
73
+
74
+The Tag must consist of ASCII alphanumeric characters only - no
75
+punctuation or whitespace or characters greater than U+007A.
76
+The PageName is the link notation on the target wiki.
77
+Three different classes of PageNames are recognized by Fossil:
78
+
79
+ 1. <b>Path Links</b> &rarr; the PageName begins with the "/" character
80
+ or is an empty string.
81
+
82
+ 2. <b>Hash Links</b> &rarr; the PageName is a hexadecimal number with
83
+ at least four digits.
84
+
85
+ n 3. <b>Wiki Links</b> &rarr; A PageName that is not a Path or Hash.
86
+
87
+The Intermap defines a base URL for each Tag. Path links are appended
88
+directly to the URL contained in the Intermap. The Intermap can define
89
+additional text to put in between the base URL and the PageName for
90
+Hash and Wiki links, respectively.
91
+
92
+<a id="intermap"></a>
93
+## Intermap
94
+
95
+The intermap defines a mapping from interwiki Tags to full URLs. The
96
+Intermap can be viewed and managed using the [fossil s. fors) markup
97
+styles. An interwiki link consists of a tag followed by a colon
98
+and the link tanameet:
99
+
100
+> <i>Tag</i><b>:</b><i>PageName</i>
101
+
102
+The Tag must consist of ASCII alphanumeric characters only - no
103
+punctuation or whitespace or characters greater than U+007A.
104
+The PageName is the link notation on knowing scanning the source
--- a/www/interwiki.md
+++ b/www/interwiki.md
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/www/interwiki.md
+++ b/www/interwiki.md
@@ -0,0 +1,104 @@
1 Interwiki_links)
2 * [](httInterwiki_links)
3
4 Another example: The Fossil Forum is hosted in a separate repository
5 from the Fossil source code. This page is part of the
6 source code repository. Interwiki links can be used to more easily
7 refer to the forum repository:
8
9 * [](forum:d5508c3bf44c6393df09c)
10 * [](https://fossil-scm.org/forum/info/d5508c3bf44c6393df09c)
11
12 ## Advantages Over Full URL Targets
13
14 * Interwiki links are easier to write. There is less typing,
15 and fewer op?cmd=ortunities to make mistakes.
16
17 * Interwiki links are easier to read. With well-chosen
18 intermap tags, the links are easier to understand.
19
20 * Interwiki links continue to work after a domain change on the
21 target. If the target of a link moves to a different domain,
22 an interwiki link will continue to work, if the intermap is adjusted,
23 but a hard-coded link will be permanently broken.
24
25 * Interwiki links allow clones to use a different target domain from the
26 original repository.
27
28 ## Details
29
30 Fossil supports interwiki links in both the
31 [Fossil Wiki](/wiki_rules) and [Markdown](/md_rules) markup
32 styles. An interwiki link consists of a tag followed by a colon
33 and the link target:
34
35 > <i>Tag</i><b>:</b><i>PageName</i>
36
37 The Tag must consist of ASCII alphanumeric characters only - no
38 punctuation or whitespace or characters greater than U+007A.
39 The PageName is the link notation on the target wiki.
40 Th different classes of PageNames are recognized by Fossil:
41
42 1. <b>Path Links</b> &rarr; the PageName begins with the "/" character
43 or is an empty string.
44
45 2. <b>Hash Links</b> &rarr; the PageName is a hexadecimal number with
46 at least four digits.
47
48 n 3. <b>Wiki Links</b> &rarr; A PageName that is not a Path or Hash.
49
50 The Intermap defiisg. Path links are appended
51 directly to the URL contained in the Intermap. The Intermap can define
52 additional text to put in between the base URL and the PageName for
53 Hash and Wiki links, respectively.
54
55 <a id="intermap"></a>
56 ## Intermap
57
58 The intermap defines a mapping from interwiki Tags to full URLs. The
59 Intermap can be viewed and managed using the [fossil s. fors) markup
60 styles. An interwiki link consists of a tag followed by a colon
61 and the link tanameet:
62
63 > <i>Tag</i><b>:</b><i>PageName</i>
64
65 The Tag must consist of ASCII alphanumeric characters only - no
66 punctuation or whitespace or characters greater than U+007A.
67 The PageName is the link notation on the targeiki link willhelp?cmd=/intermapki links in both the
68 [Fossil Wiki](/wiki_rules) and [Markdown](/md_rules) markup
69 styles. An interwiki link consists of a tag followed by a colon
70 and the link target:
71
72 > <i>Tag</i><b>:</b><i>PageName</i>
73
74 The Tag must consist of ASCII alphanumeric characters only - no
75 punctuation or whitespace or characters greater than U+007A.
76 The PageName is the link notation on the target wiki.
77 Three different classes of PageNames are recognized by Fossil:
78
79 1. <b>Path Links</b> &rarr; the PageName begins with the "/" character
80 or is an empty string.
81
82 2. <b>Hash Links</b> &rarr; the PageName is a hexadecimal number with
83 at least four digits.
84
85 n 3. <b>Wiki Links</b> &rarr; A PageName that is not a Path or Hash.
86
87 The Intermap defines a base URL for each Tag. Path links are appended
88 directly to the URL contained in the Intermap. The Intermap can define
89 additional text to put in between the base URL and the PageName for
90 Hash and Wiki links, respectively.
91
92 <a id="intermap"></a>
93 ## Intermap
94
95 The intermap defines a mapping from interwiki Tags to full URLs. The
96 Intermap can be viewed and managed using the [fossil s. fors) markup
97 styles. An interwiki link consists of a tag followed by a colon
98 and the link tanameet:
99
100 > <i>Tag</i><b>:</b><i>PageName</i>
101
102 The Tag must consist of ASCII alphanumeric characters only - no
103 punctuation or whitespace or characters greater than U+007A.
104 The PageName is the link notation on knowing scanning the source
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -61,10 +61,11 @@
6161
/help {Lists of Commands and Webpages}
6262
hints.wiki {Fossil Tips And Usage Hints}
6363
history.md {The Purpose And History Of Fossil}
6464
index.wiki {Home Page}
6565
inout.wiki {Import And Export To And From Git}
66
+ interwiki.md {Interwiki Links}
6667
image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
6768
javascript.md {Use of JavaScript in Fossil}
6869
makefile.wiki {The Fossil Build Process}
6970
mirrorlimitations.md {Limitations On Git Mirrors}
7071
mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
7172
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -61,10 +61,11 @@
61 /help {Lists of Commands and Webpages}
62 hints.wiki {Fossil Tips And Usage Hints}
63 history.md {The Purpose And History Of Fossil}
64 index.wiki {Home Page}
65 inout.wiki {Import And Export To And From Git}
 
66 image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
67 javascript.md {Use of JavaScript in Fossil}
68 makefile.wiki {The Fossil Build Process}
69 mirrorlimitations.md {Limitations On Git Mirrors}
70 mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
71
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -61,10 +61,11 @@
61 /help {Lists of Commands and Webpages}
62 hints.wiki {Fossil Tips And Usage Hints}
63 history.md {The Purpose And History Of Fossil}
64 index.wiki {Home Page}
65 inout.wiki {Import And Export To And From Git}
66 interwiki.md {Interwiki Links}
67 image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
68 javascript.md {Use of JavaScript in Fossil}
69 makefile.wiki {The Fossil Build Process}
70 mirrorlimitations.md {Limitations On Git Mirrors}
71 mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
72
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -184,14 +184,16 @@
184184
<li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
185185
<li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
186186
<li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
187187
<li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
188188
<li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
189
+<li><a href="interwiki.md"><b>Interwiki Links</b></a></li>
189190
<li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
190191
<li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
191192
<li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
192193
<li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
194
+<li><a href="interwiki.md">Links &mdash; Interwiki</a></li>
193195
<li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
194196
<li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
195197
<li><a href="../../../sitemap">Map &mdash; Site</a></li>
196198
<li><a href="../../../md_rules"><b>Markdown Formatting Rules</b></a></li>
197199
<li><a href="backoffice.md">mechanism of Fossil &mdash; The Backoffice</a></li>
198200
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -184,14 +184,16 @@
184 <li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
185 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
186 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
187 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
188 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
 
189 <li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
190 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
191 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
192 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
 
193 <li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
194 <li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
195 <li><a href="../../../sitemap">Map &mdash; Site</a></li>
196 <li><a href="../../../md_rules"><b>Markdown Formatting Rules</b></a></li>
197 <li><a href="backoffice.md">mechanism of Fossil &mdash; The Backoffice</a></li>
198
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -184,14 +184,16 @@
184 <li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
185 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
186 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
187 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
188 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
189 <li><a href="interwiki.md"><b>Interwiki Links</b></a></li>
190 <li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
191 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
192 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
193 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
194 <li><a href="interwiki.md">Links &mdash; Interwiki</a></li>
195 <li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
196 <li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
197 <li><a href="../../../sitemap">Map &mdash; Site</a></li>
198 <li><a href="../../../md_rules"><b>Markdown Formatting Rules</b></a></li>
199 <li><a href="backoffice.md">mechanism of Fossil &mdash; The Backoffice</a></li>
200
+2 -9
--- www/quotes.wiki
+++ www/quotes.wiki
@@ -62,11 +62,11 @@
6262
6363
<li>&#91;I&#93;n nearly 31 years of using a computer i have, in total, lost more data to git
6464
(while following the instructions!!!) than any other single piece of software.
6565
6666
<blockquote>
67
-<i>Stephen Beal on the [http://www.mail-archive.com/[email protected]/msg17181.html|Fossil mailing list]
67
+<i>Stephan Beal on the [http://www.mail-archive.com/[email protected]/msg17181.html|Fossil mailing list]
6868
2014-09-01.</i>
6969
</blockquote>
7070
7171
<li>If programmers _really_ wanted to help scientists, they'd build a version control
7272
system that was more usable than Git.
@@ -100,17 +100,10 @@
100100
101101
<blockquote>
102102
<i>Joe Prostko at [http://www.mail-archive.com/[email protected]/msg16716.html]
103103
</blockquote>
104104
105
-<li>Fossil is awesome!!! I have never seen an app like that before,
106
-such simplicity and flexibility!!!
107
-
108
-<blockquote>
109
-<i>zengr at [https://stackoverflow.com/a/629967/142454]</i>
110
-</blockquote>
111
-
112105
<li>This is my favourite VCS. I can carry it on a USB. And it's a complete system, with it's own
113106
server, ticketing system, Wiki pages, and a very, very helpful timeline visualization. And
114107
the entire program in a single file!
115108
116109
<blockquote>
@@ -122,11 +115,11 @@
122115
123116
124117
<h2>On Git Versus Fossil</h2>
125118
126119
<ol>
127
-<li value=15>
120
+<li value=14>
128121
After prolonged exposure to fossil, i tend to get the jitters when I work with git...
129122
130123
<blockquote>
131124
<i>sriku - at [https://news.ycombinator.com/item?id=16104427]</i>
132125
</blockquote>
133126
--- www/quotes.wiki
+++ www/quotes.wiki
@@ -62,11 +62,11 @@
62
63 <li>&#91;I&#93;n nearly 31 years of using a computer i have, in total, lost more data to git
64 (while following the instructions!!!) than any other single piece of software.
65
66 <blockquote>
67 <i>Stephen Beal on the [http://www.mail-archive.com/[email protected]/msg17181.html|Fossil mailing list]
68 2014-09-01.</i>
69 </blockquote>
70
71 <li>If programmers _really_ wanted to help scientists, they'd build a version control
72 system that was more usable than Git.
@@ -100,17 +100,10 @@
100
101 <blockquote>
102 <i>Joe Prostko at [http://www.mail-archive.com/[email protected]/msg16716.html]
103 </blockquote>
104
105 <li>Fossil is awesome!!! I have never seen an app like that before,
106 such simplicity and flexibility!!!
107
108 <blockquote>
109 <i>zengr at [https://stackoverflow.com/a/629967/142454]</i>
110 </blockquote>
111
112 <li>This is my favourite VCS. I can carry it on a USB. And it's a complete system, with it's own
113 server, ticketing system, Wiki pages, and a very, very helpful timeline visualization. And
114 the entire program in a single file!
115
116 <blockquote>
@@ -122,11 +115,11 @@
122
123
124 <h2>On Git Versus Fossil</h2>
125
126 <ol>
127 <li value=15>
128 After prolonged exposure to fossil, i tend to get the jitters when I work with git...
129
130 <blockquote>
131 <i>sriku - at [https://news.ycombinator.com/item?id=16104427]</i>
132 </blockquote>
133
--- www/quotes.wiki
+++ www/quotes.wiki
@@ -62,11 +62,11 @@
62
63 <li>&#91;I&#93;n nearly 31 years of using a computer i have, in total, lost more data to git
64 (while following the instructions!!!) than any other single piece of software.
65
66 <blockquote>
67 <i>Stephan Beal on the [http://www.mail-archive.com/[email protected]/msg17181.html|Fossil mailing list]
68 2014-09-01.</i>
69 </blockquote>
70
71 <li>If programmers _really_ wanted to help scientists, they'd build a version control
72 system that was more usable than Git.
@@ -100,17 +100,10 @@
100
101 <blockquote>
102 <i>Joe Prostko at [http://www.mail-archive.com/[email protected]/msg16716.html]
103 </blockquote>
104
 
 
 
 
 
 
 
105 <li>This is my favourite VCS. I can carry it on a USB. And it's a complete system, with it's own
106 server, ticketing system, Wiki pages, and a very, very helpful timeline visualization. And
107 the entire program in a single file!
108
109 <blockquote>
@@ -122,11 +115,11 @@
115
116
117 <h2>On Git Versus Fossil</h2>
118
119 <ol>
120 <li value=14>
121 After prolonged exposure to fossil, i tend to get the jitters when I work with git...
122
123 <blockquote>
124 <i>sriku - at [https://news.ycombinator.com/item?id=16104427]</i>
125 </blockquote>
126

Keyboard Shortcuts

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