Fossil SCM
First cut at supporting ETags: and If-None-Match: for cache control.
Commit
94c0b8ecd1bb745bdc5415e98166e3faa696fb7ff1d6a33d57708802a9b48726
Parent
203d82d80e67c64…
12 files changed
+6
-63
+1
+16
+11
+12
+1
+16
-1
+16
+2
-2
+10
-4
+12
+10
+6
-63
| --- src/cgi.c | ||
| +++ src/cgi.c | ||
| @@ -228,62 +228,10 @@ | ||
| 228 | 228 | "Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n", |
| 229 | 229 | zName, zValue, zPath, zSecure); |
| 230 | 230 | } |
| 231 | 231 | } |
| 232 | 232 | |
| 233 | -#if 0 | |
| 234 | -/* | |
| 235 | -** Add an ETag header line | |
| 236 | -*/ | |
| 237 | -static char *cgi_add_etag(char *zTxt, int nLen){ | |
| 238 | - MD5Context ctx; | |
| 239 | - unsigned char digest[16]; | |
| 240 | - int i, j; | |
| 241 | - char zETag[64]; | |
| 242 | - | |
| 243 | - MD5Init(&ctx); | |
| 244 | - MD5Update(&ctx,zTxt,nLen); | |
| 245 | - MD5Final(digest,&ctx); | |
| 246 | - for(j=i=0; i<16; i++,j+=2){ | |
| 247 | - bprintf(&zETag[j],sizeof(zETag)-j,"%02x",(int)digest[i]); | |
| 248 | - } | |
| 249 | - blob_appendf(&extraHeader, "ETag: %s\r\n", zETag); | |
| 250 | - return fossil_strdup(zETag); | |
| 251 | -} | |
| 252 | - | |
| 253 | -/* | |
| 254 | -** Do some cache control stuff. First, we generate an ETag and include it in | |
| 255 | -** the response headers. Second, we do whatever is necessary to determine if | |
| 256 | -** the request was asking about caching and whether we need to send back the | |
| 257 | -** response body. If we shouldn't send a body, return non-zero. | |
| 258 | -** | |
| 259 | -** Currently, we just check the ETag against any If-None-Match header. | |
| 260 | -** | |
| 261 | -** FIXME: In some cases (attachments, file contents) we could check | |
| 262 | -** If-Modified-Since headers and always include Last-Modified in responses. | |
| 263 | -*/ | |
| 264 | -static int check_cache_control(void){ | |
| 265 | - /* FIXME: there's some gotchas wth cookies and some headers. */ | |
| 266 | - char *zETag = cgi_add_etag(blob_buffer(&cgiContent),blob_size(&cgiContent)); | |
| 267 | - char *zMatch = P("HTTP_IF_NONE_MATCH"); | |
| 268 | - | |
| 269 | - if( zETag!=0 && zMatch!=0 ) { | |
| 270 | - char *zBuf = fossil_strdup(zMatch); | |
| 271 | - if( zBuf!=0 ){ | |
| 272 | - char *zTok = 0; | |
| 273 | - char *zPos; | |
| 274 | - for( zTok = strtok_r(zBuf, ",\"",&zPos); | |
| 275 | - zTok && fossil_stricmp(zTok,zETag); | |
| 276 | - zTok = strtok_r(0, ",\"",&zPos)){} | |
| 277 | - fossil_free(zBuf); | |
| 278 | - if(zTok) return 1; | |
| 279 | - } | |
| 280 | - } | |
| 281 | - | |
| 282 | - return 0; | |
| 283 | -} | |
| 284 | -#endif | |
| 285 | 233 | |
| 286 | 234 | /* |
| 287 | 235 | ** Return true if the response should be sent with Content-Encoding: gzip. |
| 288 | 236 | */ |
| 289 | 237 | static int is_gzippable(void){ |
| @@ -296,34 +244,29 @@ | ||
| 296 | 244 | /* |
| 297 | 245 | ** Do a normal HTTP reply |
| 298 | 246 | */ |
| 299 | 247 | void cgi_reply(void){ |
| 300 | 248 | int total_size; |
| 249 | + char *zETag; | |
| 301 | 250 | if( iReplyStatus<=0 ){ |
| 302 | 251 | iReplyStatus = 200; |
| 303 | 252 | zReplyStatus = "OK"; |
| 304 | 253 | } |
| 305 | 254 | |
| 306 | -#if 0 | |
| 307 | - if( iReplyStatus==200 && check_cache_control() ) { | |
| 308 | - /* change the status to "unchanged" and we can skip sending the | |
| 309 | - ** actual response body. Obviously we only do this when we _have_ a | |
| 310 | - ** body (code 200). | |
| 311 | - */ | |
| 312 | - iReplyStatus = 304; | |
| 313 | - zReplyStatus = "Not Modified"; | |
| 314 | - } | |
| 315 | -#endif | |
| 316 | - | |
| 317 | 255 | if( g.fullHttpReply ){ |
| 318 | 256 | fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus); |
| 319 | 257 | fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0))); |
| 320 | 258 | fprintf(g.httpOut, "Connection: close\r\n"); |
| 321 | 259 | fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n"); |
| 322 | 260 | }else{ |
| 323 | 261 | fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus); |
| 324 | 262 | } |
| 263 | + zETag = etag_generate(-1); | |
| 264 | + if( zETag ){ | |
| 265 | + fprintf(g.httpOut, "ETag: %s\r\n", zETag); | |
| 266 | + fprintf(g.httpOut, "Cache-Control: max-age=%d\r\n", etag_maxage()); | |
| 267 | + } | |
| 325 | 268 | |
| 326 | 269 | if( blob_size(&extraHeader)>0 ){ |
| 327 | 270 | fprintf(g.httpOut, "%s", blob_buffer(&extraHeader)); |
| 328 | 271 | } |
| 329 | 272 | |
| 330 | 273 |
| --- src/cgi.c | |
| +++ src/cgi.c | |
| @@ -228,62 +228,10 @@ | |
| 228 | "Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n", |
| 229 | zName, zValue, zPath, zSecure); |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | #if 0 |
| 234 | /* |
| 235 | ** Add an ETag header line |
| 236 | */ |
| 237 | static char *cgi_add_etag(char *zTxt, int nLen){ |
| 238 | MD5Context ctx; |
| 239 | unsigned char digest[16]; |
| 240 | int i, j; |
| 241 | char zETag[64]; |
| 242 | |
| 243 | MD5Init(&ctx); |
| 244 | MD5Update(&ctx,zTxt,nLen); |
| 245 | MD5Final(digest,&ctx); |
| 246 | for(j=i=0; i<16; i++,j+=2){ |
| 247 | bprintf(&zETag[j],sizeof(zETag)-j,"%02x",(int)digest[i]); |
| 248 | } |
| 249 | blob_appendf(&extraHeader, "ETag: %s\r\n", zETag); |
| 250 | return fossil_strdup(zETag); |
| 251 | } |
| 252 | |
| 253 | /* |
| 254 | ** Do some cache control stuff. First, we generate an ETag and include it in |
| 255 | ** the response headers. Second, we do whatever is necessary to determine if |
| 256 | ** the request was asking about caching and whether we need to send back the |
| 257 | ** response body. If we shouldn't send a body, return non-zero. |
| 258 | ** |
| 259 | ** Currently, we just check the ETag against any If-None-Match header. |
| 260 | ** |
| 261 | ** FIXME: In some cases (attachments, file contents) we could check |
| 262 | ** If-Modified-Since headers and always include Last-Modified in responses. |
| 263 | */ |
| 264 | static int check_cache_control(void){ |
| 265 | /* FIXME: there's some gotchas wth cookies and some headers. */ |
| 266 | char *zETag = cgi_add_etag(blob_buffer(&cgiContent),blob_size(&cgiContent)); |
| 267 | char *zMatch = P("HTTP_IF_NONE_MATCH"); |
| 268 | |
| 269 | if( zETag!=0 && zMatch!=0 ) { |
| 270 | char *zBuf = fossil_strdup(zMatch); |
| 271 | if( zBuf!=0 ){ |
| 272 | char *zTok = 0; |
| 273 | char *zPos; |
| 274 | for( zTok = strtok_r(zBuf, ",\"",&zPos); |
| 275 | zTok && fossil_stricmp(zTok,zETag); |
| 276 | zTok = strtok_r(0, ",\"",&zPos)){} |
| 277 | fossil_free(zBuf); |
| 278 | if(zTok) return 1; |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | return 0; |
| 283 | } |
| 284 | #endif |
| 285 | |
| 286 | /* |
| 287 | ** Return true if the response should be sent with Content-Encoding: gzip. |
| 288 | */ |
| 289 | static int is_gzippable(void){ |
| @@ -296,34 +244,29 @@ | |
| 296 | /* |
| 297 | ** Do a normal HTTP reply |
| 298 | */ |
| 299 | void cgi_reply(void){ |
| 300 | int total_size; |
| 301 | if( iReplyStatus<=0 ){ |
| 302 | iReplyStatus = 200; |
| 303 | zReplyStatus = "OK"; |
| 304 | } |
| 305 | |
| 306 | #if 0 |
| 307 | if( iReplyStatus==200 && check_cache_control() ) { |
| 308 | /* change the status to "unchanged" and we can skip sending the |
| 309 | ** actual response body. Obviously we only do this when we _have_ a |
| 310 | ** body (code 200). |
| 311 | */ |
| 312 | iReplyStatus = 304; |
| 313 | zReplyStatus = "Not Modified"; |
| 314 | } |
| 315 | #endif |
| 316 | |
| 317 | if( g.fullHttpReply ){ |
| 318 | fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus); |
| 319 | fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0))); |
| 320 | fprintf(g.httpOut, "Connection: close\r\n"); |
| 321 | fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n"); |
| 322 | }else{ |
| 323 | fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus); |
| 324 | } |
| 325 | |
| 326 | if( blob_size(&extraHeader)>0 ){ |
| 327 | fprintf(g.httpOut, "%s", blob_buffer(&extraHeader)); |
| 328 | } |
| 329 | |
| 330 |
| --- src/cgi.c | |
| +++ src/cgi.c | |
| @@ -228,62 +228,10 @@ | |
| 228 | "Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n", |
| 229 | zName, zValue, zPath, zSecure); |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | |
| 234 | /* |
| 235 | ** Return true if the response should be sent with Content-Encoding: gzip. |
| 236 | */ |
| 237 | static int is_gzippable(void){ |
| @@ -296,34 +244,29 @@ | |
| 244 | /* |
| 245 | ** Do a normal HTTP reply |
| 246 | */ |
| 247 | void cgi_reply(void){ |
| 248 | int total_size; |
| 249 | char *zETag; |
| 250 | if( iReplyStatus<=0 ){ |
| 251 | iReplyStatus = 200; |
| 252 | zReplyStatus = "OK"; |
| 253 | } |
| 254 | |
| 255 | if( g.fullHttpReply ){ |
| 256 | fprintf(g.httpOut, "HTTP/1.0 %d %s\r\n", iReplyStatus, zReplyStatus); |
| 257 | fprintf(g.httpOut, "Date: %s\r\n", cgi_rfc822_datestamp(time(0))); |
| 258 | fprintf(g.httpOut, "Connection: close\r\n"); |
| 259 | fprintf(g.httpOut, "X-UA-Compatible: IE=edge\r\n"); |
| 260 | }else{ |
| 261 | fprintf(g.httpOut, "Status: %d %s\r\n", iReplyStatus, zReplyStatus); |
| 262 | } |
| 263 | zETag = etag_generate(-1); |
| 264 | if( zETag ){ |
| 265 | fprintf(g.httpOut, "ETag: %s\r\n", zETag); |
| 266 | fprintf(g.httpOut, "Cache-Control: max-age=%d\r\n", etag_maxage()); |
| 267 | } |
| 268 | |
| 269 | if( blob_size(&extraHeader)>0 ){ |
| 270 | fprintf(g.httpOut, "%s", blob_buffer(&extraHeader)); |
| 271 | } |
| 272 | |
| 273 |
+1
| --- src/cookies.c | ||
| +++ src/cookies.c | ||
| @@ -123,10 +123,11 @@ | ||
| 123 | 123 | const char *zQVal = P(zQP); |
| 124 | 124 | int i; |
| 125 | 125 | cookie_parse(); |
| 126 | 126 | for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){} |
| 127 | 127 | if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){ |
| 128 | + etag_require(ETAG_COOKIE); | |
| 128 | 129 | cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1); |
| 129 | 130 | return; |
| 130 | 131 | } |
| 131 | 132 | if( zQVal==0 ) zQVal = zDflt; |
| 132 | 133 | if( (flags & COOKIE_WRITE)!=0 |
| 133 | 134 | |
| 134 | 135 | ADDED src/etag.c |
| --- src/cookies.c | |
| +++ src/cookies.c | |
| @@ -123,10 +123,11 @@ | |
| 123 | const char *zQVal = P(zQP); |
| 124 | int i; |
| 125 | cookie_parse(); |
| 126 | for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){} |
| 127 | if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){ |
| 128 | cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1); |
| 129 | return; |
| 130 | } |
| 131 | if( zQVal==0 ) zQVal = zDflt; |
| 132 | if( (flags & COOKIE_WRITE)!=0 |
| 133 | |
| 134 | DDED src/etag.c |
| --- src/cookies.c | |
| +++ src/cookies.c | |
| @@ -123,10 +123,11 @@ | |
| 123 | const char *zQVal = P(zQP); |
| 124 | int i; |
| 125 | cookie_parse(); |
| 126 | for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){} |
| 127 | if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){ |
| 128 | etag_require(ETAG_COOKIE); |
| 129 | cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1); |
| 130 | return; |
| 131 | } |
| 132 | if( zQVal==0 ) zQVal = zDflt; |
| 133 | if( (flags & COOKIE_WRITE)!=0 |
| 134 | |
| 135 | DDED src/etag.c |
+16
| --- a/src/etag.c | ||
| +++ b/src/etag.c | ||
| @@ -0,0 +1,16 @@ | ||
| 1 | +/* | |
| 2 | +** Copyright (c) 2018 iMaxAge = 86400;MATCH"); | |
| 3 | + if( zIfNoneMatch==0 ) return; | |
| 4 | + * | |
| 5 | +*(mEtag & code)==codeint mtimeDYNAMIC 0x08 return; | |
| 6 | + * | |
| 7 | +*(mEtag & code)==codeint mtime/* | |
| 8 | +** Copyright (c) 2018 iMaxAge = 86400;MATCH"); | |
| 9 | + if( zIfNoneMatch==0 ) return; | |
| 10 | + * | |
| 11 | +*(mEtag & code)==codeint mtimeTag; | |
| 12 | + * | |
| 13 | +*(mEtag /* | |
| 14 | +** CopyiKey | |
| 15 | +*/ | |
| 16 | +|| zTag[0]>=5 |
| --- a/src/etag.c | |
| +++ b/src/etag.c | |
| @@ -0,0 +1,16 @@ | |
| --- a/src/etag.c | |
| +++ b/src/etag.c | |
| @@ -0,0 +1,16 @@ | |
| 1 | /* |
| 2 | ** Copyright (c) 2018 iMaxAge = 86400;MATCH"); |
| 3 | if( zIfNoneMatch==0 ) return; |
| 4 | * |
| 5 | *(mEtag & code)==codeint mtimeDYNAMIC 0x08 return; |
| 6 | * |
| 7 | *(mEtag & code)==codeint mtime/* |
| 8 | ** Copyright (c) 2018 iMaxAge = 86400;MATCH"); |
| 9 | if( zIfNoneMatch==0 ) return; |
| 10 | * |
| 11 | *(mEtag & code)==codeint mtimeTag; |
| 12 | * |
| 13 | *(mEtag /* |
| 14 | ** CopyiKey |
| 15 | */ |
| 16 | || zTag[0]>=5 |
+11
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -1399,10 +1399,11 @@ | ||
| 1399 | 1399 | const char *zPathInfo = PD("PATH_INFO", ""); |
| 1400 | 1400 | char *zPath = NULL; |
| 1401 | 1401 | int i; |
| 1402 | 1402 | const CmdOrPage *pCmd = 0; |
| 1403 | 1403 | const char *zBase = g.zRepositoryName; |
| 1404 | + const char *zETag = 0; | |
| 1404 | 1405 | |
| 1405 | 1406 | /* Handle universal query parameters */ |
| 1406 | 1407 | if( PB("utc") ){ |
| 1407 | 1408 | g.fTimeFormat = 1; |
| 1408 | 1409 | }else if( PB("localtime") ){ |
| @@ -1627,10 +1628,19 @@ | ||
| 1627 | 1628 | /* Special case: If the content mimetype shows that it is "fossil sync" |
| 1628 | 1629 | ** payload, then pretend that the PATH_INFO is /xfer so that we always |
| 1629 | 1630 | ** invoke the sync page. */ |
| 1630 | 1631 | zPathInfo = "/xfer"; |
| 1631 | 1632 | } |
| 1633 | + | |
| 1634 | + /* Check for an ETAG line | |
| 1635 | + */ | |
| 1636 | + zETag = P("HTTP_IF_NONE_MATCH"); | |
| 1637 | + if( etag_valid(zETag) ){ | |
| 1638 | + cgi_set_status(304, "Not Modified"); | |
| 1639 | + cgi_reply(); | |
| 1640 | + return; | |
| 1641 | + } | |
| 1632 | 1642 | |
| 1633 | 1643 | /* Use the first element of PATH_INFO as the page name |
| 1634 | 1644 | ** and deliver the appropriate page back to the user. |
| 1635 | 1645 | */ |
| 1636 | 1646 | set_base_url(0); |
| @@ -1764,10 +1774,11 @@ | ||
| 1764 | 1774 | if( !g.fNoThHook ){ |
| 1765 | 1775 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1766 | 1776 | }else{ |
| 1767 | 1777 | rc = TH_OK; |
| 1768 | 1778 | } |
| 1779 | + etag_require(CMDFLAG_TO_ETAG(pCmd->eType)); | |
| 1769 | 1780 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1770 | 1781 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1771 | 1782 | #endif |
| 1772 | 1783 | pCmd->xFunc(); |
| 1773 | 1784 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1774 | 1785 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1399,10 +1399,11 @@ | |
| 1399 | const char *zPathInfo = PD("PATH_INFO", ""); |
| 1400 | char *zPath = NULL; |
| 1401 | int i; |
| 1402 | const CmdOrPage *pCmd = 0; |
| 1403 | const char *zBase = g.zRepositoryName; |
| 1404 | |
| 1405 | /* Handle universal query parameters */ |
| 1406 | if( PB("utc") ){ |
| 1407 | g.fTimeFormat = 1; |
| 1408 | }else if( PB("localtime") ){ |
| @@ -1627,10 +1628,19 @@ | |
| 1627 | /* Special case: If the content mimetype shows that it is "fossil sync" |
| 1628 | ** payload, then pretend that the PATH_INFO is /xfer so that we always |
| 1629 | ** invoke the sync page. */ |
| 1630 | zPathInfo = "/xfer"; |
| 1631 | } |
| 1632 | |
| 1633 | /* Use the first element of PATH_INFO as the page name |
| 1634 | ** and deliver the appropriate page back to the user. |
| 1635 | */ |
| 1636 | set_base_url(0); |
| @@ -1764,10 +1774,11 @@ | |
| 1764 | if( !g.fNoThHook ){ |
| 1765 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1766 | }else{ |
| 1767 | rc = TH_OK; |
| 1768 | } |
| 1769 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1770 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1771 | #endif |
| 1772 | pCmd->xFunc(); |
| 1773 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1774 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1399,10 +1399,11 @@ | |
| 1399 | const char *zPathInfo = PD("PATH_INFO", ""); |
| 1400 | char *zPath = NULL; |
| 1401 | int i; |
| 1402 | const CmdOrPage *pCmd = 0; |
| 1403 | const char *zBase = g.zRepositoryName; |
| 1404 | const char *zETag = 0; |
| 1405 | |
| 1406 | /* Handle universal query parameters */ |
| 1407 | if( PB("utc") ){ |
| 1408 | g.fTimeFormat = 1; |
| 1409 | }else if( PB("localtime") ){ |
| @@ -1627,10 +1628,19 @@ | |
| 1628 | /* Special case: If the content mimetype shows that it is "fossil sync" |
| 1629 | ** payload, then pretend that the PATH_INFO is /xfer so that we always |
| 1630 | ** invoke the sync page. */ |
| 1631 | zPathInfo = "/xfer"; |
| 1632 | } |
| 1633 | |
| 1634 | /* Check for an ETAG line |
| 1635 | */ |
| 1636 | zETag = P("HTTP_IF_NONE_MATCH"); |
| 1637 | if( etag_valid(zETag) ){ |
| 1638 | cgi_set_status(304, "Not Modified"); |
| 1639 | cgi_reply(); |
| 1640 | return; |
| 1641 | } |
| 1642 | |
| 1643 | /* Use the first element of PATH_INFO as the page name |
| 1644 | ** and deliver the appropriate page back to the user. |
| 1645 | */ |
| 1646 | set_base_url(0); |
| @@ -1764,10 +1774,11 @@ | |
| 1774 | if( !g.fNoThHook ){ |
| 1775 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1776 | }else{ |
| 1777 | rc = TH_OK; |
| 1778 | } |
| 1779 | etag_require(CMDFLAG_TO_ETAG(pCmd->eType)); |
| 1780 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1781 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1782 | #endif |
| 1783 | pCmd->xFunc(); |
| 1784 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1785 |
+12
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -43,10 +43,11 @@ | ||
| 43 | 43 | $(SRCDIR)/diff.c \ |
| 44 | 44 | $(SRCDIR)/diffcmd.c \ |
| 45 | 45 | $(SRCDIR)/dispatch.c \ |
| 46 | 46 | $(SRCDIR)/doc.c \ |
| 47 | 47 | $(SRCDIR)/encode.c \ |
| 48 | + $(SRCDIR)/etag.c \ | |
| 48 | 49 | $(SRCDIR)/event.c \ |
| 49 | 50 | $(SRCDIR)/export.c \ |
| 50 | 51 | $(SRCDIR)/file.c \ |
| 51 | 52 | $(SRCDIR)/finfo.c \ |
| 52 | 53 | $(SRCDIR)/foci.c \ |
| @@ -243,10 +244,11 @@ | ||
| 243 | 244 | $(OBJDIR)/diff_.c \ |
| 244 | 245 | $(OBJDIR)/diffcmd_.c \ |
| 245 | 246 | $(OBJDIR)/dispatch_.c \ |
| 246 | 247 | $(OBJDIR)/doc_.c \ |
| 247 | 248 | $(OBJDIR)/encode_.c \ |
| 249 | + $(OBJDIR)/etag_.c \ | |
| 248 | 250 | $(OBJDIR)/event_.c \ |
| 249 | 251 | $(OBJDIR)/export_.c \ |
| 250 | 252 | $(OBJDIR)/file_.c \ |
| 251 | 253 | $(OBJDIR)/finfo_.c \ |
| 252 | 254 | $(OBJDIR)/foci_.c \ |
| @@ -372,10 +374,11 @@ | ||
| 372 | 374 | $(OBJDIR)/diff.o \ |
| 373 | 375 | $(OBJDIR)/diffcmd.o \ |
| 374 | 376 | $(OBJDIR)/dispatch.o \ |
| 375 | 377 | $(OBJDIR)/doc.o \ |
| 376 | 378 | $(OBJDIR)/encode.o \ |
| 379 | + $(OBJDIR)/etag.o \ | |
| 377 | 380 | $(OBJDIR)/event.o \ |
| 378 | 381 | $(OBJDIR)/export.o \ |
| 379 | 382 | $(OBJDIR)/file.o \ |
| 380 | 383 | $(OBJDIR)/finfo.o \ |
| 381 | 384 | $(OBJDIR)/foci.o \ |
| @@ -673,10 +676,11 @@ | ||
| 673 | 676 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 674 | 677 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 675 | 678 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 676 | 679 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 677 | 680 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 681 | + $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \ | |
| 678 | 682 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 679 | 683 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 680 | 684 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 681 | 685 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 682 | 686 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1016,10 +1020,18 @@ | ||
| 1016 | 1020 | |
| 1017 | 1021 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1018 | 1022 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1019 | 1023 | |
| 1020 | 1024 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1025 | + | |
| 1026 | +$(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(OBJDIR)/translate | |
| 1027 | + $(OBJDIR)/translate $(SRCDIR)/etag.c >$@ | |
| 1028 | + | |
| 1029 | +$(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h | |
| 1030 | + $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c | |
| 1031 | + | |
| 1032 | +$(OBJDIR)/etag.h: $(OBJDIR)/headers | |
| 1021 | 1033 | |
| 1022 | 1034 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate |
| 1023 | 1035 | $(OBJDIR)/translate $(SRCDIR)/event.c >$@ |
| 1024 | 1036 | |
| 1025 | 1037 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1026 | 1038 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -43,10 +43,11 @@ | |
| 43 | $(SRCDIR)/diff.c \ |
| 44 | $(SRCDIR)/diffcmd.c \ |
| 45 | $(SRCDIR)/dispatch.c \ |
| 46 | $(SRCDIR)/doc.c \ |
| 47 | $(SRCDIR)/encode.c \ |
| 48 | $(SRCDIR)/event.c \ |
| 49 | $(SRCDIR)/export.c \ |
| 50 | $(SRCDIR)/file.c \ |
| 51 | $(SRCDIR)/finfo.c \ |
| 52 | $(SRCDIR)/foci.c \ |
| @@ -243,10 +244,11 @@ | |
| 243 | $(OBJDIR)/diff_.c \ |
| 244 | $(OBJDIR)/diffcmd_.c \ |
| 245 | $(OBJDIR)/dispatch_.c \ |
| 246 | $(OBJDIR)/doc_.c \ |
| 247 | $(OBJDIR)/encode_.c \ |
| 248 | $(OBJDIR)/event_.c \ |
| 249 | $(OBJDIR)/export_.c \ |
| 250 | $(OBJDIR)/file_.c \ |
| 251 | $(OBJDIR)/finfo_.c \ |
| 252 | $(OBJDIR)/foci_.c \ |
| @@ -372,10 +374,11 @@ | |
| 372 | $(OBJDIR)/diff.o \ |
| 373 | $(OBJDIR)/diffcmd.o \ |
| 374 | $(OBJDIR)/dispatch.o \ |
| 375 | $(OBJDIR)/doc.o \ |
| 376 | $(OBJDIR)/encode.o \ |
| 377 | $(OBJDIR)/event.o \ |
| 378 | $(OBJDIR)/export.o \ |
| 379 | $(OBJDIR)/file.o \ |
| 380 | $(OBJDIR)/finfo.o \ |
| 381 | $(OBJDIR)/foci.o \ |
| @@ -673,10 +676,11 @@ | |
| 673 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 674 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 675 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 676 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 677 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 678 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 679 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 680 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 681 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 682 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1016,10 +1020,18 @@ | |
| 1016 | |
| 1017 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1018 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1019 | |
| 1020 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1021 | |
| 1022 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate |
| 1023 | $(OBJDIR)/translate $(SRCDIR)/event.c >$@ |
| 1024 | |
| 1025 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1026 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -43,10 +43,11 @@ | |
| 43 | $(SRCDIR)/diff.c \ |
| 44 | $(SRCDIR)/diffcmd.c \ |
| 45 | $(SRCDIR)/dispatch.c \ |
| 46 | $(SRCDIR)/doc.c \ |
| 47 | $(SRCDIR)/encode.c \ |
| 48 | $(SRCDIR)/etag.c \ |
| 49 | $(SRCDIR)/event.c \ |
| 50 | $(SRCDIR)/export.c \ |
| 51 | $(SRCDIR)/file.c \ |
| 52 | $(SRCDIR)/finfo.c \ |
| 53 | $(SRCDIR)/foci.c \ |
| @@ -243,10 +244,11 @@ | |
| 244 | $(OBJDIR)/diff_.c \ |
| 245 | $(OBJDIR)/diffcmd_.c \ |
| 246 | $(OBJDIR)/dispatch_.c \ |
| 247 | $(OBJDIR)/doc_.c \ |
| 248 | $(OBJDIR)/encode_.c \ |
| 249 | $(OBJDIR)/etag_.c \ |
| 250 | $(OBJDIR)/event_.c \ |
| 251 | $(OBJDIR)/export_.c \ |
| 252 | $(OBJDIR)/file_.c \ |
| 253 | $(OBJDIR)/finfo_.c \ |
| 254 | $(OBJDIR)/foci_.c \ |
| @@ -372,10 +374,11 @@ | |
| 374 | $(OBJDIR)/diff.o \ |
| 375 | $(OBJDIR)/diffcmd.o \ |
| 376 | $(OBJDIR)/dispatch.o \ |
| 377 | $(OBJDIR)/doc.o \ |
| 378 | $(OBJDIR)/encode.o \ |
| 379 | $(OBJDIR)/etag.o \ |
| 380 | $(OBJDIR)/event.o \ |
| 381 | $(OBJDIR)/export.o \ |
| 382 | $(OBJDIR)/file.o \ |
| 383 | $(OBJDIR)/finfo.o \ |
| 384 | $(OBJDIR)/foci.o \ |
| @@ -673,10 +676,11 @@ | |
| 676 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 677 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 678 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 679 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 680 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 681 | $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \ |
| 682 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 683 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 684 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 685 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 686 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1016,10 +1020,18 @@ | |
| 1020 | |
| 1021 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1022 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1023 | |
| 1024 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1025 | |
| 1026 | $(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(OBJDIR)/translate |
| 1027 | $(OBJDIR)/translate $(SRCDIR)/etag.c >$@ |
| 1028 | |
| 1029 | $(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h |
| 1030 | $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c |
| 1031 | |
| 1032 | $(OBJDIR)/etag.h: $(OBJDIR)/headers |
| 1033 | |
| 1034 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate |
| 1035 | $(OBJDIR)/translate $(SRCDIR)/event.c >$@ |
| 1036 | |
| 1037 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1038 |
+1
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -55,10 +55,11 @@ | ||
| 55 | 55 | diff |
| 56 | 56 | diffcmd |
| 57 | 57 | dispatch |
| 58 | 58 | doc |
| 59 | 59 | encode |
| 60 | + etag | |
| 60 | 61 | event |
| 61 | 62 | export |
| 62 | 63 | file |
| 63 | 64 | finfo |
| 64 | 65 | foci |
| 65 | 66 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -55,10 +55,11 @@ | |
| 55 | diff |
| 56 | diffcmd |
| 57 | dispatch |
| 58 | doc |
| 59 | encode |
| 60 | event |
| 61 | export |
| 62 | file |
| 63 | finfo |
| 64 | foci |
| 65 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -55,10 +55,11 @@ | |
| 55 | diff |
| 56 | diffcmd |
| 57 | dispatch |
| 58 | doc |
| 59 | encode |
| 60 | etag |
| 61 | event |
| 62 | export |
| 63 | file |
| 64 | finfo |
| 65 | foci |
| 66 |
+16
-1
| --- src/mkindex.c | ||
| +++ src/mkindex.c | ||
| @@ -89,10 +89,16 @@ | ||
| 89 | 89 | #define CMDFLAG_COMMAND 0x0010 /* A command */ |
| 90 | 90 | #define CMDFLAG_SETTING 0x0020 /* A setting */ |
| 91 | 91 | #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */ |
| 92 | 92 | #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */ |
| 93 | 93 | #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */ |
| 94 | +#define CMDFLAG_CONST 0x0000 /* ETAG_CONST */ | |
| 95 | +#define CMDFLAG_CONFIG 0x1000 /* ETAG_CONFIG */ | |
| 96 | +#define CMDFLAG_DATA 0x2000 /* ETAG_DATA */ | |
| 97 | +#define CMDFLAG_DYNAMIC 0x8000 /* ETAG_DYNAMIC - on by default */ | |
| 98 | +#define CMDFLAG_ETAG 0xf000 /* Mask of all ETAG entries */ | |
| 99 | +#define CMDFLAG_TO_ETAG(X) ((X)>>12) | |
| 94 | 100 | /**************************************************************************/ |
| 95 | 101 | |
| 96 | 102 | /* |
| 97 | 103 | ** Each entry looks like this: |
| 98 | 104 | */ |
| @@ -198,11 +204,11 @@ | ||
| 198 | 204 | return; |
| 199 | 205 | } |
| 200 | 206 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 201 | 207 | if( zLine[i]=='/' ) i++; |
| 202 | 208 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 203 | - aEntry[nUsed].eType = eType; | |
| 209 | + aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC; | |
| 204 | 210 | if( eType & CMDFLAG_WEBPAGE ){ |
| 205 | 211 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 206 | 212 | aEntry[nUsed].zPath[0] = '/'; |
| 207 | 213 | }else{ |
| 208 | 214 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +242,19 @@ | ||
| 236 | 242 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 237 | 243 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 238 | 244 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 239 | 245 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 240 | 246 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 247 | + }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){ | |
| 248 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 249 | + aEntry[nUsed].eType |= CMDFLAG_CONST; | |
| 250 | + }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){ | |
| 251 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 252 | + aEntry[nUsed].eType |= CMDFLAG_CONFIG; | |
| 253 | + }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){ | |
| 254 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 255 | + aEntry[nUsed].eType |= CMDFLAG_DATA; | |
| 241 | 256 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 242 | 257 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 243 | 258 | aEntry[nUsed].iWidth = 0; |
| 244 | 259 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 245 | 260 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 246 | 261 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -89,10 +89,16 @@ | |
| 89 | #define CMDFLAG_COMMAND 0x0010 /* A command */ |
| 90 | #define CMDFLAG_SETTING 0x0020 /* A setting */ |
| 91 | #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */ |
| 92 | #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */ |
| 93 | #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */ |
| 94 | /**************************************************************************/ |
| 95 | |
| 96 | /* |
| 97 | ** Each entry looks like this: |
| 98 | */ |
| @@ -198,11 +204,11 @@ | |
| 198 | return; |
| 199 | } |
| 200 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 201 | if( zLine[i]=='/' ) i++; |
| 202 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 203 | aEntry[nUsed].eType = eType; |
| 204 | if( eType & CMDFLAG_WEBPAGE ){ |
| 205 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 206 | aEntry[nUsed].zPath[0] = '/'; |
| 207 | }else{ |
| 208 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +242,19 @@ | |
| 236 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 237 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 238 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 239 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 240 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 241 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 242 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 243 | aEntry[nUsed].iWidth = 0; |
| 244 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 245 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 246 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -89,10 +89,16 @@ | |
| 89 | #define CMDFLAG_COMMAND 0x0010 /* A command */ |
| 90 | #define CMDFLAG_SETTING 0x0020 /* A setting */ |
| 91 | #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */ |
| 92 | #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */ |
| 93 | #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */ |
| 94 | #define CMDFLAG_CONST 0x0000 /* ETAG_CONST */ |
| 95 | #define CMDFLAG_CONFIG 0x1000 /* ETAG_CONFIG */ |
| 96 | #define CMDFLAG_DATA 0x2000 /* ETAG_DATA */ |
| 97 | #define CMDFLAG_DYNAMIC 0x8000 /* ETAG_DYNAMIC - on by default */ |
| 98 | #define CMDFLAG_ETAG 0xf000 /* Mask of all ETAG entries */ |
| 99 | #define CMDFLAG_TO_ETAG(X) ((X)>>12) |
| 100 | /**************************************************************************/ |
| 101 | |
| 102 | /* |
| 103 | ** Each entry looks like this: |
| 104 | */ |
| @@ -198,11 +204,11 @@ | |
| 204 | return; |
| 205 | } |
| 206 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 207 | if( zLine[i]=='/' ) i++; |
| 208 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 209 | aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC; |
| 210 | if( eType & CMDFLAG_WEBPAGE ){ |
| 211 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 212 | aEntry[nUsed].zPath[0] = '/'; |
| 213 | }else{ |
| 214 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +242,19 @@ | |
| 242 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 243 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 244 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 245 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 246 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 247 | }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){ |
| 248 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 249 | aEntry[nUsed].eType |= CMDFLAG_CONST; |
| 250 | }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){ |
| 251 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 252 | aEntry[nUsed].eType |= CMDFLAG_CONFIG; |
| 253 | }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){ |
| 254 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 255 | aEntry[nUsed].eType |= CMDFLAG_DATA; |
| 256 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 257 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 258 | aEntry[nUsed].iWidth = 0; |
| 259 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 260 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 261 |
+16
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -18,10 +18,25 @@ | ||
| 18 | 18 | ** Implementation of the Setup page |
| 19 | 19 | */ |
| 20 | 20 | #include "config.h" |
| 21 | 21 | #include <assert.h> |
| 22 | 22 | #include "setup.h" |
| 23 | + | |
| 24 | +/* | |
| 25 | +** Increment the "cfgcnt" variable, so that ETags will know that | |
| 26 | +** the configuration has changed. | |
| 27 | +*/ | |
| 28 | +void setup_incr_cfgcnt(void){ | |
| 29 | + static int once = 1; | |
| 30 | + if( once ){ | |
| 31 | + once = 0; | |
| 32 | + db_multi_exec("UPDATE config SET value=value+1 WHERE name='cfgcnt'"); | |
| 33 | + if( db_changes()==0 ){ | |
| 34 | + db_multi_exec("INSERT INTO config(name,value) VALUES('cfgcnt',1)"); | |
| 35 | + } | |
| 36 | + } | |
| 37 | +} | |
| 23 | 38 | |
| 24 | 39 | /* |
| 25 | 40 | ** Output a single entry for a menu generated using an HTML table. |
| 26 | 41 | ** If zLink is not NULL or an empty string, then it is the page that |
| 27 | 42 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -496,10 +511,11 @@ | ||
| 496 | 511 | db_multi_exec( |
| 497 | 512 | "REPLACE INTO user(uid,login,info,pw,cap,mtime) " |
| 498 | 513 | "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())", |
| 499 | 514 | uid, zLogin, P("info"), zPw, zCap |
| 500 | 515 | ); |
| 516 | + setup_incr_cfgcnt(); | |
| 501 | 517 | admin_log( "Updated user [%q] with capabilities [%q].", |
| 502 | 518 | zLogin, zCap ); |
| 503 | 519 | if( atoi(PD("all","0"))>0 ){ |
| 504 | 520 | Blob sql; |
| 505 | 521 | char *zErr = 0; |
| 506 | 522 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -18,10 +18,25 @@ | |
| 18 | ** Implementation of the Setup page |
| 19 | */ |
| 20 | #include "config.h" |
| 21 | #include <assert.h> |
| 22 | #include "setup.h" |
| 23 | |
| 24 | /* |
| 25 | ** Output a single entry for a menu generated using an HTML table. |
| 26 | ** If zLink is not NULL or an empty string, then it is the page that |
| 27 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -496,10 +511,11 @@ | |
| 496 | db_multi_exec( |
| 497 | "REPLACE INTO user(uid,login,info,pw,cap,mtime) " |
| 498 | "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())", |
| 499 | uid, zLogin, P("info"), zPw, zCap |
| 500 | ); |
| 501 | admin_log( "Updated user [%q] with capabilities [%q].", |
| 502 | zLogin, zCap ); |
| 503 | if( atoi(PD("all","0"))>0 ){ |
| 504 | Blob sql; |
| 505 | char *zErr = 0; |
| 506 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -18,10 +18,25 @@ | |
| 18 | ** Implementation of the Setup page |
| 19 | */ |
| 20 | #include "config.h" |
| 21 | #include <assert.h> |
| 22 | #include "setup.h" |
| 23 | |
| 24 | /* |
| 25 | ** Increment the "cfgcnt" variable, so that ETags will know that |
| 26 | ** the configuration has changed. |
| 27 | */ |
| 28 | void setup_incr_cfgcnt(void){ |
| 29 | static int once = 1; |
| 30 | if( once ){ |
| 31 | once = 0; |
| 32 | db_multi_exec("UPDATE config SET value=value+1 WHERE name='cfgcnt'"); |
| 33 | if( db_changes()==0 ){ |
| 34 | db_multi_exec("INSERT INTO config(name,value) VALUES('cfgcnt',1)"); |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | /* |
| 40 | ** Output a single entry for a menu generated using an HTML table. |
| 41 | ** If zLink is not NULL or an empty string, then it is the page that |
| 42 | ** the menu entry will hyperlink to. If zLink is NULL or "", then |
| @@ -496,10 +511,11 @@ | |
| 511 | db_multi_exec( |
| 512 | "REPLACE INTO user(uid,login,info,pw,cap,mtime) " |
| 513 | "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())", |
| 514 | uid, zLogin, P("info"), zPw, zCap |
| 515 | ); |
| 516 | setup_incr_cfgcnt(); |
| 517 | admin_log( "Updated user [%q] with capabilities [%q].", |
| 518 | zLogin, zCap ); |
| 519 | if( atoi(PD("all","0"))>0 ){ |
| 520 | Blob sql; |
| 521 | char *zErr = 0; |
| 522 |
+2
-2
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -1329,11 +1329,11 @@ | ||
| 1329 | 1329 | /* If execution reaches this point, the pattern was empty. Return NULL. */ |
| 1330 | 1330 | return 0; |
| 1331 | 1331 | } |
| 1332 | 1332 | |
| 1333 | 1333 | /* |
| 1334 | -** WEBPAGE: timeline | |
| 1334 | +** WEBPAGE: timeline data | |
| 1335 | 1335 | ** |
| 1336 | 1336 | ** Query parameters: |
| 1337 | 1337 | ** |
| 1338 | 1338 | ** a=TIMEORTAG After this event |
| 1339 | 1339 | ** b=TIMEORTAG Before this event |
| @@ -2510,11 +2510,11 @@ | ||
| 2510 | 2510 | } |
| 2511 | 2511 | db_finalize(&q); |
| 2512 | 2512 | } |
| 2513 | 2513 | |
| 2514 | 2514 | /* |
| 2515 | -** WEBPAGE: timewarps | |
| 2515 | +** WEBPAGE: timewarps data | |
| 2516 | 2516 | ** |
| 2517 | 2517 | ** Show all check-ins that are "timewarps". A timewarp is a |
| 2518 | 2518 | ** check-in that occurs before its parent, according to the |
| 2519 | 2519 | ** timestamp information on the check-in. This can only actually |
| 2520 | 2520 | ** happen, of course, if a users system clock is set incorrectly. |
| 2521 | 2521 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -1329,11 +1329,11 @@ | |
| 1329 | /* If execution reaches this point, the pattern was empty. Return NULL. */ |
| 1330 | return 0; |
| 1331 | } |
| 1332 | |
| 1333 | /* |
| 1334 | ** WEBPAGE: timeline |
| 1335 | ** |
| 1336 | ** Query parameters: |
| 1337 | ** |
| 1338 | ** a=TIMEORTAG After this event |
| 1339 | ** b=TIMEORTAG Before this event |
| @@ -2510,11 +2510,11 @@ | |
| 2510 | } |
| 2511 | db_finalize(&q); |
| 2512 | } |
| 2513 | |
| 2514 | /* |
| 2515 | ** WEBPAGE: timewarps |
| 2516 | ** |
| 2517 | ** Show all check-ins that are "timewarps". A timewarp is a |
| 2518 | ** check-in that occurs before its parent, according to the |
| 2519 | ** timestamp information on the check-in. This can only actually |
| 2520 | ** happen, of course, if a users system clock is set incorrectly. |
| 2521 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -1329,11 +1329,11 @@ | |
| 1329 | /* If execution reaches this point, the pattern was empty. Return NULL. */ |
| 1330 | return 0; |
| 1331 | } |
| 1332 | |
| 1333 | /* |
| 1334 | ** WEBPAGE: timeline data |
| 1335 | ** |
| 1336 | ** Query parameters: |
| 1337 | ** |
| 1338 | ** a=TIMEORTAG After this event |
| 1339 | ** b=TIMEORTAG Before this event |
| @@ -2510,11 +2510,11 @@ | |
| 2510 | } |
| 2511 | db_finalize(&q); |
| 2512 | } |
| 2513 | |
| 2514 | /* |
| 2515 | ** WEBPAGE: timewarps data |
| 2516 | ** |
| 2517 | ** Show all check-ins that are "timewarps". A timewarp is a |
| 2518 | ** check-in that occurs before its parent, according to the |
| 2519 | ** timestamp information on the check-in. This can only actually |
| 2520 | ** happen, of course, if a users system clock is set incorrectly. |
| 2521 |
+10
-4
| --- win/Makefile.dmc | ||
| +++ win/Makefile.dmc | ||
| @@ -28,13 +28,13 @@ | ||
| 28 | 28 | |
| 29 | 29 | SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB |
| 30 | 30 | |
| 31 | 31 | SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 32 | 32 | |
| 33 | -SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c | |
| 33 | +SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c | |
| 34 | 34 | |
| 35 | -OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 35 | +OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 36 | 36 | |
| 37 | 37 | |
| 38 | 38 | RC=$(DMDIR)\bin\rcc |
| 39 | 39 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 40 | 40 | |
| @@ -49,11 +49,11 @@ | ||
| 49 | 49 | |
| 50 | 50 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 51 | 51 | $(RC) $(RCFLAGS) -o$@ $** |
| 52 | 52 | |
| 53 | 53 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 54 | - +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@ | |
| 54 | + +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@ | |
| 55 | 55 | +echo fossil >> $@ |
| 56 | 56 | +echo fossil >> $@ |
| 57 | 57 | +echo $(LIBS) >> $@ |
| 58 | 58 | +echo. >> $@ |
| 59 | 59 | +echo fossil >> $@ |
| @@ -308,10 +308,16 @@ | ||
| 308 | 308 | $(OBJDIR)\encode$O : encode_.c encode.h |
| 309 | 309 | $(TCC) -o$@ -c encode_.c |
| 310 | 310 | |
| 311 | 311 | encode_.c : $(SRCDIR)\encode.c |
| 312 | 312 | +translate$E $** > $@ |
| 313 | + | |
| 314 | +$(OBJDIR)\etag$O : etag_.c etag.h | |
| 315 | + $(TCC) -o$@ -c etag_.c | |
| 316 | + | |
| 317 | +etag_.c : $(SRCDIR)\etag.c | |
| 318 | + +translate$E $** > $@ | |
| 313 | 319 | |
| 314 | 320 | $(OBJDIR)\event$O : event_.c event.h |
| 315 | 321 | $(TCC) -o$@ -c event_.c |
| 316 | 322 | |
| 317 | 323 | event_.c : $(SRCDIR)\event.c |
| @@ -892,7 +898,7 @@ | ||
| 892 | 898 | |
| 893 | 899 | zip_.c : $(SRCDIR)\zip.c |
| 894 | 900 | +translate$E $** > $@ |
| 895 | 901 | |
| 896 | 902 | headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h |
| 897 | - +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 903 | + +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 898 | 904 | @copy /Y nul: headers |
| 899 | 905 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -28,13 +28,13 @@ | |
| 28 | |
| 29 | SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB |
| 30 | |
| 31 | SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 32 | |
| 33 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c |
| 34 | |
| 35 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 36 | |
| 37 | |
| 38 | RC=$(DMDIR)\bin\rcc |
| 39 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 40 | |
| @@ -49,11 +49,11 @@ | |
| 49 | |
| 50 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 51 | $(RC) $(RCFLAGS) -o$@ $** |
| 52 | |
| 53 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 54 | +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@ |
| 55 | +echo fossil >> $@ |
| 56 | +echo fossil >> $@ |
| 57 | +echo $(LIBS) >> $@ |
| 58 | +echo. >> $@ |
| 59 | +echo fossil >> $@ |
| @@ -308,10 +308,16 @@ | |
| 308 | $(OBJDIR)\encode$O : encode_.c encode.h |
| 309 | $(TCC) -o$@ -c encode_.c |
| 310 | |
| 311 | encode_.c : $(SRCDIR)\encode.c |
| 312 | +translate$E $** > $@ |
| 313 | |
| 314 | $(OBJDIR)\event$O : event_.c event.h |
| 315 | $(TCC) -o$@ -c event_.c |
| 316 | |
| 317 | event_.c : $(SRCDIR)\event.c |
| @@ -892,7 +898,7 @@ | |
| 892 | |
| 893 | zip_.c : $(SRCDIR)\zip.c |
| 894 | +translate$E $** > $@ |
| 895 | |
| 896 | headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h |
| 897 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 898 | @copy /Y nul: headers |
| 899 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -28,13 +28,13 @@ | |
| 28 | |
| 29 | SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_USE_ALLOCA -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_USE_ZLIB -DSQLITE_INTROSPECTION_PRAGMAS -DSQLITE_ENABLE_DBPAGE_VTAB |
| 30 | |
| 31 | SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 32 | |
| 33 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c file_.c finfo_.c foci_.c fshell_.c fusefs_.c glob_.c graph_.c gzip_.c hname_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c piechart_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c security_audit_.c setup_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c |
| 34 | |
| 35 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\builtin$O $(OBJDIR)\bundle$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\cookies$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\dispatch$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\etag$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\foci$O $(OBJDIR)\fshell$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\hname$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\piechart$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\publish$O $(OBJDIR)\purge$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\security_audit$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\sha1hard$O $(OBJDIR)\sha3$O $(OBJDIR)\shun$O $(OBJDIR)\sitemap$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\statrep$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\unversioned$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 36 | |
| 37 | |
| 38 | RC=$(DMDIR)\bin\rcc |
| 39 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 40 | |
| @@ -49,11 +49,11 @@ | |
| 49 | |
| 50 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 51 | $(RC) $(RCFLAGS) -o$@ $** |
| 52 | |
| 53 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 54 | +echo add allrepo attach bag bisect blob branch browse builtin bundle cache captcha cgi checkin checkout clearsign clone comformat configure content cookies db delta deltacmd descendants diff diffcmd dispatch doc encode etag event export file finfo foci fshell fusefs glob graph gzip hname http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_status json_tag json_timeline json_user json_wiki leaf loadctrl login lookslike main manifest markdown markdown_html md5 merge merge3 moderate name path piechart pivot popen pqueue printf publish purge rebuild regexp report rss schema search security_audit setup sha1 sha1hard sha3 shun sitemap skins sqlcmd stash stat statrep style sync tag tar th_main timeline tkt tktsetup undo unicode unversioned update url user utf8 util verify vfile wiki wikiformat winfile winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@ |
| 55 | +echo fossil >> $@ |
| 56 | +echo fossil >> $@ |
| 57 | +echo $(LIBS) >> $@ |
| 58 | +echo. >> $@ |
| 59 | +echo fossil >> $@ |
| @@ -308,10 +308,16 @@ | |
| 308 | $(OBJDIR)\encode$O : encode_.c encode.h |
| 309 | $(TCC) -o$@ -c encode_.c |
| 310 | |
| 311 | encode_.c : $(SRCDIR)\encode.c |
| 312 | +translate$E $** > $@ |
| 313 | |
| 314 | $(OBJDIR)\etag$O : etag_.c etag.h |
| 315 | $(TCC) -o$@ -c etag_.c |
| 316 | |
| 317 | etag_.c : $(SRCDIR)\etag.c |
| 318 | +translate$E $** > $@ |
| 319 | |
| 320 | $(OBJDIR)\event$O : event_.c event.h |
| 321 | $(TCC) -o$@ -c event_.c |
| 322 | |
| 323 | event_.c : $(SRCDIR)\event.c |
| @@ -892,7 +898,7 @@ | |
| 898 | |
| 899 | zip_.c : $(SRCDIR)\zip.c |
| 900 | +translate$E $** > $@ |
| 901 | |
| 902 | headers: makeheaders$E page_index.h builtin_data.h default_css.h VERSION.h |
| 903 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h builtin_.c:builtin.h bundle_.c:bundle.h cache_.c:cache.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h cookies_.c:cookies.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h dispatch_.c:dispatch.h doc_.c:doc.h encode_.c:encode.h etag_.c:etag.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h foci_.c:foci.h fshell_.c:fshell.h fusefs_.c:fusefs.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h hname_.c:hname.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_status_.c:json_status.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h loadctrl_.c:loadctrl.h login_.c:login.h lookslike_.c:lookslike.h main_.c:main.h manifest_.c:manifest.h markdown_.c:markdown.h markdown_html_.c:markdown_html.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h moderate_.c:moderate.h name_.c:name.h path_.c:path.h piechart_.c:piechart.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h publish_.c:publish.h purge_.c:purge.h rebuild_.c:rebuild.h regexp_.c:regexp.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h security_audit_.c:security_audit.h setup_.c:setup.h sha1_.c:sha1.h sha1hard_.c:sha1hard.h sha3_.c:sha3.h shun_.c:shun.h sitemap_.c:sitemap.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h statrep_.c:statrep.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h unicode_.c:unicode.h unversioned_.c:unversioned.h update_.c:update.h url_.c:url.h user_.c:user.h utf8_.c:utf8.h util_.c:util.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winfile_.c:winfile.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 904 | @copy /Y nul: headers |
| 905 |
+12
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -452,10 +452,11 @@ | ||
| 452 | 452 | $(SRCDIR)/diff.c \ |
| 453 | 453 | $(SRCDIR)/diffcmd.c \ |
| 454 | 454 | $(SRCDIR)/dispatch.c \ |
| 455 | 455 | $(SRCDIR)/doc.c \ |
| 456 | 456 | $(SRCDIR)/encode.c \ |
| 457 | + $(SRCDIR)/etag.c \ | |
| 457 | 458 | $(SRCDIR)/event.c \ |
| 458 | 459 | $(SRCDIR)/export.c \ |
| 459 | 460 | $(SRCDIR)/file.c \ |
| 460 | 461 | $(SRCDIR)/finfo.c \ |
| 461 | 462 | $(SRCDIR)/foci.c \ |
| @@ -652,10 +653,11 @@ | ||
| 652 | 653 | $(OBJDIR)/diff_.c \ |
| 653 | 654 | $(OBJDIR)/diffcmd_.c \ |
| 654 | 655 | $(OBJDIR)/dispatch_.c \ |
| 655 | 656 | $(OBJDIR)/doc_.c \ |
| 656 | 657 | $(OBJDIR)/encode_.c \ |
| 658 | + $(OBJDIR)/etag_.c \ | |
| 657 | 659 | $(OBJDIR)/event_.c \ |
| 658 | 660 | $(OBJDIR)/export_.c \ |
| 659 | 661 | $(OBJDIR)/file_.c \ |
| 660 | 662 | $(OBJDIR)/finfo_.c \ |
| 661 | 663 | $(OBJDIR)/foci_.c \ |
| @@ -781,10 +783,11 @@ | ||
| 781 | 783 | $(OBJDIR)/diff.o \ |
| 782 | 784 | $(OBJDIR)/diffcmd.o \ |
| 783 | 785 | $(OBJDIR)/dispatch.o \ |
| 784 | 786 | $(OBJDIR)/doc.o \ |
| 785 | 787 | $(OBJDIR)/encode.o \ |
| 788 | + $(OBJDIR)/etag.o \ | |
| 786 | 789 | $(OBJDIR)/event.o \ |
| 787 | 790 | $(OBJDIR)/export.o \ |
| 788 | 791 | $(OBJDIR)/file.o \ |
| 789 | 792 | $(OBJDIR)/finfo.o \ |
| 790 | 793 | $(OBJDIR)/foci.o \ |
| @@ -1129,10 +1132,11 @@ | ||
| 1129 | 1132 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 1130 | 1133 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 1131 | 1134 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 1132 | 1135 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 1133 | 1136 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 1137 | + $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \ | |
| 1134 | 1138 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 1135 | 1139 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 1136 | 1140 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 1137 | 1141 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 1138 | 1142 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1474,10 +1478,18 @@ | ||
| 1474 | 1478 | |
| 1475 | 1479 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1476 | 1480 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1477 | 1481 | |
| 1478 | 1482 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1483 | + | |
| 1484 | +$(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(TRANSLATE) | |
| 1485 | + $(TRANSLATE) $(SRCDIR)/etag.c >$@ | |
| 1486 | + | |
| 1487 | +$(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h | |
| 1488 | + $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c | |
| 1489 | + | |
| 1490 | +$(OBJDIR)/etag.h: $(OBJDIR)/headers | |
| 1479 | 1491 | |
| 1480 | 1492 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE) |
| 1481 | 1493 | $(TRANSLATE) $(SRCDIR)/event.c >$@ |
| 1482 | 1494 | |
| 1483 | 1495 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1484 | 1496 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -452,10 +452,11 @@ | |
| 452 | $(SRCDIR)/diff.c \ |
| 453 | $(SRCDIR)/diffcmd.c \ |
| 454 | $(SRCDIR)/dispatch.c \ |
| 455 | $(SRCDIR)/doc.c \ |
| 456 | $(SRCDIR)/encode.c \ |
| 457 | $(SRCDIR)/event.c \ |
| 458 | $(SRCDIR)/export.c \ |
| 459 | $(SRCDIR)/file.c \ |
| 460 | $(SRCDIR)/finfo.c \ |
| 461 | $(SRCDIR)/foci.c \ |
| @@ -652,10 +653,11 @@ | |
| 652 | $(OBJDIR)/diff_.c \ |
| 653 | $(OBJDIR)/diffcmd_.c \ |
| 654 | $(OBJDIR)/dispatch_.c \ |
| 655 | $(OBJDIR)/doc_.c \ |
| 656 | $(OBJDIR)/encode_.c \ |
| 657 | $(OBJDIR)/event_.c \ |
| 658 | $(OBJDIR)/export_.c \ |
| 659 | $(OBJDIR)/file_.c \ |
| 660 | $(OBJDIR)/finfo_.c \ |
| 661 | $(OBJDIR)/foci_.c \ |
| @@ -781,10 +783,11 @@ | |
| 781 | $(OBJDIR)/diff.o \ |
| 782 | $(OBJDIR)/diffcmd.o \ |
| 783 | $(OBJDIR)/dispatch.o \ |
| 784 | $(OBJDIR)/doc.o \ |
| 785 | $(OBJDIR)/encode.o \ |
| 786 | $(OBJDIR)/event.o \ |
| 787 | $(OBJDIR)/export.o \ |
| 788 | $(OBJDIR)/file.o \ |
| 789 | $(OBJDIR)/finfo.o \ |
| 790 | $(OBJDIR)/foci.o \ |
| @@ -1129,10 +1132,11 @@ | |
| 1129 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 1130 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 1131 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 1132 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 1133 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 1134 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 1135 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 1136 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 1137 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 1138 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1474,10 +1478,18 @@ | |
| 1474 | |
| 1475 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1476 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1477 | |
| 1478 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1479 | |
| 1480 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE) |
| 1481 | $(TRANSLATE) $(SRCDIR)/event.c >$@ |
| 1482 | |
| 1483 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1484 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -452,10 +452,11 @@ | |
| 452 | $(SRCDIR)/diff.c \ |
| 453 | $(SRCDIR)/diffcmd.c \ |
| 454 | $(SRCDIR)/dispatch.c \ |
| 455 | $(SRCDIR)/doc.c \ |
| 456 | $(SRCDIR)/encode.c \ |
| 457 | $(SRCDIR)/etag.c \ |
| 458 | $(SRCDIR)/event.c \ |
| 459 | $(SRCDIR)/export.c \ |
| 460 | $(SRCDIR)/file.c \ |
| 461 | $(SRCDIR)/finfo.c \ |
| 462 | $(SRCDIR)/foci.c \ |
| @@ -652,10 +653,11 @@ | |
| 653 | $(OBJDIR)/diff_.c \ |
| 654 | $(OBJDIR)/diffcmd_.c \ |
| 655 | $(OBJDIR)/dispatch_.c \ |
| 656 | $(OBJDIR)/doc_.c \ |
| 657 | $(OBJDIR)/encode_.c \ |
| 658 | $(OBJDIR)/etag_.c \ |
| 659 | $(OBJDIR)/event_.c \ |
| 660 | $(OBJDIR)/export_.c \ |
| 661 | $(OBJDIR)/file_.c \ |
| 662 | $(OBJDIR)/finfo_.c \ |
| 663 | $(OBJDIR)/foci_.c \ |
| @@ -781,10 +783,11 @@ | |
| 783 | $(OBJDIR)/diff.o \ |
| 784 | $(OBJDIR)/diffcmd.o \ |
| 785 | $(OBJDIR)/dispatch.o \ |
| 786 | $(OBJDIR)/doc.o \ |
| 787 | $(OBJDIR)/encode.o \ |
| 788 | $(OBJDIR)/etag.o \ |
| 789 | $(OBJDIR)/event.o \ |
| 790 | $(OBJDIR)/export.o \ |
| 791 | $(OBJDIR)/file.o \ |
| 792 | $(OBJDIR)/finfo.o \ |
| 793 | $(OBJDIR)/foci.o \ |
| @@ -1129,10 +1132,11 @@ | |
| 1132 | $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h \ |
| 1133 | $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h \ |
| 1134 | $(OBJDIR)/dispatch_.c:$(OBJDIR)/dispatch.h \ |
| 1135 | $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h \ |
| 1136 | $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h \ |
| 1137 | $(OBJDIR)/etag_.c:$(OBJDIR)/etag.h \ |
| 1138 | $(OBJDIR)/event_.c:$(OBJDIR)/event.h \ |
| 1139 | $(OBJDIR)/export_.c:$(OBJDIR)/export.h \ |
| 1140 | $(OBJDIR)/file_.c:$(OBJDIR)/file.h \ |
| 1141 | $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h \ |
| 1142 | $(OBJDIR)/foci_.c:$(OBJDIR)/foci.h \ |
| @@ -1474,10 +1478,18 @@ | |
| 1478 | |
| 1479 | $(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h |
| 1480 | $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c |
| 1481 | |
| 1482 | $(OBJDIR)/encode.h: $(OBJDIR)/headers |
| 1483 | |
| 1484 | $(OBJDIR)/etag_.c: $(SRCDIR)/etag.c $(TRANSLATE) |
| 1485 | $(TRANSLATE) $(SRCDIR)/etag.c >$@ |
| 1486 | |
| 1487 | $(OBJDIR)/etag.o: $(OBJDIR)/etag_.c $(OBJDIR)/etag.h $(SRCDIR)/config.h |
| 1488 | $(XTCC) -o $(OBJDIR)/etag.o -c $(OBJDIR)/etag_.c |
| 1489 | |
| 1490 | $(OBJDIR)/etag.h: $(OBJDIR)/headers |
| 1491 | |
| 1492 | $(OBJDIR)/event_.c: $(SRCDIR)/event.c $(TRANSLATE) |
| 1493 | $(TRANSLATE) $(SRCDIR)/event.c >$@ |
| 1494 | |
| 1495 | $(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h |
| 1496 |
+10
| --- win/Makefile.msc | ||
| +++ win/Makefile.msc | ||
| @@ -382,10 +382,11 @@ | ||
| 382 | 382 | diff_.c \ |
| 383 | 383 | diffcmd_.c \ |
| 384 | 384 | dispatch_.c \ |
| 385 | 385 | doc_.c \ |
| 386 | 386 | encode_.c \ |
| 387 | + etag_.c \ | |
| 387 | 388 | event_.c \ |
| 388 | 389 | export_.c \ |
| 389 | 390 | file_.c \ |
| 390 | 391 | finfo_.c \ |
| 391 | 392 | foci_.c \ |
| @@ -581,10 +582,11 @@ | ||
| 581 | 582 | $(OX)\diff$O \ |
| 582 | 583 | $(OX)\diffcmd$O \ |
| 583 | 584 | $(OX)\dispatch$O \ |
| 584 | 585 | $(OX)\doc$O \ |
| 585 | 586 | $(OX)\encode$O \ |
| 587 | + $(OX)\etag$O \ | |
| 586 | 588 | $(OX)\event$O \ |
| 587 | 589 | $(OX)\export$O \ |
| 588 | 590 | $(OX)\file$O \ |
| 589 | 591 | $(OX)\finfo$O \ |
| 590 | 592 | $(OX)\foci$O \ |
| @@ -769,10 +771,11 @@ | ||
| 769 | 771 | echo $(OX)\diff.obj >> $@ |
| 770 | 772 | echo $(OX)\diffcmd.obj >> $@ |
| 771 | 773 | echo $(OX)\dispatch.obj >> $@ |
| 772 | 774 | echo $(OX)\doc.obj >> $@ |
| 773 | 775 | echo $(OX)\encode.obj >> $@ |
| 776 | + echo $(OX)\etag.obj >> $@ | |
| 774 | 777 | echo $(OX)\event.obj >> $@ |
| 775 | 778 | echo $(OX)\export.obj >> $@ |
| 776 | 779 | echo $(OX)\file.obj >> $@ |
| 777 | 780 | echo $(OX)\finfo.obj >> $@ |
| 778 | 781 | echo $(OX)\foci.obj >> $@ |
| @@ -1168,10 +1171,16 @@ | ||
| 1168 | 1171 | $(OX)\encode$O : encode_.c encode.h |
| 1169 | 1172 | $(TCC) /Fo$@ -c encode_.c |
| 1170 | 1173 | |
| 1171 | 1174 | encode_.c : $(SRCDIR)\encode.c |
| 1172 | 1175 | translate$E $** > $@ |
| 1176 | + | |
| 1177 | +$(OX)\etag$O : etag_.c etag.h | |
| 1178 | + $(TCC) /Fo$@ -c etag_.c | |
| 1179 | + | |
| 1180 | +etag_.c : $(SRCDIR)\etag.c | |
| 1181 | + translate$E $** > $@ | |
| 1173 | 1182 | |
| 1174 | 1183 | $(OX)\event$O : event_.c event.h |
| 1175 | 1184 | $(TCC) /Fo$@ -c event_.c |
| 1176 | 1185 | |
| 1177 | 1186 | event_.c : $(SRCDIR)\event.c |
| @@ -1785,10 +1794,11 @@ | ||
| 1785 | 1794 | diff_.c:diff.h \ |
| 1786 | 1795 | diffcmd_.c:diffcmd.h \ |
| 1787 | 1796 | dispatch_.c:dispatch.h \ |
| 1788 | 1797 | doc_.c:doc.h \ |
| 1789 | 1798 | encode_.c:encode.h \ |
| 1799 | + etag_.c:etag.h \ | |
| 1790 | 1800 | event_.c:event.h \ |
| 1791 | 1801 | export_.c:export.h \ |
| 1792 | 1802 | file_.c:file.h \ |
| 1793 | 1803 | finfo_.c:finfo.h \ |
| 1794 | 1804 | foci_.c:foci.h \ |
| 1795 | 1805 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -382,10 +382,11 @@ | |
| 382 | diff_.c \ |
| 383 | diffcmd_.c \ |
| 384 | dispatch_.c \ |
| 385 | doc_.c \ |
| 386 | encode_.c \ |
| 387 | event_.c \ |
| 388 | export_.c \ |
| 389 | file_.c \ |
| 390 | finfo_.c \ |
| 391 | foci_.c \ |
| @@ -581,10 +582,11 @@ | |
| 581 | $(OX)\diff$O \ |
| 582 | $(OX)\diffcmd$O \ |
| 583 | $(OX)\dispatch$O \ |
| 584 | $(OX)\doc$O \ |
| 585 | $(OX)\encode$O \ |
| 586 | $(OX)\event$O \ |
| 587 | $(OX)\export$O \ |
| 588 | $(OX)\file$O \ |
| 589 | $(OX)\finfo$O \ |
| 590 | $(OX)\foci$O \ |
| @@ -769,10 +771,11 @@ | |
| 769 | echo $(OX)\diff.obj >> $@ |
| 770 | echo $(OX)\diffcmd.obj >> $@ |
| 771 | echo $(OX)\dispatch.obj >> $@ |
| 772 | echo $(OX)\doc.obj >> $@ |
| 773 | echo $(OX)\encode.obj >> $@ |
| 774 | echo $(OX)\event.obj >> $@ |
| 775 | echo $(OX)\export.obj >> $@ |
| 776 | echo $(OX)\file.obj >> $@ |
| 777 | echo $(OX)\finfo.obj >> $@ |
| 778 | echo $(OX)\foci.obj >> $@ |
| @@ -1168,10 +1171,16 @@ | |
| 1168 | $(OX)\encode$O : encode_.c encode.h |
| 1169 | $(TCC) /Fo$@ -c encode_.c |
| 1170 | |
| 1171 | encode_.c : $(SRCDIR)\encode.c |
| 1172 | translate$E $** > $@ |
| 1173 | |
| 1174 | $(OX)\event$O : event_.c event.h |
| 1175 | $(TCC) /Fo$@ -c event_.c |
| 1176 | |
| 1177 | event_.c : $(SRCDIR)\event.c |
| @@ -1785,10 +1794,11 @@ | |
| 1785 | diff_.c:diff.h \ |
| 1786 | diffcmd_.c:diffcmd.h \ |
| 1787 | dispatch_.c:dispatch.h \ |
| 1788 | doc_.c:doc.h \ |
| 1789 | encode_.c:encode.h \ |
| 1790 | event_.c:event.h \ |
| 1791 | export_.c:export.h \ |
| 1792 | file_.c:file.h \ |
| 1793 | finfo_.c:finfo.h \ |
| 1794 | foci_.c:foci.h \ |
| 1795 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -382,10 +382,11 @@ | |
| 382 | diff_.c \ |
| 383 | diffcmd_.c \ |
| 384 | dispatch_.c \ |
| 385 | doc_.c \ |
| 386 | encode_.c \ |
| 387 | etag_.c \ |
| 388 | event_.c \ |
| 389 | export_.c \ |
| 390 | file_.c \ |
| 391 | finfo_.c \ |
| 392 | foci_.c \ |
| @@ -581,10 +582,11 @@ | |
| 582 | $(OX)\diff$O \ |
| 583 | $(OX)\diffcmd$O \ |
| 584 | $(OX)\dispatch$O \ |
| 585 | $(OX)\doc$O \ |
| 586 | $(OX)\encode$O \ |
| 587 | $(OX)\etag$O \ |
| 588 | $(OX)\event$O \ |
| 589 | $(OX)\export$O \ |
| 590 | $(OX)\file$O \ |
| 591 | $(OX)\finfo$O \ |
| 592 | $(OX)\foci$O \ |
| @@ -769,10 +771,11 @@ | |
| 771 | echo $(OX)\diff.obj >> $@ |
| 772 | echo $(OX)\diffcmd.obj >> $@ |
| 773 | echo $(OX)\dispatch.obj >> $@ |
| 774 | echo $(OX)\doc.obj >> $@ |
| 775 | echo $(OX)\encode.obj >> $@ |
| 776 | echo $(OX)\etag.obj >> $@ |
| 777 | echo $(OX)\event.obj >> $@ |
| 778 | echo $(OX)\export.obj >> $@ |
| 779 | echo $(OX)\file.obj >> $@ |
| 780 | echo $(OX)\finfo.obj >> $@ |
| 781 | echo $(OX)\foci.obj >> $@ |
| @@ -1168,10 +1171,16 @@ | |
| 1171 | $(OX)\encode$O : encode_.c encode.h |
| 1172 | $(TCC) /Fo$@ -c encode_.c |
| 1173 | |
| 1174 | encode_.c : $(SRCDIR)\encode.c |
| 1175 | translate$E $** > $@ |
| 1176 | |
| 1177 | $(OX)\etag$O : etag_.c etag.h |
| 1178 | $(TCC) /Fo$@ -c etag_.c |
| 1179 | |
| 1180 | etag_.c : $(SRCDIR)\etag.c |
| 1181 | translate$E $** > $@ |
| 1182 | |
| 1183 | $(OX)\event$O : event_.c event.h |
| 1184 | $(TCC) /Fo$@ -c event_.c |
| 1185 | |
| 1186 | event_.c : $(SRCDIR)\event.c |
| @@ -1785,10 +1794,11 @@ | |
| 1794 | diff_.c:diff.h \ |
| 1795 | diffcmd_.c:diffcmd.h \ |
| 1796 | dispatch_.c:dispatch.h \ |
| 1797 | doc_.c:doc.h \ |
| 1798 | encode_.c:encode.h \ |
| 1799 | etag_.c:etag.h \ |
| 1800 | event_.c:event.h \ |
| 1801 | export_.c:export.h \ |
| 1802 | file_.c:file.h \ |
| 1803 | finfo_.c:finfo.h \ |
| 1804 | foci_.c:foci.h \ |
| 1805 |