Fossil SCM

Add extension functions delta_apply(), delta_create(), delta_output_size(), and delta_parse() to the SQL connection for the "fossil sql" command.

drh 2019-02-25 15:10 trunk
Commit effa89302a7143d2dc6019413e4f3d320dba068520f7aea9ad4f4d1334e2da4c
--- a/src/deltafunc.c
+++ b/src/deltafunc.c
@@ -0,0 +1,237 @@
1
+/*
2
+** Copyright (c) 2019 D. Richard Hipp
3
+**
4
+** This program is free software; you can redistribute it and/or
5
+** modify it under the terms of the Simplified BSD License (also
6
+** known as the "2-Clause License" or "FreeBSD License".)
7
+**
8
+** This program is distributed in the hope that it will be useful,
9
+** but without any warranty; without even the implied warranty of
10
+** merchantability or fitness for a particular purpose.
11
+**
12
+** Author contact information:
13
+** [email protected]
14
+** http://www.hwaci.com/drh/
15
+**
16
+*******************************************************************************
17
+**
18
+** This module implements SQL interfaces to the delta logic. The code
19
+** here is adapted from the ext/misc/fossildelta.c extension in SQLite.
20
+*/
21
+#include "config.h"
22
+#include "deltafunc.h"
23
+
24
+/*
25
+** SQL functions: delta_create(X,Y)
26
+**
27
+** Return a delta that will transform X into Y.
28
+*/
29
+static void deltaCreateFunc(
30
+ sqlite3_context *context,
31
+ int argc,
32
+ sqlite3_value **argv
33
+){
34
+ const char *aOrig; int nOrig; /* old blob */
35
+ const char *aNew; int nNew; /* new blob */
36
+ char *aOut; int nOut; /* output delta */
37
+
38
+ assert( argc==2 );
39
+ if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
40
+ if( sqlite3_value_type(argv[1])==SQLITE_NULL ) return;
41
+ nOrig = sqlite3_value_bytes(argv[0]);
42
+ aOrig = (const char*)sqlite3_value_blob(argv[0]);
43
+ nNew = sqlite3_value_bytes(argv[1]);
44
+ aNew = (const char*)sqlite3_value_blob(argv[1]);
45
+ aOut = sqlite3_malloc64(nNew+70);
46
+ if( aOut==0 ){
47
+ sqlite3_result_error_nomem(context);
48
+ }else{
49
+ nOut = delta_create(aOrig, nOrig, aNew, nNew, aOut);
50
+ if( nOut<0 ){
51
+ sqlite3_free(aOut);
52
+ sqlite3_result_error(context, "cannot create fossil delta", -1);
53
+ }else{
54
+ sqlite3_result_blob(context, aOut, nOut, sqlite3_free);
55
+ }
56
+ }
57
+}
58
+
59
+/*
60
+** SQL functions: delta_apply(X,D)
61
+**
62
+** Return the result of applying delta D to input X.
63
+*/
64
+static void deltaApplyFunc(
65
+ sqlite3_context *context,
66
+ int argc,
67
+ sqlite3_value **argv
68
+){
69
+ const char *aOrig; int nOrig; /* The X input */
70
+ const char *aDelta; int nDelta; /* The input delta (D) */
71
+ char *aOut; int nOut, nOut2; /* The output */
72
+
73
+ assert( argc==2 );
74
+ if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
75
+ if( sqlite3_value_type(argv[1])==SQLITE_NULL ) return;
76
+ nOrig = sqlite3_value_bytes(argv[0]);
77
+ aOrig = (const char*)sqlite3_value_blob(argv[0]);
78
+ nDelta = sqlite3_value_bytes(argv[1]);
79
+ aDelta = (const char*)sqlite3_value_blob(argv[1]);
80
+
81
+ /* Figure out the size of the output */
82
+ nOut = delta_output_size(aDelta, nDelta);
83
+ if( nOut<0 ){
84
+ sqlite3_result_error(context, "corrupt fossil delta", -1);
85
+ return;
86
+ }
87
+ aOut = sqlite3_malloc64((sqlite3_int64)nOut+1);
88
+ if( aOut==0 ){
89
+ sqlite3_result_error_nomem(context);
90
+ }else{
91
+ nOut2 = delta_apply(aOrig, nOrig, aDelta, nDelta, aOut);
92
+ if( nOut2!=nOut ){
93
+ sqlite3_free(aOut);
94
+ sqlite3_result_error(context, "corrupt fossil delta", -1);
95
+ }else{
96
+ sqlite3_result_blob(context, aOut, nOut, sqlite3_free);
97
+ }
98
+ }
99
+}
100
+
101
+
102
+/*
103
+** SQL functions: delta_output_size(D)
104
+**
105
+** Return the size of the output that results from applying delta D.
106
+*/
107
+static void deltaOutputSizeFunc(
108
+ sqlite3_context *context,
109
+ int argc,
110
+ sqlite3_value **argv
111
+){
112
+ const char *aDelta; int nDelta; /* The input delta (D) */
113
+ int nOut; /* Size of output */
114
+ assert( argc==1 );
115
+ if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
116
+ nDelta = sqlite3_value_bytes(argv[0]);
117
+ aDelta = (const char*)sqlite3_value_blob(argv[0]);
118
+
119
+ /* Figure out the size of the output */
120
+ nOut = delta_output_size(aDelta, nDelta);
121
+ if( nOut<0 ){
122
+ sqlite3_result_error(context, "corrupt fossil delta", -1);
123
+ return;
124
+ }else{
125
+ sqlite3_result_int(context, nOut);
126
+ }
127
+}
128
+
129
+/*****************************************************************************
130
+** Table-valued SQL function: delta_parse(DELTA)
131
+**
132
+** Schema:
133
+**
134
+** CREATE TABLE delta_parse(
135
+** op TEXT,
136
+** a1 INT,
137
+** a2 ANY,
138
+** delta HIDDEN BLOB
139
+** );
140
+**
141
+** Given an input DELTA, this function parses the delta and returns
142
+** rows for each entry in the delta. The op column has one of the
143
+** values SIZE, COPY, INSERT, CHECKSUM, ERROR.
144
+**
145
+** Assuming no errors, the first row has op='SIZE'. a1 is the size of
146
+** the output in bytes and a2 is NULL.
147
+**
148
+** After the initial SIZE row, there are zero or more 'COPY' and/or 'INSERT'
149
+** rows. A COPY row means content is copied from the source into the
150
+** output. Column a1 is the number of bytes to copy and a2 is the offset
151
+** into source from which to begin copying. An INSERT row means to
152
+** insert text into the output stream. Column a1 is the number of bytes
153
+** to insert and column is a BLOB that contains the text to be inserted.
154
+**
155
+** The last row of a well-formed delta will have an op value of 'CHECKSUM'.
156
+** The a1 column will be the value of the checksum and a2 will be NULL.
157
+**
158
+** If the input delta is not well-formed, then a row with an op value
159
+** of 'ERROR' is returned. The a1 value of the ERROR row is the offset
160
+** into the delta where the error was encountered and a2 is NULL.
161
+*/
162
+typedef struct deltaparsevtab_vtab deltaparsevtab_vtab;
163
+typedef struct deltaparsevtab_cursor deltaparsevtab_cursor;
164
+struct deltaparsevtab_vtab {
165
+ sqlite3_vtab base; /* Base class - must be first */
166
+ /* No additional information needed */
167
+};
168
+struct deltaparsevtab_cursor {
169
+ sqlite3_vtab_cursor base; /* Base class - must be first */
170
+ char *aDelta; /* The delta being parsed */
171
+ int nDelta; /* Number of bytes in the delta */
172
+ int iCursor; /* Current cursor location */
173
+ int eOp; /* Name of current operator */
174
+ unsigned int a1, a2; /* Arguments to current operator */
175
+ int iNext; /* Next cursor value */
176
+};
177
+
178
+/* Operator names:
179
+*/
180
+static const char *
181
+** Copyright (c) 2019 D. Richard Hipp
182
+**
183
+** This program is free software; you can redistributeiaparsevtab_cursor *)pVtabCursor;
184
+ const char *a;
185
+ int i = 0;
186
+ pCur->eOp = DELTAPARSE_OP_ERROR;
187
+ if( idxNum!=1 ){
188
+ return SQLITE_OK;
189
+ }
190
+ pCur->nDelta = sqlite3_value_bytes(argv[0]);
191
+ a = (const char*)sqlite3_value_blob(argv[0]);
192
+ if( pCur->nDelta==0 || a==0 ){
193
+ return SQLITE_OK;
194
+ }
195
+ pCur->aDelta = sqlite3_malloc64( pCur->nDelta+1 );
196
+ if( pCur->aDelta==0 ){
197
+ pCur->nDelta = 0;
198
+ return SQLITE_NOMEM;
199
+ }
200
+ memcpy(pCur->aDelta, a, pCur->nDelta);
201
+ pCur->aDelta[pCur->nDelta] = 0;
202
+ a = pCur->aDelta;
203
+ pCur->eOp = DELTAPARSE_OP_SIZE;
204
+ pCur->a1 = deltaGetInt(&a, &i);
205
+ if( a[0]!='\n' ){
206
+ pCur->eOp = DELTAPARSE_OP_ERROR;
207
+ pCur->a1 = pCur->a2 = 0;
208
+ pCur->iNext = pCur->nDelta;
209
+ return SQLITE_OK;
210
+ }
211
+ a++;
212
+ pCur->iNext = (unsigned int)(a - pCur->aDelta);
213
+ return SQLITE_OK;
214
+}
215
+
216
+/*
217
+** SQLite will invoke this method one or more times while planning a query
218
+** that uses the virtual table. This routine needs to create
219
+** a query plan for each invocation and compute an estimated cost for that
220
+**t
221
+** plan.
222
+*/
223
+static int deltaparsevtabBestIndex(
224
+ sqlite3_vtab *tab,
225
+ sqlite3_index_info *pIdxInfo
226
+){
227
+ int i;
228
+ for(i=0; i<pIdxInfo->nConstraint; i++){
229
+ if( pIdxInfo->aConstraint[i].iColumn != DELTAPARSEVTAB_DELTA ) continue;
230
+ if( pIdxInfo->aConstraint[i].usable==0 ) continue;
231
+ if( pIdxInfo->aConstraint[i].op!=SQLITE_INDEX_CONSTRAINT_EQ ) continue;
232
+ pIdxInfo->aConstraintUsage[i].argvIndex = 1;
233
+ pIdxInfo->aConstraintUsage[i].omit = 1;
234
+ pIdxInfo->estimatedCost = (double)1;
235
+ pIdxInfo->estimatedRows = 10;
236
+ pIdxInfo->idxNum = 1;
237
+
--- a/src/deltafunc.c
+++ b/src/deltafunc.c
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/deltafunc.c
+++ b/src/deltafunc.c
@@ -0,0 +1,237 @@
1 /*
2 ** Copyright (c) 2019 D. Richard Hipp
3 **
4 ** This program is free software; you can redistribute it and/or
5 ** modify it under the terms of the Simplified BSD License (also
6 ** known as the "2-Clause License" or "FreeBSD License".)
7 **
8 ** This program is distributed in the hope that it will be useful,
9 ** but without any warranty; without even the implied warranty of
10 ** merchantability or fitness for a particular purpose.
11 **
12 ** Author contact information:
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This module implements SQL interfaces to the delta logic. The code
19 ** here is adapted from the ext/misc/fossildelta.c extension in SQLite.
20 */
21 #include "config.h"
22 #include "deltafunc.h"
23
24 /*
25 ** SQL functions: delta_create(X,Y)
26 **
27 ** Return a delta that will transform X into Y.
28 */
29 static void deltaCreateFunc(
30 sqlite3_context *context,
31 int argc,
32 sqlite3_value **argv
33 ){
34 const char *aOrig; int nOrig; /* old blob */
35 const char *aNew; int nNew; /* new blob */
36 char *aOut; int nOut; /* output delta */
37
38 assert( argc==2 );
39 if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
40 if( sqlite3_value_type(argv[1])==SQLITE_NULL ) return;
41 nOrig = sqlite3_value_bytes(argv[0]);
42 aOrig = (const char*)sqlite3_value_blob(argv[0]);
43 nNew = sqlite3_value_bytes(argv[1]);
44 aNew = (const char*)sqlite3_value_blob(argv[1]);
45 aOut = sqlite3_malloc64(nNew+70);
46 if( aOut==0 ){
47 sqlite3_result_error_nomem(context);
48 }else{
49 nOut = delta_create(aOrig, nOrig, aNew, nNew, aOut);
50 if( nOut<0 ){
51 sqlite3_free(aOut);
52 sqlite3_result_error(context, "cannot create fossil delta", -1);
53 }else{
54 sqlite3_result_blob(context, aOut, nOut, sqlite3_free);
55 }
56 }
57 }
58
59 /*
60 ** SQL functions: delta_apply(X,D)
61 **
62 ** Return the result of applying delta D to input X.
63 */
64 static void deltaApplyFunc(
65 sqlite3_context *context,
66 int argc,
67 sqlite3_value **argv
68 ){
69 const char *aOrig; int nOrig; /* The X input */
70 const char *aDelta; int nDelta; /* The input delta (D) */
71 char *aOut; int nOut, nOut2; /* The output */
72
73 assert( argc==2 );
74 if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
75 if( sqlite3_value_type(argv[1])==SQLITE_NULL ) return;
76 nOrig = sqlite3_value_bytes(argv[0]);
77 aOrig = (const char*)sqlite3_value_blob(argv[0]);
78 nDelta = sqlite3_value_bytes(argv[1]);
79 aDelta = (const char*)sqlite3_value_blob(argv[1]);
80
81 /* Figure out the size of the output */
82 nOut = delta_output_size(aDelta, nDelta);
83 if( nOut<0 ){
84 sqlite3_result_error(context, "corrupt fossil delta", -1);
85 return;
86 }
87 aOut = sqlite3_malloc64((sqlite3_int64)nOut+1);
88 if( aOut==0 ){
89 sqlite3_result_error_nomem(context);
90 }else{
91 nOut2 = delta_apply(aOrig, nOrig, aDelta, nDelta, aOut);
92 if( nOut2!=nOut ){
93 sqlite3_free(aOut);
94 sqlite3_result_error(context, "corrupt fossil delta", -1);
95 }else{
96 sqlite3_result_blob(context, aOut, nOut, sqlite3_free);
97 }
98 }
99 }
100
101
102 /*
103 ** SQL functions: delta_output_size(D)
104 **
105 ** Return the size of the output that results from applying delta D.
106 */
107 static void deltaOutputSizeFunc(
108 sqlite3_context *context,
109 int argc,
110 sqlite3_value **argv
111 ){
112 const char *aDelta; int nDelta; /* The input delta (D) */
113 int nOut; /* Size of output */
114 assert( argc==1 );
115 if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
116 nDelta = sqlite3_value_bytes(argv[0]);
117 aDelta = (const char*)sqlite3_value_blob(argv[0]);
118
119 /* Figure out the size of the output */
120 nOut = delta_output_size(aDelta, nDelta);
121 if( nOut<0 ){
122 sqlite3_result_error(context, "corrupt fossil delta", -1);
123 return;
124 }else{
125 sqlite3_result_int(context, nOut);
126 }
127 }
128
129 /*****************************************************************************
130 ** Table-valued SQL function: delta_parse(DELTA)
131 **
132 ** Schema:
133 **
134 ** CREATE TABLE delta_parse(
135 ** op TEXT,
136 ** a1 INT,
137 ** a2 ANY,
138 ** delta HIDDEN BLOB
139 ** );
140 **
141 ** Given an input DELTA, this function parses the delta and returns
142 ** rows for each entry in the delta. The op column has one of the
143 ** values SIZE, COPY, INSERT, CHECKSUM, ERROR.
144 **
145 ** Assuming no errors, the first row has op='SIZE'. a1 is the size of
146 ** the output in bytes and a2 is NULL.
147 **
148 ** After the initial SIZE row, there are zero or more 'COPY' and/or 'INSERT'
149 ** rows. A COPY row means content is copied from the source into the
150 ** output. Column a1 is the number of bytes to copy and a2 is the offset
151 ** into source from which to begin copying. An INSERT row means to
152 ** insert text into the output stream. Column a1 is the number of bytes
153 ** to insert and column is a BLOB that contains the text to be inserted.
154 **
155 ** The last row of a well-formed delta will have an op value of 'CHECKSUM'.
156 ** The a1 column will be the value of the checksum and a2 will be NULL.
157 **
158 ** If the input delta is not well-formed, then a row with an op value
159 ** of 'ERROR' is returned. The a1 value of the ERROR row is the offset
160 ** into the delta where the error was encountered and a2 is NULL.
161 */
162 typedef struct deltaparsevtab_vtab deltaparsevtab_vtab;
163 typedef struct deltaparsevtab_cursor deltaparsevtab_cursor;
164 struct deltaparsevtab_vtab {
165 sqlite3_vtab base; /* Base class - must be first */
166 /* No additional information needed */
167 };
168 struct deltaparsevtab_cursor {
169 sqlite3_vtab_cursor base; /* Base class - must be first */
170 char *aDelta; /* The delta being parsed */
171 int nDelta; /* Number of bytes in the delta */
172 int iCursor; /* Current cursor location */
173 int eOp; /* Name of current operator */
174 unsigned int a1, a2; /* Arguments to current operator */
175 int iNext; /* Next cursor value */
176 };
177
178 /* Operator names:
179 */
180 static const char *
181 ** Copyright (c) 2019 D. Richard Hipp
182 **
183 ** This program is free software; you can redistributeiaparsevtab_cursor *)pVtabCursor;
184 const char *a;
185 int i = 0;
186 pCur->eOp = DELTAPARSE_OP_ERROR;
187 if( idxNum!=1 ){
188 return SQLITE_OK;
189 }
190 pCur->nDelta = sqlite3_value_bytes(argv[0]);
191 a = (const char*)sqlite3_value_blob(argv[0]);
192 if( pCur->nDelta==0 || a==0 ){
193 return SQLITE_OK;
194 }
195 pCur->aDelta = sqlite3_malloc64( pCur->nDelta+1 );
196 if( pCur->aDelta==0 ){
197 pCur->nDelta = 0;
198 return SQLITE_NOMEM;
199 }
200 memcpy(pCur->aDelta, a, pCur->nDelta);
201 pCur->aDelta[pCur->nDelta] = 0;
202 a = pCur->aDelta;
203 pCur->eOp = DELTAPARSE_OP_SIZE;
204 pCur->a1 = deltaGetInt(&a, &i);
205 if( a[0]!='\n' ){
206 pCur->eOp = DELTAPARSE_OP_ERROR;
207 pCur->a1 = pCur->a2 = 0;
208 pCur->iNext = pCur->nDelta;
209 return SQLITE_OK;
210 }
211 a++;
212 pCur->iNext = (unsigned int)(a - pCur->aDelta);
213 return SQLITE_OK;
214 }
215
216 /*
217 ** SQLite will invoke this method one or more times while planning a query
218 ** that uses the virtual table. This routine needs to create
219 ** a query plan for each invocation and compute an estimated cost for that
220 **t
221 ** plan.
222 */
223 static int deltaparsevtabBestIndex(
224 sqlite3_vtab *tab,
225 sqlite3_index_info *pIdxInfo
226 ){
227 int i;
228 for(i=0; i<pIdxInfo->nConstraint; i++){
229 if( pIdxInfo->aConstraint[i].iColumn != DELTAPARSEVTAB_DELTA ) continue;
230 if( pIdxInfo->aConstraint[i].usable==0 ) continue;
231 if( pIdxInfo->aConstraint[i].op!=SQLITE_INDEX_CONSTRAINT_EQ ) continue;
232 pIdxInfo->aConstraintUsage[i].argvIndex = 1;
233 pIdxInfo->aConstraintUsage[i].omit = 1;
234 pIdxInfo->estimatedCost = (double)1;
235 pIdxInfo->estimatedRows = 10;
236 pIdxInfo->idxNum = 1;
237
+12
--- src/main.mk
+++ src/main.mk
@@ -41,10 +41,11 @@
4141
$(SRCDIR)/content.c \
4242
$(SRCDIR)/cookies.c \
4343
$(SRCDIR)/db.c \
4444
$(SRCDIR)/delta.c \
4545
$(SRCDIR)/deltacmd.c \
46
+ $(SRCDIR)/deltafunc.c \
4647
$(SRCDIR)/descendants.c \
4748
$(SRCDIR)/diff.c \
4849
$(SRCDIR)/diffcmd.c \
4950
$(SRCDIR)/dispatch.c \
5051
$(SRCDIR)/doc.c \
@@ -252,10 +253,11 @@
252253
$(OBJDIR)/content_.c \
253254
$(OBJDIR)/cookies_.c \
254255
$(OBJDIR)/db_.c \
255256
$(OBJDIR)/delta_.c \
256257
$(OBJDIR)/deltacmd_.c \
258
+ $(OBJDIR)/deltafunc_.c \
257259
$(OBJDIR)/descendants_.c \
258260
$(OBJDIR)/diff_.c \
259261
$(OBJDIR)/diffcmd_.c \
260262
$(OBJDIR)/dispatch_.c \
261263
$(OBJDIR)/doc_.c \
@@ -390,10 +392,11 @@
390392
$(OBJDIR)/content.o \
391393
$(OBJDIR)/cookies.o \
392394
$(OBJDIR)/db.o \
393395
$(OBJDIR)/delta.o \
394396
$(OBJDIR)/deltacmd.o \
397
+ $(OBJDIR)/deltafunc.o \
395398
$(OBJDIR)/descendants.o \
396399
$(OBJDIR)/diff.o \
397400
$(OBJDIR)/diffcmd.o \
398401
$(OBJDIR)/dispatch.o \
399402
$(OBJDIR)/doc.o \
@@ -724,10 +727,11 @@
724727
$(OBJDIR)/content_.c:$(OBJDIR)/content.h \
725728
$(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
726729
$(OBJDIR)/db_.c:$(OBJDIR)/db.h \
727730
$(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
728731
$(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
732
+ $(OBJDIR)/deltafunc_.c:$(OBJDIR)/deltafunc.h \
729733
$(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
730734
$(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
731735
$(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
732736
$(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
733737
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1055,10 +1059,18 @@
10551059
10561060
$(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
10571061
$(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
10581062
10591063
$(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
1064
+
1065
+$(OBJDIR)/deltafunc_.c: $(SRCDIR)/deltafunc.c $(OBJDIR)/translate
1066
+ $(OBJDIR)/translate $(SRCDIR)/deltafunc.c >$@
1067
+
1068
+$(OBJDIR)/deltafunc.o: $(OBJDIR)/deltafunc_.c $(OBJDIR)/deltafunc.h $(SRCDIR)/config.h
1069
+ $(XTCC) -o $(OBJDIR)/deltafunc.o -c $(OBJDIR)/deltafunc_.c
1070
+
1071
+$(OBJDIR)/deltafunc.h: $(OBJDIR)/headers
10601072
10611073
$(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(OBJDIR)/translate
10621074
$(OBJDIR)/translate $(SRCDIR)/descendants.c >$@
10631075
10641076
$(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
10651077
--- src/main.mk
+++ src/main.mk
@@ -41,10 +41,11 @@
41 $(SRCDIR)/content.c \
42 $(SRCDIR)/cookies.c \
43 $(SRCDIR)/db.c \
44 $(SRCDIR)/delta.c \
45 $(SRCDIR)/deltacmd.c \
 
46 $(SRCDIR)/descendants.c \
47 $(SRCDIR)/diff.c \
48 $(SRCDIR)/diffcmd.c \
49 $(SRCDIR)/dispatch.c \
50 $(SRCDIR)/doc.c \
@@ -252,10 +253,11 @@
252 $(OBJDIR)/content_.c \
253 $(OBJDIR)/cookies_.c \
254 $(OBJDIR)/db_.c \
255 $(OBJDIR)/delta_.c \
256 $(OBJDIR)/deltacmd_.c \
 
257 $(OBJDIR)/descendants_.c \
258 $(OBJDIR)/diff_.c \
259 $(OBJDIR)/diffcmd_.c \
260 $(OBJDIR)/dispatch_.c \
261 $(OBJDIR)/doc_.c \
@@ -390,10 +392,11 @@
390 $(OBJDIR)/content.o \
391 $(OBJDIR)/cookies.o \
392 $(OBJDIR)/db.o \
393 $(OBJDIR)/delta.o \
394 $(OBJDIR)/deltacmd.o \
 
395 $(OBJDIR)/descendants.o \
396 $(OBJDIR)/diff.o \
397 $(OBJDIR)/diffcmd.o \
398 $(OBJDIR)/dispatch.o \
399 $(OBJDIR)/doc.o \
@@ -724,10 +727,11 @@
724 $(OBJDIR)/content_.c:$(OBJDIR)/content.h \
725 $(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
726 $(OBJDIR)/db_.c:$(OBJDIR)/db.h \
727 $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
728 $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
 
729 $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
730 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
731 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
732 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
733 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1055,10 +1059,18 @@
1055
1056 $(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
1057 $(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
1058
1059 $(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1060
1061 $(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(OBJDIR)/translate
1062 $(OBJDIR)/translate $(SRCDIR)/descendants.c >$@
1063
1064 $(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
1065
--- src/main.mk
+++ src/main.mk
@@ -41,10 +41,11 @@
41 $(SRCDIR)/content.c \
42 $(SRCDIR)/cookies.c \
43 $(SRCDIR)/db.c \
44 $(SRCDIR)/delta.c \
45 $(SRCDIR)/deltacmd.c \
46 $(SRCDIR)/deltafunc.c \
47 $(SRCDIR)/descendants.c \
48 $(SRCDIR)/diff.c \
49 $(SRCDIR)/diffcmd.c \
50 $(SRCDIR)/dispatch.c \
51 $(SRCDIR)/doc.c \
@@ -252,10 +253,11 @@
253 $(OBJDIR)/content_.c \
254 $(OBJDIR)/cookies_.c \
255 $(OBJDIR)/db_.c \
256 $(OBJDIR)/delta_.c \
257 $(OBJDIR)/deltacmd_.c \
258 $(OBJDIR)/deltafunc_.c \
259 $(OBJDIR)/descendants_.c \
260 $(OBJDIR)/diff_.c \
261 $(OBJDIR)/diffcmd_.c \
262 $(OBJDIR)/dispatch_.c \
263 $(OBJDIR)/doc_.c \
@@ -390,10 +392,11 @@
392 $(OBJDIR)/content.o \
393 $(OBJDIR)/cookies.o \
394 $(OBJDIR)/db.o \
395 $(OBJDIR)/delta.o \
396 $(OBJDIR)/deltacmd.o \
397 $(OBJDIR)/deltafunc.o \
398 $(OBJDIR)/descendants.o \
399 $(OBJDIR)/diff.o \
400 $(OBJDIR)/diffcmd.o \
401 $(OBJDIR)/dispatch.o \
402 $(OBJDIR)/doc.o \
@@ -724,10 +727,11 @@
727 $(OBJDIR)/content_.c:$(OBJDIR)/content.h \
728 $(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
729 $(OBJDIR)/db_.c:$(OBJDIR)/db.h \
730 $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
731 $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
732 $(OBJDIR)/deltafunc_.c:$(OBJDIR)/deltafunc.h \
733 $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
734 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
735 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
736 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
737 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1055,10 +1059,18 @@
1059
1060 $(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
1061 $(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
1062
1063 $(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
1064
1065 $(OBJDIR)/deltafunc_.c: $(SRCDIR)/deltafunc.c $(OBJDIR)/translate
1066 $(OBJDIR)/translate $(SRCDIR)/deltafunc.c >$@
1067
1068 $(OBJDIR)/deltafunc.o: $(OBJDIR)/deltafunc_.c $(OBJDIR)/deltafunc.h $(SRCDIR)/config.h
1069 $(XTCC) -o $(OBJDIR)/deltafunc.o -c $(OBJDIR)/deltafunc_.c
1070
1071 $(OBJDIR)/deltafunc.h: $(OBJDIR)/headers
1072
1073 $(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(OBJDIR)/translate
1074 $(OBJDIR)/translate $(SRCDIR)/descendants.c >$@
1075
1076 $(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
1077
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -52,10 +52,11 @@
5252
content
5353
cookies
5454
db
5555
delta
5656
deltacmd
57
+ deltafunc
5758
descendants
5859
diff
5960
diffcmd
6061
dispatch
6162
doc
6263
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -52,10 +52,11 @@
52 content
53 cookies
54 db
55 delta
56 deltacmd
 
57 descendants
58 diff
59 diffcmd
60 dispatch
61 doc
62
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -52,10 +52,11 @@
52 content
53 cookies
54 db
55 delta
56 deltacmd
57 deltafunc
58 descendants
59 diff
60 diffcmd
61 dispatch
62 doc
63
+25 -9
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -148,10 +148,11 @@
148148
add_content_sql_commands(db);
149149
db_add_aux_functions(db);
150150
re_add_sql_func(db);
151151
search_sql_setup(db);
152152
foci_register(db);
153
+ deltafunc_init(db);
153154
g.repositoryOpen = 1;
154155
g.db = db;
155156
sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
156157
db_maybe_set_encryption_key(db, g.zRepositoryName);
157158
if( g.zLocalDbName ){
@@ -255,32 +256,47 @@
255256
** in ways that are unrecoverable. Be sure you know what you are doing before
256257
** running any SQL commands that modify the repository database.
257258
**
258259
** The following extensions to the usual SQLite commands are provided:
259260
**
260
-** content(X) Return the content of artifact X. X can be an
261
-** artifact hash or prefix or a tag.
261
+** checkin_mtime(X,Y) Return the mtime for the file Y (a BLOB.RID)
262
+** found in check-in X (another BLOB.RID value).
262263
**
263264
** compress(X) Compress text X.
264265
**
266
+** content(X) Return the content of artifact X. X can be an
267
+** artifact hash or hash prefix or a tag. Artifacts
268
+** are stored compressed and deltaed. This function
269
+** does all necessary decompression and undeltaing.
270
+**
265271
** decompress(X) Decompress text X. Undoes the work of
266272
** compress(X).
267273
**
268
-** checkin_mtime(X,Y) Return the mtime for the file Y (a BLOB.RID)
269
-** found in check-in X (another BLOB.RID value).
274
+** delta_apply(X,D) Apply delta D to source blob X and return
275
+** the result.
276
+**
277
+** delta_create(X,Y) Create and return a delta that will convert
278
+** X into Y.
279
+**
280
+** delta_output_size(D) Return the number of bytes of output to expect
281
+** when applying delta D
282
+**
283
+** delta_parse(D) A table-valued function that deconstructs
284
+** delta D and returns rows for each element of
285
+** that delta.
270286
**
271
-** symbolic_name_to_rid(X) Return the BLOB.RID corresponding to symbolic
272
-** name X.
287
+** files_of_checkin(X) A table-valued function that returns info on
288
+** all files contained in check-in X. Example:
289
+** SELECT * FROM files_of_checkin('trunk');
273290
**
274291
** now() Return the number of seconds since 1970.
275292
**
276293
** REGEXP The REGEXP operator works, unlike in
277294
** standard SQLite.
278295
**
279
-** files_of_checkin(X) A table-valued function that returns info on
280
-** all files contained in check-in X. Example:
281
-** SELECT * FROM files_of_checkin('trunk');
296
+** symbolic_name_to_rid(X) Return the BLOB.RID corresponding to symbolic
297
+** name X.
282298
*/
283299
void cmd_sqlite3(void){
284300
int noRepository;
285301
const char *zConfigDb;
286302
extern int sqlite3_shell(int, char**);
287303
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -148,10 +148,11 @@
148 add_content_sql_commands(db);
149 db_add_aux_functions(db);
150 re_add_sql_func(db);
151 search_sql_setup(db);
152 foci_register(db);
 
153 g.repositoryOpen = 1;
154 g.db = db;
155 sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
156 db_maybe_set_encryption_key(db, g.zRepositoryName);
157 if( g.zLocalDbName ){
@@ -255,32 +256,47 @@
255 ** in ways that are unrecoverable. Be sure you know what you are doing before
256 ** running any SQL commands that modify the repository database.
257 **
258 ** The following extensions to the usual SQLite commands are provided:
259 **
260 ** content(X) Return the content of artifact X. X can be an
261 ** artifact hash or prefix or a tag.
262 **
263 ** compress(X) Compress text X.
264 **
 
 
 
 
 
265 ** decompress(X) Decompress text X. Undoes the work of
266 ** compress(X).
267 **
268 ** checkin_mtime(X,Y) Return the mtime for the file Y (a BLOB.RID)
269 ** found in check-in X (another BLOB.RID value).
 
 
 
 
 
 
 
 
 
 
270 **
271 ** symbolic_name_to_rid(X) Return the BLOB.RID corresponding to symbolic
272 ** name X.
 
273 **
274 ** now() Return the number of seconds since 1970.
275 **
276 ** REGEXP The REGEXP operator works, unlike in
277 ** standard SQLite.
278 **
279 ** files_of_checkin(X) A table-valued function that returns info on
280 ** all files contained in check-in X. Example:
281 ** SELECT * FROM files_of_checkin('trunk');
282 */
283 void cmd_sqlite3(void){
284 int noRepository;
285 const char *zConfigDb;
286 extern int sqlite3_shell(int, char**);
287
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -148,10 +148,11 @@
148 add_content_sql_commands(db);
149 db_add_aux_functions(db);
150 re_add_sql_func(db);
151 search_sql_setup(db);
152 foci_register(db);
153 deltafunc_init(db);
154 g.repositoryOpen = 1;
155 g.db = db;
156 sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
157 db_maybe_set_encryption_key(db, g.zRepositoryName);
158 if( g.zLocalDbName ){
@@ -255,32 +256,47 @@
256 ** in ways that are unrecoverable. Be sure you know what you are doing before
257 ** running any SQL commands that modify the repository database.
258 **
259 ** The following extensions to the usual SQLite commands are provided:
260 **
261 ** checkin_mtime(X,Y) Return the mtime for the file Y (a BLOB.RID)
262 ** found in check-in X (another BLOB.RID value).
263 **
264 ** compress(X) Compress text X.
265 **
266 ** content(X) Return the content of artifact X. X can be an
267 ** artifact hash or hash prefix or a tag. Artifacts
268 ** are stored compressed and deltaed. This function
269 ** does all necessary decompression and undeltaing.
270 **
271 ** decompress(X) Decompress text X. Undoes the work of
272 ** compress(X).
273 **
274 ** delta_apply(X,D) Apply delta D to source blob X and return
275 ** the result.
276 **
277 ** delta_create(X,Y) Create and return a delta that will convert
278 ** X into Y.
279 **
280 ** delta_output_size(D) Return the number of bytes of output to expect
281 ** when applying delta D
282 **
283 ** delta_parse(D) A table-valued function that deconstructs
284 ** delta D and returns rows for each element of
285 ** that delta.
286 **
287 ** files_of_checkin(X) A table-valued function that returns info on
288 ** all files contained in check-in X. Example:
289 ** SELECT * FROM files_of_checkin('trunk');
290 **
291 ** now() Return the number of seconds since 1970.
292 **
293 ** REGEXP The REGEXP operator works, unlike in
294 ** standard SQLite.
295 **
296 ** symbolic_name_to_rid(X) Return the BLOB.RID corresponding to symbolic
297 ** name X.
 
298 */
299 void cmd_sqlite3(void){
300 int noRepository;
301 const char *zConfigDb;
302 extern int sqlite3_shell(int, char**);
303
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
2828
2929
SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
3030
3131
SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
3232
33
-SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
33
+SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3434
35
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
35
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3636
3737
3838
RC=$(DMDIR)\bin\rcc
3939
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
4040
@@ -49,11 +49,11 @@
4949
5050
$(OBJDIR)\fossil.res: $B\win\fossil.rc
5151
$(RC) $(RCFLAGS) -o$@ $**
5252
5353
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54
- +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
54
+ +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5555
+echo fossil >> $@
5656
+echo fossil >> $@
5757
+echo $(LIBS) >> $@
5858
+echo. >> $@
5959
+echo fossil >> $@
@@ -290,10 +290,16 @@
290290
$(OBJDIR)\deltacmd$O : deltacmd_.c deltacmd.h
291291
$(TCC) -o$@ -c deltacmd_.c
292292
293293
deltacmd_.c : $(SRCDIR)\deltacmd.c
294294
+translate$E $** > $@
295
+
296
+$(OBJDIR)\deltafunc$O : deltafunc_.c deltafunc.h
297
+ $(TCC) -o$@ -c deltafunc_.c
298
+
299
+deltafunc_.c : $(SRCDIR)\deltafunc.c
300
+ +translate$E $** > $@
295301
296302
$(OBJDIR)\descendants$O : descendants_.c descendants.h
297303
$(TCC) -o$@ -c descendants_.c
298304
299305
descendants_.c : $(SRCDIR)\descendants.c
@@ -946,7 +952,7 @@
946952
947953
zip_.c : $(SRCDIR)\zip.c
948954
+translate$E $** > $@
949955
950956
headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
951
- +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
957
+ +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
952958
@copy /Y nul: headers
953959
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -290,10 +290,16 @@
290 $(OBJDIR)\deltacmd$O : deltacmd_.c deltacmd.h
291 $(TCC) -o$@ -c deltacmd_.c
292
293 deltacmd_.c : $(SRCDIR)\deltacmd.c
294 +translate$E $** > $@
 
 
 
 
 
 
295
296 $(OBJDIR)\descendants$O : descendants_.c descendants.h
297 $(TCC) -o$@ -c descendants_.c
298
299 descendants_.c : $(SRCDIR)\descendants.c
@@ -946,7 +952,7 @@
946
947 zip_.c : $(SRCDIR)\zip.c
948 +translate$E $** > $@
949
950 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
951 +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
952 @copy /Y nul: headers
953
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -28,13 +28,13 @@
28
29 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB
30
31 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
32
33 SRC = add_.c alerts_.c allrepo_.c attach_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c webmail_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
34
35 OBJ = $(OBJDIR)\add$O $(OBJDIR)\alerts$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\backoffice$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\capabilities$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\deltafunc$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\forum$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\repolist$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\setupuser$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\smtp$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\webmail$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
36
37
38 RC=$(DMDIR)\bin\rcc
39 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
40
@@ -49,11 +49,11 @@
49
50 $(OBJDIR)\fossil.res: $B\win\fossil.rc
51 $(RC) $(RCFLAGS) -o$@ $**
52
53 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
54 +echo add alerts allrepo attach backoffice bag bisect blob branch browse builtin bundle cache capabilities captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd deltafunc descendants diff diffcmd dispatch doc encode etag event export file finfo foci forum fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp repolist report rss schema search security_audit setup setupuser sha1 sha1hard sha3 shun sitemap skins smtp sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile webmail wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
55 +echo fossil >> $@
56 +echo fossil >> $@
57 +echo $(LIBS) >> $@
58 +echo. >> $@
59 +echo fossil >> $@
@@ -290,10 +290,16 @@
290 $(OBJDIR)\deltacmd$O : deltacmd_.c deltacmd.h
291 $(TCC) -o$@ -c deltacmd_.c
292
293 deltacmd_.c : $(SRCDIR)\deltacmd.c
294 +translate$E $** > $@
295
296 $(OBJDIR)\deltafunc$O : deltafunc_.c deltafunc.h
297 $(TCC) -o$@ -c deltafunc_.c
298
299 deltafunc_.c : $(SRCDIR)\deltafunc.c
300 +translate$E $** > $@
301
302 $(OBJDIR)\descendants$O : descendants_.c descendants.h
303 $(TCC) -o$@ -c descendants_.c
304
305 descendants_.c : $(SRCDIR)\descendants.c
@@ -946,7 +952,7 @@
952
953 zip_.c : $(SRCDIR)\zip.c
954 +translate$E $** > $@
955
956 headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h
957 +makeheaders$E add_.c:add.h alerts_.c:alerts.h allrepo_.c:allrepo.h attach_.c:attach.h backoffice_.c:backoffice.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h capabilities_.c:capabilities.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h deltafunc_.c:deltafunc.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h forum_.c:forum.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h repolist_.c:repolist.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h setupuser_.c:setupuser.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h smtp_.c:smtp.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h webmail_.c:webmail.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
958 @copy /Y nul: headers
959
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -463,10 +463,11 @@
463463
$(SRCDIR)/content.c \
464464
$(SRCDIR)/cookies.c \
465465
$(SRCDIR)/db.c \
466466
$(SRCDIR)/delta.c \
467467
$(SRCDIR)/deltacmd.c \
468
+ $(SRCDIR)/deltafunc.c \
468469
$(SRCDIR)/descendants.c \
469470
$(SRCDIR)/diff.c \
470471
$(SRCDIR)/diffcmd.c \
471472
$(SRCDIR)/dispatch.c \
472473
$(SRCDIR)/doc.c \
@@ -674,10 +675,11 @@
674675
$(OBJDIR)/content_.c \
675676
$(OBJDIR)/cookies_.c \
676677
$(OBJDIR)/db_.c \
677678
$(OBJDIR)/delta_.c \
678679
$(OBJDIR)/deltacmd_.c \
680
+ $(OBJDIR)/deltafunc_.c \
679681
$(OBJDIR)/descendants_.c \
680682
$(OBJDIR)/diff_.c \
681683
$(OBJDIR)/diffcmd_.c \
682684
$(OBJDIR)/dispatch_.c \
683685
$(OBJDIR)/doc_.c \
@@ -812,10 +814,11 @@
812814
$(OBJDIR)/content.o \
813815
$(OBJDIR)/cookies.o \
814816
$(OBJDIR)/db.o \
815817
$(OBJDIR)/delta.o \
816818
$(OBJDIR)/deltacmd.o \
819
+ $(OBJDIR)/deltafunc.o \
817820
$(OBJDIR)/descendants.o \
818821
$(OBJDIR)/diff.o \
819822
$(OBJDIR)/diffcmd.o \
820823
$(OBJDIR)/dispatch.o \
821824
$(OBJDIR)/doc.o \
@@ -1169,10 +1172,11 @@
11691172
$(OBJDIR)/content_.c:$(OBJDIR)/content.h \
11701173
$(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
11711174
$(OBJDIR)/db_.c:$(OBJDIR)/db.h \
11721175
$(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
11731176
$(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
1177
+ $(OBJDIR)/deltafunc_.c:$(OBJDIR)/deltafunc.h \
11741178
$(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
11751179
$(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
11761180
$(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
11771181
$(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
11781182
$(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1502,10 +1506,18 @@
15021506
15031507
$(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
15041508
$(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
15051509
15061510
$(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
1511
+
1512
+$(OBJDIR)/deltafunc_.c: $(SRCDIR)/deltafunc.c $(TRANSLATE)
1513
+ $(TRANSLATE) $(SRCDIR)/deltafunc.c >$@
1514
+
1515
+$(OBJDIR)/deltafunc.o: $(OBJDIR)/deltafunc_.c $(OBJDIR)/deltafunc.h $(SRCDIR)/config.h
1516
+ $(XTCC) -o $(OBJDIR)/deltafunc.o -c $(OBJDIR)/deltafunc_.c
1517
+
1518
+$(OBJDIR)/deltafunc.h: $(OBJDIR)/headers
15071519
15081520
$(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(TRANSLATE)
15091521
$(TRANSLATE) $(SRCDIR)/descendants.c >$@
15101522
15111523
$(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
15121524
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -463,10 +463,11 @@
463 $(SRCDIR)/content.c \
464 $(SRCDIR)/cookies.c \
465 $(SRCDIR)/db.c \
466 $(SRCDIR)/delta.c \
467 $(SRCDIR)/deltacmd.c \
 
468 $(SRCDIR)/descendants.c \
469 $(SRCDIR)/diff.c \
470 $(SRCDIR)/diffcmd.c \
471 $(SRCDIR)/dispatch.c \
472 $(SRCDIR)/doc.c \
@@ -674,10 +675,11 @@
674 $(OBJDIR)/content_.c \
675 $(OBJDIR)/cookies_.c \
676 $(OBJDIR)/db_.c \
677 $(OBJDIR)/delta_.c \
678 $(OBJDIR)/deltacmd_.c \
 
679 $(OBJDIR)/descendants_.c \
680 $(OBJDIR)/diff_.c \
681 $(OBJDIR)/diffcmd_.c \
682 $(OBJDIR)/dispatch_.c \
683 $(OBJDIR)/doc_.c \
@@ -812,10 +814,11 @@
812 $(OBJDIR)/content.o \
813 $(OBJDIR)/cookies.o \
814 $(OBJDIR)/db.o \
815 $(OBJDIR)/delta.o \
816 $(OBJDIR)/deltacmd.o \
 
817 $(OBJDIR)/descendants.o \
818 $(OBJDIR)/diff.o \
819 $(OBJDIR)/diffcmd.o \
820 $(OBJDIR)/dispatch.o \
821 $(OBJDIR)/doc.o \
@@ -1169,10 +1172,11 @@
1169 $(OBJDIR)/content_.c:$(OBJDIR)/content.h \
1170 $(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
1171 $(OBJDIR)/db_.c:$(OBJDIR)/db.h \
1172 $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
1173 $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
 
1174 $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
1175 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
1176 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
1177 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
1178 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1502,10 +1506,18 @@
1502
1503 $(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
1504 $(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
1505
1506 $(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
 
1507
1508 $(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(TRANSLATE)
1509 $(TRANSLATE) $(SRCDIR)/descendants.c >$@
1510
1511 $(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
1512
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -463,10 +463,11 @@
463 $(SRCDIR)/content.c \
464 $(SRCDIR)/cookies.c \
465 $(SRCDIR)/db.c \
466 $(SRCDIR)/delta.c \
467 $(SRCDIR)/deltacmd.c \
468 $(SRCDIR)/deltafunc.c \
469 $(SRCDIR)/descendants.c \
470 $(SRCDIR)/diff.c \
471 $(SRCDIR)/diffcmd.c \
472 $(SRCDIR)/dispatch.c \
473 $(SRCDIR)/doc.c \
@@ -674,10 +675,11 @@
675 $(OBJDIR)/content_.c \
676 $(OBJDIR)/cookies_.c \
677 $(OBJDIR)/db_.c \
678 $(OBJDIR)/delta_.c \
679 $(OBJDIR)/deltacmd_.c \
680 $(OBJDIR)/deltafunc_.c \
681 $(OBJDIR)/descendants_.c \
682 $(OBJDIR)/diff_.c \
683 $(OBJDIR)/diffcmd_.c \
684 $(OBJDIR)/dispatch_.c \
685 $(OBJDIR)/doc_.c \
@@ -812,10 +814,11 @@
814 $(OBJDIR)/content.o \
815 $(OBJDIR)/cookies.o \
816 $(OBJDIR)/db.o \
817 $(OBJDIR)/delta.o \
818 $(OBJDIR)/deltacmd.o \
819 $(OBJDIR)/deltafunc.o \
820 $(OBJDIR)/descendants.o \
821 $(OBJDIR)/diff.o \
822 $(OBJDIR)/diffcmd.o \
823 $(OBJDIR)/dispatch.o \
824 $(OBJDIR)/doc.o \
@@ -1169,10 +1172,11 @@
1172 $(OBJDIR)/content_.c:$(OBJDIR)/content.h \
1173 $(OBJDIR)/cookies_.c:$(OBJDIR)/cookies.h \
1174 $(OBJDIR)/db_.c:$(OBJDIR)/db.h \
1175 $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h \
1176 $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h \
1177 $(OBJDIR)/deltafunc_.c:$(OBJDIR)/deltafunc.h \
1178 $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h \
1179 $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \
1180 $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \
1181 $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \
1182 $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \
@@ -1502,10 +1506,18 @@
1506
1507 $(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h
1508 $(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c
1509
1510 $(OBJDIR)/deltacmd.h: $(OBJDIR)/headers
1511
1512 $(OBJDIR)/deltafunc_.c: $(SRCDIR)/deltafunc.c $(TRANSLATE)
1513 $(TRANSLATE) $(SRCDIR)/deltafunc.c >$@
1514
1515 $(OBJDIR)/deltafunc.o: $(OBJDIR)/deltafunc_.c $(OBJDIR)/deltafunc.h $(SRCDIR)/config.h
1516 $(XTCC) -o $(OBJDIR)/deltafunc.o -c $(OBJDIR)/deltafunc_.c
1517
1518 $(OBJDIR)/deltafunc.h: $(OBJDIR)/headers
1519
1520 $(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(TRANSLATE)
1521 $(TRANSLATE) $(SRCDIR)/descendants.c >$@
1522
1523 $(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h
1524
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -403,10 +403,11 @@
403403
content_.c \
404404
cookies_.c \
405405
db_.c \
406406
delta_.c \
407407
deltacmd_.c \
408
+ deltafunc_.c \
408409
descendants_.c \
409410
diff_.c \
410411
diffcmd_.c \
411412
dispatch_.c \
412413
doc_.c \
@@ -613,10 +614,11 @@
613614
$(OX)\cookies$O \
614615
$(OX)\cson_amalgamation$O \
615616
$(OX)\db$O \
616617
$(OX)\delta$O \
617618
$(OX)\deltacmd$O \
619
+ $(OX)\deltafunc$O \
618620
$(OX)\descendants$O \
619621
$(OX)\diff$O \
620622
$(OX)\diffcmd$O \
621623
$(OX)\dispatch$O \
622624
$(OX)\doc$O \
@@ -814,10 +816,11 @@
814816
echo $(OX)\cookies.obj >> $@
815817
echo $(OX)\cson_amalgamation.obj >> $@
816818
echo $(OX)\db.obj >> $@
817819
echo $(OX)\delta.obj >> $@
818820
echo $(OX)\deltacmd.obj >> $@
821
+ echo $(OX)\deltafunc.obj >> $@
819822
echo $(OX)\descendants.obj >> $@
820823
echo $(OX)\diff.obj >> $@
821824
echo $(OX)\diffcmd.obj >> $@
822825
echo $(OX)\dispatch.obj >> $@
823826
echo $(OX)\doc.obj >> $@
@@ -1207,10 +1210,16 @@
12071210
$(OX)\deltacmd$O : deltacmd_.c deltacmd.h
12081211
$(TCC) /Fo$@ -c deltacmd_.c
12091212
12101213
deltacmd_.c : $(SRCDIR)\deltacmd.c
12111214
translate$E $** > $@
1215
+
1216
+$(OX)\deltafunc$O : deltafunc_.c deltafunc.h
1217
+ $(TCC) /Fo$@ -c deltafunc_.c
1218
+
1219
+deltafunc_.c : $(SRCDIR)\deltafunc.c
1220
+ translate$E $** > $@
12121221
12131222
$(OX)\descendants$O : descendants_.c descendants.h
12141223
$(TCC) /Fo$@ -c descendants_.c
12151224
12161225
descendants_.c : $(SRCDIR)\descendants.c
@@ -1893,10 +1902,11 @@
18931902
content_.c:content.h \
18941903
cookies_.c:cookies.h \
18951904
db_.c:db.h \
18961905
delta_.c:delta.h \
18971906
deltacmd_.c:deltacmd.h \
1907
+ deltafunc_.c:deltafunc.h \
18981908
descendants_.c:descendants.h \
18991909
diff_.c:diff.h \
19001910
diffcmd_.c:diffcmd.h \
19011911
dispatch_.c:dispatch.h \
19021912
doc_.c:doc.h \
19031913
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -403,10 +403,11 @@
403 content_.c \
404 cookies_.c \
405 db_.c \
406 delta_.c \
407 deltacmd_.c \
 
408 descendants_.c \
409 diff_.c \
410 diffcmd_.c \
411 dispatch_.c \
412 doc_.c \
@@ -613,10 +614,11 @@
613 $(OX)\cookies$O \
614 $(OX)\cson_amalgamation$O \
615 $(OX)\db$O \
616 $(OX)\delta$O \
617 $(OX)\deltacmd$O \
 
618 $(OX)\descendants$O \
619 $(OX)\diff$O \
620 $(OX)\diffcmd$O \
621 $(OX)\dispatch$O \
622 $(OX)\doc$O \
@@ -814,10 +816,11 @@
814 echo $(OX)\cookies.obj >> $@
815 echo $(OX)\cson_amalgamation.obj >> $@
816 echo $(OX)\db.obj >> $@
817 echo $(OX)\delta.obj >> $@
818 echo $(OX)\deltacmd.obj >> $@
 
819 echo $(OX)\descendants.obj >> $@
820 echo $(OX)\diff.obj >> $@
821 echo $(OX)\diffcmd.obj >> $@
822 echo $(OX)\dispatch.obj >> $@
823 echo $(OX)\doc.obj >> $@
@@ -1207,10 +1210,16 @@
1207 $(OX)\deltacmd$O : deltacmd_.c deltacmd.h
1208 $(TCC) /Fo$@ -c deltacmd_.c
1209
1210 deltacmd_.c : $(SRCDIR)\deltacmd.c
1211 translate$E $** > $@
 
 
 
 
 
 
1212
1213 $(OX)\descendants$O : descendants_.c descendants.h
1214 $(TCC) /Fo$@ -c descendants_.c
1215
1216 descendants_.c : $(SRCDIR)\descendants.c
@@ -1893,10 +1902,11 @@
1893 content_.c:content.h \
1894 cookies_.c:cookies.h \
1895 db_.c:db.h \
1896 delta_.c:delta.h \
1897 deltacmd_.c:deltacmd.h \
 
1898 descendants_.c:descendants.h \
1899 diff_.c:diff.h \
1900 diffcmd_.c:diffcmd.h \
1901 dispatch_.c:dispatch.h \
1902 doc_.c:doc.h \
1903
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -403,10 +403,11 @@
403 content_.c \
404 cookies_.c \
405 db_.c \
406 delta_.c \
407 deltacmd_.c \
408 deltafunc_.c \
409 descendants_.c \
410 diff_.c \
411 diffcmd_.c \
412 dispatch_.c \
413 doc_.c \
@@ -613,10 +614,11 @@
614 $(OX)\cookies$O \
615 $(OX)\cson_amalgamation$O \
616 $(OX)\db$O \
617 $(OX)\delta$O \
618 $(OX)\deltacmd$O \
619 $(OX)\deltafunc$O \
620 $(OX)\descendants$O \
621 $(OX)\diff$O \
622 $(OX)\diffcmd$O \
623 $(OX)\dispatch$O \
624 $(OX)\doc$O \
@@ -814,10 +816,11 @@
816 echo $(OX)\cookies.obj >> $@
817 echo $(OX)\cson_amalgamation.obj >> $@
818 echo $(OX)\db.obj >> $@
819 echo $(OX)\delta.obj >> $@
820 echo $(OX)\deltacmd.obj >> $@
821 echo $(OX)\deltafunc.obj >> $@
822 echo $(OX)\descendants.obj >> $@
823 echo $(OX)\diff.obj >> $@
824 echo $(OX)\diffcmd.obj >> $@
825 echo $(OX)\dispatch.obj >> $@
826 echo $(OX)\doc.obj >> $@
@@ -1207,10 +1210,16 @@
1210 $(OX)\deltacmd$O : deltacmd_.c deltacmd.h
1211 $(TCC) /Fo$@ -c deltacmd_.c
1212
1213 deltacmd_.c : $(SRCDIR)\deltacmd.c
1214 translate$E $** > $@
1215
1216 $(OX)\deltafunc$O : deltafunc_.c deltafunc.h
1217 $(TCC) /Fo$@ -c deltafunc_.c
1218
1219 deltafunc_.c : $(SRCDIR)\deltafunc.c
1220 translate$E $** > $@
1221
1222 $(OX)\descendants$O : descendants_.c descendants.h
1223 $(TCC) /Fo$@ -c descendants_.c
1224
1225 descendants_.c : $(SRCDIR)\descendants.c
@@ -1893,10 +1902,11 @@
1902 content_.c:content.h \
1903 cookies_.c:cookies.h \
1904 db_.c:db.h \
1905 delta_.c:delta.h \
1906 deltacmd_.c:deltacmd.h \
1907 deltafunc_.c:deltafunc.h \
1908 descendants_.c:descendants.h \
1909 diff_.c:diff.h \
1910 diffcmd_.c:diffcmd.h \
1911 dispatch_.c:dispatch.h \
1912 doc_.c:doc.h \
1913

Keyboard Shortcuts

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