Fossil SCM

Add support for the ETag: and If-None-Match: headers for improved cache control. Currently this only works for /uv but the mechanism is reasonably general and can be extended to other pages.

drh 2018-02-24 03:49 UTC trunk merge
Commit 787896c5eb427c4e11f716c9fdc4faa82ca53d197c61d14208405fba278d7db1
+6 -63
--- src/cgi.c
+++ src/cgi.c
@@ -228,62 +228,10 @@
228228
"Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n",
229229
zName, zValue, zPath, zSecure);
230230
}
231231
}
232232
233
-#if 0
234
-/*
235
-** Add an ETag header line
236
-*/
237
-static char *cgi_add_etag(char *zTxt, int nLen){
238
- MD5Context ctx;
239
- unsigned char digest[16];
240
- int i, j;
241
- char zETag[64];
242
-
243
- MD5Init(&ctx);
244
- MD5Update(&ctx,zTxt,nLen);
245
- MD5Final(digest,&ctx);
246
- for(j=i=0; i<16; i++,j+=2){
247
- bprintf(&zETag[j],sizeof(zETag)-j,"%02x",(int)digest[i]);
248
- }
249
- blob_appendf(&extraHeader, "ETag: %s\r\n", zETag);
250
- return fossil_strdup(zETag);
251
-}
252
-
253
-/*
254
-** Do some cache control stuff. First, we generate an ETag and include it in
255
-** the response headers. Second, we do whatever is necessary to determine if
256
-** the request was asking about caching and whether we need to send back the
257
-** response body. If we shouldn't send a body, return non-zero.
258
-**
259
-** Currently, we just check the ETag against any If-None-Match header.
260
-**
261
-** FIXME: In some cases (attachments, file contents) we could check
262
-** If-Modified-Since headers and always include Last-Modified in responses.
263
-*/
264
-static int check_cache_control(void){
265
- /* FIXME: there's some gotchas wth cookies and some headers. */
266
- char *zETag = cgi_add_etag(blob_buffer(&cgiContent),blob_size(&cgiContent));
267
- char *zMatch = P("HTTP_IF_NONE_MATCH");
268
-
269
- if( zETag!=0 && zMatch!=0 ) {
270
- char *zBuf = fossil_strdup(zMatch);
271
- if( zBuf!=0 ){
272
- char *zTok = 0;
273
- char *zPos;
274
- for( zTok = strtok_r(zBuf, ",\"",&zPos);
275
- zTok && fossil_stricmp(zTok,zETag);
276
- zTok = strtok_r(0, ",\"",&zPos)){}
277
- fossil_free(zBuf);
278
- if(zTok) return 1;
279
- }
280
- }
281
-
282
- return 0;
283
-}
284
-#endif
285233
286234
/*
287235
** Return true if the response should be sent with Content-Encoding: gzip.
288236
*/
289237
static int is_gzippable(void){
@@ -296,34 +244,29 @@
296244
/*
297245
** Do a normal HTTP reply
298246
*/
299247
void cgi_reply(void){
300248
int total_size;
249
+ char *zETag;
301250
if( iReplyStatus<=0 ){
302251
iReplyStatus = 200;
303252
zReplyStatus = "OK";
304253
}
305254
306
-#if 0
307
- if( iReplyStatus==200 && check_cache_control() ) {
308
- /* change the status to "unchanged" and we can skip sending the
309
- ** actual response body. Obviously we only do this when we _have_ a
310
- ** body (code 200).
311
- */
312
- iReplyStatus = 304;
313
- zReplyStatus = "Not Modified";
314
- }
315
-#endif
316
-
317255
if( g.fullHttpReply ){
318256
fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus);
319257
fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0)));
320258
fprintf(g.httpOut, "Connection: close\r\n");
321259
fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n");
322260
}else{
323261
fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus);
324262
}
263
+ zETag = etag_generate(-1);
264
+ if( zETag ){
265
+ fprintf(g.httpOut, "ETag: %s\r\n", zETag);
266
+ fprintf(g.httpOut, "Cache-Control: max-age=%d\r\n", etag_maxage());
267
+ }
325268
326269
if( blob_size(&extraHeader)>0 ){
327270
fprintf(g.httpOut, "%s", blob_buffer(&extraHeader));
328271
}
329272
330273
--- src/cgi.c
+++ src/cgi.c
@@ -228,62 +228,10 @@
228 "Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n",
229 zName, zValue, zPath, zSecure);
230 }
231 }
232
233 #if 0
234 /*
235 ** Add an ETag header line
236 */
237 static char *cgi_add_etag(char *zTxt, int nLen){
238 MD5Context ctx;
239 unsigned char digest[16];
240 int i, j;
241 char zETag[64];
242
243 MD5Init(&ctx);
244 MD5Update(&ctx,zTxt,nLen);
245 MD5Final(digest,&ctx);
246 for(j=i=0; i<16; i++,j+=2){
247 bprintf(&zETag[j],sizeof(zETag)-j,"%02x",(int)digest[i]);
248 }
249 blob_appendf(&extraHeader, "ETag: %s\r\n", zETag);
250 return fossil_strdup(zETag);
251 }
252
253 /*
254 ** Do some cache control stuff. First, we generate an ETag and include it in
255 ** the response headers. Second, we do whatever is necessary to determine if
256 ** the request was asking about caching and whether we need to send back the
257 ** response body. If we shouldn't send a body, return non-zero.
258 **
259 ** Currently, we just check the ETag against any If-None-Match header.
260 **
261 ** FIXME: In some cases (attachments, file contents) we could check
262 ** If-Modified-Since headers and always include Last-Modified in responses.
263 */
264 static int check_cache_control(void){
265 /* FIXME: there's some gotchas wth cookies and some headers. */
266 char *zETag = cgi_add_etag(blob_buffer(&cgiContent),blob_size(&cgiContent));
267 char *zMatch = P("HTTP_IF_NONE_MATCH");
268
269 if( zETag!=0 && zMatch!=0 ) {
270 char *zBuf = fossil_strdup(zMatch);
271 if( zBuf!=0 ){
272 char *zTok = 0;
273 char *zPos;
274 for( zTok = strtok_r(zBuf, ",\"",&zPos);
275 zTok && fossil_stricmp(zTok,zETag);
276 zTok = strtok_r(0, ",\"",&zPos)){}
277 fossil_free(zBuf);
278 if(zTok) return 1;
279 }
280 }
281
282 return 0;
283 }
284 #endif
285
286 /*
287 ** Return true if the response should be sent with Content-Encoding: gzip.
288 */
289 static int is_gzippable(void){
@@ -296,34 +244,29 @@
296 /*
297 ** Do a normal HTTP reply
298 */
299 void cgi_reply(void){
300 int total_size;
 
301 if( iReplyStatus<=0 ){
302 iReplyStatus = 200;
303 zReplyStatus = "OK";
304 }
305
306 #if 0
307 if( iReplyStatus==200 && check_cache_control() ) {
308 /* change the status to "unchanged" and we can skip sending the
309 ** actual response body. Obviously we only do this when we _have_ a
310 ** body (code 200).
311 */
312 iReplyStatus = 304;
313 zReplyStatus = "Not Modified";
314 }
315 #endif
316
317 if( g.fullHttpReply ){
318 fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus);
319 fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0)));
320 fprintf(g.httpOut, "Connection: close\r\n");
321 fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n");
322 }else{
323 fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus);
324 }
 
 
 
 
 
325
326 if( blob_size(&extraHeader)>0 ){
327 fprintf(g.httpOut, "%s", blob_buffer(&extraHeader));
328 }
329
330
--- src/cgi.c
+++ src/cgi.c
@@ -228,62 +228,10 @@
228 "Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n",
229 zName, zValue, zPath, zSecure);
230 }
231 }
232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
234 /*
235 ** Return true if the response should be sent with Content-Encoding: gzip.
236 */
237 static int is_gzippable(void){
@@ -296,34 +244,29 @@
244 /*
245 ** Do a normal HTTP reply
246 */
247 void cgi_reply(void){
248 int total_size;
249 char *zETag;
250 if( iReplyStatus<=0 ){
251 iReplyStatus = 200;
252 zReplyStatus = "OK";
253 }
254
 
 
 
 
 
 
 
 
 
 
 
255 if( g.fullHttpReply ){
256 fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus);
257 fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0)));
258 fprintf(g.httpOut, "Connection: close\r\n");
259 fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n");
260 }else{
261 fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus);
262 }
263 zETag = etag_generate(-1);
264 if( zETag ){
265 fprintf(g.httpOut, "ETag: %s\r\n", zETag);
266 fprintf(g.httpOut, "Cache-Control: max-age=%d\r\n", etag_maxage());
267 }
268
269 if( blob_size(&extraHeader)>0 ){
270 fprintf(g.httpOut, "%s", blob_buffer(&extraHeader));
271 }
272
273
--- src/cookies.c
+++ src/cookies.c
@@ -123,10 +123,11 @@
123123
const char *zQVal = P(zQP);
124124
int i;
125125
cookie_parse();
126126
for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){}
127127
if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){
128
+ etag_require(ETAG_COOKIE);
128129
cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1);
129130
return;
130131
}
131132
if( zQVal==0 ) zQVal = zDflt;
132133
if( (flags & COOKIE_WRITE)!=0
133134
--- src/cookies.c
+++ src/cookies.c
@@ -123,10 +123,11 @@
123 const char *zQVal = P(zQP);
124 int i;
125 cookie_parse();
126 for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){}
127 if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){
 
128 cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1);
129 return;
130 }
131 if( zQVal==0 ) zQVal = zDflt;
132 if( (flags & COOKIE_WRITE)!=0
133
--- src/cookies.c
+++ src/cookies.c
@@ -123,10 +123,11 @@
123 const char *zQVal = P(zQP);
124 int i;
125 cookie_parse();
126 for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){}
127 if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){
128 etag_require(ETAG_COOKIE);
129 cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1);
130 return;
131 }
132 if( zQVal==0 ) zQVal = zDflt;
133 if( (flags & COOKIE_WRITE)!=0
134
+8 -5
--- src/doc.c
+++ src/doc.c
@@ -639,15 +639,18 @@
639639
}else{
640640
goto doc_not_found;
641641
}
642642
}
643643
if( isUV ){
644
- if( db_table_exists("repository","unversioned")
645
- && unversioned_content(zName, &filebody)==0
646
- ){
647
- rid = 1;
648
- zDfltTitle = zName;
644
+ if( db_table_exists("repository","unversioned") ){
645
+ char *zHash;
646
+ zHash = db_text(0, "SELECT hash FROM unversioned WHERE name=%Q",zName);
647
+ etag_require_hash(zHash);
648
+ if( unversioned_content(zName, &filebody)==0 ){
649
+ rid = 1;
650
+ zDfltTitle = zName;
651
+ }
649652
}
650653
}else if( fossil_strcmp(zCheckin,"ckout")==0 ){
651654
/* Read from the local checkout */
652655
char *zFullpath;
653656
db_must_be_within_tree();
654657
655658
ADDED src/etag.c
--- src/doc.c
+++ src/doc.c
@@ -639,15 +639,18 @@
639 }else{
640 goto doc_not_found;
641 }
642 }
643 if( isUV ){
644 if( db_table_exists("repository","unversioned")
645 && unversioned_content(zName, &filebody)==0
646 ){
647 rid = 1;
648 zDfltTitle = zName;
 
 
 
649 }
650 }else if( fossil_strcmp(zCheckin,"ckout")==0 ){
651 /* Read from the local checkout */
652 char *zFullpath;
653 db_must_be_within_tree();
654
655 DDED src/etag.c
--- src/doc.c
+++ src/doc.c
@@ -639,15 +639,18 @@
639 }else{
640 goto doc_not_found;
641 }
642 }
643 if( isUV ){
644 if( db_table_exists("repository","unversioned") ){
645 char *zHash;
646 zHash = db_text(0, "SELECT hash FROM unversioned WHERE name=%Q",zName);
647 etag_require_hash(zHash);
648 if( unversioned_content(zName, &filebody)==0 ){
649 rid = 1;
650 zDfltTitle = zName;
651 }
652 }
653 }else if( fossil_strcmp(zCheckin,"ckout")==0 ){
654 /* Read from the local checkout */
655 char *zFullpath;
656 db_must_be_within_tree();
657
658 DDED src/etag.c
+5
--- a/src/etag.c
+++ b/src/etag.c
@@ -0,0 +1,5 @@
1
+/*
2
+** Copyright (c) 2018 iMaxAge = 86400;MATCH");
3
+ if( zIfNoneMatch==0 ) return;
4
+ *
5
+*(mEtag & code)==code
--- a/src/etag.c
+++ b/src/etag.c
@@ -0,0 +1,5 @@
 
 
 
 
 
--- a/src/etag.c
+++ b/src/etag.c
@@ -0,0 +1,5 @@
1 /*
2 ** Copyright (c) 2018 iMaxAge = 86400;MATCH");
3 if( zIfNoneMatch==0 ) return;
4 *
5 *(mEtag & code)==code
+2
--- src/main.c
+++ src/main.c
@@ -1399,10 +1399,11 @@
13991399
const char *zPathInfo = PD("PATH_INFO", "");
14001400
char *zPath = NULL;
14011401
int i;
14021402
const CmdOrPage *pCmd = 0;
14031403
const char *zBase = g.zRepositoryName;
1404
+ const char *zETag = 0;
14041405
14051406
/* Handle universal query parameters */
14061407
if( PB("utc") ){
14071408
g.fTimeFormat = 1;
14081409
}else if( PB("localtime") ){
@@ -1764,10 +1765,11 @@
17641765
if( !g.fNoThHook ){
17651766
rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags);
17661767
}else{
17671768
rc = TH_OK;
17681769
}
1770
+ etag_require(CMDFLAG_TO_ETAG(pCmd->eType));
17691771
if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){
17701772
if( rc==TH_OK || rc==TH_RETURN ){
17711773
#endif
17721774
pCmd->xFunc();
17731775
#ifdef FOSSIL_ENABLE_TH1_HOOKS
17741776
--- src/main.c
+++ src/main.c
@@ -1399,10 +1399,11 @@
1399 const char *zPathInfo = PD("PATH_INFO", "");
1400 char *zPath = NULL;
1401 int i;
1402 const CmdOrPage *pCmd = 0;
1403 const char *zBase = g.zRepositoryName;
 
1404
1405 /* Handle universal query parameters */
1406 if( PB("utc") ){
1407 g.fTimeFormat = 1;
1408 }else if( PB("localtime") ){
@@ -1764,10 +1765,11 @@
1764 if( !g.fNoThHook ){
1765 rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags);
1766 }else{
1767 rc = TH_OK;
1768 }
 
1769 if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){
1770 if( rc==TH_OK || rc==TH_RETURN ){
1771 #endif
1772 pCmd->xFunc();
1773 #ifdef FOSSIL_ENABLE_TH1_HOOKS
1774
--- src/main.c
+++ src/main.c
@@ -1399,10 +1399,11 @@
1399 const char *zPathInfo = PD("PATH_INFO", "");
1400 char *zPath = NULL;
1401 int i;
1402 const CmdOrPage *pCmd = 0;
1403 const char *zBase = g.zRepositoryName;
1404 const char *zETag = 0;
1405
1406 /* Handle universal query parameters */
1407 if( PB("utc") ){
1408 g.fTimeFormat = 1;
1409 }else if( PB("localtime") ){
@@ -1764,10 +1765,11 @@
1765 if( !g.fNoThHook ){
1766 rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags);
1767 }else{
1768 rc = TH_OK;
1769 }
1770 etag_require(CMDFLAG_TO_ETAG(pCmd->eType));
1771 if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){
1772 if( rc==TH_OK || rc==TH_RETURN ){
1773 #endif
1774 pCmd->xFunc();
1775 #ifdef FOSSIL_ENABLE_TH1_HOOKS
1776
+12
--- src/main.mk
+++ src/main.mk
@@ -43,10 +43,11 @@
4343
$(SRCDIR)/diff.c \
4444
$(SRCDIR)/diffcmd.c \
4545
$(SRCDIR)/dispatch.c \
4646
$(SRCDIR)/doc.c \
4747
$(SRCDIR)/encode.c \
48
+ $(SRCDIR)/etag.c \
4849
$(SRCDIR)/event.c \
4950
$(SRCDIR)/export.c \
5051
$(SRCDIR)/file.c \
5152
$(SRCDIR)/finfo.c \
5253
$(SRCDIR)/foci.c \
@@ -243,10 +244,11 @@
243244
$(OBJDIR)/diff_.c \
244245
$(OBJDIR)/diffcmd_.c \
245246
$(OBJDIR)/dispatch_.c \
246247
$(OBJDIR)/doc_.c \
247248
$(OBJDIR)/encode_.c \
249
+ $(OBJDIR)/etag_.c \
248250
$(OBJDIR)/event_.c \
249251
$(OBJDIR)/export_.c \
250252
$(OBJDIR)/file_.c \
251253
$(OBJDIR)/finfo_.c \
252254
$(OBJDIR)/foci_.c \
@@ -372,10 +374,11 @@
372374
$(OBJDIR)/diff.o \
373375
$(OBJDIR)/diffcmd.o \
374376
$(OBJDIR)/dispatch.o \
375377
$(OBJDIR)/doc.o \
376378
$(OBJDIR)/encode.o \
379
+ $(OBJDIR)/etag.o \
377380
$(OBJDIR)/event.o \
378381
$(OBJDIR)/export.o \
379382
$(OBJDIR)/file.o \
380383
$(OBJDIR)/finfo.o \
381384
$(OBJDIR)/foci.o \
@@ -673,10 +676,11 @@
673676
$(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
674677
$(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
675678
$(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
676679
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
677680
$(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
681
+ $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
678682
$(OBJDIR)/event_.c:$(OBJDIR)/event.h \
679683
$(OBJDIR)/export_.c:$(OBJDIR)/export.h \
680684
$(OBJDIR)/file_.c:$(OBJDIR)/file.h \
681685
$(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
682686
$(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1016,10 +1020,18 @@
10161020
10171021
$(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
10181022
$(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
10191023
10201024
$(OBJDIR)/encode.h: $(OBJDIR)/headers
1025
+
1026
+$(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(OBJDIR)/translate
1027
+ $(OBJDIR)/translate $(SRCDIR)/etag.c >$@
1028
+
1029
+$(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h
1030
+ $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c
1031
+
1032
+$(OBJDIR)/etag.h: $(OBJDIR)/headers
10211033
10221034
$(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate
10231035
$(OBJDIR)/translate $(SRCDIR)/event.c >$@
10241036
10251037
$(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
10261038
--- src/main.mk
+++ src/main.mk
@@ -43,10 +43,11 @@
43 $(SRCDIR)/diff.c \
44 $(SRCDIR)/diffcmd.c \
45 $(SRCDIR)/dispatch.c \
46 $(SRCDIR)/doc.c \
47 $(SRCDIR)/encode.c \
 
48 $(SRCDIR)/event.c \
49 $(SRCDIR)/export.c \
50 $(SRCDIR)/file.c \
51 $(SRCDIR)/finfo.c \
52 $(SRCDIR)/foci.c \
@@ -243,10 +244,11 @@
243 $(OBJDIR)/diff_.c \
244 $(OBJDIR)/diffcmd_.c \
245 $(OBJDIR)/dispatch_.c \
246 $(OBJDIR)/doc_.c \
247 $(OBJDIR)/encode_.c \
 
248 $(OBJDIR)/event_.c \
249 $(OBJDIR)/export_.c \
250 $(OBJDIR)/file_.c \
251 $(OBJDIR)/finfo_.c \
252 $(OBJDIR)/foci_.c \
@@ -372,10 +374,11 @@
372 $(OBJDIR)/diff.o \
373 $(OBJDIR)/diffcmd.o \
374 $(OBJDIR)/dispatch.o \
375 $(OBJDIR)/doc.o \
376 $(OBJDIR)/encode.o \
 
377 $(OBJDIR)/event.o \
378 $(OBJDIR)/export.o \
379 $(OBJDIR)/file.o \
380 $(OBJDIR)/finfo.o \
381 $(OBJDIR)/foci.o \
@@ -673,10 +676,11 @@
673 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
674 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
675 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
676 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
677 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
 
678 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
679 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
680 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
681 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
682 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1016,10 +1020,18 @@
1016
1017 $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
1018 $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
1019
1020 $(OBJDIR)/encode.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1021
1022 $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate
1023 $(OBJDIR)/translate $(SRCDIR)/event.c >$@
1024
1025 $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
1026
--- src/main.mk
+++ src/main.mk
@@ -43,10 +43,11 @@
43 $(SRCDIR)/diff.c \
44 $(SRCDIR)/diffcmd.c \
45 $(SRCDIR)/dispatch.c \
46 $(SRCDIR)/doc.c \
47 $(SRCDIR)/encode.c \
48 $(SRCDIR)/etag.c \
49 $(SRCDIR)/event.c \
50 $(SRCDIR)/export.c \
51 $(SRCDIR)/file.c \
52 $(SRCDIR)/finfo.c \
53 $(SRCDIR)/foci.c \
@@ -243,10 +244,11 @@
244 $(OBJDIR)/diff_.c \
245 $(OBJDIR)/diffcmd_.c \
246 $(OBJDIR)/dispatch_.c \
247 $(OBJDIR)/doc_.c \
248 $(OBJDIR)/encode_.c \
249 $(OBJDIR)/etag_.c \
250 $(OBJDIR)/event_.c \
251 $(OBJDIR)/export_.c \
252 $(OBJDIR)/file_.c \
253 $(OBJDIR)/finfo_.c \
254 $(OBJDIR)/foci_.c \
@@ -372,10 +374,11 @@
374 $(OBJDIR)/diff.o \
375 $(OBJDIR)/diffcmd.o \
376 $(OBJDIR)/dispatch.o \
377 $(OBJDIR)/doc.o \
378 $(OBJDIR)/encode.o \
379 $(OBJDIR)/etag.o \
380 $(OBJDIR)/event.o \
381 $(OBJDIR)/export.o \
382 $(OBJDIR)/file.o \
383 $(OBJDIR)/finfo.o \
384 $(OBJDIR)/foci.o \
@@ -673,10 +676,11 @@
676 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
677 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
678 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
679 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
680 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
681 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
682 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
683 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
684 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
685 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
686 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1016,10 +1020,18 @@
1020
1021 $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
1022 $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
1023
1024 $(OBJDIR)/encode.h: $(OBJDIR)/headers
1025
1026 $(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(OBJDIR)/translate
1027 $(OBJDIR)/translate $(SRCDIR)/etag.c >$@
1028
1029 $(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h
1030 $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c
1031
1032 $(OBJDIR)/etag.h: $(OBJDIR)/headers
1033
1034 $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate
1035 $(OBJDIR)/translate $(SRCDIR)/event.c >$@
1036
1037 $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
1038
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -55,10 +55,11 @@
5555
diff
5656
diffcmd
5757
dispatch
5858
doc
5959
encode
60
+ etag
6061
event
6162
export
6263
file
6364
finfo
6465
foci
6566
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -55,10 +55,11 @@
55 diff
56 diffcmd
57 dispatch
58 doc
59 encode
 
60 event
61 export
62 file
63 finfo
64 foci
65
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -55,10 +55,11 @@
55 diff
56 diffcmd
57 dispatch
58 doc
59 encode
60 etag
61 event
62 export
63 file
64 finfo
65 foci
66
+29 -10
--- src/mkindex.c
+++ src/mkindex.c
@@ -80,19 +80,26 @@
8080
8181
/***************************************************************************
8282
** These macros must match similar macros in dispatch.c.
8383
**
8484
** Allowed values for CmdOrPage.eCmdFlags. */
85
-#define CMDFLAG_1ST_TIER 0x0001 /* Most important commands */
86
-#define CMDFLAG_2ND_TIER 0x0002 /* Obscure and seldom used commands */
87
-#define CMDFLAG_TEST 0x0004 /* Commands for testing only */
88
-#define CMDFLAG_WEBPAGE 0x0008 /* Web pages */
89
-#define CMDFLAG_COMMAND 0x0010 /* A command */
90
-#define CMDFLAG_SETTING 0x0020 /* A setting */
91
-#define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
92
-#define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
93
-#define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
85
+#define CMDFLAG_1ST_TIER 0x00001 /* Most important commands */
86
+#define CMDFLAG_2ND_TIER 0x00002 /* Obscure and seldom used commands */
87
+#define CMDFLAG_TEST 0x00004 /* Commands for testing only */
88
+#define CMDFLAG_WEBPAGE 0x00008 /* Web pages */
89
+#define CMDFLAG_COMMAND 0x00010 /* A command */
90
+#define CMDFLAG_SETTING 0x00020 /* A setting */
91
+#define CMDFLAG_VERSIONABLE 0x00040 /* A versionable setting */
92
+#define CMDFLAG_BLOCKTEXT 0x00080 /* Multi-line text setting */
93
+#define CMDFLAG_BOOLEAN 0x00100 /* A boolean setting */
94
+#define CMDFLAG_CONST 0x00000 /* ETAG_CONST */
95
+#define CMDFLAG_CONFIG 0x01000 /* ETAG_CONFIG */
96
+#define CMDFLAG_DATA 0x02000 /* ETAG_DATA */
97
+#define CMDFLAG_COOKIE 0x04000 /* ETAG_COOKIE */
98
+#define CMDFLAG_DYNAMIC 0x10000 /* ETAG_DYNAMIC - on by default */
99
+#define CMDFLAG_ETAG 0x1f000 /* Mask of all ETAG entries */
100
+#define CMDFLAG_TO_ETAG(X) ((X)>>12)
94101
/**************************************************************************/
95102
96103
/*
97104
** Each entry looks like this:
98105
*/
@@ -198,11 +205,11 @@
198205
return;
199206
}
200207
while( fossil_isspace(zLine[i]) ){ i++; }
201208
if( zLine[i]=='/' ) i++;
202209
for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){}
203
- aEntry[nUsed].eType = eType;
210
+ aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC;
204211
if( eType & CMDFLAG_WEBPAGE ){
205212
aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1);
206213
aEntry[nUsed].zPath[0] = '/';
207214
}else{
208215
aEntry[nUsed].zPath = string_dup(&zLine[i], j);
@@ -236,10 +243,22 @@
236243
aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
237244
aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
238245
}else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
239246
aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
240247
aEntry[nUsed].eType |= CMDFLAG_TEST;
248
+ }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){
249
+ aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
250
+ aEntry[nUsed].eType |= CMDFLAG_CONST;
251
+ }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){
252
+ aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
253
+ aEntry[nUsed].eType |= CMDFLAG_CONFIG;
254
+ }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){
255
+ aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
256
+ aEntry[nUsed].eType |= CMDFLAG_DATA;
257
+ }else if( j==4 && strncmp(&zLine[i], "cookie", j)==0 ){
258
+ aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
259
+ aEntry[nUsed].eType |= CMDFLAG_COOKIE;
241260
}else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
242261
aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
243262
aEntry[nUsed].iWidth = 0;
244263
aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
245264
}else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
246265
--- src/mkindex.c
+++ src/mkindex.c
@@ -80,19 +80,26 @@
80
81 /***************************************************************************
82 ** These macros must match similar macros in dispatch.c.
83 **
84 ** Allowed values for CmdOrPage.eCmdFlags. */
85 #define CMDFLAG_1ST_TIER 0x0001 /* Most important commands */
86 #define CMDFLAG_2ND_TIER 0x0002 /* Obscure and seldom used commands */
87 #define CMDFLAG_TEST 0x0004 /* Commands for testing only */
88 #define CMDFLAG_WEBPAGE 0x0008 /* Web pages */
89 #define CMDFLAG_COMMAND 0x0010 /* A command */
90 #define CMDFLAG_SETTING 0x0020 /* A setting */
91 #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */
92 #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */
93 #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */
 
 
 
 
 
 
 
94 /**************************************************************************/
95
96 /*
97 ** Each entry looks like this:
98 */
@@ -198,11 +205,11 @@
198 return;
199 }
200 while( fossil_isspace(zLine[i]) ){ i++; }
201 if( zLine[i]=='/' ) i++;
202 for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){}
203 aEntry[nUsed].eType = eType;
204 if( eType & CMDFLAG_WEBPAGE ){
205 aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1);
206 aEntry[nUsed].zPath[0] = '/';
207 }else{
208 aEntry[nUsed].zPath = string_dup(&zLine[i], j);
@@ -236,10 +243,22 @@
236 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
237 aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
238 }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
239 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
240 aEntry[nUsed].eType |= CMDFLAG_TEST;
 
 
 
 
 
 
 
 
 
 
 
 
241 }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
242 aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
243 aEntry[nUsed].iWidth = 0;
244 aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
245 }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
246
--- src/mkindex.c
+++ src/mkindex.c
@@ -80,19 +80,26 @@
80
81 /***************************************************************************
82 ** These macros must match similar macros in dispatch.c.
83 **
84 ** Allowed values for CmdOrPage.eCmdFlags. */
85 #define CMDFLAG_1ST_TIER 0x00001 /* Most important commands */
86 #define CMDFLAG_2ND_TIER 0x00002 /* Obscure and seldom used commands */
87 #define CMDFLAG_TEST 0x00004 /* Commands for testing only */
88 #define CMDFLAG_WEBPAGE 0x00008 /* Web pages */
89 #define CMDFLAG_COMMAND 0x00010 /* A command */
90 #define CMDFLAG_SETTING 0x00020 /* A setting */
91 #define CMDFLAG_VERSIONABLE 0x00040 /* A versionable setting */
92 #define CMDFLAG_BLOCKTEXT 0x00080 /* Multi-line text setting */
93 #define CMDFLAG_BOOLEAN 0x00100 /* A boolean setting */
94 #define CMDFLAG_CONST 0x00000 /* ETAG_CONST */
95 #define CMDFLAG_CONFIG 0x01000 /* ETAG_CONFIG */
96 #define CMDFLAG_DATA 0x02000 /* ETAG_DATA */
97 #define CMDFLAG_COOKIE 0x04000 /* ETAG_COOKIE */
98 #define CMDFLAG_DYNAMIC 0x10000 /* ETAG_DYNAMIC - on by default */
99 #define CMDFLAG_ETAG 0x1f000 /* Mask of all ETAG entries */
100 #define CMDFLAG_TO_ETAG(X) ((X)>>12)
101 /**************************************************************************/
102
103 /*
104 ** Each entry looks like this:
105 */
@@ -198,11 +205,11 @@
205 return;
206 }
207 while( fossil_isspace(zLine[i]) ){ i++; }
208 if( zLine[i]=='/' ) i++;
209 for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){}
210 aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC;
211 if( eType & CMDFLAG_WEBPAGE ){
212 aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1);
213 aEntry[nUsed].zPath[0] = '/';
214 }else{
215 aEntry[nUsed].zPath = string_dup(&zLine[i], j);
@@ -236,10 +243,22 @@
243 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST);
244 aEntry[nUsed].eType |= CMDFLAG_2ND_TIER;
245 }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){
246 aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER);
247 aEntry[nUsed].eType |= CMDFLAG_TEST;
248 }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){
249 aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
250 aEntry[nUsed].eType |= CMDFLAG_CONST;
251 }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){
252 aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
253 aEntry[nUsed].eType |= CMDFLAG_CONFIG;
254 }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){
255 aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
256 aEntry[nUsed].eType |= CMDFLAG_DATA;
257 }else if( j==4 && strncmp(&zLine[i], "cookie", j)==0 ){
258 aEntry[nUsed].eType &= ~CMDFLAG_ETAG;
259 aEntry[nUsed].eType |= CMDFLAG_COOKIE;
260 }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){
261 aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT);
262 aEntry[nUsed].iWidth = 0;
263 aEntry[nUsed].eType |= CMDFLAG_BOOLEAN;
264 }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){
265
+16
--- src/setup.c
+++ src/setup.c
@@ -18,10 +18,25 @@
1818
** Implementation of the Setup page
1919
*/
2020
#include "config.h"
2121
#include <assert.h>
2222
#include "setup.h"
23
+
24
+/*
25
+** Increment the "cfgcnt" variable, so that ETags will know that
26
+** the configuration has changed.
27
+*/
28
+void setup_incr_cfgcnt(void){
29
+ static int once = 1;
30
+ if( once ){
31
+ once = 0;
32
+ db_multi_exec("UPDATE config SET value=value+1 WHERE name='cfgcnt'");
33
+ if( db_changes()==0 ){
34
+ db_multi_exec("INSERT INTO config(name,value) VALUES('cfgcnt',1)");
35
+ }
36
+ }
37
+}
2338
2439
/*
2540
** Output a single entry for a menu generated using an HTML table.
2641
** If zLink is not NULL or an empty string, then it is the page that
2742
** the menu entry will hyperlink to. If zLink is NULL or "", then
@@ -496,10 +511,11 @@
496511
db_multi_exec(
497512
"REPLACE INTO user(uid,login,info,pw,cap,mtime) "
498513
"VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
499514
uid, zLogin, P("info"), zPw, zCap
500515
);
516
+ setup_incr_cfgcnt();
501517
admin_log( "Updated user [%q] with capabilities [%q].",
502518
zLogin, zCap );
503519
if( atoi(PD("all","0"))>0 ){
504520
Blob sql;
505521
char *zErr = 0;
506522
--- src/setup.c
+++ src/setup.c
@@ -18,10 +18,25 @@
18 ** Implementation of the Setup page
19 */
20 #include "config.h"
21 #include <assert.h>
22 #include "setup.h"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
24 /*
25 ** Output a single entry for a menu generated using an HTML table.
26 ** If zLink is not NULL or an empty string, then it is the page that
27 ** the menu entry will hyperlink to. If zLink is NULL or "", then
@@ -496,10 +511,11 @@
496 db_multi_exec(
497 "REPLACE INTO user(uid,login,info,pw,cap,mtime) "
498 "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
499 uid, zLogin, P("info"), zPw, zCap
500 );
 
501 admin_log( "Updated user [%q] with capabilities [%q].",
502 zLogin, zCap );
503 if( atoi(PD("all","0"))>0 ){
504 Blob sql;
505 char *zErr = 0;
506
--- src/setup.c
+++ src/setup.c
@@ -18,10 +18,25 @@
18 ** Implementation of the Setup page
19 */
20 #include "config.h"
21 #include <assert.h>
22 #include "setup.h"
23
24 /*
25 ** Increment the "cfgcnt" variable, so that ETags will know that
26 ** the configuration has changed.
27 */
28 void setup_incr_cfgcnt(void){
29 static int once = 1;
30 if( once ){
31 once = 0;
32 db_multi_exec("UPDATE config SET value=value+1 WHERE name='cfgcnt'");
33 if( db_changes()==0 ){
34 db_multi_exec("INSERT INTO config(name,value) VALUES('cfgcnt',1)");
35 }
36 }
37 }
38
39 /*
40 ** Output a single entry for a menu generated using an HTML table.
41 ** If zLink is not NULL or an empty string, then it is the page that
42 ** the menu entry will hyperlink to. If zLink is NULL or "", then
@@ -496,10 +511,11 @@
511 db_multi_exec(
512 "REPLACE INTO user(uid,login,info,pw,cap,mtime) "
513 "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
514 uid, zLogin, P("info"), zPw, zCap
515 );
516 setup_incr_cfgcnt();
517 admin_log( "Updated user [%q] with capabilities [%q].",
518 zLogin, zCap );
519 if( atoi(PD("all","0"))>0 ){
520 Blob sql;
521 char *zErr = 0;
522
+2 -2
--- src/timeline.c
+++ src/timeline.c
@@ -1329,11 +1329,11 @@
13291329
/* If execution reaches this point, the pattern was empty. Return NULL. */
13301330
return 0;
13311331
}
13321332
13331333
/*
1334
-** WEBPAGE: timeline
1334
+** WEBPAGE: timeline data
13351335
**
13361336
** Query parameters:
13371337
**
13381338
** a=TIMEORTAG After this event
13391339
** b=TIMEORTAG Before this event
@@ -2510,11 +2510,11 @@
25102510
}
25112511
db_finalize(&q);
25122512
}
25132513
25142514
/*
2515
-** WEBPAGE: timewarps
2515
+** WEBPAGE: timewarps data
25162516
**
25172517
** Show all check-ins that are "timewarps". A timewarp is a
25182518
** check-in that occurs before its parent, according to the
25192519
** timestamp information on the check-in. This can only actually
25202520
** happen, of course, if a users system clock is set incorrectly.
25212521
--- src/timeline.c
+++ src/timeline.c
@@ -1329,11 +1329,11 @@
1329 /* If execution reaches this point, the pattern was empty. Return NULL. */
1330 return 0;
1331 }
1332
1333 /*
1334 ** WEBPAGE: timeline
1335 **
1336 ** Query parameters:
1337 **
1338 ** a=TIMEORTAG After this event
1339 ** b=TIMEORTAG Before this event
@@ -2510,11 +2510,11 @@
2510 }
2511 db_finalize(&q);
2512 }
2513
2514 /*
2515 ** WEBPAGE: timewarps
2516 **
2517 ** Show all check-ins that are "timewarps". A timewarp is a
2518 ** check-in that occurs before its parent, according to the
2519 ** timestamp information on the check-in. This can only actually
2520 ** happen, of course, if a users system clock is set incorrectly.
2521
--- src/timeline.c
+++ src/timeline.c
@@ -1329,11 +1329,11 @@
1329 /* If execution reaches this point, the pattern was empty. Return NULL. */
1330 return 0;
1331 }
1332
1333 /*
1334 ** WEBPAGE: timeline data
1335 **
1336 ** Query parameters:
1337 **
1338 ** a=TIMEORTAG After this event
1339 ** b=TIMEORTAG Before this event
@@ -2510,11 +2510,11 @@
2510 }
2511 db_finalize(&q);
2512 }
2513
2514 /*
2515 ** WEBPAGE: timewarps data
2516 **
2517 ** Show all check-ins that are "timewarps". A timewarp is a
2518 ** check-in that occurs before its parent, according to the
2519 ** timestamp information on the check-in. This can only actually
2520 ** happen, of course, if a users system clock is set incorrectly.
2521
--- src/unversioned.c
+++ src/unversioned.c
@@ -153,11 +153,15 @@
153153
** 2: zName exists and is the same as zHash but has a older mtime
154154
** 3: zName exists and is identical to mtime/zHash in all respects.
155155
** 4: zName exists and is the same as zHash but has a newer mtime.
156156
** 5: zName exists and should override the mtime/zHash remote.
157157
*/
158
-int unversioned_status(const char *zName, sqlite3_int64 mtime, const char *zHash){
158
+int unversioned_status(
159
+ const char *zName,
160
+ sqlite3_int64 mtime,
161
+ const char *zHash
162
+){
159163
int iStatus = 0;
160164
Stmt q;
161165
db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName);
162166
if( db_step(&q)==SQLITE_ROW ){
163167
const char *zLocalHash = db_column_text(&q, 1);
164168
--- src/unversioned.c
+++ src/unversioned.c
@@ -153,11 +153,15 @@
153 ** 2: zName exists and is the same as zHash but has a older mtime
154 ** 3: zName exists and is identical to mtime/zHash in all respects.
155 ** 4: zName exists and is the same as zHash but has a newer mtime.
156 ** 5: zName exists and should override the mtime/zHash remote.
157 */
158 int unversioned_status(const char *zName, sqlite3_int64 mtime, const char *zHash){
 
 
 
 
159 int iStatus = 0;
160 Stmt q;
161 db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName);
162 if( db_step(&q)==SQLITE_ROW ){
163 const char *zLocalHash = db_column_text(&q, 1);
164
--- src/unversioned.c
+++ src/unversioned.c
@@ -153,11 +153,15 @@
153 ** 2: zName exists and is the same as zHash but has a older mtime
154 ** 3: zName exists and is identical to mtime/zHash in all respects.
155 ** 4: zName exists and is the same as zHash but has a newer mtime.
156 ** 5: zName exists and should override the mtime/zHash remote.
157 */
158 int unversioned_status(
159 const char *zName,
160 sqlite3_int64 mtime,
161 const char *zHash
162 ){
163 int iStatus = 0;
164 Stmt q;
165 db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName);
166 if( db_step(&q)==SQLITE_ROW ){
167 const char *zLocalHash = db_column_text(&q, 1);
168
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
2828
2929
SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
3030
3131
SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
3232
33
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.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 descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
33
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.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 descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3434
35
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$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)\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)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
35
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$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)\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)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3636
3737
3838
RC=$(DMDIR)\bin\rcc
3939
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
4040
@@ -49,11 +49,11 @@
4949
5050
$(OBJDIR)\fossil.res: $B\win\fossil.rc
5151
$(RC) $(RCFLAGS) -o$@ $**
5252
5353
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54
- +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
54
+ +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5555
+echo fossil >> $@
5656
+echo fossil >> $@
5757
+echo $(LIBS) >> $@
5858
+echo. >> $@
5959
+echo fossil >> $@
@@ -308,10 +308,16 @@
308308
$(OBJDIR)\encode$O : encode_.c encode.h
309309
$(TCC) -o$@ -c encode_.c
310310
311311
encode_.c : $(SRCDIR)\encode.c
312312
+translate$E $** > $@
313
+
314
+$(OBJDIR)\etag$O : etag_.c etag.h
315
+ $(TCC) -o$@ -c etag_.c
316
+
317
+etag_.c : $(SRCDIR)\etag.c
318
+ +translate$E $** > $@
313319
314320
$(OBJDIR)\event$O : event_.c event.h
315321
$(TCC) -o$@ -c event_.c
316322
317323
event_.c : $(SRCDIR)\event.c
@@ -892,7 +898,7 @@
892898
893899
zip_.c : $(SRCDIR)\zip.c
894900
+translate$E $** > $@
895901
896902
headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
897
- +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.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 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 descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h 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 sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
903
+ +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.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 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 descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h 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 sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
898904
@copy /Y nul: headers
899905
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.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 descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$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)\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)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -308,10 +308,16 @@
308 $(OBJDIR)\encode$O : encode_.c encode.h
309 $(TCC) -o$@ -c encode_.c
310
311 encode_.c : $(SRCDIR)\encode.c
312 +translate$E $** > $@
 
 
 
 
 
 
313
314 $(OBJDIR)\event$O : event_.c event.h
315 $(TCC) -o$@ -c event_.c
316
317 event_.c : $(SRCDIR)\event.c
@@ -892,7 +898,7 @@
892
893 zip_.c : $(SRCDIR)\zip.c
894 +translate$E $** > $@
895
896 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
897 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.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 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 descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h 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 sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
898 @copy /Y nul: headers
899
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.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 descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$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)\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)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -308,10 +308,16 @@
308 $(OBJDIR)\encode$O : encode_.c encode.h
309 $(TCC) -o$@ -c encode_.c
310
311 encode_.c : $(SRCDIR)\encode.c
312 +translate$E $** > $@
313
314 $(OBJDIR)\etag$O : etag_.c etag.h
315 $(TCC) -o$@ -c etag_.c
316
317 etag_.c : $(SRCDIR)\etag.c
318 +translate$E $** > $@
319
320 $(OBJDIR)\event$O : event_.c event.h
321 $(TCC) -o$@ -c event_.c
322
323 event_.c : $(SRCDIR)\event.c
@@ -892,7 +898,7 @@
898
899 zip_.c : $(SRCDIR)\zip.c
900 +translate$E $** > $@
901
902 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
903 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.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 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 descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h 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 sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
904 @copy /Y nul: headers
905
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -452,10 +452,11 @@
452452
$(SRCDIR)/diff.c \
453453
$(SRCDIR)/diffcmd.c \
454454
$(SRCDIR)/dispatch.c \
455455
$(SRCDIR)/doc.c \
456456
$(SRCDIR)/encode.c \
457
+ $(SRCDIR)/etag.c \
457458
$(SRCDIR)/event.c \
458459
$(SRCDIR)/export.c \
459460
$(SRCDIR)/file.c \
460461
$(SRCDIR)/finfo.c \
461462
$(SRCDIR)/foci.c \
@@ -652,10 +653,11 @@
652653
$(OBJDIR)/diff_.c \
653654
$(OBJDIR)/diffcmd_.c \
654655
$(OBJDIR)/dispatch_.c \
655656
$(OBJDIR)/doc_.c \
656657
$(OBJDIR)/encode_.c \
658
+ $(OBJDIR)/etag_.c \
657659
$(OBJDIR)/event_.c \
658660
$(OBJDIR)/export_.c \
659661
$(OBJDIR)/file_.c \
660662
$(OBJDIR)/finfo_.c \
661663
$(OBJDIR)/foci_.c \
@@ -781,10 +783,11 @@
781783
$(OBJDIR)/diff.o \
782784
$(OBJDIR)/diffcmd.o \
783785
$(OBJDIR)/dispatch.o \
784786
$(OBJDIR)/doc.o \
785787
$(OBJDIR)/encode.o \
788
+ $(OBJDIR)/etag.o \
786789
$(OBJDIR)/event.o \
787790
$(OBJDIR)/export.o \
788791
$(OBJDIR)/file.o \
789792
$(OBJDIR)/finfo.o \
790793
$(OBJDIR)/foci.o \
@@ -1129,10 +1132,11 @@
11291132
$(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
11301133
$(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
11311134
$(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
11321135
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
11331136
$(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
1137
+ $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
11341138
$(OBJDIR)/event_.c:$(OBJDIR)/event.h \
11351139
$(OBJDIR)/export_.c:$(OBJDIR)/export.h \
11361140
$(OBJDIR)/file_.c:$(OBJDIR)/file.h \
11371141
$(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
11381142
$(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1474,10 +1478,18 @@
14741478
14751479
$(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
14761480
$(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
14771481
14781482
$(OBJDIR)/encode.h: $(OBJDIR)/headers
1483
+
1484
+$(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(TRANSLATE)
1485
+ $(TRANSLATE) $(SRCDIR)/etag.c >$@
1486
+
1487
+$(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h
1488
+ $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c
1489
+
1490
+$(OBJDIR)/etag.h: $(OBJDIR)/headers
14791491
14801492
$(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE)
14811493
$(TRANSLATE) $(SRCDIR)/event.c >$@
14821494
14831495
$(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
14841496
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -452,10 +452,11 @@
452 $(SRCDIR)/diff.c \
453 $(SRCDIR)/diffcmd.c \
454 $(SRCDIR)/dispatch.c \
455 $(SRCDIR)/doc.c \
456 $(SRCDIR)/encode.c \
 
457 $(SRCDIR)/event.c \
458 $(SRCDIR)/export.c \
459 $(SRCDIR)/file.c \
460 $(SRCDIR)/finfo.c \
461 $(SRCDIR)/foci.c \
@@ -652,10 +653,11 @@
652 $(OBJDIR)/diff_.c \
653 $(OBJDIR)/diffcmd_.c \
654 $(OBJDIR)/dispatch_.c \
655 $(OBJDIR)/doc_.c \
656 $(OBJDIR)/encode_.c \
 
657 $(OBJDIR)/event_.c \
658 $(OBJDIR)/export_.c \
659 $(OBJDIR)/file_.c \
660 $(OBJDIR)/finfo_.c \
661 $(OBJDIR)/foci_.c \
@@ -781,10 +783,11 @@
781 $(OBJDIR)/diff.o \
782 $(OBJDIR)/diffcmd.o \
783 $(OBJDIR)/dispatch.o \
784 $(OBJDIR)/doc.o \
785 $(OBJDIR)/encode.o \
 
786 $(OBJDIR)/event.o \
787 $(OBJDIR)/export.o \
788 $(OBJDIR)/file.o \
789 $(OBJDIR)/finfo.o \
790 $(OBJDIR)/foci.o \
@@ -1129,10 +1132,11 @@
1129 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
1130 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
1131 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
1132 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
1133 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
 
1134 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
1135 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
1136 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
1137 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
1138 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1474,10 +1478,18 @@
1474
1475 $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
1476 $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
1477
1478 $(OBJDIR)/encode.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1479
1480 $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE)
1481 $(TRANSLATE) $(SRCDIR)/event.c >$@
1482
1483 $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
1484
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -452,10 +452,11 @@
452 $(SRCDIR)/diff.c \
453 $(SRCDIR)/diffcmd.c \
454 $(SRCDIR)/dispatch.c \
455 $(SRCDIR)/doc.c \
456 $(SRCDIR)/encode.c \
457 $(SRCDIR)/etag.c \
458 $(SRCDIR)/event.c \
459 $(SRCDIR)/export.c \
460 $(SRCDIR)/file.c \
461 $(SRCDIR)/finfo.c \
462 $(SRCDIR)/foci.c \
@@ -652,10 +653,11 @@
653 $(OBJDIR)/diff_.c \
654 $(OBJDIR)/diffcmd_.c \
655 $(OBJDIR)/dispatch_.c \
656 $(OBJDIR)/doc_.c \
657 $(OBJDIR)/encode_.c \
658 $(OBJDIR)/etag_.c \
659 $(OBJDIR)/event_.c \
660 $(OBJDIR)/export_.c \
661 $(OBJDIR)/file_.c \
662 $(OBJDIR)/finfo_.c \
663 $(OBJDIR)/foci_.c \
@@ -781,10 +783,11 @@
783 $(OBJDIR)/diff.o \
784 $(OBJDIR)/diffcmd.o \
785 $(OBJDIR)/dispatch.o \
786 $(OBJDIR)/doc.o \
787 $(OBJDIR)/encode.o \
788 $(OBJDIR)/etag.o \
789 $(OBJDIR)/event.o \
790 $(OBJDIR)/export.o \
791 $(OBJDIR)/file.o \
792 $(OBJDIR)/finfo.o \
793 $(OBJDIR)/foci.o \
@@ -1129,10 +1132,11 @@
1132 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
1133 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
1134 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
1135 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
1136 $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \
1137 $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \
1138 $(OBJDIR)/event_.c:$(OBJDIR)/event.h \
1139 $(OBJDIR)/export_.c:$(OBJDIR)/export.h \
1140 $(OBJDIR)/file_.c:$(OBJDIR)/file.h \
1141 $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \
1142 $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \
@@ -1474,10 +1478,18 @@
1478
1479 $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h
1480 $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c
1481
1482 $(OBJDIR)/encode.h: $(OBJDIR)/headers
1483
1484 $(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(TRANSLATE)
1485 $(TRANSLATE) $(SRCDIR)/etag.c >$@
1486
1487 $(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h
1488 $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c
1489
1490 $(OBJDIR)/etag.h: $(OBJDIR)/headers
1491
1492 $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE)
1493 $(TRANSLATE) $(SRCDIR)/event.c >$@
1494
1495 $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h
1496
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -382,10 +382,11 @@
382382
diff_.c \
383383
diffcmd_.c \
384384
dispatch_.c \
385385
doc_.c \
386386
encode_.c \
387
+ etag_.c \
387388
event_.c \
388389
export_.c \
389390
file_.c \
390391
finfo_.c \
391392
foci_.c \
@@ -581,10 +582,11 @@
581582
$(OX)\diff$O \
582583
$(OX)\diffcmd$O \
583584
$(OX)\dispatch$O \
584585
$(OX)\doc$O \
585586
$(OX)\encode$O \
587
+ $(OX)\etag$O \
586588
$(OX)\event$O \
587589
$(OX)\export$O \
588590
$(OX)\file$O \
589591
$(OX)\finfo$O \
590592
$(OX)\foci$O \
@@ -769,10 +771,11 @@
769771
echo $(OX)\diff.obj >> $@
770772
echo $(OX)\diffcmd.obj >> $@
771773
echo $(OX)\dispatch.obj >> $@
772774
echo $(OX)\doc.obj >> $@
773775
echo $(OX)\encode.obj >> $@
776
+ echo $(OX)\etag.obj >> $@
774777
echo $(OX)\event.obj >> $@
775778
echo $(OX)\export.obj >> $@
776779
echo $(OX)\file.obj >> $@
777780
echo $(OX)\finfo.obj >> $@
778781
echo $(OX)\foci.obj >> $@
@@ -1168,10 +1171,16 @@
11681171
$(OX)\encode$O : encode_.c encode.h
11691172
$(TCC) /Fo$@ -c encode_.c
11701173
11711174
encode_.c : $(SRCDIR)\encode.c
11721175
translate$E $** > $@
1176
+
1177
+$(OX)\etag$O : etag_.c etag.h
1178
+ $(TCC) /Fo$@ -c etag_.c
1179
+
1180
+etag_.c : $(SRCDIR)\etag.c
1181
+ translate$E $** > $@
11731182
11741183
$(OX)\event$O : event_.c event.h
11751184
$(TCC) /Fo$@ -c event_.c
11761185
11771186
event_.c : $(SRCDIR)\event.c
@@ -1785,10 +1794,11 @@
17851794
diff_.c:diff.h \
17861795
diffcmd_.c:diffcmd.h \
17871796
dispatch_.c:dispatch.h \
17881797
doc_.c:doc.h \
17891798
encode_.c:encode.h \
1799
+ etag_.c:etag.h \
17901800
event_.c:event.h \
17911801
export_.c:export.h \
17921802
file_.c:file.h \
17931803
finfo_.c:finfo.h \
17941804
foci_.c:foci.h \
17951805
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -382,10 +382,11 @@
382 diff_.c \
383 diffcmd_.c \
384 dispatch_.c \
385 doc_.c \
386 encode_.c \
 
387 event_.c \
388 export_.c \
389 file_.c \
390 finfo_.c \
391 foci_.c \
@@ -581,10 +582,11 @@
581 $(OX)\diff$O \
582 $(OX)\diffcmd$O \
583 $(OX)\dispatch$O \
584 $(OX)\doc$O \
585 $(OX)\encode$O \
 
586 $(OX)\event$O \
587 $(OX)\export$O \
588 $(OX)\file$O \
589 $(OX)\finfo$O \
590 $(OX)\foci$O \
@@ -769,10 +771,11 @@
769 echo $(OX)\diff.obj >> $@
770 echo $(OX)\diffcmd.obj >> $@
771 echo $(OX)\dispatch.obj >> $@
772 echo $(OX)\doc.obj >> $@
773 echo $(OX)\encode.obj >> $@
 
774 echo $(OX)\event.obj >> $@
775 echo $(OX)\export.obj >> $@
776 echo $(OX)\file.obj >> $@
777 echo $(OX)\finfo.obj >> $@
778 echo $(OX)\foci.obj >> $@
@@ -1168,10 +1171,16 @@
1168 $(OX)\encode$O : encode_.c encode.h
1169 $(TCC) /Fo$@ -c encode_.c
1170
1171 encode_.c : $(SRCDIR)\encode.c
1172 translate$E $** > $@
 
 
 
 
 
 
1173
1174 $(OX)\event$O : event_.c event.h
1175 $(TCC) /Fo$@ -c event_.c
1176
1177 event_.c : $(SRCDIR)\event.c
@@ -1785,10 +1794,11 @@
1785 diff_.c:diff.h \
1786 diffcmd_.c:diffcmd.h \
1787 dispatch_.c:dispatch.h \
1788 doc_.c:doc.h \
1789 encode_.c:encode.h \
 
1790 event_.c:event.h \
1791 export_.c:export.h \
1792 file_.c:file.h \
1793 finfo_.c:finfo.h \
1794 foci_.c:foci.h \
1795
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -382,10 +382,11 @@
382 diff_.c \
383 diffcmd_.c \
384 dispatch_.c \
385 doc_.c \
386 encode_.c \
387 etag_.c \
388 event_.c \
389 export_.c \
390 file_.c \
391 finfo_.c \
392 foci_.c \
@@ -581,10 +582,11 @@
582 $(OX)\diff$O \
583 $(OX)\diffcmd$O \
584 $(OX)\dispatch$O \
585 $(OX)\doc$O \
586 $(OX)\encode$O \
587 $(OX)\etag$O \
588 $(OX)\event$O \
589 $(OX)\export$O \
590 $(OX)\file$O \
591 $(OX)\finfo$O \
592 $(OX)\foci$O \
@@ -769,10 +771,11 @@
771 echo $(OX)\diff.obj >> $@
772 echo $(OX)\diffcmd.obj >> $@
773 echo $(OX)\dispatch.obj >> $@
774 echo $(OX)\doc.obj >> $@
775 echo $(OX)\encode.obj >> $@
776 echo $(OX)\etag.obj >> $@
777 echo $(OX)\event.obj >> $@
778 echo $(OX)\export.obj >> $@
779 echo $(OX)\file.obj >> $@
780 echo $(OX)\finfo.obj >> $@
781 echo $(OX)\foci.obj >> $@
@@ -1168,10 +1171,16 @@
1171 $(OX)\encode$O : encode_.c encode.h
1172 $(TCC) /Fo$@ -c encode_.c
1173
1174 encode_.c : $(SRCDIR)\encode.c
1175 translate$E $** > $@
1176
1177 $(OX)\etag$O : etag_.c etag.h
1178 $(TCC) /Fo$@ -c etag_.c
1179
1180 etag_.c : $(SRCDIR)\etag.c
1181 translate$E $** > $@
1182
1183 $(OX)\event$O : event_.c event.h
1184 $(TCC) /Fo$@ -c event_.c
1185
1186 event_.c : $(SRCDIR)\event.c
@@ -1785,10 +1794,11 @@
1794 diff_.c:diff.h \
1795 diffcmd_.c:diffcmd.h \
1796 dispatch_.c:dispatch.h \
1797 doc_.c:doc.h \
1798 encode_.c:encode.h \
1799 etag_.c:etag.h \
1800 event_.c:event.h \
1801 export_.c:export.h \
1802 file_.c:file.h \
1803 finfo_.c:finfo.h \
1804 foci_.c:foci.h \
1805

Keyboard Shortcuts

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