Fossil SCM

Improvements to handling of backlinks: (1) Fossil now scans for backlinks in Markdown formatted ticket changes in addition to Fossil-Wiki formatted changes. (2) Wiki is scanned for backlinks, including wiki associated with check-ins and branches. (3) Much of the backlink code is gathered together into a single new "backlink.c" source file. (4) There are improvements to the timeline display of wiki changes. Ticket [a3572c6a5b47cd5a].

drh 2020-04-16 22:35 trunk merge
Commit ae1dac83d6bc4a3e41aa3d19c366b4966223c89c46420d324e2ed1406376382d
--- a/src/backlink.c
+++ b/src/backlink.c
@@ -0,0 +1,6 @@
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-Clau
--- a/src/backlink.c
+++ b/src/backlink.c
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/src/backlink.c
+++ b/src/backlink.c
@@ -0,0 +1,6 @@
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-Clau
+1 -1
--- src/db.c
+++ src/db.c
@@ -2310,11 +2310,11 @@
23102310
** SQL functions for debugging.
23112311
**
23122312
** The print() function writes its arguments on stdout, but only
23132313
** if the -sqlprint command-line option is turned on.
23142314
*/
2315
-LOCAL void db_sql_print(
2315
+void db_sql_print(
23162316
sqlite3_context *context,
23172317
int argc,
23182318
sqlite3_value **argv
23192319
){
23202320
int i;
23212321
--- src/db.c
+++ src/db.c
@@ -2310,11 +2310,11 @@
2310 ** SQL functions for debugging.
2311 **
2312 ** The print() function writes its arguments on stdout, but only
2313 ** if the -sqlprint command-line option is turned on.
2314 */
2315 LOCAL void db_sql_print(
2316 sqlite3_context *context,
2317 int argc,
2318 sqlite3_value **argv
2319 ){
2320 int i;
2321
--- src/db.c
+++ src/db.c
@@ -2310,11 +2310,11 @@
2310 ** SQL functions for debugging.
2311 **
2312 ** The print() function writes its arguments on stdout, but only
2313 ** if the -sqlprint command-line option is turned on.
2314 */
2315 void db_sql_print(
2316 sqlite3_context *context,
2317 int argc,
2318 sqlite3_value **argv
2319 ){
2320 int i;
2321
-65
--- src/info.c
+++ src/info.c
@@ -302,75 +302,10 @@
302302
|TIMELINE_CHPICK,
303303
0, 0, 0, rid, rid2, 0);
304304
db_finalize(&q);
305305
}
306306
307
-/*
308
-** Show a graph all wiki, tickets, and check-ins that refer to object zUuid.
309
-**
310
-** If zLabel is not NULL and the graph is not empty, then output zLabel as
311
-** a prefix to the graph.
312
-*/
313
-void render_backlink_graph(const char *zUuid, const char *zLabel){
314
- Blob sql;
315
- Stmt q;
316
- char *zGlob;
317
- zGlob = mprintf("%.5s*", zUuid);
318
- db_multi_exec(
319
- "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
320
- "DELETE FROM ok;"
321
- "INSERT OR IGNORE INTO ok"
322
- " SELECT srcid FROM backlink"
323
- " WHERE target GLOB %Q"
324
- " AND %Q GLOB (target || '*');",
325
- zGlob, zUuid
326
- );
327
- if( !db_exists("SELECT 1 FROM ok") ) return;
328
- if( zLabel ) cgi_printf("%s", zLabel);
329
- blob_zero(&sql);
330
- blob_append(&sql, timeline_query_for_www(), -1);
331
- blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
332
- db_prepare(&q, "%s", blob_sql_text(&sql));
333
- www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
334
- 0, 0, 0, 0, 0, 0);
335
- db_finalize(&q);
336
-}
337
-
338
-/*
339
-** WEBPAGE: test-backlinks
340
-**
341
-** Show a timeline of all check-ins and other events that have entries
342
-** in the backlink table. This is used for testing the rendering
343
-** of the "References" section of the /info page.
344
-*/
345
-void backlink_timeline_page(void){
346
- Blob sql;
347
- Stmt q;
348
-
349
- login_check_credentials();
350
- if( !g.perm.Read || !g.perm.RdTkt || !g.perm.RdWiki ){
351
- login_needed(g.anon.Read && g.anon.RdTkt && g.anon.RdWiki);
352
- return;
353
- }
354
- style_header("Backlink Timeline (Internal Testing Use)");
355
- db_multi_exec(
356
- "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
357
- "DELETE FROM ok;"
358
- "INSERT OR IGNORE INTO ok"
359
- " SELECT blob.rid FROM backlink, blob"
360
- " WHERE blob.uuid BETWEEN backlink.target AND (backlink.target||'x')"
361
- );
362
- blob_zero(&sql);
363
- blob_append(&sql, timeline_query_for_www(), -1);
364
- blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
365
- db_prepare(&q, "%s", blob_sql_text(&sql));
366
- www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
367
- 0, 0, 0, 0, 0, 0);
368
- db_finalize(&q);
369
- style_footer();
370
-}
371
-
372307
373308
/*
374309
** Append the difference between artifacts to the output
375310
*/
376311
static void append_diff(
377312
--- src/info.c
+++ src/info.c
@@ -302,75 +302,10 @@
302 |TIMELINE_CHPICK,
303 0, 0, 0, rid, rid2, 0);
304 db_finalize(&q);
305 }
306
307 /*
308 ** Show a graph all wiki, tickets, and check-ins that refer to object zUuid.
309 **
310 ** If zLabel is not NULL and the graph is not empty, then output zLabel as
311 ** a prefix to the graph.
312 */
313 void render_backlink_graph(const char *zUuid, const char *zLabel){
314 Blob sql;
315 Stmt q;
316 char *zGlob;
317 zGlob = mprintf("%.5s*", zUuid);
318 db_multi_exec(
319 "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
320 "DELETE FROM ok;"
321 "INSERT OR IGNORE INTO ok"
322 " SELECT srcid FROM backlink"
323 " WHERE target GLOB %Q"
324 " AND %Q GLOB (target || '*');",
325 zGlob, zUuid
326 );
327 if( !db_exists("SELECT 1 FROM ok") ) return;
328 if( zLabel ) cgi_printf("%s", zLabel);
329 blob_zero(&sql);
330 blob_append(&sql, timeline_query_for_www(), -1);
331 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
332 db_prepare(&q, "%s", blob_sql_text(&sql));
333 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
334 0, 0, 0, 0, 0, 0);
335 db_finalize(&q);
336 }
337
338 /*
339 ** WEBPAGE: test-backlinks
340 **
341 ** Show a timeline of all check-ins and other events that have entries
342 ** in the backlink table. This is used for testing the rendering
343 ** of the "References" section of the /info page.
344 */
345 void backlink_timeline_page(void){
346 Blob sql;
347 Stmt q;
348
349 login_check_credentials();
350 if( !g.perm.Read || !g.perm.RdTkt || !g.perm.RdWiki ){
351 login_needed(g.anon.Read && g.anon.RdTkt && g.anon.RdWiki);
352 return;
353 }
354 style_header("Backlink Timeline (Internal Testing Use)");
355 db_multi_exec(
356 "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);"
357 "DELETE FROM ok;"
358 "INSERT OR IGNORE INTO ok"
359 " SELECT blob.rid FROM backlink, blob"
360 " WHERE blob.uuid BETWEEN backlink.target AND (backlink.target||'x')"
361 );
362 blob_zero(&sql);
363 blob_append(&sql, timeline_query_for_www(), -1);
364 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
365 db_prepare(&q, "%s", blob_sql_text(&sql));
366 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
367 0, 0, 0, 0, 0, 0);
368 db_finalize(&q);
369 style_footer();
370 }
371
372
373 /*
374 ** Append the difference between artifacts to the output
375 */
376 static void append_diff(
377
--- src/info.c
+++ src/info.c
@@ -302,75 +302,10 @@
302 |TIMELINE_CHPICK,
303 0, 0, 0, rid, rid2, 0);
304 db_finalize(&q);
305 }
306
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
308 /*
309 ** Append the difference between artifacts to the output
310 */
311 static void append_diff(
312
+12
--- src/main.mk
+++ src/main.mk
@@ -18,10 +18,11 @@
1818
SRC = \
1919
$(SRCDIR)/add.c \
2020
$(SRCDIR)/alerts.c \
2121
$(SRCDIR)/allrepo.c \
2222
$(SRCDIR)/attach.c \
23
+ $(SRCDIR)/backlink.c \
2324
$(SRCDIR)/backoffice.c \
2425
$(SRCDIR)/bag.c \
2526
$(SRCDIR)/bisect.c \
2627
$(SRCDIR)/blob.c \
2728
$(SRCDIR)/branch.c \
@@ -250,10 +251,11 @@
250251
TRANS_SRC = \
251252
$(OBJDIR)/add_.c \
252253
$(OBJDIR)/alerts_.c \
253254
$(OBJDIR)/allrepo_.c \
254255
$(OBJDIR)/attach_.c \
256
+ $(OBJDIR)/backlink_.c \
255257
$(OBJDIR)/backoffice_.c \
256258
$(OBJDIR)/bag_.c \
257259
$(OBJDIR)/bisect_.c \
258260
$(OBJDIR)/blob_.c \
259261
$(OBJDIR)/branch_.c \
@@ -391,10 +393,11 @@
391393
OBJ = \
392394
$(OBJDIR)/add.o \
393395
$(OBJDIR)/alerts.o \
394396
$(OBJDIR)/allrepo.o \
395397
$(OBJDIR)/attach.o \
398
+ $(OBJDIR)/backlink.o \
396399
$(OBJDIR)/backoffice.o \
397400
$(OBJDIR)/bag.o \
398401
$(OBJDIR)/bisect.o \
399402
$(OBJDIR)/blob.o \
400403
$(OBJDIR)/branch.o \
@@ -727,10 +730,11 @@
727730
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
728731
$(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
729732
$(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
730733
$(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
731734
$(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
735
+ $(OBJDIR)/backlink_.c:$(OBJDIR)/backlink.h \
732736
$(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
733737
$(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
734738
$(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
735739
$(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
736740
$(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -900,10 +904,18 @@
900904
901905
$(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
902906
$(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
903907
904908
$(OBJDIR)/attach.h: $(OBJDIR)/headers
909
+
910
+$(OBJDIR)/backlink_.c: $(SRCDIR)/backlink.c $(OBJDIR)/translate
911
+ $(OBJDIR)/translate $(SRCDIR)/backlink.c >$@
912
+
913
+$(OBJDIR)/backlink.o: $(OBJDIR)/backlink_.c $(OBJDIR)/backlink.h $(SRCDIR)/config.h
914
+ $(XTCC) -o $(OBJDIR)/backlink.o -c $(OBJDIR)/backlink_.c
915
+
916
+$(OBJDIR)/backlink.h: $(OBJDIR)/headers
905917
906918
$(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(OBJDIR)/translate
907919
$(OBJDIR)/translate $(SRCDIR)/backoffice.c >$@
908920
909921
$(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
910922
--- src/main.mk
+++ src/main.mk
@@ -18,10 +18,11 @@
18 SRC = \
19 $(SRCDIR)/add.c \
20 $(SRCDIR)/alerts.c \
21 $(SRCDIR)/allrepo.c \
22 $(SRCDIR)/attach.c \
 
23 $(SRCDIR)/backoffice.c \
24 $(SRCDIR)/bag.c \
25 $(SRCDIR)/bisect.c \
26 $(SRCDIR)/blob.c \
27 $(SRCDIR)/branch.c \
@@ -250,10 +251,11 @@
250 TRANS_SRC = \
251 $(OBJDIR)/add_.c \
252 $(OBJDIR)/alerts_.c \
253 $(OBJDIR)/allrepo_.c \
254 $(OBJDIR)/attach_.c \
 
255 $(OBJDIR)/backoffice_.c \
256 $(OBJDIR)/bag_.c \
257 $(OBJDIR)/bisect_.c \
258 $(OBJDIR)/blob_.c \
259 $(OBJDIR)/branch_.c \
@@ -391,10 +393,11 @@
391 OBJ = \
392 $(OBJDIR)/add.o \
393 $(OBJDIR)/alerts.o \
394 $(OBJDIR)/allrepo.o \
395 $(OBJDIR)/attach.o \
 
396 $(OBJDIR)/backoffice.o \
397 $(OBJDIR)/bag.o \
398 $(OBJDIR)/bisect.o \
399 $(OBJDIR)/blob.o \
400 $(OBJDIR)/branch.o \
@@ -727,10 +730,11 @@
727 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
728 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
729 $(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
730 $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
731 $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
 
732 $(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
733 $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
734 $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
735 $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
736 $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -900,10 +904,18 @@
900
901 $(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
902 $(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
903
904 $(OBJDIR)/attach.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
905
906 $(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(OBJDIR)/translate
907 $(OBJDIR)/translate $(SRCDIR)/backoffice.c >$@
908
909 $(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
910
--- src/main.mk
+++ src/main.mk
@@ -18,10 +18,11 @@
18 SRC = \
19 $(SRCDIR)/add.c \
20 $(SRCDIR)/alerts.c \
21 $(SRCDIR)/allrepo.c \
22 $(SRCDIR)/attach.c \
23 $(SRCDIR)/backlink.c \
24 $(SRCDIR)/backoffice.c \
25 $(SRCDIR)/bag.c \
26 $(SRCDIR)/bisect.c \
27 $(SRCDIR)/blob.c \
28 $(SRCDIR)/branch.c \
@@ -250,10 +251,11 @@
251 TRANS_SRC = \
252 $(OBJDIR)/add_.c \
253 $(OBJDIR)/alerts_.c \
254 $(OBJDIR)/allrepo_.c \
255 $(OBJDIR)/attach_.c \
256 $(OBJDIR)/backlink_.c \
257 $(OBJDIR)/backoffice_.c \
258 $(OBJDIR)/bag_.c \
259 $(OBJDIR)/bisect_.c \
260 $(OBJDIR)/blob_.c \
261 $(OBJDIR)/branch_.c \
@@ -391,10 +393,11 @@
393 OBJ = \
394 $(OBJDIR)/add.o \
395 $(OBJDIR)/alerts.o \
396 $(OBJDIR)/allrepo.o \
397 $(OBJDIR)/attach.o \
398 $(OBJDIR)/backlink.o \
399 $(OBJDIR)/backoffice.o \
400 $(OBJDIR)/bag.o \
401 $(OBJDIR)/bisect.o \
402 $(OBJDIR)/blob.o \
403 $(OBJDIR)/branch.o \
@@ -727,10 +730,11 @@
730 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
731 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
732 $(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
733 $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
734 $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
735 $(OBJDIR)/backlink_.c:$(OBJDIR)/backlink.h \
736 $(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
737 $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
738 $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
739 $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
740 $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -900,10 +904,18 @@
904
905 $(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
906 $(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
907
908 $(OBJDIR)/attach.h: $(OBJDIR)/headers
909
910 $(OBJDIR)/backlink_.c: $(SRCDIR)/backlink.c $(OBJDIR)/translate
911 $(OBJDIR)/translate $(SRCDIR)/backlink.c >$@
912
913 $(OBJDIR)/backlink.o: $(OBJDIR)/backlink_.c $(OBJDIR)/backlink.h $(SRCDIR)/config.h
914 $(XTCC) -o $(OBJDIR)/backlink.o -c $(OBJDIR)/backlink_.c
915
916 $(OBJDIR)/backlink.h: $(OBJDIR)/headers
917
918 $(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(OBJDIR)/translate
919 $(OBJDIR)/translate $(SRCDIR)/backoffice.c >$@
920
921 $(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
922
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -29,10 +29,11 @@
2929
set src {
3030
add
3131
alerts
3232
allrepo
3333
attach
34
+ backlink
3435
backoffice
3536
bag
3637
bisect
3738
blob
3839
branch
3940
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -29,10 +29,11 @@
29 set src {
30 add
31 alerts
32 allrepo
33 attach
 
34 backoffice
35 bag
36 bisect
37 blob
38 branch
39
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -29,10 +29,11 @@
29 set src {
30 add
31 alerts
32 allrepo
33 attach
34 backlink
35 backoffice
36 bag
37 bisect
38 blob
39 branch
40
+56 -13
--- src/manifest.c
+++ src/manifest.c
@@ -1828,19 +1828,30 @@
18281828
void manifest_crosslink_begin(void){
18291829
assert( manifest_crosslink_busy==0 );
18301830
manifest_crosslink_busy = 1;
18311831
db_begin_transaction();
18321832
db_multi_exec(
1833
- "CREATE TEMP TABLE pending_tkt(uuid TEXT UNIQUE);"
1833
+ "CREATE TEMP TABLE pending_xlink(id TEXT PRIMARY KEY)WITHOUT ROWID;"
18341834
"CREATE TEMP TABLE time_fudge("
18351835
" mid INTEGER PRIMARY KEY," /* The rid of a manifest */
18361836
" m1 REAL," /* The timestamp on mid */
18371837
" cid INTEGER," /* A child or mid */
18381838
" m2 REAL" /* Timestamp on the child */
18391839
");"
18401840
);
18411841
}
1842
+
1843
+/*
1844
+** Add a new entry to the pending_xlink table.
1845
+*/
1846
+static void add_pending_crosslink(char cType, const char *zId){
1847
+ assert( manifest_crosslink_busy==1 );
1848
+ db_multi_exec(
1849
+ "INSERT OR IGNORE INTO pending_xlink VALUES('%c%q')",
1850
+ cType, zId
1851
+ );
1852
+}
18421853
18431854
#if INTERFACE
18441855
/* Timestamps might be adjusted slightly to ensure that check-ins appear
18451856
** on the timeline in chronological order. This is the maximum amount
18461857
** of the adjustment window, in days.
@@ -1879,20 +1890,28 @@
18791890
int rid = db_column_int(&q,0);
18801891
const char *zValue = db_column_text(&q,1);
18811892
manifest_reparent_checkin(rid, zValue);
18821893
}
18831894
db_finalize(&q);
1884
- db_prepare(&q, "SELECT uuid FROM pending_tkt");
1895
+ db_prepare(&q, "SELECT id FROM pending_xlink");
18851896
while( db_step(&q)==SQLITE_ROW ){
1886
- const char *zUuid = db_column_text(&q, 0);
1887
- ticket_rebuild_entry(zUuid);
1888
- if( permitHooks && rc==TH_OK ){
1889
- rc = xfer_run_script(zScript, zUuid, 0);
1897
+ const char *zId = db_column_text(&q, 0);
1898
+ char cType;
1899
+ if( zId==0 || zId[0]==0 ) continue;
1900
+ cType = zId[0];
1901
+ zId++;
1902
+ if( cType=='t' ){
1903
+ ticket_rebuild_entry(zId);
1904
+ if( permitHooks && rc==TH_OK ){
1905
+ rc = xfer_run_script(zScript, zId, 0);
1906
+ }
1907
+ }else if( cType=='w' ){
1908
+ backlink_wiki_refresh(zId);
18901909
}
18911910
}
18921911
db_finalize(&q);
1893
- db_multi_exec("DROP TABLE pending_tkt");
1912
+ db_multi_exec("DROP TABLE pending_xlink");
18941913
18951914
/* If multiple check-ins happen close together in time, adjust their
18961915
** times by a few milliseconds to make sure they appear in chronological
18971916
** order.
18981917
*/
@@ -2162,11 +2181,11 @@
21622181
TAG_USER, rid,
21632182
TAG_COMMENT, rid, p->rDate
21642183
);
21652184
zCom = db_text(0, "SELECT coalesce(ecomment, comment) FROM event"
21662185
" WHERE rowid=last_insert_rowid()");
2167
- wiki_extract_links(zCom, rid, 0, p->rDate, 1, WIKI_INLINE);
2186
+ backlink_extract(zCom, 0, rid, BKLNK_COMMENT, p->rDate, 1);
21682187
fossil_free(zCom);
21692188
21702189
/* If this is a delta-manifest, record the fact that this repository
21712190
** contains delta manifests, to free the "commit" logic to generate
21722191
** new delta manifests.
@@ -2227,10 +2246,11 @@
22272246
if( p->type==CFTYPE_WIKI ){
22282247
char *zTag = mprintf("wiki-%s", p->zWikiTitle);
22292248
int tagid = tag_findid(zTag, 1);
22302249
int prior;
22312250
char *zComment;
2251
+ const char *zPrefix;
22322252
int nWiki;
22332253
char zLength[40];
22342254
while( fossil_isspace(p->zWiki[0]) ) p->zWiki++;
22352255
nWiki = strlen(p->zWiki);
22362256
sqlite3_snprintf(sizeof(zLength), zLength, "%d", nWiki);
@@ -2243,16 +2263,40 @@
22432263
tagid, p->rDate
22442264
);
22452265
if( prior ){
22462266
content_deltify(prior, &rid, 1, 0);
22472267
}
2248
- if( nWiki>0 ){
2249
- zComment = mprintf("Changes to wiki page [%h]", p->zWikiTitle);
2268
+ if( nWiki<=0 ){
2269
+ zPrefix = "Deleted";
2270
+ }else if( !prior ){
2271
+ zPrefix = "Added";
22502272
}else{
2251
- zComment = mprintf("Deleted wiki page [%h]", p->zWikiTitle);
2273
+ zPrefix = "Changes to";
2274
+ }
2275
+ switch( wiki_page_type(p->zWikiTitle) ){
2276
+ case WIKITYPE_CHECKIN: {
2277
+ zComment = mprintf("%s wiki for check-in [%S]", zPrefix,
2278
+ p->zWikiTitle+8);
2279
+ break;
2280
+ }
2281
+ case WIKITYPE_BRANCH: {
2282
+ zComment = mprintf("%s wiki for branch [/timeline?r=%t|%h]",
2283
+ zPrefix, p->zWikiTitle+7, p->zWikiTitle+7);
2284
+ break;
2285
+ }
2286
+ case WIKITYPE_TAG: {
2287
+ zComment = mprintf("%s wiki for tag [/timeline?t=%t|%h]",
2288
+ zPrefix, p->zWikiTitle+4, p->zWikiTitle+4);
2289
+ break;
2290
+ }
2291
+ default: {
2292
+ zComment = mprintf("%s wiki page [%h]", zPrefix, p->zWikiTitle);
2293
+ break;
2294
+ }
22522295
}
22532296
search_doc_touch('w',rid,p->zWikiTitle);
2297
+ add_pending_crosslink('w',p->zWikiTitle);
22542298
db_multi_exec(
22552299
"REPLACE INTO event(type,mtime,objid,user,comment,"
22562300
" bgcolor,euser,ecomment)"
22572301
"VALUES('w',%.17g,%d,%Q,%Q,"
22582302
" (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d AND tagtype>1),"
@@ -2349,12 +2393,11 @@
23492393
Stmt qatt;
23502394
assert( manifest_crosslink_busy==1 );
23512395
zTag = mprintf("tkt-%s", p->zTicketUuid);
23522396
tag_insert(zTag, 1, 0, rid, p->rDate, rid);
23532397
fossil_free(zTag);
2354
- db_multi_exec("INSERT OR IGNORE INTO pending_tkt VALUES(%Q)",
2355
- p->zTicketUuid);
2398
+ add_pending_crosslink('t',p->zTicketUuid);
23562399
/* Locate and update comment for any attachments */
23572400
db_prepare(&qatt,
23582401
"SELECT attachid, src, target, filename FROM attachment"
23592402
" WHERE target=%Q",
23602403
p->zTicketUuid
23612404
--- src/manifest.c
+++ src/manifest.c
@@ -1828,19 +1828,30 @@
1828 void manifest_crosslink_begin(void){
1829 assert( manifest_crosslink_busy==0 );
1830 manifest_crosslink_busy = 1;
1831 db_begin_transaction();
1832 db_multi_exec(
1833 "CREATE TEMP TABLE pending_tkt(uuid TEXT UNIQUE);"
1834 "CREATE TEMP TABLE time_fudge("
1835 " mid INTEGER PRIMARY KEY," /* The rid of a manifest */
1836 " m1 REAL," /* The timestamp on mid */
1837 " cid INTEGER," /* A child or mid */
1838 " m2 REAL" /* Timestamp on the child */
1839 ");"
1840 );
1841 }
 
 
 
 
 
 
 
 
 
 
 
1842
1843 #if INTERFACE
1844 /* Timestamps might be adjusted slightly to ensure that check-ins appear
1845 ** on the timeline in chronological order. This is the maximum amount
1846 ** of the adjustment window, in days.
@@ -1879,20 +1890,28 @@
1879 int rid = db_column_int(&q,0);
1880 const char *zValue = db_column_text(&q,1);
1881 manifest_reparent_checkin(rid, zValue);
1882 }
1883 db_finalize(&q);
1884 db_prepare(&q, "SELECT uuid FROM pending_tkt");
1885 while( db_step(&q)==SQLITE_ROW ){
1886 const char *zUuid = db_column_text(&q, 0);
1887 ticket_rebuild_entry(zUuid);
1888 if( permitHooks && rc==TH_OK ){
1889 rc = xfer_run_script(zScript, zUuid, 0);
 
 
 
 
 
 
 
 
1890 }
1891 }
1892 db_finalize(&q);
1893 db_multi_exec("DROP TABLE pending_tkt");
1894
1895 /* If multiple check-ins happen close together in time, adjust their
1896 ** times by a few milliseconds to make sure they appear in chronological
1897 ** order.
1898 */
@@ -2162,11 +2181,11 @@
2162 TAG_USER, rid,
2163 TAG_COMMENT, rid, p->rDate
2164 );
2165 zCom = db_text(0, "SELECT coalesce(ecomment, comment) FROM event"
2166 " WHERE rowid=last_insert_rowid()");
2167 wiki_extract_links(zCom, rid, 0, p->rDate, 1, WIKI_INLINE);
2168 fossil_free(zCom);
2169
2170 /* If this is a delta-manifest, record the fact that this repository
2171 ** contains delta manifests, to free the "commit" logic to generate
2172 ** new delta manifests.
@@ -2227,10 +2246,11 @@
2227 if( p->type==CFTYPE_WIKI ){
2228 char *zTag = mprintf("wiki-%s", p->zWikiTitle);
2229 int tagid = tag_findid(zTag, 1);
2230 int prior;
2231 char *zComment;
 
2232 int nWiki;
2233 char zLength[40];
2234 while( fossil_isspace(p->zWiki[0]) ) p->zWiki++;
2235 nWiki = strlen(p->zWiki);
2236 sqlite3_snprintf(sizeof(zLength), zLength, "%d", nWiki);
@@ -2243,16 +2263,40 @@
2243 tagid, p->rDate
2244 );
2245 if( prior ){
2246 content_deltify(prior, &rid, 1, 0);
2247 }
2248 if( nWiki>0 ){
2249 zComment = mprintf("Changes to wiki page [%h]", p->zWikiTitle);
 
 
2250 }else{
2251 zComment = mprintf("Deleted wiki page [%h]", p->zWikiTitle);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2252 }
2253 search_doc_touch('w',rid,p->zWikiTitle);
 
2254 db_multi_exec(
2255 "REPLACE INTO event(type,mtime,objid,user,comment,"
2256 " bgcolor,euser,ecomment)"
2257 "VALUES('w',%.17g,%d,%Q,%Q,"
2258 " (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d AND tagtype>1),"
@@ -2349,12 +2393,11 @@
2349 Stmt qatt;
2350 assert( manifest_crosslink_busy==1 );
2351 zTag = mprintf("tkt-%s", p->zTicketUuid);
2352 tag_insert(zTag, 1, 0, rid, p->rDate, rid);
2353 fossil_free(zTag);
2354 db_multi_exec("INSERT OR IGNORE INTO pending_tkt VALUES(%Q)",
2355 p->zTicketUuid);
2356 /* Locate and update comment for any attachments */
2357 db_prepare(&qatt,
2358 "SELECT attachid, src, target, filename FROM attachment"
2359 " WHERE target=%Q",
2360 p->zTicketUuid
2361
--- src/manifest.c
+++ src/manifest.c
@@ -1828,19 +1828,30 @@
1828 void manifest_crosslink_begin(void){
1829 assert( manifest_crosslink_busy==0 );
1830 manifest_crosslink_busy = 1;
1831 db_begin_transaction();
1832 db_multi_exec(
1833 "CREATE TEMP TABLE pending_xlink(id TEXT PRIMARY KEY)WITHOUT ROWID;"
1834 "CREATE TEMP TABLE time_fudge("
1835 " mid INTEGER PRIMARY KEY," /* The rid of a manifest */
1836 " m1 REAL," /* The timestamp on mid */
1837 " cid INTEGER," /* A child or mid */
1838 " m2 REAL" /* Timestamp on the child */
1839 ");"
1840 );
1841 }
1842
1843 /*
1844 ** Add a new entry to the pending_xlink table.
1845 */
1846 static void add_pending_crosslink(char cType, const char *zId){
1847 assert( manifest_crosslink_busy==1 );
1848 db_multi_exec(
1849 "INSERT OR IGNORE INTO pending_xlink VALUES('%c%q')",
1850 cType, zId
1851 );
1852 }
1853
1854 #if INTERFACE
1855 /* Timestamps might be adjusted slightly to ensure that check-ins appear
1856 ** on the timeline in chronological order. This is the maximum amount
1857 ** of the adjustment window, in days.
@@ -1879,20 +1890,28 @@
1890 int rid = db_column_int(&q,0);
1891 const char *zValue = db_column_text(&q,1);
1892 manifest_reparent_checkin(rid, zValue);
1893 }
1894 db_finalize(&q);
1895 db_prepare(&q, "SELECT id FROM pending_xlink");
1896 while( db_step(&q)==SQLITE_ROW ){
1897 const char *zId = db_column_text(&q, 0);
1898 char cType;
1899 if( zId==0 || zId[0]==0 ) continue;
1900 cType = zId[0];
1901 zId++;
1902 if( cType=='t' ){
1903 ticket_rebuild_entry(zId);
1904 if( permitHooks && rc==TH_OK ){
1905 rc = xfer_run_script(zScript, zId, 0);
1906 }
1907 }else if( cType=='w' ){
1908 backlink_wiki_refresh(zId);
1909 }
1910 }
1911 db_finalize(&q);
1912 db_multi_exec("DROP TABLE pending_xlink");
1913
1914 /* If multiple check-ins happen close together in time, adjust their
1915 ** times by a few milliseconds to make sure they appear in chronological
1916 ** order.
1917 */
@@ -2162,11 +2181,11 @@
2181 TAG_USER, rid,
2182 TAG_COMMENT, rid, p->rDate
2183 );
2184 zCom = db_text(0, "SELECT coalesce(ecomment, comment) FROM event"
2185 " WHERE rowid=last_insert_rowid()");
2186 backlink_extract(zCom, 0, rid, BKLNK_COMMENT, p->rDate, 1);
2187 fossil_free(zCom);
2188
2189 /* If this is a delta-manifest, record the fact that this repository
2190 ** contains delta manifests, to free the "commit" logic to generate
2191 ** new delta manifests.
@@ -2227,10 +2246,11 @@
2246 if( p->type==CFTYPE_WIKI ){
2247 char *zTag = mprintf("wiki-%s", p->zWikiTitle);
2248 int tagid = tag_findid(zTag, 1);
2249 int prior;
2250 char *zComment;
2251 const char *zPrefix;
2252 int nWiki;
2253 char zLength[40];
2254 while( fossil_isspace(p->zWiki[0]) ) p->zWiki++;
2255 nWiki = strlen(p->zWiki);
2256 sqlite3_snprintf(sizeof(zLength), zLength, "%d", nWiki);
@@ -2243,16 +2263,40 @@
2263 tagid, p->rDate
2264 );
2265 if( prior ){
2266 content_deltify(prior, &rid, 1, 0);
2267 }
2268 if( nWiki<=0 ){
2269 zPrefix = "Deleted";
2270 }else if( !prior ){
2271 zPrefix = "Added";
2272 }else{
2273 zPrefix = "Changes to";
2274 }
2275 switch( wiki_page_type(p->zWikiTitle) ){
2276 case WIKITYPE_CHECKIN: {
2277 zComment = mprintf("%s wiki for check-in [%S]", zPrefix,
2278 p->zWikiTitle+8);
2279 break;
2280 }
2281 case WIKITYPE_BRANCH: {
2282 zComment = mprintf("%s wiki for branch [/timeline?r=%t|%h]",
2283 zPrefix, p->zWikiTitle+7, p->zWikiTitle+7);
2284 break;
2285 }
2286 case WIKITYPE_TAG: {
2287 zComment = mprintf("%s wiki for tag [/timeline?t=%t|%h]",
2288 zPrefix, p->zWikiTitle+4, p->zWikiTitle+4);
2289 break;
2290 }
2291 default: {
2292 zComment = mprintf("%s wiki page [%h]", zPrefix, p->zWikiTitle);
2293 break;
2294 }
2295 }
2296 search_doc_touch('w',rid,p->zWikiTitle);
2297 add_pending_crosslink('w',p->zWikiTitle);
2298 db_multi_exec(
2299 "REPLACE INTO event(type,mtime,objid,user,comment,"
2300 " bgcolor,euser,ecomment)"
2301 "VALUES('w',%.17g,%d,%Q,%Q,"
2302 " (SELECT value FROM tagxref WHERE tagid=%d AND rid=%d AND tagtype>1),"
@@ -2349,12 +2393,11 @@
2393 Stmt qatt;
2394 assert( manifest_crosslink_busy==1 );
2395 zTag = mprintf("tkt-%s", p->zTicketUuid);
2396 tag_insert(zTag, 1, 0, rid, p->rDate, rid);
2397 fossil_free(zTag);
2398 add_pending_crosslink('t',p->zTicketUuid);
 
2399 /* Locate and update comment for any attachments */
2400 db_prepare(&qatt,
2401 "SELECT attachid, src, target, filename FROM attachment"
2402 " WHERE target=%Q",
2403 p->zTicketUuid
2404
+13 -1
--- src/schema.c
+++ src/schema.c
@@ -407,11 +407,11 @@
407407
@ -- the following table for that hyperlink. This table is used to
408408
@ -- facilitate the display of "back links".
409409
@ --
410410
@ CREATE TABLE backlink(
411411
@ target TEXT, -- Where the hyperlink points to
412
-@ srctype INT, -- 0: check-in 1: ticket 2: wiki
412
+@ srctype INT, -- 0=comment 1=ticket 2=wiki. See BKLNK_* below.
413413
@ srcid INT, -- EVENT.OBJID for the source document
414414
@ mtime TIMESTAMP, -- time that the hyperlink was added. Julian day.
415415
@ UNIQUE(target, srctype, srcid)
416416
@ );
417417
@ CREATE INDEX backlink_src ON backlink(srcid, srctype);
@@ -476,10 +476,22 @@
476476
@ PRIMARY KEY(parentid, childid)
477477
@ ) WITHOUT ROWID;
478478
@ CREATE INDEX cherrypick_cid ON cherrypick(childid);
479479
;
480480
481
+/*
482
+** Allowed values for backlink.srctype
483
+*/
484
+#if INTERFACE
485
+# define BKLNK_COMMENT 0 /* Check-in comment */
486
+# define BKLNK_TICKET 1 /* Ticket body or title */
487
+# define BKLNK_WIKI 2 /* Wiki */
488
+# define BKLNK_EVENT 3 /* Technote */
489
+# define BKLNK_FORUM 4 /* Forum post */
490
+# define ValidBklnk(X) (X>=0 && X<=4) /* True if backlink.srctype is valid */
491
+#endif
492
+
481493
/*
482494
** Predefined tagid values
483495
*/
484496
#if INTERFACE
485497
# define TAG_BGCOLOR 1 /* Set the background color for display */
486498
--- src/schema.c
+++ src/schema.c
@@ -407,11 +407,11 @@
407 @ -- the following table for that hyperlink. This table is used to
408 @ -- facilitate the display of "back links".
409 @ --
410 @ CREATE TABLE backlink(
411 @ target TEXT, -- Where the hyperlink points to
412 @ srctype INT, -- 0: check-in 1: ticket 2: wiki
413 @ srcid INT, -- EVENT.OBJID for the source document
414 @ mtime TIMESTAMP, -- time that the hyperlink was added. Julian day.
415 @ UNIQUE(target, srctype, srcid)
416 @ );
417 @ CREATE INDEX backlink_src ON backlink(srcid, srctype);
@@ -476,10 +476,22 @@
476 @ PRIMARY KEY(parentid, childid)
477 @ ) WITHOUT ROWID;
478 @ CREATE INDEX cherrypick_cid ON cherrypick(childid);
479 ;
480
 
 
 
 
 
 
 
 
 
 
 
 
481 /*
482 ** Predefined tagid values
483 */
484 #if INTERFACE
485 # define TAG_BGCOLOR 1 /* Set the background color for display */
486
--- src/schema.c
+++ src/schema.c
@@ -407,11 +407,11 @@
407 @ -- the following table for that hyperlink. This table is used to
408 @ -- facilitate the display of "back links".
409 @ --
410 @ CREATE TABLE backlink(
411 @ target TEXT, -- Where the hyperlink points to
412 @ srctype INT, -- 0=comment 1=ticket 2=wiki. See BKLNK_* below.
413 @ srcid INT, -- EVENT.OBJID for the source document
414 @ mtime TIMESTAMP, -- time that the hyperlink was added. Julian day.
415 @ UNIQUE(target, srctype, srcid)
416 @ );
417 @ CREATE INDEX backlink_src ON backlink(srcid, srctype);
@@ -476,10 +476,22 @@
476 @ PRIMARY KEY(parentid, childid)
477 @ ) WITHOUT ROWID;
478 @ CREATE INDEX cherrypick_cid ON cherrypick(childid);
479 ;
480
481 /*
482 ** Allowed values for backlink.srctype
483 */
484 #if INTERFACE
485 # define BKLNK_COMMENT 0 /* Check-in comment */
486 # define BKLNK_TICKET 1 /* Ticket body or title */
487 # define BKLNK_WIKI 2 /* Wiki */
488 # define BKLNK_EVENT 3 /* Technote */
489 # define BKLNK_FORUM 4 /* Forum post */
490 # define ValidBklnk(X) (X>=0 && X<=4) /* True if backlink.srctype is valid */
491 #endif
492
493 /*
494 ** Predefined tagid values
495 */
496 #if INTERFACE
497 # define TAG_BGCOLOR 1 /* Set the background color for display */
498
+1 -1
--- src/tag.c
+++ src/tag.c
@@ -220,11 +220,11 @@
220220
if( zCol ){
221221
db_multi_exec("UPDATE event SET \"%w\"=%Q WHERE objid=%d",
222222
zCol, zValue, rid);
223223
if( tagid==TAG_COMMENT ){
224224
char *zCopy = mprintf("%s", zValue);
225
- wiki_extract_links(zCopy, rid, 0, mtime, 1, WIKI_INLINE);
225
+ backlink_extract(zCopy, 0, rid, BKLNK_COMMENT, mtime, 1);
226226
free(zCopy);
227227
}
228228
}
229229
if( tagid==TAG_DATE ){
230230
db_multi_exec("UPDATE event "
231231
--- src/tag.c
+++ src/tag.c
@@ -220,11 +220,11 @@
220 if( zCol ){
221 db_multi_exec("UPDATE event SET \"%w\"=%Q WHERE objid=%d",
222 zCol, zValue, rid);
223 if( tagid==TAG_COMMENT ){
224 char *zCopy = mprintf("%s", zValue);
225 wiki_extract_links(zCopy, rid, 0, mtime, 1, WIKI_INLINE);
226 free(zCopy);
227 }
228 }
229 if( tagid==TAG_DATE ){
230 db_multi_exec("UPDATE event "
231
--- src/tag.c
+++ src/tag.c
@@ -220,11 +220,11 @@
220 if( zCol ){
221 db_multi_exec("UPDATE event SET \"%w\"=%Q WHERE objid=%d",
222 zCol, zValue, rid);
223 if( tagid==TAG_COMMENT ){
224 char *zCopy = mprintf("%s", zValue);
225 backlink_extract(zCopy, 0, rid, BKLNK_COMMENT, mtime, 1);
226 free(zCopy);
227 }
228 }
229 if( tagid==TAG_DATE ){
230 db_multi_exec("UPDATE event "
231
+17 -1
--- src/timeline.c
+++ src/timeline.c
@@ -116,10 +116,11 @@
116116
#define TIMELINE_CHPICK 0x0400000 /* Show cherrypick merges */
117117
#define TIMELINE_FILLGAPS 0x0800000 /* Dotted lines for missing nodes */
118118
#define TIMELINE_XMERGE 0x1000000 /* Omit merges from off-graph nodes */
119119
#define TIMELINE_NOTKT 0x2000000 /* Omit extra ticket classes */
120120
#define TIMELINE_FORUMTXT 0x4000000 /* Render all forum messages */
121
+#define TIMELINE_REFS 0x8000000 /* Output intended for References tab */
121122
#endif
122123
123124
/*
124125
** Hash a string and use the hash to determine a background color.
125126
*/
@@ -560,12 +561,27 @@
560561
}
561562
if( zType[0]!='c' ){
562563
/* Comments for anything other than a check-in are generated by
563564
** "fossil rebuild" and expect to be rendered as text/x-fossil-wiki */
564565
if( zType[0]=='w' ){
566
+ const char *zCom = blob_str(&comment);
567
+ char *zWiki;
565568
wiki_hyperlink_override(zUuid);
566
- wiki_convert(&comment, 0, WIKI_INLINE);
569
+ if( (tmFlags & TIMELINE_REFS)!=0
570
+ && (zWiki = strstr(zCom,"wiki"))!=0
571
+ ){
572
+ /* The TIMELINE_REFS flag causes timeline comments of the
573
+ ** form "Changes to wiki..." or "Added wiki" to be changed
574
+ ** into just "Wiki..." */
575
+ Blob rcom;
576
+ blob_init(&rcom, 0, 0);
577
+ blob_appendf(&rcom, "W%s", zWiki+1);
578
+ wiki_convert(&rcom, 0, WIKI_INLINE);
579
+ blob_reset(&rcom);
580
+ }else{
581
+ wiki_convert(&comment, 0, WIKI_INLINE);
582
+ }
567583
wiki_hyperlink_override(0);
568584
}else{
569585
wiki_convert(&comment, 0, WIKI_INLINE);
570586
}
571587
}else{
572588
--- src/timeline.c
+++ src/timeline.c
@@ -116,10 +116,11 @@
116 #define TIMELINE_CHPICK 0x0400000 /* Show cherrypick merges */
117 #define TIMELINE_FILLGAPS 0x0800000 /* Dotted lines for missing nodes */
118 #define TIMELINE_XMERGE 0x1000000 /* Omit merges from off-graph nodes */
119 #define TIMELINE_NOTKT 0x2000000 /* Omit extra ticket classes */
120 #define TIMELINE_FORUMTXT 0x4000000 /* Render all forum messages */
 
121 #endif
122
123 /*
124 ** Hash a string and use the hash to determine a background color.
125 */
@@ -560,12 +561,27 @@
560 }
561 if( zType[0]!='c' ){
562 /* Comments for anything other than a check-in are generated by
563 ** "fossil rebuild" and expect to be rendered as text/x-fossil-wiki */
564 if( zType[0]=='w' ){
 
 
565 wiki_hyperlink_override(zUuid);
566 wiki_convert(&comment, 0, WIKI_INLINE);
 
 
 
 
 
 
 
 
 
 
 
 
 
567 wiki_hyperlink_override(0);
568 }else{
569 wiki_convert(&comment, 0, WIKI_INLINE);
570 }
571 }else{
572
--- src/timeline.c
+++ src/timeline.c
@@ -116,10 +116,11 @@
116 #define TIMELINE_CHPICK 0x0400000 /* Show cherrypick merges */
117 #define TIMELINE_FILLGAPS 0x0800000 /* Dotted lines for missing nodes */
118 #define TIMELINE_XMERGE 0x1000000 /* Omit merges from off-graph nodes */
119 #define TIMELINE_NOTKT 0x2000000 /* Omit extra ticket classes */
120 #define TIMELINE_FORUMTXT 0x4000000 /* Render all forum messages */
121 #define TIMELINE_REFS 0x8000000 /* Output intended for References tab */
122 #endif
123
124 /*
125 ** Hash a string and use the hash to determine a background color.
126 */
@@ -560,12 +561,27 @@
561 }
562 if( zType[0]!='c' ){
563 /* Comments for anything other than a check-in are generated by
564 ** "fossil rebuild" and expect to be rendered as text/x-fossil-wiki */
565 if( zType[0]=='w' ){
566 const char *zCom = blob_str(&comment);
567 char *zWiki;
568 wiki_hyperlink_override(zUuid);
569 if( (tmFlags & TIMELINE_REFS)!=0
570 && (zWiki = strstr(zCom,"wiki"))!=0
571 ){
572 /* The TIMELINE_REFS flag causes timeline comments of the
573 ** form "Changes to wiki..." or "Added wiki" to be changed
574 ** into just "Wiki..." */
575 Blob rcom;
576 blob_init(&rcom, 0, 0);
577 blob_appendf(&rcom, "W%s", zWiki+1);
578 wiki_convert(&rcom, 0, WIKI_INLINE);
579 blob_reset(&rcom);
580 }else{
581 wiki_convert(&comment, 0, WIKI_INLINE);
582 }
583 wiki_hyperlink_override(0);
584 }else{
585 wiki_convert(&comment, 0, WIKI_INLINE);
586 }
587 }else{
588
+32 -6
--- src/tkt.c
+++ src/tkt.c
@@ -194,10 +194,11 @@
194194
static int ticket_insert(const Manifest *p, int rid, int tktid){
195195
Blob sql1, sql2, sql3;
196196
Stmt q;
197197
int i, j;
198198
char *aUsed;
199
+ const char *zMimetype = 0;
199200
200201
if( tktid==0 ){
201202
db_multi_exec("INSERT INTO ticket(tkt_uuid, tkt_mtime) "
202203
"VALUES(%Q, 0)", p->zTicketUuid);
203204
tktid = db_last_insert_rowid();
@@ -233,12 +234,22 @@
233234
zUsedByName++;
234235
}
235236
blob_append_sql(&sql2, ",\"%w\"", zUsedByName);
236237
blob_append_sql(&sql3, ",%Q", p->aField[i].zValue);
237238
}
238
- if( rid>0 ){
239
- wiki_extract_links(p->aField[i].zValue, rid, 1, p->rDate, i==0, 0);
239
+ if( strcmp(zBaseName,"mimetype")==0 ){
240
+ zMimetype = p->aField[i].zValue;
241
+ }
242
+ }
243
+ if( rid>0 ){
244
+ for(i=0; i<p->nField; i++){
245
+ const char *zName = p->aField[i].zName;
246
+ const char *zBaseName = zName[0]=='+' ? zName+1 : zName;
247
+ j = fieldId(zBaseName);
248
+ if( j<0 ) continue;
249
+ backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
250
+ p->rDate, i==0);
240251
}
241252
}
242253
blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
243254
db_prepare(&q, "%s", blob_sql_text(&sql1));
244255
db_bind_double(&q, ":mtime", p->rDate);
@@ -845,10 +856,14 @@
845856
}
846857
847858
/*
848859
** Draw a timeline for a ticket with tag.tagid given by the tagid
849860
** parameter.
861
+**
862
+** If zType[0]=='c' then only show check-ins associated with the
863
+** ticket. For any other value of zType, show all events associated
864
+** with the ticket.
850865
*/
851866
void tkt_draw_timeline(int tagid, const char *zType){
852867
Stmt q;
853868
char *zFullUuid;
854869
char *zSQL;
@@ -855,20 +870,26 @@
855870
zFullUuid = db_text(0, "SELECT substr(tagname, 5) FROM tag WHERE tagid=%d",
856871
tagid);
857872
if( zType[0]=='c' ){
858873
zSQL = mprintf(
859874
"%s AND event.objid IN "
860
- " (SELECT srcid FROM backlink WHERE target GLOB '%.4s*' "
875
+ " (SELECT srcid FROM backlink WHERE target GLOB '%.4s*' "
876
+ "AND srctype=0 "
861877
"AND '%s' GLOB (target||'*')) "
862878
"ORDER BY mtime DESC",
863879
timeline_query_for_www(), zFullUuid, zFullUuid
864880
);
865881
}else{
866882
zSQL = mprintf(
867883
"%s AND event.objid IN "
868884
" (SELECT rid FROM tagxref WHERE tagid=%d"
869
- " UNION SELECT srcid FROM backlink"
885
+ " UNION"
886
+ " SELECT CASE srctype WHEN 2 THEN"
887
+ " (SELECT rid FROM tagxref WHERE tagid=backlink.srcid"
888
+ " ORDER BY mtime DESC LIMIT 1)"
889
+ " ELSE srcid END"
890
+ " FROM backlink"
870891
" WHERE target GLOB '%.4s*'"
871892
" AND '%s' GLOB (target||'*')"
872893
" UNION SELECT attachid FROM attachment"
873894
" WHERE target=%Q) "
874895
"ORDER BY mtime DESC",
@@ -875,21 +896,26 @@
875896
timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
876897
);
877898
}
878899
db_prepare(&q, "%z", zSQL/*safe-for-%s*/);
879900
www_print_timeline(&q,
880
- TIMELINE_ARTID | TIMELINE_DISJOINT | TIMELINE_GRAPH | TIMELINE_NOTKT,
901
+ TIMELINE_ARTID | TIMELINE_DISJOINT | TIMELINE_GRAPH | TIMELINE_NOTKT |
902
+ TIMELINE_REFS,
881903
0, 0, 0, 0, 0, 0);
882904
db_finalize(&q);
883905
fossil_free(zFullUuid);
884906
}
885907
886908
/*
887909
** WEBPAGE: tkttimeline
888
-** URL: /tkttimeline?name=TICKETUUID&y=TYPE
910
+** URL: /tkttimeline/TICKETUUID
889911
**
890912
** Show the change history for a single ticket in timeline format.
913
+**
914
+** Query parameters:
915
+**
916
+** y=ci Show only check-ins associated with the ticket
891917
*/
892918
void tkttimeline_page(void){
893919
char *zTitle;
894920
const char *zUuid;
895921
int tagid;
896922
--- src/tkt.c
+++ src/tkt.c
@@ -194,10 +194,11 @@
194 static int ticket_insert(const Manifest *p, int rid, int tktid){
195 Blob sql1, sql2, sql3;
196 Stmt q;
197 int i, j;
198 char *aUsed;
 
199
200 if( tktid==0 ){
201 db_multi_exec("INSERT INTO ticket(tkt_uuid, tkt_mtime) "
202 "VALUES(%Q, 0)", p->zTicketUuid);
203 tktid = db_last_insert_rowid();
@@ -233,12 +234,22 @@
233 zUsedByName++;
234 }
235 blob_append_sql(&sql2, ",\"%w\"", zUsedByName);
236 blob_append_sql(&sql3, ",%Q", p->aField[i].zValue);
237 }
238 if( rid>0 ){
239 wiki_extract_links(p->aField[i].zValue, rid, 1, p->rDate, i==0, 0);
 
 
 
 
 
 
 
 
 
 
240 }
241 }
242 blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
243 db_prepare(&q, "%s", blob_sql_text(&sql1));
244 db_bind_double(&q, ":mtime", p->rDate);
@@ -845,10 +856,14 @@
845 }
846
847 /*
848 ** Draw a timeline for a ticket with tag.tagid given by the tagid
849 ** parameter.
 
 
 
 
850 */
851 void tkt_draw_timeline(int tagid, const char *zType){
852 Stmt q;
853 char *zFullUuid;
854 char *zSQL;
@@ -855,20 +870,26 @@
855 zFullUuid = db_text(0, "SELECT substr(tagname, 5) FROM tag WHERE tagid=%d",
856 tagid);
857 if( zType[0]=='c' ){
858 zSQL = mprintf(
859 "%s AND event.objid IN "
860 " (SELECT srcid FROM backlink WHERE target GLOB '%.4s*' "
 
861 "AND '%s' GLOB (target||'*')) "
862 "ORDER BY mtime DESC",
863 timeline_query_for_www(), zFullUuid, zFullUuid
864 );
865 }else{
866 zSQL = mprintf(
867 "%s AND event.objid IN "
868 " (SELECT rid FROM tagxref WHERE tagid=%d"
869 " UNION SELECT srcid FROM backlink"
 
 
 
 
 
870 " WHERE target GLOB '%.4s*'"
871 " AND '%s' GLOB (target||'*')"
872 " UNION SELECT attachid FROM attachment"
873 " WHERE target=%Q) "
874 "ORDER BY mtime DESC",
@@ -875,21 +896,26 @@
875 timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
876 );
877 }
878 db_prepare(&q, "%z", zSQL/*safe-for-%s*/);
879 www_print_timeline(&q,
880 TIMELINE_ARTID | TIMELINE_DISJOINT | TIMELINE_GRAPH | TIMELINE_NOTKT,
 
881 0, 0, 0, 0, 0, 0);
882 db_finalize(&q);
883 fossil_free(zFullUuid);
884 }
885
886 /*
887 ** WEBPAGE: tkttimeline
888 ** URL: /tkttimeline?name=TICKETUUID&y=TYPE
889 **
890 ** Show the change history for a single ticket in timeline format.
 
 
 
 
891 */
892 void tkttimeline_page(void){
893 char *zTitle;
894 const char *zUuid;
895 int tagid;
896
--- src/tkt.c
+++ src/tkt.c
@@ -194,10 +194,11 @@
194 static int ticket_insert(const Manifest *p, int rid, int tktid){
195 Blob sql1, sql2, sql3;
196 Stmt q;
197 int i, j;
198 char *aUsed;
199 const char *zMimetype = 0;
200
201 if( tktid==0 ){
202 db_multi_exec("INSERT INTO ticket(tkt_uuid, tkt_mtime) "
203 "VALUES(%Q, 0)", p->zTicketUuid);
204 tktid = db_last_insert_rowid();
@@ -233,12 +234,22 @@
234 zUsedByName++;
235 }
236 blob_append_sql(&sql2, ",\"%w\"", zUsedByName);
237 blob_append_sql(&sql3, ",%Q", p->aField[i].zValue);
238 }
239 if( strcmp(zBaseName,"mimetype")==0 ){
240 zMimetype = p->aField[i].zValue;
241 }
242 }
243 if( rid>0 ){
244 for(i=0; i<p->nField; i++){
245 const char *zName = p->aField[i].zName;
246 const char *zBaseName = zName[0]=='+' ? zName+1 : zName;
247 j = fieldId(zBaseName);
248 if( j<0 ) continue;
249 backlink_extract(p->aField[i].zValue, zMimetype, rid, BKLNK_TICKET,
250 p->rDate, i==0);
251 }
252 }
253 blob_append_sql(&sql1, " WHERE tkt_id=%d", tktid);
254 db_prepare(&q, "%s", blob_sql_text(&sql1));
255 db_bind_double(&q, ":mtime", p->rDate);
@@ -845,10 +856,14 @@
856 }
857
858 /*
859 ** Draw a timeline for a ticket with tag.tagid given by the tagid
860 ** parameter.
861 **
862 ** If zType[0]=='c' then only show check-ins associated with the
863 ** ticket. For any other value of zType, show all events associated
864 ** with the ticket.
865 */
866 void tkt_draw_timeline(int tagid, const char *zType){
867 Stmt q;
868 char *zFullUuid;
869 char *zSQL;
@@ -855,20 +870,26 @@
870 zFullUuid = db_text(0, "SELECT substr(tagname, 5) FROM tag WHERE tagid=%d",
871 tagid);
872 if( zType[0]=='c' ){
873 zSQL = mprintf(
874 "%s AND event.objid IN "
875 " (SELECT srcid FROM backlink WHERE target GLOB '%.4s*' "
876 "AND srctype=0 "
877 "AND '%s' GLOB (target||'*')) "
878 "ORDER BY mtime DESC",
879 timeline_query_for_www(), zFullUuid, zFullUuid
880 );
881 }else{
882 zSQL = mprintf(
883 "%s AND event.objid IN "
884 " (SELECT rid FROM tagxref WHERE tagid=%d"
885 " UNION"
886 " SELECT CASE srctype WHEN 2 THEN"
887 " (SELECT rid FROM tagxref WHERE tagid=backlink.srcid"
888 " ORDER BY mtime DESC LIMIT 1)"
889 " ELSE srcid END"
890 " FROM backlink"
891 " WHERE target GLOB '%.4s*'"
892 " AND '%s' GLOB (target||'*')"
893 " UNION SELECT attachid FROM attachment"
894 " WHERE target=%Q) "
895 "ORDER BY mtime DESC",
@@ -875,21 +896,26 @@
896 timeline_query_for_www(), tagid, zFullUuid, zFullUuid, zFullUuid
897 );
898 }
899 db_prepare(&q, "%z", zSQL/*safe-for-%s*/);
900 www_print_timeline(&q,
901 TIMELINE_ARTID | TIMELINE_DISJOINT | TIMELINE_GRAPH | TIMELINE_NOTKT |
902 TIMELINE_REFS,
903 0, 0, 0, 0, 0, 0);
904 db_finalize(&q);
905 fossil_free(zFullUuid);
906 }
907
908 /*
909 ** WEBPAGE: tkttimeline
910 ** URL: /tkttimeline/TICKETUUID
911 **
912 ** Show the change history for a single ticket in timeline format.
913 **
914 ** Query parameters:
915 **
916 ** y=ci Show only check-ins associated with the ticket
917 */
918 void tkttimeline_page(void){
919 char *zTitle;
920 const char *zUuid;
921 int tagid;
922
+8 -6
--- src/wiki.c
+++ src/wiki.c
@@ -365,20 +365,22 @@
365365
search_screen(SRCH_WIKI, 0);
366366
style_footer();
367367
}
368368
369369
/* Return values from wiki_page_type() */
370
-#define WIKITYPE_UNKNOWN (-1)
371
-#define WIKITYPE_NORMAL 0
372
-#define WIKITYPE_BRANCH 1
373
-#define WIKITYPE_CHECKIN 2
374
-#define WIKITYPE_TAG 3
370
+#if INTERFACE
371
+# define WIKITYPE_UNKNOWN (-1)
372
+# define WIKITYPE_NORMAL 0
373
+# define WIKITYPE_BRANCH 1
374
+# define WIKITYPE_CHECKIN 2
375
+# define WIKITYPE_TAG 3
376
+#endif
375377
376378
/*
377379
** Figure out what type of wiki page we are dealing with.
378380
*/
379
-static int wiki_page_type(const char *zPageName){
381
+int wiki_page_type(const char *zPageName){
380382
if( db_get_boolean("wiki-about",1)==0 ){
381383
return WIKITYPE_NORMAL;
382384
}else
383385
if( sqlite3_strglob("checkin/*", zPageName)==0
384386
&& db_exists("SELECT 1 FROM blob WHERE uuid=%Q",zPageName+8)
385387
--- src/wiki.c
+++ src/wiki.c
@@ -365,20 +365,22 @@
365 search_screen(SRCH_WIKI, 0);
366 style_footer();
367 }
368
369 /* Return values from wiki_page_type() */
370 #define WIKITYPE_UNKNOWN (-1)
371 #define WIKITYPE_NORMAL 0
372 #define WIKITYPE_BRANCH 1
373 #define WIKITYPE_CHECKIN 2
374 #define WIKITYPE_TAG 3
 
 
375
376 /*
377 ** Figure out what type of wiki page we are dealing with.
378 */
379 static int wiki_page_type(const char *zPageName){
380 if( db_get_boolean("wiki-about",1)==0 ){
381 return WIKITYPE_NORMAL;
382 }else
383 if( sqlite3_strglob("checkin/*", zPageName)==0
384 && db_exists("SELECT 1 FROM blob WHERE uuid=%Q",zPageName+8)
385
--- src/wiki.c
+++ src/wiki.c
@@ -365,20 +365,22 @@
365 search_screen(SRCH_WIKI, 0);
366 style_footer();
367 }
368
369 /* Return values from wiki_page_type() */
370 #if INTERFACE
371 # define WIKITYPE_UNKNOWN (-1)
372 # define WIKITYPE_NORMAL 0
373 # define WIKITYPE_BRANCH 1
374 # define WIKITYPE_CHECKIN 2
375 # define WIKITYPE_TAG 3
376 #endif
377
378 /*
379 ** Figure out what type of wiki page we are dealing with.
380 */
381 int wiki_page_type(const char *zPageName){
382 if( db_get_boolean("wiki-about",1)==0 ){
383 return WIKITYPE_NORMAL;
384 }else
385 if( sqlite3_strglob("checkin/*", zPageName)==0
386 && db_exists("SELECT 1 FROM blob WHERE uuid=%Q",zPageName+8)
387
+3 -21
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1869,14 +1869,11 @@
18691869
** name. For each such hyperlink found, add an entry to the
18701870
** backlink table.
18711871
*/
18721872
void wiki_extract_links(
18731873
char *z, /* The wiki text from which to extract links */
1874
- int srcid, /* srcid field for new BACKLINK table entries */
1875
- int srctype, /* srctype field for new BACKLINK table entries */
1876
- double mtime, /* mtime field for new BACKLINK table entries */
1877
- int replaceFlag, /* True first delete prior BACKLINK entries */
1874
+ Backlink *pBklnk, /* Backlink extraction context */
18781875
int flags /* wiki parsing flags */
18791876
){
18801877
Renderer renderer;
18811878
int tokenType;
18821879
ParsedMarkup markup;
@@ -1892,14 +1889,10 @@
18921889
if( wikiUsesHtml() ){
18931890
renderer.state |= WIKI_HTMLONLY;
18941891
wikiHtmlOnly = 1;
18951892
}
18961893
inlineOnly = (renderer.state & INLINE_MARKUP_ONLY)!=0;
1897
- if( replaceFlag ){
1898
- db_multi_exec("DELETE FROM backlink WHERE srctype=%d AND srcid=%d",
1899
- srctype, srcid);
1900
- }
19011894
19021895
while( z[0] ){
19031896
if( wikiHtmlOnly ){
19041897
n = nextRawToken(z, &renderer, &tokenType);
19051898
}else{
@@ -1906,27 +1899,16 @@
19061899
n = nextWikiToken(z, &renderer, &tokenType);
19071900
}
19081901
switch( tokenType ){
19091902
case TOKEN_LINK: {
19101903
char *zTarget;
1911
- int i, c;
1912
- char zLink[HNAME_MAX+4];
1904
+ int i;
19131905
19141906
zTarget = &z[1];
19151907
for(i=0; zTarget[i] && zTarget[i]!='|' && zTarget[i]!=']'; i++){}
19161908
while(i>1 && zTarget[i-1]==' '){ i--; }
1917
- c = zTarget[i];
1918
- zTarget[i] = 0;
1919
- if( is_valid_hname(zTarget) ){
1920
- memcpy(zLink, zTarget, i+1);
1921
- canonical16(zLink, i);
1922
- db_multi_exec(
1923
- "REPLACE INTO backlink(target,srctype,srcid,mtime)"
1924
- "VALUES(%Q,%d,%d,%g)", zLink, srctype, srcid, mtime
1925
- );
1926
- }
1927
- zTarget[i] = c;
1909
+ backlink_create(pBklnk, zTarget, i);
19281910
break;
19291911
}
19301912
case TOKEN_MARKUP: {
19311913
const char *zId;
19321914
int iDiv;
19331915
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1869,14 +1869,11 @@
1869 ** name. For each such hyperlink found, add an entry to the
1870 ** backlink table.
1871 */
1872 void wiki_extract_links(
1873 char *z, /* The wiki text from which to extract links */
1874 int srcid, /* srcid field for new BACKLINK table entries */
1875 int srctype, /* srctype field for new BACKLINK table entries */
1876 double mtime, /* mtime field for new BACKLINK table entries */
1877 int replaceFlag, /* True first delete prior BACKLINK entries */
1878 int flags /* wiki parsing flags */
1879 ){
1880 Renderer renderer;
1881 int tokenType;
1882 ParsedMarkup markup;
@@ -1892,14 +1889,10 @@
1892 if( wikiUsesHtml() ){
1893 renderer.state |= WIKI_HTMLONLY;
1894 wikiHtmlOnly = 1;
1895 }
1896 inlineOnly = (renderer.state & INLINE_MARKUP_ONLY)!=0;
1897 if( replaceFlag ){
1898 db_multi_exec("DELETE FROM backlink WHERE srctype=%d AND srcid=%d",
1899 srctype, srcid);
1900 }
1901
1902 while( z[0] ){
1903 if( wikiHtmlOnly ){
1904 n = nextRawToken(z, &renderer, &tokenType);
1905 }else{
@@ -1906,27 +1899,16 @@
1906 n = nextWikiToken(z, &renderer, &tokenType);
1907 }
1908 switch( tokenType ){
1909 case TOKEN_LINK: {
1910 char *zTarget;
1911 int i, c;
1912 char zLink[HNAME_MAX+4];
1913
1914 zTarget = &z[1];
1915 for(i=0; zTarget[i] && zTarget[i]!='|' && zTarget[i]!=']'; i++){}
1916 while(i>1 && zTarget[i-1]==' '){ i--; }
1917 c = zTarget[i];
1918 zTarget[i] = 0;
1919 if( is_valid_hname(zTarget) ){
1920 memcpy(zLink, zTarget, i+1);
1921 canonical16(zLink, i);
1922 db_multi_exec(
1923 "REPLACE INTO backlink(target,srctype,srcid,mtime)"
1924 "VALUES(%Q,%d,%d,%g)", zLink, srctype, srcid, mtime
1925 );
1926 }
1927 zTarget[i] = c;
1928 break;
1929 }
1930 case TOKEN_MARKUP: {
1931 const char *zId;
1932 int iDiv;
1933
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1869,14 +1869,11 @@
1869 ** name. For each such hyperlink found, add an entry to the
1870 ** backlink table.
1871 */
1872 void wiki_extract_links(
1873 char *z, /* The wiki text from which to extract links */
1874 Backlink *pBklnk, /* Backlink extraction context */
 
 
 
1875 int flags /* wiki parsing flags */
1876 ){
1877 Renderer renderer;
1878 int tokenType;
1879 ParsedMarkup markup;
@@ -1892,14 +1889,10 @@
1889 if( wikiUsesHtml() ){
1890 renderer.state |= WIKI_HTMLONLY;
1891 wikiHtmlOnly = 1;
1892 }
1893 inlineOnly = (renderer.state & INLINE_MARKUP_ONLY)!=0;
 
 
 
 
1894
1895 while( z[0] ){
1896 if( wikiHtmlOnly ){
1897 n = nextRawToken(z, &renderer, &tokenType);
1898 }else{
@@ -1906,27 +1899,16 @@
1899 n = nextWikiToken(z, &renderer, &tokenType);
1900 }
1901 switch( tokenType ){
1902 case TOKEN_LINK: {
1903 char *zTarget;
1904 int i;
 
1905
1906 zTarget = &z[1];
1907 for(i=0; zTarget[i] && zTarget[i]!='|' && zTarget[i]!=']'; i++){}
1908 while(i>1 && zTarget[i-1]==' '){ i--; }
1909 backlink_create(pBklnk, zTarget, i);
 
 
 
 
 
 
 
 
 
 
1910 break;
1911 }
1912 case TOKEN_MARKUP: {
1913 const char *zId;
1914 int iDiv;
1915
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
2828
2929
SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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 alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
33
+SRC = add_.c alerts_.c allrepo_.c attach_.c 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 finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3434
35
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$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)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
35
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\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)\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)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3636
3737
3838
RC=$(DMDIR)\bin\rcc
3939
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
4040
@@ -49,11 +49,11 @@
4949
5050
$(OBJDIR)\fossil.res: $B\win\fossil.rc
5151
$(RC) $(RCFLAGS) -o$@ $**
5252
5353
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54
- +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file finfo foci forum fshell fusefs fuzz glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
54
+ +echo add alerts allrepo attach 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 finfo foci forum fshell fusefs fuzz glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5555
+echo fossil >> $@
5656
+echo fossil >> $@
5757
+echo $(LIBS) >> $@
5858
+echo. >> $@
5959
+echo fossil >> $@
@@ -152,10 +152,16 @@
152152
$(OBJDIR)\attach$O : attach_.c attach.h
153153
$(TCC) -o$@ -c attach_.c
154154
155155
attach_.c : $(SRCDIR)\attach.c
156156
+translate$E $** > $@
157
+
158
+$(OBJDIR)\backlink$O : backlink_.c backlink.h
159
+ $(TCC) -o$@ -c backlink_.c
160
+
161
+backlink_.c : $(SRCDIR)\backlink.c
162
+ +translate$E $** > $@
157163
158164
$(OBJDIR)\backoffice$O : backoffice_.c backoffice.h
159165
$(TCC) -o$@ -c backoffice_.c
160166
161167
backoffice_.c : $(SRCDIR)\backoffice.c
@@ -964,7 +970,7 @@
964970
965971
zip_.c : $(SRCDIR)\zip.c
966972
+translate$E $** > $@
967973
968974
headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
969
- +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
975
+ +makeheaders$E add_.c:add.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 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 http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
970976
@copy /Y nul: headers
971977
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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 alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\extcgi$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\fuzz$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export extcgi file finfo foci forum fshell fusefs fuzz glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -152,10 +152,16 @@
152 $(OBJDIR)\attach$O : attach_.c attach.h
153 $(TCC) -o$@ -c attach_.c
154
155 attach_.c : $(SRCDIR)\attach.c
156 +translate$E $** > $@
 
 
 
 
 
 
157
158 $(OBJDIR)\backoffice$O : backoffice_.c backoffice.h
159 $(TCC) -o$@ -c backoffice_.c
160
161 backoffice_.c : $(SRCDIR)\backoffice.c
@@ -964,7 +970,7 @@
964
965 zip_.c : $(SRCDIR)\zip.c
966 +translate$E $** > $@
967
968 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
969 +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h extcgi_.c:extcgi.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h fuzz_.c:fuzz.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
970 @copy /Y nul: headers
971
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -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 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 finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\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)\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)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach 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 finfo foci forum fshell fusefs fuzz glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -152,10 +152,16 @@
152 $(OBJDIR)\attach$O : attach_.c attach.h
153 $(TCC) -o$@ -c attach_.c
154
155 attach_.c : $(SRCDIR)\attach.c
156 +translate$E $** > $@
157
158 $(OBJDIR)\backlink$O : backlink_.c backlink.h
159 $(TCC) -o$@ -c backlink_.c
160
161 backlink_.c : $(SRCDIR)\backlink.c
162 +translate$E $** > $@
163
164 $(OBJDIR)\backoffice$O : backoffice_.c backoffice.h
165 $(TCC) -o$@ -c backoffice_.c
166
167 backoffice_.c : $(SRCDIR)\backoffice.c
@@ -964,7 +970,7 @@
970
971 zip_.c : $(SRCDIR)\zip.c
972 +translate$E $** > $@
973
974 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
975 +makeheaders$E add_.c:add.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 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 http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
976 @copy /Y nul: headers
977
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -440,10 +440,11 @@
440440
SRC = \
441441
$(SRCDIR)/add.c \
442442
$(SRCDIR)/alerts.c \
443443
$(SRCDIR)/allrepo.c \
444444
$(SRCDIR)/attach.c \
445
+ $(SRCDIR)/backlink.c \
445446
$(SRCDIR)/backoffice.c \
446447
$(SRCDIR)/bag.c \
447448
$(SRCDIR)/bisect.c \
448449
$(SRCDIR)/blob.c \
449450
$(SRCDIR)/branch.c \
@@ -672,10 +673,11 @@
672673
TRANS_SRC = \
673674
$(OBJDIR)/add_.c \
674675
$(OBJDIR)/alerts_.c \
675676
$(OBJDIR)/allrepo_.c \
676677
$(OBJDIR)/attach_.c \
678
+ $(OBJDIR)/backlink_.c \
677679
$(OBJDIR)/backoffice_.c \
678680
$(OBJDIR)/bag_.c \
679681
$(OBJDIR)/bisect_.c \
680682
$(OBJDIR)/blob_.c \
681683
$(OBJDIR)/branch_.c \
@@ -813,10 +815,11 @@
813815
OBJ = \
814816
$(OBJDIR)/add.o \
815817
$(OBJDIR)/alerts.o \
816818
$(OBJDIR)/allrepo.o \
817819
$(OBJDIR)/attach.o \
820
+ $(OBJDIR)/backlink.o \
818821
$(OBJDIR)/backoffice.o \
819822
$(OBJDIR)/bag.o \
820823
$(OBJDIR)/bisect.o \
821824
$(OBJDIR)/blob.o \
822825
$(OBJDIR)/branch.o \
@@ -1174,10 +1177,11 @@
11741177
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(MAKEHEADERS) $(OBJDIR)/VERSION.h
11751178
$(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
11761179
$(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
11771180
$(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
11781181
$(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
1182
+ $(OBJDIR)/backlink_.c:$(OBJDIR)/backlink.h \
11791183
$(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
11801184
$(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
11811185
$(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
11821186
$(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
11831187
$(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -1349,10 +1353,18 @@
13491353
13501354
$(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
13511355
$(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
13521356
13531357
$(OBJDIR)/attach.h: $(OBJDIR)/headers
1358
+
1359
+$(OBJDIR)/backlink_.c: $(SRCDIR)/backlink.c $(TRANSLATE)
1360
+ $(TRANSLATE) $(SRCDIR)/backlink.c >$@
1361
+
1362
+$(OBJDIR)/backlink.o: $(OBJDIR)/backlink_.c $(OBJDIR)/backlink.h $(SRCDIR)/config.h
1363
+ $(XTCC) -o $(OBJDIR)/backlink.o -c $(OBJDIR)/backlink_.c
1364
+
1365
+$(OBJDIR)/backlink.h: $(OBJDIR)/headers
13541366
13551367
$(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(TRANSLATE)
13561368
$(TRANSLATE) $(SRCDIR)/backoffice.c >$@
13571369
13581370
$(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
13591371
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -440,10 +440,11 @@
440 SRC = \
441 $(SRCDIR)/add.c \
442 $(SRCDIR)/alerts.c \
443 $(SRCDIR)/allrepo.c \
444 $(SRCDIR)/attach.c \
 
445 $(SRCDIR)/backoffice.c \
446 $(SRCDIR)/bag.c \
447 $(SRCDIR)/bisect.c \
448 $(SRCDIR)/blob.c \
449 $(SRCDIR)/branch.c \
@@ -672,10 +673,11 @@
672 TRANS_SRC = \
673 $(OBJDIR)/add_.c \
674 $(OBJDIR)/alerts_.c \
675 $(OBJDIR)/allrepo_.c \
676 $(OBJDIR)/attach_.c \
 
677 $(OBJDIR)/backoffice_.c \
678 $(OBJDIR)/bag_.c \
679 $(OBJDIR)/bisect_.c \
680 $(OBJDIR)/blob_.c \
681 $(OBJDIR)/branch_.c \
@@ -813,10 +815,11 @@
813 OBJ = \
814 $(OBJDIR)/add.o \
815 $(OBJDIR)/alerts.o \
816 $(OBJDIR)/allrepo.o \
817 $(OBJDIR)/attach.o \
 
818 $(OBJDIR)/backoffice.o \
819 $(OBJDIR)/bag.o \
820 $(OBJDIR)/bisect.o \
821 $(OBJDIR)/blob.o \
822 $(OBJDIR)/branch.o \
@@ -1174,10 +1177,11 @@
1174 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(MAKEHEADERS) $(OBJDIR)/VERSION.h
1175 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
1176 $(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
1177 $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
1178 $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
 
1179 $(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
1180 $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
1181 $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
1182 $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
1183 $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -1349,10 +1353,18 @@
1349
1350 $(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
1351 $(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
1352
1353 $(OBJDIR)/attach.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1354
1355 $(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(TRANSLATE)
1356 $(TRANSLATE) $(SRCDIR)/backoffice.c >$@
1357
1358 $(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
1359
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -440,10 +440,11 @@
440 SRC = \
441 $(SRCDIR)/add.c \
442 $(SRCDIR)/alerts.c \
443 $(SRCDIR)/allrepo.c \
444 $(SRCDIR)/attach.c \
445 $(SRCDIR)/backlink.c \
446 $(SRCDIR)/backoffice.c \
447 $(SRCDIR)/bag.c \
448 $(SRCDIR)/bisect.c \
449 $(SRCDIR)/blob.c \
450 $(SRCDIR)/branch.c \
@@ -672,10 +673,11 @@
673 TRANS_SRC = \
674 $(OBJDIR)/add_.c \
675 $(OBJDIR)/alerts_.c \
676 $(OBJDIR)/allrepo_.c \
677 $(OBJDIR)/attach_.c \
678 $(OBJDIR)/backlink_.c \
679 $(OBJDIR)/backoffice_.c \
680 $(OBJDIR)/bag_.c \
681 $(OBJDIR)/bisect_.c \
682 $(OBJDIR)/blob_.c \
683 $(OBJDIR)/branch_.c \
@@ -813,10 +815,11 @@
815 OBJ = \
816 $(OBJDIR)/add.o \
817 $(OBJDIR)/alerts.o \
818 $(OBJDIR)/allrepo.o \
819 $(OBJDIR)/attach.o \
820 $(OBJDIR)/backlink.o \
821 $(OBJDIR)/backoffice.o \
822 $(OBJDIR)/bag.o \
823 $(OBJDIR)/bisect.o \
824 $(OBJDIR)/blob.o \
825 $(OBJDIR)/branch.o \
@@ -1174,10 +1177,11 @@
1177 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/builtin_data.h $(OBJDIR)/default_css.h $(MAKEHEADERS) $(OBJDIR)/VERSION.h
1178 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h \
1179 $(OBJDIR)/alerts_.c:$(OBJDIR)/alerts.h \
1180 $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h \
1181 $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h \
1182 $(OBJDIR)/backlink_.c:$(OBJDIR)/backlink.h \
1183 $(OBJDIR)/backoffice_.c:$(OBJDIR)/backoffice.h \
1184 $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h \
1185 $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h \
1186 $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h \
1187 $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h \
@@ -1349,10 +1353,18 @@
1353
1354 $(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h
1355 $(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c
1356
1357 $(OBJDIR)/attach.h: $(OBJDIR)/headers
1358
1359 $(OBJDIR)/backlink_.c: $(SRCDIR)/backlink.c $(TRANSLATE)
1360 $(TRANSLATE) $(SRCDIR)/backlink.c >$@
1361
1362 $(OBJDIR)/backlink.o: $(OBJDIR)/backlink_.c $(OBJDIR)/backlink.h $(SRCDIR)/config.h
1363 $(XTCC) -o $(OBJDIR)/backlink.o -c $(OBJDIR)/backlink_.c
1364
1365 $(OBJDIR)/backlink.h: $(OBJDIR)/headers
1366
1367 $(OBJDIR)/backoffice_.c: $(SRCDIR)/backoffice.c $(TRANSLATE)
1368 $(TRANSLATE) $(SRCDIR)/backoffice.c >$@
1369
1370 $(OBJDIR)/backoffice.o: $(OBJDIR)/backoffice_.c $(OBJDIR)/backoffice.h $(SRCDIR)/config.h
1371
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -348,10 +348,11 @@
348348
349349
SRC = add_.c \
350350
alerts_.c \
351351
allrepo_.c \
352352
attach_.c \
353
+ backlink_.c \
353354
backoffice_.c \
354355
bag_.c \
355356
bisect_.c \
356357
blob_.c \
357358
branch_.c \
@@ -578,10 +579,11 @@
578579
579580
OBJ = $(OX)\add$O \
580581
$(OX)\alerts$O \
581582
$(OX)\allrepo$O \
582583
$(OX)\attach$O \
584
+ $(OX)\backlink$O \
583585
$(OX)\backoffice$O \
584586
$(OX)\bag$O \
585587
$(OX)\bisect$O \
586588
$(OX)\blob$O \
587589
$(OX)\branch$O \
@@ -781,10 +783,11 @@
781783
$(OX)\linkopts: $B\win\Makefile.msc
782784
echo $(OX)\add.obj > $@
783785
echo $(OX)\alerts.obj >> $@
784786
echo $(OX)\allrepo.obj >> $@
785787
echo $(OX)\attach.obj >> $@
788
+ echo $(OX)\backlink.obj >> $@
786789
echo $(OX)\backoffice.obj >> $@
787790
echo $(OX)\bag.obj >> $@
788791
echo $(OX)\bisect.obj >> $@
789792
echo $(OX)\blob.obj >> $@
790793
echo $(OX)\branch.obj >> $@
@@ -1063,10 +1066,16 @@
10631066
$(OX)\attach$O : attach_.c attach.h
10641067
$(TCC) /Fo$@ -c attach_.c
10651068
10661069
attach_.c : $(SRCDIR)\attach.c
10671070
translate$E $** > $@
1071
+
1072
+$(OX)\backlink$O : backlink_.c backlink.h
1073
+ $(TCC) /Fo$@ -c backlink_.c
1074
+
1075
+backlink_.c : $(SRCDIR)\backlink.c
1076
+ translate$E $** > $@
10681077
10691078
$(OX)\backoffice$O : backoffice_.c backoffice.h
10701079
$(TCC) /Fo$@ -c backoffice_.c
10711080
10721081
backoffice_.c : $(SRCDIR)\backoffice.c
@@ -1882,10 +1891,11 @@
18821891
headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
18831892
makeheaders$E add_.c:add.h \
18841893
alerts_.c:alerts.h \
18851894
allrepo_.c:allrepo.h \
18861895
attach_.c:attach.h \
1896
+ backlink_.c:backlink.h \
18871897
backoffice_.c:backoffice.h \
18881898
bag_.c:bag.h \
18891899
bisect_.c:bisect.h \
18901900
blob_.c:blob.h \
18911901
branch_.c:branch.h \
18921902
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -348,10 +348,11 @@
348
349 SRC = add_.c \
350 alerts_.c \
351 allrepo_.c \
352 attach_.c \
 
353 backoffice_.c \
354 bag_.c \
355 bisect_.c \
356 blob_.c \
357 branch_.c \
@@ -578,10 +579,11 @@
578
579 OBJ = $(OX)\add$O \
580 $(OX)\alerts$O \
581 $(OX)\allrepo$O \
582 $(OX)\attach$O \
 
583 $(OX)\backoffice$O \
584 $(OX)\bag$O \
585 $(OX)\bisect$O \
586 $(OX)\blob$O \
587 $(OX)\branch$O \
@@ -781,10 +783,11 @@
781 $(OX)\linkopts: $B\win\Makefile.msc
782 echo $(OX)\add.obj > $@
783 echo $(OX)\alerts.obj >> $@
784 echo $(OX)\allrepo.obj >> $@
785 echo $(OX)\attach.obj >> $@
 
786 echo $(OX)\backoffice.obj >> $@
787 echo $(OX)\bag.obj >> $@
788 echo $(OX)\bisect.obj >> $@
789 echo $(OX)\blob.obj >> $@
790 echo $(OX)\branch.obj >> $@
@@ -1063,10 +1066,16 @@
1063 $(OX)\attach$O : attach_.c attach.h
1064 $(TCC) /Fo$@ -c attach_.c
1065
1066 attach_.c : $(SRCDIR)\attach.c
1067 translate$E $** > $@
 
 
 
 
 
 
1068
1069 $(OX)\backoffice$O : backoffice_.c backoffice.h
1070 $(TCC) /Fo$@ -c backoffice_.c
1071
1072 backoffice_.c : $(SRCDIR)\backoffice.c
@@ -1882,10 +1891,11 @@
1882 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
1883 makeheaders$E add_.c:add.h \
1884 alerts_.c:alerts.h \
1885 allrepo_.c:allrepo.h \
1886 attach_.c:attach.h \
 
1887 backoffice_.c:backoffice.h \
1888 bag_.c:bag.h \
1889 bisect_.c:bisect.h \
1890 blob_.c:blob.h \
1891 branch_.c:branch.h \
1892
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -348,10 +348,11 @@
348
349 SRC = add_.c \
350 alerts_.c \
351 allrepo_.c \
352 attach_.c \
353 backlink_.c \
354 backoffice_.c \
355 bag_.c \
356 bisect_.c \
357 blob_.c \
358 branch_.c \
@@ -578,10 +579,11 @@
579
580 OBJ = $(OX)\add$O \
581 $(OX)\alerts$O \
582 $(OX)\allrepo$O \
583 $(OX)\attach$O \
584 $(OX)\backlink$O \
585 $(OX)\backoffice$O \
586 $(OX)\bag$O \
587 $(OX)\bisect$O \
588 $(OX)\blob$O \
589 $(OX)\branch$O \
@@ -781,10 +783,11 @@
783 $(OX)\linkopts: $B\win\Makefile.msc
784 echo $(OX)\add.obj > $@
785 echo $(OX)\alerts.obj >> $@
786 echo $(OX)\allrepo.obj >> $@
787 echo $(OX)\attach.obj >> $@
788 echo $(OX)\backlink.obj >> $@
789 echo $(OX)\backoffice.obj >> $@
790 echo $(OX)\bag.obj >> $@
791 echo $(OX)\bisect.obj >> $@
792 echo $(OX)\blob.obj >> $@
793 echo $(OX)\branch.obj >> $@
@@ -1063,10 +1066,16 @@
1066 $(OX)\attach$O : attach_.c attach.h
1067 $(TCC) /Fo$@ -c attach_.c
1068
1069 attach_.c : $(SRCDIR)\attach.c
1070 translate$E $** > $@
1071
1072 $(OX)\backlink$O : backlink_.c backlink.h
1073 $(TCC) /Fo$@ -c backlink_.c
1074
1075 backlink_.c : $(SRCDIR)\backlink.c
1076 translate$E $** > $@
1077
1078 $(OX)\backoffice$O : backoffice_.c backoffice.h
1079 $(TCC) /Fo$@ -c backoffice_.c
1080
1081 backoffice_.c : $(SRCDIR)\backoffice.c
@@ -1882,10 +1891,11 @@
1891 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
1892 makeheaders$E add_.c:add.h \
1893 alerts_.c:alerts.h \
1894 allrepo_.c:allrepo.h \
1895 attach_.c:attach.h \
1896 backlink_.c:backlink.h \
1897 backoffice_.c:backoffice.h \
1898 bag_.c:bag.h \
1899 bisect_.c:bisect.h \
1900 blob_.c:blob.h \
1901 branch_.c:branch.h \
1902

Keyboard Shortcuts

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