Fossil SCM
Add support for the ETag: and If-None-Match: headers for improved cache control. Currently this only works for /uv but the mechanism is reasonably general and can be extended to other pages.
Commit
787896c5eb427c4e11f716c9fdc4faa82ca53d197c61d14208405fba278d7db1
Parent
203d82d80e67c64…
14 files changed
+6
-63
+1
+8
-5
+5
+2
+12
+1
+29
-10
+16
+2
-2
+5
-1
+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 |
| --- src/cookies.c | |
| +++ src/cookies.c | |
| @@ -123,10 +123,11 @@ | |
| 123 | const char *zQVal = P(zQP); |
| 124 | int i; |
| 125 | cookie_parse(); |
| 126 | for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){} |
| 127 | if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){ |
| 128 | cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1); |
| 129 | return; |
| 130 | } |
| 131 | if( zQVal==0 ) zQVal = zDflt; |
| 132 | if( (flags & COOKIE_WRITE)!=0 |
| 133 |
| --- src/cookies.c | |
| +++ src/cookies.c | |
| @@ -123,10 +123,11 @@ | |
| 123 | const char *zQVal = P(zQP); |
| 124 | int i; |
| 125 | cookie_parse(); |
| 126 | for(i=0; i<cookies.nParam && strcmp(zPName,cookies.aParam[i].zPName); i++){} |
| 127 | if( zQVal==0 && (flags & COOKIE_READ)!=0 && i<cookies.nParam ){ |
| 128 | etag_require(ETAG_COOKIE); |
| 129 | cgi_set_parameter_nocopy(zQP, cookies.aParam[i].zPValue, 1); |
| 130 | return; |
| 131 | } |
| 132 | if( zQVal==0 ) zQVal = zDflt; |
| 133 | if( (flags & COOKIE_WRITE)!=0 |
| 134 |
+8
-5
| --- src/doc.c | ||
| +++ src/doc.c | ||
| @@ -639,15 +639,18 @@ | ||
| 639 | 639 | }else{ |
| 640 | 640 | goto doc_not_found; |
| 641 | 641 | } |
| 642 | 642 | } |
| 643 | 643 | if( isUV ){ |
| 644 | - if( db_table_exists("repository","unversioned") | |
| 645 | - && unversioned_content(zName, &filebody)==0 | |
| 646 | - ){ | |
| 647 | - rid = 1; | |
| 648 | - zDfltTitle = zName; | |
| 644 | + if( db_table_exists("repository","unversioned") ){ | |
| 645 | + char *zHash; | |
| 646 | + zHash = db_text(0, "SELECT hash FROM unversioned WHERE name=%Q",zName); | |
| 647 | + etag_require_hash(zHash); | |
| 648 | + if( unversioned_content(zName, &filebody)==0 ){ | |
| 649 | + rid = 1; | |
| 650 | + zDfltTitle = zName; | |
| 651 | + } | |
| 649 | 652 | } |
| 650 | 653 | }else if( fossil_strcmp(zCheckin,"ckout")==0 ){ |
| 651 | 654 | /* Read from the local checkout */ |
| 652 | 655 | char *zFullpath; |
| 653 | 656 | db_must_be_within_tree(); |
| 654 | 657 | |
| 655 | 658 | ADDED src/etag.c |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -639,15 +639,18 @@ | |
| 639 | }else{ |
| 640 | goto doc_not_found; |
| 641 | } |
| 642 | } |
| 643 | if( isUV ){ |
| 644 | if( db_table_exists("repository","unversioned") |
| 645 | && unversioned_content(zName, &filebody)==0 |
| 646 | ){ |
| 647 | rid = 1; |
| 648 | zDfltTitle = zName; |
| 649 | } |
| 650 | }else if( fossil_strcmp(zCheckin,"ckout")==0 ){ |
| 651 | /* Read from the local checkout */ |
| 652 | char *zFullpath; |
| 653 | db_must_be_within_tree(); |
| 654 | |
| 655 | DDED src/etag.c |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -639,15 +639,18 @@ | |
| 639 | }else{ |
| 640 | goto doc_not_found; |
| 641 | } |
| 642 | } |
| 643 | if( isUV ){ |
| 644 | if( db_table_exists("repository","unversioned") ){ |
| 645 | char *zHash; |
| 646 | zHash = db_text(0, "SELECT hash FROM unversioned WHERE name=%Q",zName); |
| 647 | etag_require_hash(zHash); |
| 648 | if( unversioned_content(zName, &filebody)==0 ){ |
| 649 | rid = 1; |
| 650 | zDfltTitle = zName; |
| 651 | } |
| 652 | } |
| 653 | }else if( fossil_strcmp(zCheckin,"ckout")==0 ){ |
| 654 | /* Read from the local checkout */ |
| 655 | char *zFullpath; |
| 656 | db_must_be_within_tree(); |
| 657 | |
| 658 | DDED src/etag.c |
+5
| --- a/src/etag.c | ||
| +++ b/src/etag.c | ||
| @@ -0,0 +1,5 @@ | ||
| 1 | +/* | |
| 2 | +** Copyright (c) 2018 iMaxAge = 86400;MATCH"); | |
| 3 | + if( zIfNoneMatch==0 ) return; | |
| 4 | + * | |
| 5 | +*(mEtag & code)==code |
| --- a/src/etag.c | |
| +++ b/src/etag.c | |
| @@ -0,0 +1,5 @@ | |
| --- a/src/etag.c | |
| +++ b/src/etag.c | |
| @@ -0,0 +1,5 @@ | |
| 1 | /* |
| 2 | ** Copyright (c) 2018 iMaxAge = 86400;MATCH"); |
| 3 | if( zIfNoneMatch==0 ) return; |
| 4 | * |
| 5 | *(mEtag & code)==code |
+2
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -1399,10 +1399,11 @@ | ||
| 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") ){ |
| @@ -1764,10 +1765,11 @@ | ||
| 1764 | 1765 | if( !g.fNoThHook ){ |
| 1765 | 1766 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1766 | 1767 | }else{ |
| 1767 | 1768 | rc = TH_OK; |
| 1768 | 1769 | } |
| 1770 | + etag_require(CMDFLAG_TO_ETAG(pCmd->eType)); | |
| 1769 | 1771 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1770 | 1772 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1771 | 1773 | #endif |
| 1772 | 1774 | pCmd->xFunc(); |
| 1773 | 1775 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1774 | 1776 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1399,10 +1399,11 @@ | |
| 1399 | const char *zPathInfo = PD("PATH_INFO", ""); |
| 1400 | char *zPath = NULL; |
| 1401 | int i; |
| 1402 | const CmdOrPage *pCmd = 0; |
| 1403 | const char *zBase = g.zRepositoryName; |
| 1404 | |
| 1405 | /* Handle universal query parameters */ |
| 1406 | if( PB("utc") ){ |
| 1407 | g.fTimeFormat = 1; |
| 1408 | }else if( PB("localtime") ){ |
| @@ -1764,10 +1765,11 @@ | |
| 1764 | if( !g.fNoThHook ){ |
| 1765 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1766 | }else{ |
| 1767 | rc = TH_OK; |
| 1768 | } |
| 1769 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1770 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1771 | #endif |
| 1772 | pCmd->xFunc(); |
| 1773 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1774 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1399,10 +1399,11 @@ | |
| 1399 | const char *zPathInfo = PD("PATH_INFO", ""); |
| 1400 | char *zPath = NULL; |
| 1401 | int i; |
| 1402 | const CmdOrPage *pCmd = 0; |
| 1403 | const char *zBase = g.zRepositoryName; |
| 1404 | const char *zETag = 0; |
| 1405 | |
| 1406 | /* Handle universal query parameters */ |
| 1407 | if( PB("utc") ){ |
| 1408 | g.fTimeFormat = 1; |
| 1409 | }else if( PB("localtime") ){ |
| @@ -1764,10 +1765,11 @@ | |
| 1765 | if( !g.fNoThHook ){ |
| 1766 | rc = Th_WebpageHook(pCmd->zName+1, pCmd->eCmdFlags); |
| 1767 | }else{ |
| 1768 | rc = TH_OK; |
| 1769 | } |
| 1770 | etag_require(CMDFLAG_TO_ETAG(pCmd->eType)); |
| 1771 | if( rc==TH_OK || rc==TH_RETURN || rc==TH_CONTINUE ){ |
| 1772 | if( rc==TH_OK || rc==TH_RETURN ){ |
| 1773 | #endif |
| 1774 | pCmd->xFunc(); |
| 1775 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 1776 |
+12
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -43,10 +43,11 @@ | ||
| 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 |
+29
-10
| --- src/mkindex.c | ||
| +++ src/mkindex.c | ||
| @@ -80,19 +80,26 @@ | ||
| 80 | 80 | |
| 81 | 81 | /*************************************************************************** |
| 82 | 82 | ** These macros must match similar macros in dispatch.c. |
| 83 | 83 | ** |
| 84 | 84 | ** Allowed values for CmdOrPage.eCmdFlags. */ |
| 85 | -#define CMDFLAG_1ST_TIER 0x0001 /* Most important commands */ | |
| 86 | -#define CMDFLAG_2ND_TIER 0x0002 /* Obscure and seldom used commands */ | |
| 87 | -#define CMDFLAG_TEST 0x0004 /* Commands for testing only */ | |
| 88 | -#define CMDFLAG_WEBPAGE 0x0008 /* Web pages */ | |
| 89 | -#define CMDFLAG_COMMAND 0x0010 /* A command */ | |
| 90 | -#define CMDFLAG_SETTING 0x0020 /* A setting */ | |
| 91 | -#define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */ | |
| 92 | -#define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */ | |
| 93 | -#define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */ | |
| 85 | +#define CMDFLAG_1ST_TIER 0x00001 /* Most important commands */ | |
| 86 | +#define CMDFLAG_2ND_TIER 0x00002 /* Obscure and seldom used commands */ | |
| 87 | +#define CMDFLAG_TEST 0x00004 /* Commands for testing only */ | |
| 88 | +#define CMDFLAG_WEBPAGE 0x00008 /* Web pages */ | |
| 89 | +#define CMDFLAG_COMMAND 0x00010 /* A command */ | |
| 90 | +#define CMDFLAG_SETTING 0x00020 /* A setting */ | |
| 91 | +#define CMDFLAG_VERSIONABLE 0x00040 /* A versionable setting */ | |
| 92 | +#define CMDFLAG_BLOCKTEXT 0x00080 /* Multi-line text setting */ | |
| 93 | +#define CMDFLAG_BOOLEAN 0x00100 /* A boolean setting */ | |
| 94 | +#define CMDFLAG_CONST 0x00000 /* ETAG_CONST */ | |
| 95 | +#define CMDFLAG_CONFIG 0x01000 /* ETAG_CONFIG */ | |
| 96 | +#define CMDFLAG_DATA 0x02000 /* ETAG_DATA */ | |
| 97 | +#define CMDFLAG_COOKIE 0x04000 /* ETAG_COOKIE */ | |
| 98 | +#define CMDFLAG_DYNAMIC 0x10000 /* ETAG_DYNAMIC - on by default */ | |
| 99 | +#define CMDFLAG_ETAG 0x1f000 /* Mask of all ETAG entries */ | |
| 100 | +#define CMDFLAG_TO_ETAG(X) ((X)>>12) | |
| 94 | 101 | /**************************************************************************/ |
| 95 | 102 | |
| 96 | 103 | /* |
| 97 | 104 | ** Each entry looks like this: |
| 98 | 105 | */ |
| @@ -198,11 +205,11 @@ | ||
| 198 | 205 | return; |
| 199 | 206 | } |
| 200 | 207 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 201 | 208 | if( zLine[i]=='/' ) i++; |
| 202 | 209 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 203 | - aEntry[nUsed].eType = eType; | |
| 210 | + aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC; | |
| 204 | 211 | if( eType & CMDFLAG_WEBPAGE ){ |
| 205 | 212 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 206 | 213 | aEntry[nUsed].zPath[0] = '/'; |
| 207 | 214 | }else{ |
| 208 | 215 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +243,22 @@ | ||
| 236 | 243 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 237 | 244 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 238 | 245 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 239 | 246 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 240 | 247 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 248 | + }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){ | |
| 249 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 250 | + aEntry[nUsed].eType |= CMDFLAG_CONST; | |
| 251 | + }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){ | |
| 252 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 253 | + aEntry[nUsed].eType |= CMDFLAG_CONFIG; | |
| 254 | + }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){ | |
| 255 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 256 | + aEntry[nUsed].eType |= CMDFLAG_DATA; | |
| 257 | + }else if( j==4 && strncmp(&zLine[i], "cookie", j)==0 ){ | |
| 258 | + aEntry[nUsed].eType &= ~CMDFLAG_ETAG; | |
| 259 | + aEntry[nUsed].eType |= CMDFLAG_COOKIE; | |
| 241 | 260 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 242 | 261 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 243 | 262 | aEntry[nUsed].iWidth = 0; |
| 244 | 263 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 245 | 264 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 246 | 265 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -80,19 +80,26 @@ | |
| 80 | |
| 81 | /*************************************************************************** |
| 82 | ** These macros must match similar macros in dispatch.c. |
| 83 | ** |
| 84 | ** Allowed values for CmdOrPage.eCmdFlags. */ |
| 85 | #define CMDFLAG_1ST_TIER 0x0001 /* Most important commands */ |
| 86 | #define CMDFLAG_2ND_TIER 0x0002 /* Obscure and seldom used commands */ |
| 87 | #define CMDFLAG_TEST 0x0004 /* Commands for testing only */ |
| 88 | #define CMDFLAG_WEBPAGE 0x0008 /* Web pages */ |
| 89 | #define CMDFLAG_COMMAND 0x0010 /* A command */ |
| 90 | #define CMDFLAG_SETTING 0x0020 /* A setting */ |
| 91 | #define CMDFLAG_VERSIONABLE 0x0040 /* A versionable setting */ |
| 92 | #define CMDFLAG_BLOCKTEXT 0x0080 /* Multi-line text setting */ |
| 93 | #define CMDFLAG_BOOLEAN 0x0100 /* A boolean setting */ |
| 94 | /**************************************************************************/ |
| 95 | |
| 96 | /* |
| 97 | ** Each entry looks like this: |
| 98 | */ |
| @@ -198,11 +205,11 @@ | |
| 198 | return; |
| 199 | } |
| 200 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 201 | if( zLine[i]=='/' ) i++; |
| 202 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 203 | aEntry[nUsed].eType = eType; |
| 204 | if( eType & CMDFLAG_WEBPAGE ){ |
| 205 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 206 | aEntry[nUsed].zPath[0] = '/'; |
| 207 | }else{ |
| 208 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +243,22 @@ | |
| 236 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 237 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 238 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 239 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 240 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 241 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 242 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 243 | aEntry[nUsed].iWidth = 0; |
| 244 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 245 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 246 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -80,19 +80,26 @@ | |
| 80 | |
| 81 | /*************************************************************************** |
| 82 | ** These macros must match similar macros in dispatch.c. |
| 83 | ** |
| 84 | ** Allowed values for CmdOrPage.eCmdFlags. */ |
| 85 | #define CMDFLAG_1ST_TIER 0x00001 /* Most important commands */ |
| 86 | #define CMDFLAG_2ND_TIER 0x00002 /* Obscure and seldom used commands */ |
| 87 | #define CMDFLAG_TEST 0x00004 /* Commands for testing only */ |
| 88 | #define CMDFLAG_WEBPAGE 0x00008 /* Web pages */ |
| 89 | #define CMDFLAG_COMMAND 0x00010 /* A command */ |
| 90 | #define CMDFLAG_SETTING 0x00020 /* A setting */ |
| 91 | #define CMDFLAG_VERSIONABLE 0x00040 /* A versionable setting */ |
| 92 | #define CMDFLAG_BLOCKTEXT 0x00080 /* Multi-line text setting */ |
| 93 | #define CMDFLAG_BOOLEAN 0x00100 /* A boolean setting */ |
| 94 | #define CMDFLAG_CONST 0x00000 /* ETAG_CONST */ |
| 95 | #define CMDFLAG_CONFIG 0x01000 /* ETAG_CONFIG */ |
| 96 | #define CMDFLAG_DATA 0x02000 /* ETAG_DATA */ |
| 97 | #define CMDFLAG_COOKIE 0x04000 /* ETAG_COOKIE */ |
| 98 | #define CMDFLAG_DYNAMIC 0x10000 /* ETAG_DYNAMIC - on by default */ |
| 99 | #define CMDFLAG_ETAG 0x1f000 /* Mask of all ETAG entries */ |
| 100 | #define CMDFLAG_TO_ETAG(X) ((X)>>12) |
| 101 | /**************************************************************************/ |
| 102 | |
| 103 | /* |
| 104 | ** Each entry looks like this: |
| 105 | */ |
| @@ -198,11 +205,11 @@ | |
| 205 | return; |
| 206 | } |
| 207 | while( fossil_isspace(zLine[i]) ){ i++; } |
| 208 | if( zLine[i]=='/' ) i++; |
| 209 | for(j=0; zLine[i+j] && !fossil_isspace(zLine[i+j]); j++){} |
| 210 | aEntry[nUsed].eType = eType | CMDFLAG_DYNAMIC; |
| 211 | if( eType & CMDFLAG_WEBPAGE ){ |
| 212 | aEntry[nUsed].zPath = string_dup(&zLine[i-1], j+1); |
| 213 | aEntry[nUsed].zPath[0] = '/'; |
| 214 | }else{ |
| 215 | aEntry[nUsed].zPath = string_dup(&zLine[i], j); |
| @@ -236,10 +243,22 @@ | |
| 243 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_TEST); |
| 244 | aEntry[nUsed].eType |= CMDFLAG_2ND_TIER; |
| 245 | }else if( j==4 && strncmp(&zLine[i], "test", j)==0 ){ |
| 246 | aEntry[nUsed].eType &= ~(CMDFLAG_1ST_TIER|CMDFLAG_2ND_TIER); |
| 247 | aEntry[nUsed].eType |= CMDFLAG_TEST; |
| 248 | }else if( j==5 && strncmp(&zLine[i], "const", j)==0 ){ |
| 249 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 250 | aEntry[nUsed].eType |= CMDFLAG_CONST; |
| 251 | }else if( j==6 && strncmp(&zLine[i], "config", j)==0 ){ |
| 252 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 253 | aEntry[nUsed].eType |= CMDFLAG_CONFIG; |
| 254 | }else if( j==4 && strncmp(&zLine[i], "data", j)==0 ){ |
| 255 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 256 | aEntry[nUsed].eType |= CMDFLAG_DATA; |
| 257 | }else if( j==4 && strncmp(&zLine[i], "cookie", j)==0 ){ |
| 258 | aEntry[nUsed].eType &= ~CMDFLAG_ETAG; |
| 259 | aEntry[nUsed].eType |= CMDFLAG_COOKIE; |
| 260 | }else if( j==7 && strncmp(&zLine[i], "boolean", j)==0 ){ |
| 261 | aEntry[nUsed].eType &= ~(CMDFLAG_BLOCKTEXT); |
| 262 | aEntry[nUsed].iWidth = 0; |
| 263 | aEntry[nUsed].eType |= CMDFLAG_BOOLEAN; |
| 264 | }else if( j==10 && strncmp(&zLine[i], "block-text", j)==0 ){ |
| 265 |
+16
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -18,10 +18,25 @@ | ||
| 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 |
+5
-1
| --- src/unversioned.c | ||
| +++ src/unversioned.c | ||
| @@ -153,11 +153,15 @@ | ||
| 153 | 153 | ** 2: zName exists and is the same as zHash but has a older mtime |
| 154 | 154 | ** 3: zName exists and is identical to mtime/zHash in all respects. |
| 155 | 155 | ** 4: zName exists and is the same as zHash but has a newer mtime. |
| 156 | 156 | ** 5: zName exists and should override the mtime/zHash remote. |
| 157 | 157 | */ |
| 158 | -int unversioned_status(const char *zName, sqlite3_int64 mtime, const char *zHash){ | |
| 158 | +int unversioned_status( | |
| 159 | + const char *zName, | |
| 160 | + sqlite3_int64 mtime, | |
| 161 | + const char *zHash | |
| 162 | +){ | |
| 159 | 163 | int iStatus = 0; |
| 160 | 164 | Stmt q; |
| 161 | 165 | db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName); |
| 162 | 166 | if( db_step(&q)==SQLITE_ROW ){ |
| 163 | 167 | const char *zLocalHash = db_column_text(&q, 1); |
| 164 | 168 |
| --- src/unversioned.c | |
| +++ src/unversioned.c | |
| @@ -153,11 +153,15 @@ | |
| 153 | ** 2: zName exists and is the same as zHash but has a older mtime |
| 154 | ** 3: zName exists and is identical to mtime/zHash in all respects. |
| 155 | ** 4: zName exists and is the same as zHash but has a newer mtime. |
| 156 | ** 5: zName exists and should override the mtime/zHash remote. |
| 157 | */ |
| 158 | int unversioned_status(const char *zName, sqlite3_int64 mtime, const char *zHash){ |
| 159 | int iStatus = 0; |
| 160 | Stmt q; |
| 161 | db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName); |
| 162 | if( db_step(&q)==SQLITE_ROW ){ |
| 163 | const char *zLocalHash = db_column_text(&q, 1); |
| 164 |
| --- src/unversioned.c | |
| +++ src/unversioned.c | |
| @@ -153,11 +153,15 @@ | |
| 153 | ** 2: zName exists and is the same as zHash but has a older mtime |
| 154 | ** 3: zName exists and is identical to mtime/zHash in all respects. |
| 155 | ** 4: zName exists and is the same as zHash but has a newer mtime. |
| 156 | ** 5: zName exists and should override the mtime/zHash remote. |
| 157 | */ |
| 158 | int unversioned_status( |
| 159 | const char *zName, |
| 160 | sqlite3_int64 mtime, |
| 161 | const char *zHash |
| 162 | ){ |
| 163 | int iStatus = 0; |
| 164 | Stmt q; |
| 165 | db_prepare(&q, "SELECT mtime, hash FROM unversioned WHERE name=%Q", zName); |
| 166 | if( db_step(&q)==SQLITE_ROW ){ |
| 167 | const char *zLocalHash = db_column_text(&q, 1); |
| 168 |
+10
-4
| --- win/Makefile.dmc | ||
| +++ win/Makefile.dmc | ||
| @@ -28,13 +28,13 @@ | ||
| 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 |