Fossil SCM

Refactoring the DAG path search code into a separate object.

drh 2011-03-10 02:39 trunk
Commit 34c23c6fd4c7304cca8bd284c8a1949ba1c89554
+12 -317
--- src/bisect.c
+++ src/bisect.c
@@ -21,198 +21,23 @@
2121
*/
2222
#include "config.h"
2323
#include "bisect.h"
2424
#include <assert.h>
2525
26
-#if INTERFACE
27
-/* Nodes for the shortest path algorithm.
28
-*/
29
-struct BisectNode {
30
- int rid; /* ID for this node */
31
- int fromIsParent; /* True if pFrom is the parent of rid */
32
- BisectNode *pFrom; /* Node we came from */
33
- union {
34
- BisectNode *pPeer; /* List of nodes of the same generation */
35
- BisectNode *pTo; /* Next on path from beginning to end */
36
- } u;
37
- BisectNode *pAll; /* List of all nodes */
38
-};
39
-#endif
40
-
4126
/*
4227
** Local variables for this module
4328
*/
4429
static struct {
45
- BisectNode *pCurrent; /* Current generation of nodes */
46
- BisectNode *pAll; /* All nodes */
47
- Bag seen; /* Nodes seen before */
4830
int bad; /* The bad version */
4931
int good; /* The good version */
50
- int nStep; /* Number of steps from good to bad */
51
- BisectNode *pStart; /* Earliest node (bad) */
52
- BisectNode *pEnd; /* Most recent (good) */
5332
} bisect;
5433
55
-/*
56
-** Create a new node
57
-*/
58
-static BisectNode *bisect_new_node(int rid, BisectNode *pFrom, int isParent){
59
- BisectNode *p;
60
-
61
- p = fossil_malloc( sizeof(*p) );
62
- p->rid = rid;
63
- p->fromIsParent = isParent;
64
- p->pFrom = pFrom;
65
- p->u.pPeer = bisect.pCurrent;
66
- bisect.pCurrent = p;
67
- p->pAll = bisect.pAll;
68
- bisect.pAll = p;
69
- bisect.pEnd = p;
70
- bag_insert(&bisect.seen, rid);
71
- return p;
72
-}
73
-
74
-/*
75
-** Reset memory used by the shortest path algorithm.
76
-*/
77
-void bisect_reset(void){
78
- BisectNode *p;
79
- while( bisect.pAll ){
80
- p = bisect.pAll;
81
- bisect.pAll = p->pAll;
82
- fossil_free(p);
83
- }
84
- bag_clear(&bisect.seen);
85
- bisect.pCurrent = 0;
86
- bisect.pAll = 0;
87
- bisect.pEnd = 0;
88
- bisect.nStep = 0;
89
-}
90
-
91
-/*
92
-** Compute the shortest path from iFrom to iTo
93
-**
94
-** If directOnly is true, then use only the "primary" links from parent to
95
-** child. In other words, ignore merges.
96
-*/
97
-BisectNode *bisect_shortest_path(int iFrom, int iTo, int directOnly){
98
- Stmt s;
99
- BisectNode *pPrev;
100
- BisectNode *p;
101
-
102
- bisect_reset();
103
- bisect.pStart = bisect_new_node(iFrom, 0, 0);
104
- if( iTo==iFrom ) return bisect.pStart;
105
- if( directOnly ){
106
- db_prepare(&s,
107
- "SELECT cid, 1 FROM plink WHERE pid=:pid AND isprim "
108
- "UNION ALL "
109
- "SELECT pid, 0 FROM plink WHERE cid=:pid AND isprim"
110
- );
111
- }else{
112
- db_prepare(&s,
113
- "SELECT cid, 1 FROM plink WHERE pid=:pid "
114
- "UNION ALL "
115
- "SELECT pid, 0 FROM plink WHERE cid=:pid"
116
- );
117
- }
118
- while( bisect.pCurrent ){
119
- bisect.nStep++;
120
- pPrev = bisect.pCurrent;
121
- bisect.pCurrent = 0;
122
- while( pPrev ){
123
- db_bind_int(&s, ":pid", pPrev->rid);
124
- while( db_step(&s)==SQLITE_ROW ){
125
- int cid = db_column_int(&s, 0);
126
- int isParent = db_column_int(&s, 1);
127
- if( bag_find(&bisect.seen, cid) ) continue;
128
- p = bisect_new_node(cid, pPrev, isParent);
129
- if( cid==iTo ){
130
- db_finalize(&s);
131
- return p;
132
- }
133
- }
134
- db_reset(&s);
135
- pPrev = pPrev->u.pPeer;
136
- }
137
- }
138
- bisect_reset();
139
- return 0;
140
-}
141
-
142
-/*
143
-** Construct the path from bisect.pStart to bisect.pEnd in the u.pTo fields.
144
-*/
145
-BisectNode *bisect_reverse_path(void){
146
- BisectNode *p;
147
- for(p=bisect.pEnd; p && p->pFrom; p = p->pFrom){
148
- p->pFrom->u.pTo = p;
149
- }
150
- bisect.pEnd->u.pTo = 0;
151
- assert( p==bisect.pStart );
152
- return p;
153
-}
154
-
155
-/*
156
-** COMMAND: test-shortest-path
157
-**
158
-** Usage: %fossil test-shortest-path ?--no-merge? VERSION1 VERSION2
159
-**
160
-** Report the shortest path between two checkins. If the --no-merge flag
161
-** is used, follow only direct parent-child paths and omit merge links.
162
-*/
163
-void shortest_path_test_cmd(void){
164
- int iFrom;
165
- int iTo;
166
- BisectNode *p;
167
- int n;
168
- int directOnly;
169
-
170
- db_find_and_open_repository(0,0);
171
- directOnly = find_option("no-merge",0,0)!=0;
172
- if( g.argc!=4 ) usage("VERSION1 VERSION2");
173
- iFrom = name_to_rid(g.argv[2]);
174
- iTo = name_to_rid(g.argv[3]);
175
- p = bisect_shortest_path(iFrom, iTo, directOnly);
176
- if( p==0 ){
177
- fossil_fatal("no path from %s to %s", g.argv[1], g.argv[2]);
178
- }
179
- bisect_reverse_path();
180
- for(n=1, p=bisect.pStart; p; p=p->u.pTo, n++){
181
- char *z;
182
- z = db_text(0,
183
- "SELECT substr(uuid,1,12) || ' ' || datetime(mtime)"
184
- " FROM blob, event"
185
- " WHERE blob.rid=%d AND event.objid=%d AND event.type='ci'",
186
- p->rid, p->rid);
187
- printf("%4d: %s", n, z);
188
- fossil_free(z);
189
- if( p->u.pTo ){
190
- printf(" is a %s of\n", p->u.pTo->fromIsParent ? "parent" : "child");
191
- }else{
192
- printf("\n");
193
- }
194
- }
195
-}
196
-
197
-/*
198
-** WEBPAGE: path
199
-**
200
-** example: /path?from=trunk&to=experimental&nomerge
201
-**
202
-** Show a timeline of all changes along a path between two versions.
203
-*/
204
-void path_page(void){
205
- login_check_credentials();
206
- if( !g.okRead ){ login_needed(); return; }
207
-}
208
-
20934
/*
21035
** Find the shortest path between bad and good.
21136
*/
212
-static BisectNode *bisect_path(void){
213
- BisectNode *p;
37
+static PathNode *bisect_path(void){
38
+ PathNode *p;
21439
bisect.bad = db_lget_int("bisect-bad", 0);
21540
if( bisect.bad==0 ){
21641
bisect.bad = db_int(0, "SELECT cid FROM plink ORDER BY mtime DESC LIMIT 1");
21742
db_lset_int("bisect-bad", bisect.bad);
21843
}
@@ -219,21 +44,19 @@
21944
bisect.good = db_lget_int("bisect-good", 0);
22045
if( bisect.good==0 ){
22146
bisect.good = db_int(0,"SELECT pid FROM plink ORDER BY mtime LIMIT 1");
22247
db_lset_int("bisect-good", bisect.good);
22348
}
224
- p = bisect_shortest_path(bisect.good, bisect.bad, 0);
49
+ p = path_shortest(bisect.good, bisect.bad, 0);
22550
if( p==0 ){
22651
char *zBad = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.bad);
22752
char *zGood = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.good);
22853
fossil_fatal("no path from good ([%S]) to bad ([%S]) or back",
22954
zGood, zBad);
23055
}
23156
return p;
23257
}
233
-
234
-
23558
23659
/*
23760
** COMMAND: bisect
23861
**
23962
** Usage: %fossil bisect SUBCOMMAND ...
@@ -286,19 +109,18 @@
286109
}else{
287110
ridGood = name_to_rid(g.argv[3]);
288111
}
289112
db_lset_int("bisect-good", ridGood);
290113
}else if( memcmp(zCmd, "next", n)==0 ){
291
- BisectNode *p;
292
- int n;
114
+ PathNode *pMid;
293115
bisect_path();
294
- if( bisect.nStep<2 ){
116
+ pMid = path_midpoint();
117
+ if( pMid==0 ){
295118
fossil_fatal("bisect is done - there are no more intermediate versions");
296119
}
297
- for(p=bisect.pEnd, n=0; p && n<bisect.nStep/2; p=p->pFrom, n++){}
298120
g.argv[1] = "update";
299
- g.argv[2] = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", p->rid);
121
+ g.argv[2] = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", pMid->rid);
300122
g.argc = 3;
301123
g.fNoSync = 1;
302124
update_cmd();
303125
}else if( memcmp(zCmd, "reset", n)==0 ){
304126
db_multi_exec(
@@ -306,162 +128,35 @@
306128
" SELECT 'bisect-good', pid FROM plink ORDER BY mtime LIMIT 1;"
307129
"REPLACE INTO vvar(name, value) "
308130
" SELECT 'bisect-bad', cid FROM plink ORDER BY mtime DESC LIMIT 1;"
309131
);
310132
}else if( memcmp(zCmd, "vlist", n)==0 ){
311
- BisectNode *p;
133
+ PathNode *p;
312134
int vid = db_lget_int("checkout", 0);
313135
int n;
314136
Stmt s;
137
+ int nStep;
315138
bisect_path();
316139
db_prepare(&s, "SELECT substr(blob.uuid,1,20) || ' ' || "
317140
" datetime(event.mtime) FROM blob, event"
318141
" WHERE blob.rid=:rid AND event.objid=:rid"
319142
" AND event.type='ci'");
320
- for(p=bisect.pEnd, n=0; p; p=p->pFrom, n++){
143
+ nStep = path_length();
144
+ for(p=path_last(), n=0; p; p=p->pFrom, n++){
321145
const char *z;
322146
db_bind_int(&s, ":rid", p->rid);
323147
if( db_step(&s)==SQLITE_ROW ){
324148
z = db_column_text(&s, 0);
325149
printf("%s", z);
326150
if( p->rid==bisect.good ) printf(" GOOD");
327151
if( p->rid==bisect.bad ) printf(" BAD");
328152
if( p->rid==vid ) printf(" CURRENT");
329
- if( bisect.nStep>1 && n==bisect.nStep/2 ) printf(" NEXT");
153
+ if( nStep>1 && n==nStep/2 ) printf(" NEXT");
330154
printf("\n");
331155
}
332156
db_reset(&s);
333157
}
334158
db_finalize(&s);
335159
}else{
336160
usage("bad|good|next|reset|vlist ...");
337161
}
338162
}
339
-
340
-/*
341
-** A record of a file rename operation.
342
-*/
343
-typedef struct NameChange NameChange;
344
-struct NameChange {
345
- int origName; /* Original name of file */
346
- int curName; /* Current name of the file */
347
- int newName; /* Name of file in next version */
348
- NameChange *pNext; /* List of all name changes */
349
-};
350
-
351
-/*
352
-** Compute all file name changes that occur going from checkin iFrom
353
-** to checkin iTo.
354
-**
355
-** The number of name changes is written into *pnChng. For each name
356
-** change, two integers are allocated for *piChng. The first is the
357
-** filename.fnid for the original name and the second is for new name.
358
-** Space to hold *piChng is obtained from fossil_malloc() and should
359
-** be released by the caller.
360
-**
361
-** This routine really has nothing to do with bisection. It is located
362
-** in this bisect.c module in order to leverage some of the bisect
363
-** infrastructure.
364
-*/
365
-void find_filename_changes(
366
- int iFrom,
367
- int iTo,
368
- int *pnChng,
369
- int **aiChng
370
-){
371
- BisectNode *p; /* For looping over path from iFrom to iTo */
372
- NameChange *pAll = 0; /* List of all name changes seen so far */
373
- NameChange *pChng; /* For looping through the name change list */
374
- int nChng = 0; /* Number of files whose names have changed */
375
- int *aChng; /* Two integers per name change */
376
- int i; /* Loop counter */
377
- Stmt q1; /* Query of name changes */
378
-
379
- *pnChng = 0;
380
- *aiChng = 0;
381
- bisect_reset();
382
- p = bisect_shortest_path(iFrom, iTo, 0);
383
- if( p==0 ) return;
384
- bisect_reverse_path();
385
- db_prepare(&q1,
386
- "SELECT pfnid, fnid FROM mlink WHERE mid=:mid AND pfnid>0"
387
- );
388
- for(p=bisect.pStart; p; p=p->u.pTo){
389
- int fnid, pfnid;
390
- if( !p->fromIsParent && (p->u.pTo==0 || p->u.pTo->fromIsParent) ){
391
- /* Skip nodes where the parent is not on the path */
392
- continue;
393
- }
394
- db_bind_int(&q1, ":mid", p->rid);
395
- while( db_step(&q1)==SQLITE_ROW ){
396
- if( p->fromIsParent ){
397
- fnid = db_column_int(&q1, 1);
398
- pfnid = db_column_int(&q1, 0);
399
- }else{
400
- fnid = db_column_int(&q1, 0);
401
- pfnid = db_column_int(&q1, 1);
402
- }
403
- for(pChng=pAll; pChng; pChng=pChng->pNext){
404
- if( pChng->curName==pfnid ){
405
- pChng->newName = fnid;
406
- break;
407
- }
408
- }
409
- if( pChng==0 ){
410
- pChng = fossil_malloc( sizeof(*pChng) );
411
- pChng->pNext = pAll;
412
- pAll = pChng;
413
- pChng->origName = pfnid;
414
- pChng->curName = pfnid;
415
- pChng->newName = fnid;
416
- nChng++;
417
- }
418
- }
419
- for(pChng=pAll; pChng; pChng=pChng->pNext) pChng->curName = pChng->newName;
420
- db_reset(&q1);
421
- }
422
- db_finalize(&q1);
423
- if( nChng ){
424
- *pnChng = nChng;
425
- aChng = *aiChng = fossil_malloc( nChng*2*sizeof(int) );
426
- for(pChng=pAll, i=0; pChng; pChng=pChng->pNext, i+=2){
427
- aChng[i] = pChng->origName;
428
- aChng[i+1] = pChng->newName;
429
- }
430
- while( pAll ){
431
- pChng = pAll;
432
- pAll = pAll->pNext;
433
- fossil_free(pChng);
434
- }
435
- }
436
-}
437
-
438
-/*
439
-** COMMAND: test-name-changes
440
-**
441
-** Usage: %fossil test-name-changes VERSION1 VERSION2
442
-**
443
-** Show all filename changes that occur going from VERSION1 to VERSION2
444
-*/
445
-void test_name_change(void){
446
- int iFrom;
447
- int iTo;
448
- int *aChng;
449
- int nChng;
450
- int i;
451
-
452
- db_find_and_open_repository(0,0);
453
- if( g.argc!=4 ) usage("VERSION1 VERSION2");
454
- iFrom = name_to_rid(g.argv[2]);
455
- iTo = name_to_rid(g.argv[3]);
456
- find_filename_changes(iFrom, iTo, &nChng, &aChng);
457
- for(i=0; i<nChng; i++){
458
- char *zFrom, *zTo;
459
-
460
- zFrom = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2]);
461
- zTo = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2+1]);
462
- printf("[%s] -> [%s]\n", zFrom, zTo);
463
- fossil_free(zFrom);
464
- fossil_free(zTo);
465
- }
466
- fossil_free(aChng);
467
-}
468163
--- src/bisect.c
+++ src/bisect.c
@@ -21,198 +21,23 @@
21 */
22 #include "config.h"
23 #include "bisect.h"
24 #include <assert.h>
25
26 #if INTERFACE
27 /* Nodes for the shortest path algorithm.
28 */
29 struct BisectNode {
30 int rid; /* ID for this node */
31 int fromIsParent; /* True if pFrom is the parent of rid */
32 BisectNode *pFrom; /* Node we came from */
33 union {
34 BisectNode *pPeer; /* List of nodes of the same generation */
35 BisectNode *pTo; /* Next on path from beginning to end */
36 } u;
37 BisectNode *pAll; /* List of all nodes */
38 };
39 #endif
40
41 /*
42 ** Local variables for this module
43 */
44 static struct {
45 BisectNode *pCurrent; /* Current generation of nodes */
46 BisectNode *pAll; /* All nodes */
47 Bag seen; /* Nodes seen before */
48 int bad; /* The bad version */
49 int good; /* The good version */
50 int nStep; /* Number of steps from good to bad */
51 BisectNode *pStart; /* Earliest node (bad) */
52 BisectNode *pEnd; /* Most recent (good) */
53 } bisect;
54
55 /*
56 ** Create a new node
57 */
58 static BisectNode *bisect_new_node(int rid, BisectNode *pFrom, int isParent){
59 BisectNode *p;
60
61 p = fossil_malloc( sizeof(*p) );
62 p->rid = rid;
63 p->fromIsParent = isParent;
64 p->pFrom = pFrom;
65 p->u.pPeer = bisect.pCurrent;
66 bisect.pCurrent = p;
67 p->pAll = bisect.pAll;
68 bisect.pAll = p;
69 bisect.pEnd = p;
70 bag_insert(&bisect.seen, rid);
71 return p;
72 }
73
74 /*
75 ** Reset memory used by the shortest path algorithm.
76 */
77 void bisect_reset(void){
78 BisectNode *p;
79 while( bisect.pAll ){
80 p = bisect.pAll;
81 bisect.pAll = p->pAll;
82 fossil_free(p);
83 }
84 bag_clear(&bisect.seen);
85 bisect.pCurrent = 0;
86 bisect.pAll = 0;
87 bisect.pEnd = 0;
88 bisect.nStep = 0;
89 }
90
91 /*
92 ** Compute the shortest path from iFrom to iTo
93 **
94 ** If directOnly is true, then use only the "primary" links from parent to
95 ** child. In other words, ignore merges.
96 */
97 BisectNode *bisect_shortest_path(int iFrom, int iTo, int directOnly){
98 Stmt s;
99 BisectNode *pPrev;
100 BisectNode *p;
101
102 bisect_reset();
103 bisect.pStart = bisect_new_node(iFrom, 0, 0);
104 if( iTo==iFrom ) return bisect.pStart;
105 if( directOnly ){
106 db_prepare(&s,
107 "SELECT cid, 1 FROM plink WHERE pid=:pid AND isprim "
108 "UNION ALL "
109 "SELECT pid, 0 FROM plink WHERE cid=:pid AND isprim"
110 );
111 }else{
112 db_prepare(&s,
113 "SELECT cid, 1 FROM plink WHERE pid=:pid "
114 "UNION ALL "
115 "SELECT pid, 0 FROM plink WHERE cid=:pid"
116 );
117 }
118 while( bisect.pCurrent ){
119 bisect.nStep++;
120 pPrev = bisect.pCurrent;
121 bisect.pCurrent = 0;
122 while( pPrev ){
123 db_bind_int(&s, ":pid", pPrev->rid);
124 while( db_step(&s)==SQLITE_ROW ){
125 int cid = db_column_int(&s, 0);
126 int isParent = db_column_int(&s, 1);
127 if( bag_find(&bisect.seen, cid) ) continue;
128 p = bisect_new_node(cid, pPrev, isParent);
129 if( cid==iTo ){
130 db_finalize(&s);
131 return p;
132 }
133 }
134 db_reset(&s);
135 pPrev = pPrev->u.pPeer;
136 }
137 }
138 bisect_reset();
139 return 0;
140 }
141
142 /*
143 ** Construct the path from bisect.pStart to bisect.pEnd in the u.pTo fields.
144 */
145 BisectNode *bisect_reverse_path(void){
146 BisectNode *p;
147 for(p=bisect.pEnd; p && p->pFrom; p = p->pFrom){
148 p->pFrom->u.pTo = p;
149 }
150 bisect.pEnd->u.pTo = 0;
151 assert( p==bisect.pStart );
152 return p;
153 }
154
155 /*
156 ** COMMAND: test-shortest-path
157 **
158 ** Usage: %fossil test-shortest-path ?--no-merge? VERSION1 VERSION2
159 **
160 ** Report the shortest path between two checkins. If the --no-merge flag
161 ** is used, follow only direct parent-child paths and omit merge links.
162 */
163 void shortest_path_test_cmd(void){
164 int iFrom;
165 int iTo;
166 BisectNode *p;
167 int n;
168 int directOnly;
169
170 db_find_and_open_repository(0,0);
171 directOnly = find_option("no-merge",0,0)!=0;
172 if( g.argc!=4 ) usage("VERSION1 VERSION2");
173 iFrom = name_to_rid(g.argv[2]);
174 iTo = name_to_rid(g.argv[3]);
175 p = bisect_shortest_path(iFrom, iTo, directOnly);
176 if( p==0 ){
177 fossil_fatal("no path from %s to %s", g.argv[1], g.argv[2]);
178 }
179 bisect_reverse_path();
180 for(n=1, p=bisect.pStart; p; p=p->u.pTo, n++){
181 char *z;
182 z = db_text(0,
183 "SELECT substr(uuid,1,12) || ' ' || datetime(mtime)"
184 " FROM blob, event"
185 " WHERE blob.rid=%d AND event.objid=%d AND event.type='ci'",
186 p->rid, p->rid);
187 printf("%4d: %s", n, z);
188 fossil_free(z);
189 if( p->u.pTo ){
190 printf(" is a %s of\n", p->u.pTo->fromIsParent ? "parent" : "child");
191 }else{
192 printf("\n");
193 }
194 }
195 }
196
197 /*
198 ** WEBPAGE: path
199 **
200 ** example: /path?from=trunk&to=experimental&nomerge
201 **
202 ** Show a timeline of all changes along a path between two versions.
203 */
204 void path_page(void){
205 login_check_credentials();
206 if( !g.okRead ){ login_needed(); return; }
207 }
208
209 /*
210 ** Find the shortest path between bad and good.
211 */
212 static BisectNode *bisect_path(void){
213 BisectNode *p;
214 bisect.bad = db_lget_int("bisect-bad", 0);
215 if( bisect.bad==0 ){
216 bisect.bad = db_int(0, "SELECT cid FROM plink ORDER BY mtime DESC LIMIT 1");
217 db_lset_int("bisect-bad", bisect.bad);
218 }
@@ -219,21 +44,19 @@
219 bisect.good = db_lget_int("bisect-good", 0);
220 if( bisect.good==0 ){
221 bisect.good = db_int(0,"SELECT pid FROM plink ORDER BY mtime LIMIT 1");
222 db_lset_int("bisect-good", bisect.good);
223 }
224 p = bisect_shortest_path(bisect.good, bisect.bad, 0);
225 if( p==0 ){
226 char *zBad = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.bad);
227 char *zGood = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.good);
228 fossil_fatal("no path from good ([%S]) to bad ([%S]) or back",
229 zGood, zBad);
230 }
231 return p;
232 }
233
234
235
236 /*
237 ** COMMAND: bisect
238 **
239 ** Usage: %fossil bisect SUBCOMMAND ...
@@ -286,19 +109,18 @@
286 }else{
287 ridGood = name_to_rid(g.argv[3]);
288 }
289 db_lset_int("bisect-good", ridGood);
290 }else if( memcmp(zCmd, "next", n)==0 ){
291 BisectNode *p;
292 int n;
293 bisect_path();
294 if( bisect.nStep<2 ){
 
295 fossil_fatal("bisect is done - there are no more intermediate versions");
296 }
297 for(p=bisect.pEnd, n=0; p && n<bisect.nStep/2; p=p->pFrom, n++){}
298 g.argv[1] = "update";
299 g.argv[2] = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", p->rid);
300 g.argc = 3;
301 g.fNoSync = 1;
302 update_cmd();
303 }else if( memcmp(zCmd, "reset", n)==0 ){
304 db_multi_exec(
@@ -306,162 +128,35 @@
306 " SELECT 'bisect-good', pid FROM plink ORDER BY mtime LIMIT 1;"
307 "REPLACE INTO vvar(name, value) "
308 " SELECT 'bisect-bad', cid FROM plink ORDER BY mtime DESC LIMIT 1;"
309 );
310 }else if( memcmp(zCmd, "vlist", n)==0 ){
311 BisectNode *p;
312 int vid = db_lget_int("checkout", 0);
313 int n;
314 Stmt s;
 
315 bisect_path();
316 db_prepare(&s, "SELECT substr(blob.uuid,1,20) || ' ' || "
317 " datetime(event.mtime) FROM blob, event"
318 " WHERE blob.rid=:rid AND event.objid=:rid"
319 " AND event.type='ci'");
320 for(p=bisect.pEnd, n=0; p; p=p->pFrom, n++){
 
321 const char *z;
322 db_bind_int(&s, ":rid", p->rid);
323 if( db_step(&s)==SQLITE_ROW ){
324 z = db_column_text(&s, 0);
325 printf("%s", z);
326 if( p->rid==bisect.good ) printf(" GOOD");
327 if( p->rid==bisect.bad ) printf(" BAD");
328 if( p->rid==vid ) printf(" CURRENT");
329 if( bisect.nStep>1 && n==bisect.nStep/2 ) printf(" NEXT");
330 printf("\n");
331 }
332 db_reset(&s);
333 }
334 db_finalize(&s);
335 }else{
336 usage("bad|good|next|reset|vlist ...");
337 }
338 }
339
340 /*
341 ** A record of a file rename operation.
342 */
343 typedef struct NameChange NameChange;
344 struct NameChange {
345 int origName; /* Original name of file */
346 int curName; /* Current name of the file */
347 int newName; /* Name of file in next version */
348 NameChange *pNext; /* List of all name changes */
349 };
350
351 /*
352 ** Compute all file name changes that occur going from checkin iFrom
353 ** to checkin iTo.
354 **
355 ** The number of name changes is written into *pnChng. For each name
356 ** change, two integers are allocated for *piChng. The first is the
357 ** filename.fnid for the original name and the second is for new name.
358 ** Space to hold *piChng is obtained from fossil_malloc() and should
359 ** be released by the caller.
360 **
361 ** This routine really has nothing to do with bisection. It is located
362 ** in this bisect.c module in order to leverage some of the bisect
363 ** infrastructure.
364 */
365 void find_filename_changes(
366 int iFrom,
367 int iTo,
368 int *pnChng,
369 int **aiChng
370 ){
371 BisectNode *p; /* For looping over path from iFrom to iTo */
372 NameChange *pAll = 0; /* List of all name changes seen so far */
373 NameChange *pChng; /* For looping through the name change list */
374 int nChng = 0; /* Number of files whose names have changed */
375 int *aChng; /* Two integers per name change */
376 int i; /* Loop counter */
377 Stmt q1; /* Query of name changes */
378
379 *pnChng = 0;
380 *aiChng = 0;
381 bisect_reset();
382 p = bisect_shortest_path(iFrom, iTo, 0);
383 if( p==0 ) return;
384 bisect_reverse_path();
385 db_prepare(&q1,
386 "SELECT pfnid, fnid FROM mlink WHERE mid=:mid AND pfnid>0"
387 );
388 for(p=bisect.pStart; p; p=p->u.pTo){
389 int fnid, pfnid;
390 if( !p->fromIsParent && (p->u.pTo==0 || p->u.pTo->fromIsParent) ){
391 /* Skip nodes where the parent is not on the path */
392 continue;
393 }
394 db_bind_int(&q1, ":mid", p->rid);
395 while( db_step(&q1)==SQLITE_ROW ){
396 if( p->fromIsParent ){
397 fnid = db_column_int(&q1, 1);
398 pfnid = db_column_int(&q1, 0);
399 }else{
400 fnid = db_column_int(&q1, 0);
401 pfnid = db_column_int(&q1, 1);
402 }
403 for(pChng=pAll; pChng; pChng=pChng->pNext){
404 if( pChng->curName==pfnid ){
405 pChng->newName = fnid;
406 break;
407 }
408 }
409 if( pChng==0 ){
410 pChng = fossil_malloc( sizeof(*pChng) );
411 pChng->pNext = pAll;
412 pAll = pChng;
413 pChng->origName = pfnid;
414 pChng->curName = pfnid;
415 pChng->newName = fnid;
416 nChng++;
417 }
418 }
419 for(pChng=pAll; pChng; pChng=pChng->pNext) pChng->curName = pChng->newName;
420 db_reset(&q1);
421 }
422 db_finalize(&q1);
423 if( nChng ){
424 *pnChng = nChng;
425 aChng = *aiChng = fossil_malloc( nChng*2*sizeof(int) );
426 for(pChng=pAll, i=0; pChng; pChng=pChng->pNext, i+=2){
427 aChng[i] = pChng->origName;
428 aChng[i+1] = pChng->newName;
429 }
430 while( pAll ){
431 pChng = pAll;
432 pAll = pAll->pNext;
433 fossil_free(pChng);
434 }
435 }
436 }
437
438 /*
439 ** COMMAND: test-name-changes
440 **
441 ** Usage: %fossil test-name-changes VERSION1 VERSION2
442 **
443 ** Show all filename changes that occur going from VERSION1 to VERSION2
444 */
445 void test_name_change(void){
446 int iFrom;
447 int iTo;
448 int *aChng;
449 int nChng;
450 int i;
451
452 db_find_and_open_repository(0,0);
453 if( g.argc!=4 ) usage("VERSION1 VERSION2");
454 iFrom = name_to_rid(g.argv[2]);
455 iTo = name_to_rid(g.argv[3]);
456 find_filename_changes(iFrom, iTo, &nChng, &aChng);
457 for(i=0; i<nChng; i++){
458 char *zFrom, *zTo;
459
460 zFrom = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2]);
461 zTo = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2+1]);
462 printf("[%s] -> [%s]\n", zFrom, zTo);
463 fossil_free(zFrom);
464 fossil_free(zTo);
465 }
466 fossil_free(aChng);
467 }
468
--- src/bisect.c
+++ src/bisect.c
@@ -21,198 +21,23 @@
21 */
22 #include "config.h"
23 #include "bisect.h"
24 #include <assert.h>
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26 /*
27 ** Local variables for this module
28 */
29 static struct {
 
 
 
30 int bad; /* The bad version */
31 int good; /* The good version */
 
 
 
32 } bisect;
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34 /*
35 ** Find the shortest path between bad and good.
36 */
37 static PathNode *bisect_path(void){
38 PathNode *p;
39 bisect.bad = db_lget_int("bisect-bad", 0);
40 if( bisect.bad==0 ){
41 bisect.bad = db_int(0, "SELECT cid FROM plink ORDER BY mtime DESC LIMIT 1");
42 db_lset_int("bisect-bad", bisect.bad);
43 }
@@ -219,21 +44,19 @@
44 bisect.good = db_lget_int("bisect-good", 0);
45 if( bisect.good==0 ){
46 bisect.good = db_int(0,"SELECT pid FROM plink ORDER BY mtime LIMIT 1");
47 db_lset_int("bisect-good", bisect.good);
48 }
49 p = path_shortest(bisect.good, bisect.bad, 0);
50 if( p==0 ){
51 char *zBad = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.bad);
52 char *zGood = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", bisect.good);
53 fossil_fatal("no path from good ([%S]) to bad ([%S]) or back",
54 zGood, zBad);
55 }
56 return p;
57 }
 
 
58
59 /*
60 ** COMMAND: bisect
61 **
62 ** Usage: %fossil bisect SUBCOMMAND ...
@@ -286,19 +109,18 @@
109 }else{
110 ridGood = name_to_rid(g.argv[3]);
111 }
112 db_lset_int("bisect-good", ridGood);
113 }else if( memcmp(zCmd, "next", n)==0 ){
114 PathNode *pMid;
 
115 bisect_path();
116 pMid = path_midpoint();
117 if( pMid==0 ){
118 fossil_fatal("bisect is done - there are no more intermediate versions");
119 }
 
120 g.argv[1] = "update";
121 g.argv[2] = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", pMid->rid);
122 g.argc = 3;
123 g.fNoSync = 1;
124 update_cmd();
125 }else if( memcmp(zCmd, "reset", n)==0 ){
126 db_multi_exec(
@@ -306,162 +128,35 @@
128 " SELECT 'bisect-good', pid FROM plink ORDER BY mtime LIMIT 1;"
129 "REPLACE INTO vvar(name, value) "
130 " SELECT 'bisect-bad', cid FROM plink ORDER BY mtime DESC LIMIT 1;"
131 );
132 }else if( memcmp(zCmd, "vlist", n)==0 ){
133 PathNode *p;
134 int vid = db_lget_int("checkout", 0);
135 int n;
136 Stmt s;
137 int nStep;
138 bisect_path();
139 db_prepare(&s, "SELECT substr(blob.uuid,1,20) || ' ' || "
140 " datetime(event.mtime) FROM blob, event"
141 " WHERE blob.rid=:rid AND event.objid=:rid"
142 " AND event.type='ci'");
143 nStep = path_length();
144 for(p=path_last(), n=0; p; p=p->pFrom, n++){
145 const char *z;
146 db_bind_int(&s, ":rid", p->rid);
147 if( db_step(&s)==SQLITE_ROW ){
148 z = db_column_text(&s, 0);
149 printf("%s", z);
150 if( p->rid==bisect.good ) printf(" GOOD");
151 if( p->rid==bisect.bad ) printf(" BAD");
152 if( p->rid==vid ) printf(" CURRENT");
153 if( nStep>1 && n==nStep/2 ) printf(" NEXT");
154 printf("\n");
155 }
156 db_reset(&s);
157 }
158 db_finalize(&s);
159 }else{
160 usage("bad|good|next|reset|vlist ...");
161 }
162 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
+11 -1
--- src/main.mk
+++ src/main.mk
@@ -54,10 +54,11 @@
5454
$(SRCDIR)/manifest.c \
5555
$(SRCDIR)/md5.c \
5656
$(SRCDIR)/merge.c \
5757
$(SRCDIR)/merge3.c \
5858
$(SRCDIR)/name.c \
59
+ $(SRCDIR)/path.c \
5960
$(SRCDIR)/pivot.c \
6061
$(SRCDIR)/popen.c \
6162
$(SRCDIR)/pqueue.c \
6263
$(SRCDIR)/printf.c \
6364
$(SRCDIR)/rebuild.c \
@@ -136,10 +137,11 @@
136137
$(OBJDIR)/manifest_.c \
137138
$(OBJDIR)/md5_.c \
138139
$(OBJDIR)/merge_.c \
139140
$(OBJDIR)/merge3_.c \
140141
$(OBJDIR)/name_.c \
142
+ $(OBJDIR)/path_.c \
141143
$(OBJDIR)/pivot_.c \
142144
$(OBJDIR)/popen_.c \
143145
$(OBJDIR)/pqueue_.c \
144146
$(OBJDIR)/printf_.c \
145147
$(OBJDIR)/rebuild_.c \
@@ -218,10 +220,11 @@
218220
$(OBJDIR)/manifest.o \
219221
$(OBJDIR)/md5.o \
220222
$(OBJDIR)/merge.o \
221223
$(OBJDIR)/merge3.o \
222224
$(OBJDIR)/name.o \
225
+ $(OBJDIR)/path.o \
223226
$(OBJDIR)/pivot.o \
224227
$(OBJDIR)/popen.o \
225228
$(OBJDIR)/pqueue.o \
226229
$(OBJDIR)/printf.o \
227230
$(OBJDIR)/rebuild.o \
@@ -304,11 +307,11 @@
304307
305308
306309
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
307310
$(OBJDIR)/mkindex $(TRANS_SRC) >$@
308311
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
309
- $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
312
+ $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
310313
touch $(OBJDIR)/headers
311314
$(OBJDIR)/headers: Makefile
312315
Makefile:
313316
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
314317
$(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -623,10 +626,17 @@
623626
624627
$(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
625628
$(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
626629
627630
$(OBJDIR)/name.h: $(OBJDIR)/headers
631
+$(OBJDIR)/path_.c: $(SRCDIR)/path.c $(OBJDIR)/translate
632
+ $(OBJDIR)/translate $(SRCDIR)/path.c >$(OBJDIR)/path_.c
633
+
634
+$(OBJDIR)/path.o: $(OBJDIR)/path_.c $(OBJDIR)/path.h $(SRCDIR)/config.h
635
+ $(XTCC) -o $(OBJDIR)/path.o -c $(OBJDIR)/path_.c
636
+
637
+$(OBJDIR)/path.h: $(OBJDIR)/headers
628638
$(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
629639
$(OBJDIR)/translate $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
630640
631641
$(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
632642
$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
633643
--- src/main.mk
+++ src/main.mk
@@ -54,10 +54,11 @@
54 $(SRCDIR)/manifest.c \
55 $(SRCDIR)/md5.c \
56 $(SRCDIR)/merge.c \
57 $(SRCDIR)/merge3.c \
58 $(SRCDIR)/name.c \
 
59 $(SRCDIR)/pivot.c \
60 $(SRCDIR)/popen.c \
61 $(SRCDIR)/pqueue.c \
62 $(SRCDIR)/printf.c \
63 $(SRCDIR)/rebuild.c \
@@ -136,10 +137,11 @@
136 $(OBJDIR)/manifest_.c \
137 $(OBJDIR)/md5_.c \
138 $(OBJDIR)/merge_.c \
139 $(OBJDIR)/merge3_.c \
140 $(OBJDIR)/name_.c \
 
141 $(OBJDIR)/pivot_.c \
142 $(OBJDIR)/popen_.c \
143 $(OBJDIR)/pqueue_.c \
144 $(OBJDIR)/printf_.c \
145 $(OBJDIR)/rebuild_.c \
@@ -218,10 +220,11 @@
218 $(OBJDIR)/manifest.o \
219 $(OBJDIR)/md5.o \
220 $(OBJDIR)/merge.o \
221 $(OBJDIR)/merge3.o \
222 $(OBJDIR)/name.o \
 
223 $(OBJDIR)/pivot.o \
224 $(OBJDIR)/popen.o \
225 $(OBJDIR)/pqueue.o \
226 $(OBJDIR)/printf.o \
227 $(OBJDIR)/rebuild.o \
@@ -304,11 +307,11 @@
304
305
306 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
307 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
308 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
309 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
310 touch $(OBJDIR)/headers
311 $(OBJDIR)/headers: Makefile
312 Makefile:
313 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
314 $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -623,10 +626,17 @@
623
624 $(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
625 $(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
626
627 $(OBJDIR)/name.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
628 $(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
629 $(OBJDIR)/translate $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
630
631 $(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
632 $(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
633
--- src/main.mk
+++ src/main.mk
@@ -54,10 +54,11 @@
54 $(SRCDIR)/manifest.c \
55 $(SRCDIR)/md5.c \
56 $(SRCDIR)/merge.c \
57 $(SRCDIR)/merge3.c \
58 $(SRCDIR)/name.c \
59 $(SRCDIR)/path.c \
60 $(SRCDIR)/pivot.c \
61 $(SRCDIR)/popen.c \
62 $(SRCDIR)/pqueue.c \
63 $(SRCDIR)/printf.c \
64 $(SRCDIR)/rebuild.c \
@@ -136,10 +137,11 @@
137 $(OBJDIR)/manifest_.c \
138 $(OBJDIR)/md5_.c \
139 $(OBJDIR)/merge_.c \
140 $(OBJDIR)/merge3_.c \
141 $(OBJDIR)/name_.c \
142 $(OBJDIR)/path_.c \
143 $(OBJDIR)/pivot_.c \
144 $(OBJDIR)/popen_.c \
145 $(OBJDIR)/pqueue_.c \
146 $(OBJDIR)/printf_.c \
147 $(OBJDIR)/rebuild_.c \
@@ -218,10 +220,11 @@
220 $(OBJDIR)/manifest.o \
221 $(OBJDIR)/md5.o \
222 $(OBJDIR)/merge.o \
223 $(OBJDIR)/merge3.o \
224 $(OBJDIR)/name.o \
225 $(OBJDIR)/path.o \
226 $(OBJDIR)/pivot.o \
227 $(OBJDIR)/popen.o \
228 $(OBJDIR)/pqueue.o \
229 $(OBJDIR)/printf.o \
230 $(OBJDIR)/rebuild.o \
@@ -304,11 +307,11 @@
307
308
309 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
310 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
311 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
312 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
313 touch $(OBJDIR)/headers
314 $(OBJDIR)/headers: Makefile
315 Makefile:
316 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
317 $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c
@@ -623,10 +626,17 @@
626
627 $(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
628 $(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
629
630 $(OBJDIR)/name.h: $(OBJDIR)/headers
631 $(OBJDIR)/path_.c: $(SRCDIR)/path.c $(OBJDIR)/translate
632 $(OBJDIR)/translate $(SRCDIR)/path.c >$(OBJDIR)/path_.c
633
634 $(OBJDIR)/path.o: $(OBJDIR)/path_.c $(OBJDIR)/path.h $(SRCDIR)/config.h
635 $(XTCC) -o $(OBJDIR)/path.o -c $(OBJDIR)/path_.c
636
637 $(OBJDIR)/path.h: $(OBJDIR)/headers
638 $(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
639 $(OBJDIR)/translate $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
640
641 $(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
642 $(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
643
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -60,10 +60,11 @@
6060
manifest
6161
md5
6262
merge
6363
merge3
6464
name
65
+ path
6566
pivot
6667
popen
6768
pqueue
6869
printf
6970
rebuild
7071
7172
ADDED src/path.c
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -60,10 +60,11 @@
60 manifest
61 md5
62 merge
63 merge3
64 name
 
65 pivot
66 popen
67 pqueue
68 printf
69 rebuild
70
71 DDED src/path.c
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -60,10 +60,11 @@
60 manifest
61 md5
62 merge
63 merge3
64 name
65 path
66 pivot
67 popen
68 pqueue
69 printf
70 rebuild
71
72 DDED src/path.c
+2
--- a/src/path.c
+++ b/src/path.c
@@ -0,0 +1,2 @@
1
+ rint;
2
+PathNode * return p
--- a/src/path.c
+++ b/src/path.c
@@ -0,0 +1,2 @@
 
 
--- a/src/path.c
+++ b/src/path.c
@@ -0,0 +1,2 @@
1 rint;
2 PathNode * return p
+4 -4
--- src/timeline.c
+++ src/timeline.c
@@ -798,22 +798,22 @@
798798
url_initialize(&url, "timeline");
799799
if( !useDividers ) url_add_parameter(&url, "nd", 0);
800800
if( from_rid && to_rid && g.okRead ){
801801
/* If from= and to= are present, display all nodes on a path connecting
802802
** the two */
803
- BisectNode *p;
803
+ PathNode *p;
804804
const char *z;
805805
806
- bisect_shortest_path(from_rid, to_rid, noMerge);
807
- p = bisect_reverse_path();
806
+ path_shortest(from_rid, to_rid, noMerge);
807
+ p = path_reverse_path();
808808
blob_append(&sql, " AND event.objid IN (0", -1);
809809
while( p ){
810810
blob_appendf(&sql, ",%d", p->rid);
811811
p = p->u.pTo;
812812
}
813813
blob_append(&sql, ")", -1);
814
- bisect_reset();
814
+ path_reset();
815815
blob_append(&desc, "All nodes on the path from ", -1);
816816
z = P("from");
817817
if( g.okHistory ){
818818
blob_appendf(&desc, "<a href='%s/info/%h'>[%h]</a>", g.zTop, z, z);
819819
}else{
820820
--- src/timeline.c
+++ src/timeline.c
@@ -798,22 +798,22 @@
798 url_initialize(&url, "timeline");
799 if( !useDividers ) url_add_parameter(&url, "nd", 0);
800 if( from_rid && to_rid && g.okRead ){
801 /* If from= and to= are present, display all nodes on a path connecting
802 ** the two */
803 BisectNode *p;
804 const char *z;
805
806 bisect_shortest_path(from_rid, to_rid, noMerge);
807 p = bisect_reverse_path();
808 blob_append(&sql, " AND event.objid IN (0", -1);
809 while( p ){
810 blob_appendf(&sql, ",%d", p->rid);
811 p = p->u.pTo;
812 }
813 blob_append(&sql, ")", -1);
814 bisect_reset();
815 blob_append(&desc, "All nodes on the path from ", -1);
816 z = P("from");
817 if( g.okHistory ){
818 blob_appendf(&desc, "<a href='%s/info/%h'>[%h]</a>", g.zTop, z, z);
819 }else{
820
--- src/timeline.c
+++ src/timeline.c
@@ -798,22 +798,22 @@
798 url_initialize(&url, "timeline");
799 if( !useDividers ) url_add_parameter(&url, "nd", 0);
800 if( from_rid && to_rid && g.okRead ){
801 /* If from= and to= are present, display all nodes on a path connecting
802 ** the two */
803 PathNode *p;
804 const char *z;
805
806 path_shortest(from_rid, to_rid, noMerge);
807 p = path_reverse_path();
808 blob_append(&sql, " AND event.objid IN (0", -1);
809 while( p ){
810 blob_appendf(&sql, ",%d", p->rid);
811 p = p->u.pTo;
812 }
813 blob_append(&sql, ")", -1);
814 path_reset();
815 blob_append(&desc, "All nodes on the path from ", -1);
816 z = P("from");
817 if( g.okHistory ){
818 blob_appendf(&desc, "<a href='%s/info/%h'>[%h]</a>", g.zTop, z, z);
819 }else{
820
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,13 +24,13 @@
2424
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(I18N) $(SSL) $(INCL)
2525
LIBS = $(DMDIR)\extra\lib\ zlib wsock32
2626
2727
SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT2 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
2828
29
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
29
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
3030
31
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\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)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$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)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
31
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\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)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$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)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3232
3333
3434
RC=$(DMDIR)\bin\rcc
3535
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
3636
@@ -44,11 +44,11 @@
4444
4545
$(OBJDIR)\fossil.res: $B\win\fossil.rc
4646
$(RC) $(RCFLAGS) -o$@ $**
4747
4848
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
49
- +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
49
+ +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
5050
+echo fossil >> $@
5151
+echo fossil >> $@
5252
+echo $(LIBS) >> $@
5353
+echo. >> $@
5454
+echo fossil >> $@
@@ -358,10 +358,16 @@
358358
$(OBJDIR)\name$O : name_.c name.h
359359
$(TCC) -o$@ -c name_.c
360360
361361
name_.c : $(SRCDIR)\name.c
362362
+translate$E $** > $@
363
+
364
+$(OBJDIR)\path$O : path_.c path.h
365
+ $(TCC) -o$@ -c path_.c
366
+
367
+path_.c : $(SRCDIR)\path.c
368
+ +translate$E $** > $@
363369
364370
$(OBJDIR)\pivot$O : pivot_.c pivot.h
365371
$(TCC) -o$@ -c pivot_.c
366372
367373
pivot_.c : $(SRCDIR)\pivot.c
@@ -570,7 +576,7 @@
570576
571577
zip_.c : $(SRCDIR)\zip.c
572578
+translate$E $** > $@
573579
574580
headers: makeheaders$E page_index.h VERSION.h
575
- +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
581
+ +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
576582
@copy /Y nul: headers
577583
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,13 +24,13 @@
24 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(I18N) $(SSL) $(INCL)
25 LIBS = $(DMDIR)\extra\lib\ zlib wsock32
26
27 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT2 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
28
29 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
30
31 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\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)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$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)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
32
33
34 RC=$(DMDIR)\bin\rcc
35 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
36
@@ -44,11 +44,11 @@
44
45 $(OBJDIR)\fossil.res: $B\win\fossil.rc
46 $(RC) $(RCFLAGS) -o$@ $**
47
48 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
49 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
50 +echo fossil >> $@
51 +echo fossil >> $@
52 +echo $(LIBS) >> $@
53 +echo. >> $@
54 +echo fossil >> $@
@@ -358,10 +358,16 @@
358 $(OBJDIR)\name$O : name_.c name.h
359 $(TCC) -o$@ -c name_.c
360
361 name_.c : $(SRCDIR)\name.c
362 +translate$E $** > $@
 
 
 
 
 
 
363
364 $(OBJDIR)\pivot$O : pivot_.c pivot.h
365 $(TCC) -o$@ -c pivot_.c
366
367 pivot_.c : $(SRCDIR)\pivot.c
@@ -570,7 +576,7 @@
570
571 zip_.c : $(SRCDIR)\zip.c
572 +translate$E $** > $@
573
574 headers: makeheaders$E page_index.h VERSION.h
575 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
576 @copy /Y nul: headers
577
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -24,13 +24,13 @@
24 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(I18N) $(SSL) $(INCL)
25 LIBS = $(DMDIR)\extra\lib\ zlib wsock32
26
27 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT2 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
28
29 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
30
31 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\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)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$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)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
32
33
34 RC=$(DMDIR)\bin\rcc
35 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
36
@@ -44,11 +44,11 @@
44
45 $(OBJDIR)\fossil.res: $B\win\fossil.rc
46 $(RC) $(RCFLAGS) -o$@ $**
47
48 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
49 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@
50 +echo fossil >> $@
51 +echo fossil >> $@
52 +echo $(LIBS) >> $@
53 +echo. >> $@
54 +echo fossil >> $@
@@ -358,10 +358,16 @@
358 $(OBJDIR)\name$O : name_.c name.h
359 $(TCC) -o$@ -c name_.c
360
361 name_.c : $(SRCDIR)\name.c
362 +translate$E $** > $@
363
364 $(OBJDIR)\path$O : path_.c path.h
365 $(TCC) -o$@ -c path_.c
366
367 path_.c : $(SRCDIR)\path.c
368 +translate$E $** > $@
369
370 $(OBJDIR)\pivot$O : pivot_.c pivot.h
371 $(TCC) -o$@ -c pivot_.c
372
373 pivot_.c : $(SRCDIR)\pivot.c
@@ -570,7 +576,7 @@
576
577 zip_.c : $(SRCDIR)\zip.c
578 +translate$E $** > $@
579
580 headers: makeheaders$E page_index.h VERSION.h
581 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
582 @copy /Y nul: headers
583
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -117,10 +117,11 @@
117117
$(SRCDIR)/manifest.c \
118118
$(SRCDIR)/md5.c \
119119
$(SRCDIR)/merge.c \
120120
$(SRCDIR)/merge3.c \
121121
$(SRCDIR)/name.c \
122
+ $(SRCDIR)/path.c \
122123
$(SRCDIR)/pivot.c \
123124
$(SRCDIR)/popen.c \
124125
$(SRCDIR)/pqueue.c \
125126
$(SRCDIR)/printf.c \
126127
$(SRCDIR)/rebuild.c \
@@ -199,10 +200,11 @@
199200
$(OBJDIR)/manifest_.c \
200201
$(OBJDIR)/md5_.c \
201202
$(OBJDIR)/merge_.c \
202203
$(OBJDIR)/merge3_.c \
203204
$(OBJDIR)/name_.c \
205
+ $(OBJDIR)/path_.c \
204206
$(OBJDIR)/pivot_.c \
205207
$(OBJDIR)/popen_.c \
206208
$(OBJDIR)/pqueue_.c \
207209
$(OBJDIR)/printf_.c \
208210
$(OBJDIR)/rebuild_.c \
@@ -281,10 +283,11 @@
281283
$(OBJDIR)/manifest.o \
282284
$(OBJDIR)/md5.o \
283285
$(OBJDIR)/merge.o \
284286
$(OBJDIR)/merge3.o \
285287
$(OBJDIR)/name.o \
288
+ $(OBJDIR)/path.o \
286289
$(OBJDIR)/pivot.o \
287290
$(OBJDIR)/popen.o \
288291
$(OBJDIR)/pqueue.o \
289292
$(OBJDIR)/printf.o \
290293
$(OBJDIR)/rebuild.o \
@@ -382,11 +385,11 @@
382385
383386
384387
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
385388
$(MKINDEX) $(TRANS_SRC) >$@
386389
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
387
- $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
390
+ $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
388391
echo Done >$(OBJDIR)/headers
389392
390393
$(OBJDIR)/headers: Makefile
391394
Makefile:
392395
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -702,10 +705,17 @@
702705
703706
$(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
704707
$(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
705708
706709
name.h: $(OBJDIR)/headers
710
+$(OBJDIR)/path_.c: $(SRCDIR)/path.c $(OBJDIR)/translate
711
+ $(TRANSLATE) $(SRCDIR)/path.c >$(OBJDIR)/path_.c
712
+
713
+$(OBJDIR)/path.o: $(OBJDIR)/path_.c $(OBJDIR)/path.h $(SRCDIR)/config.h
714
+ $(XTCC) -o $(OBJDIR)/path.o -c $(OBJDIR)/path_.c
715
+
716
+path.h: $(OBJDIR)/headers
707717
$(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
708718
$(TRANSLATE) $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
709719
710720
$(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
711721
$(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
712722
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -117,10 +117,11 @@
117 $(SRCDIR)/manifest.c \
118 $(SRCDIR)/md5.c \
119 $(SRCDIR)/merge.c \
120 $(SRCDIR)/merge3.c \
121 $(SRCDIR)/name.c \
 
122 $(SRCDIR)/pivot.c \
123 $(SRCDIR)/popen.c \
124 $(SRCDIR)/pqueue.c \
125 $(SRCDIR)/printf.c \
126 $(SRCDIR)/rebuild.c \
@@ -199,10 +200,11 @@
199 $(OBJDIR)/manifest_.c \
200 $(OBJDIR)/md5_.c \
201 $(OBJDIR)/merge_.c \
202 $(OBJDIR)/merge3_.c \
203 $(OBJDIR)/name_.c \
 
204 $(OBJDIR)/pivot_.c \
205 $(OBJDIR)/popen_.c \
206 $(OBJDIR)/pqueue_.c \
207 $(OBJDIR)/printf_.c \
208 $(OBJDIR)/rebuild_.c \
@@ -281,10 +283,11 @@
281 $(OBJDIR)/manifest.o \
282 $(OBJDIR)/md5.o \
283 $(OBJDIR)/merge.o \
284 $(OBJDIR)/merge3.o \
285 $(OBJDIR)/name.o \
 
286 $(OBJDIR)/pivot.o \
287 $(OBJDIR)/popen.o \
288 $(OBJDIR)/pqueue.o \
289 $(OBJDIR)/printf.o \
290 $(OBJDIR)/rebuild.o \
@@ -382,11 +385,11 @@
382
383
384 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
385 $(MKINDEX) $(TRANS_SRC) >$@
386 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
387 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
388 echo Done >$(OBJDIR)/headers
389
390 $(OBJDIR)/headers: Makefile
391 Makefile:
392 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -702,10 +705,17 @@
702
703 $(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
704 $(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
705
706 name.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
707 $(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
708 $(TRANSLATE) $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
709
710 $(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
711 $(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
712
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -117,10 +117,11 @@
117 $(SRCDIR)/manifest.c \
118 $(SRCDIR)/md5.c \
119 $(SRCDIR)/merge.c \
120 $(SRCDIR)/merge3.c \
121 $(SRCDIR)/name.c \
122 $(SRCDIR)/path.c \
123 $(SRCDIR)/pivot.c \
124 $(SRCDIR)/popen.c \
125 $(SRCDIR)/pqueue.c \
126 $(SRCDIR)/printf.c \
127 $(SRCDIR)/rebuild.c \
@@ -199,10 +200,11 @@
200 $(OBJDIR)/manifest_.c \
201 $(OBJDIR)/md5_.c \
202 $(OBJDIR)/merge_.c \
203 $(OBJDIR)/merge3_.c \
204 $(OBJDIR)/name_.c \
205 $(OBJDIR)/path_.c \
206 $(OBJDIR)/pivot_.c \
207 $(OBJDIR)/popen_.c \
208 $(OBJDIR)/pqueue_.c \
209 $(OBJDIR)/printf_.c \
210 $(OBJDIR)/rebuild_.c \
@@ -281,10 +283,11 @@
283 $(OBJDIR)/manifest.o \
284 $(OBJDIR)/md5.o \
285 $(OBJDIR)/merge.o \
286 $(OBJDIR)/merge3.o \
287 $(OBJDIR)/name.o \
288 $(OBJDIR)/path.o \
289 $(OBJDIR)/pivot.o \
290 $(OBJDIR)/popen.o \
291 $(OBJDIR)/pqueue.o \
292 $(OBJDIR)/printf.o \
293 $(OBJDIR)/rebuild.o \
@@ -382,11 +385,11 @@
385
386
387 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
388 $(MKINDEX) $(TRANS_SRC) >$@
389 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
390 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
391 echo Done >$(OBJDIR)/headers
392
393 $(OBJDIR)/headers: Makefile
394 Makefile:
395 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -702,10 +705,17 @@
705
706 $(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h
707 $(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c
708
709 name.h: $(OBJDIR)/headers
710 $(OBJDIR)/path_.c: $(SRCDIR)/path.c $(OBJDIR)/translate
711 $(TRANSLATE) $(SRCDIR)/path.c >$(OBJDIR)/path_.c
712
713 $(OBJDIR)/path.o: $(OBJDIR)/path_.c $(OBJDIR)/path.h $(SRCDIR)/config.h
714 $(XTCC) -o $(OBJDIR)/path.o -c $(OBJDIR)/path_.c
715
716 path.h: $(OBJDIR)/headers
717 $(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate
718 $(TRANSLATE) $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c
719
720 $(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h
721 $(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c
722
+10 -4
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -38,13 +38,13 @@
3838
LIBS = $(ZLIB) ws2_32.lib $(SSLLIB)
3939
LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
4040
4141
SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT2 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
4242
43
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
43
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
4444
45
-OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
45
+OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
4646
4747
4848
APPNAME = $(OX)\fossil$(E)
4949
5050
all: $(OX) $(APPNAME)
@@ -52,11 +52,11 @@
5252
$(APPNAME) : translate$E mkindex$E headers $(OBJ) $(OX)\linkopts
5353
cd $(OX)
5454
link -LINK -OUT:$@ $(LIBDIR) @linkopts
5555
5656
$(OX)\linkopts: $B\win\Makefile.msc
57
- echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip sqlite3 th th_lang > $@
57
+ echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip sqlite3 th th_lang > $@
5858
echo $(LIBS) >> $@
5959
6060
6161
6262
@@ -369,10 +369,16 @@
369369
$(OX)\name$O : name_.c name.h
370370
$(TCC) /Fo$@ -c name_.c
371371
372372
name_.c : $(SRCDIR)\name.c
373373
translate$E $** > $@
374
+
375
+$(OX)\path$O : path_.c path.h
376
+ $(TCC) /Fo$@ -c path_.c
377
+
378
+path_.c : $(SRCDIR)\path.c
379
+ translate$E $** > $@
374380
375381
$(OX)\pivot$O : pivot_.c pivot.h
376382
$(TCC) /Fo$@ -c pivot_.c
377383
378384
pivot_.c : $(SRCDIR)\pivot.c
@@ -581,7 +587,7 @@
581587
582588
zip_.c : $(SRCDIR)\zip.c
583589
translate$E $** > $@
584590
585591
headers: makeheaders$E page_index.h VERSION.h
586
- makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
592
+ makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
587593
@copy /Y nul: headers
588594
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -38,13 +38,13 @@
38 LIBS = $(ZLIB) ws2_32.lib $(SSLLIB)
39 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
40
41 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT2 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
42
43 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
44
45 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
46
47
48 APPNAME = $(OX)\fossil$(E)
49
50 all: $(OX) $(APPNAME)
@@ -52,11 +52,11 @@
52 $(APPNAME) : translate$E mkindex$E headers $(OBJ) $(OX)\linkopts
53 cd $(OX)
54 link -LINK -OUT:$@ $(LIBDIR) @linkopts
55
56 $(OX)\linkopts: $B\win\Makefile.msc
57 echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip sqlite3 th th_lang > $@
58 echo $(LIBS) >> $@
59
60
61
62
@@ -369,10 +369,16 @@
369 $(OX)\name$O : name_.c name.h
370 $(TCC) /Fo$@ -c name_.c
371
372 name_.c : $(SRCDIR)\name.c
373 translate$E $** > $@
 
 
 
 
 
 
374
375 $(OX)\pivot$O : pivot_.c pivot.h
376 $(TCC) /Fo$@ -c pivot_.c
377
378 pivot_.c : $(SRCDIR)\pivot.c
@@ -581,7 +587,7 @@
581
582 zip_.c : $(SRCDIR)\zip.c
583 translate$E $** > $@
584
585 headers: makeheaders$E page_index.h VERSION.h
586 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
587 @copy /Y nul: headers
588
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -38,13 +38,13 @@
38 LIBS = $(ZLIB) ws2_32.lib $(SSLLIB)
39 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
40
41 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT2 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
42
43 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c
44
45 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
46
47
48 APPNAME = $(OX)\fossil$(E)
49
50 all: $(OX) $(APPNAME)
@@ -52,11 +52,11 @@
52 $(APPNAME) : translate$E mkindex$E headers $(OBJ) $(OX)\linkopts
53 cd $(OX)
54 link -LINK -OUT:$@ $(LIBDIR) @linkopts
55
56 $(OX)\linkopts: $B\win\Makefile.msc
57 echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo graph gzip http http_socket http_ssl http_transport import info leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip sqlite3 th th_lang > $@
58 echo $(LIBS) >> $@
59
60
61
62
@@ -369,10 +369,16 @@
369 $(OX)\name$O : name_.c name.h
370 $(TCC) /Fo$@ -c name_.c
371
372 name_.c : $(SRCDIR)\name.c
373 translate$E $** > $@
374
375 $(OX)\path$O : path_.c path.h
376 $(TCC) /Fo$@ -c path_.c
377
378 path_.c : $(SRCDIR)\path.c
379 translate$E $** > $@
380
381 $(OX)\pivot$O : pivot_.c pivot.h
382 $(TCC) /Fo$@ -c pivot_.c
383
384 pivot_.c : $(SRCDIR)\pivot.c
@@ -581,7 +587,7 @@
587
588 zip_.c : $(SRCDIR)\zip.c
589 translate$E $** > $@
590
591 headers: makeheaders$E page_index.h VERSION.h
592 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h 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 db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h gzip_.c:gzip.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 leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.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 update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h
593 @copy /Y nul: headers
594

Keyboard Shortcuts

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