Fossil SCM
Started refactoring specific json command groups into their own files (80kb is getting too big to manage in one file).
Commit
5d2a516f8a33e6d407713cc6beaa5f6bd1bfa047
Parent
a5fd64d344a3ae8…
18 files changed
+15
-267
+15
-267
+92
+92
+3
+3
+15
+15
+12
-1
+12
-1
+9
+9
+13
-4
+13
-4
+12
-1
+12
-1
+15
-8
+15
-8
~
src/json.c
+
src/json.c
~
src/json_detail.h
+
src/json_detail.h
+
src/json_login.c
+
src/json_login.c
~
src/main.c
~
src/main.c
~
src/main.mk
~
src/main.mk
~
src/makemake.tcl
~
src/makemake.tcl
~
win/Makefile.dmc
~
win/Makefile.dmc
~
win/Makefile.mingw
~
win/Makefile.mingw
~
win/Makefile.msc
~
win/Makefile.msc
+15
-267
| --- src/json.c | ||
| +++ src/json.c | ||
| @@ -36,45 +36,13 @@ | ||
| 36 | 36 | #include "json.h" |
| 37 | 37 | #include <assert.h> |
| 38 | 38 | #include <time.h> |
| 39 | 39 | |
| 40 | 40 | #if INTERFACE |
| 41 | -#include "cson_amalgamation.h" | |
| 42 | 41 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 43 | 42 | #endif |
| 44 | 43 | |
| 45 | -/* | |
| 46 | -** Signature for JSON page/command callbacks. Each callback is | |
| 47 | -** responsible for handling one JSON request/command and/or | |
| 48 | -** dispatching to sub-commands. | |
| 49 | -** | |
| 50 | -** By the time the callback is called, json_page_top() (HTTP mode) or | |
| 51 | -** json_cmd_top() (CLI mode) will have set up the JSON-related | |
| 52 | -** environment. Implementations may generate a "result payload" of any | |
| 53 | -** JSON type by returning its value from this function (ownership is | |
| 54 | -** tranferred to the caller). On error they should set | |
| 55 | -** g.json.resultCode to one of the FossilJsonCodes values and return | |
| 56 | -** either their payload object or NULL. Note that NULL is a legal | |
| 57 | -** success value - it simply means the response will contain no | |
| 58 | -** payload. If g.json.resultCode is non-zero when this function | |
| 59 | -** returns then the top-level dispatcher will destroy any payload | |
| 60 | -** returned by this function and will output a JSON error response | |
| 61 | -** instead. | |
| 62 | -** | |
| 63 | -** All of the setup/response code is handled by the top dispatcher | |
| 64 | -** functions and the callbacks concern themselves only with generating | |
| 65 | -** the payload. | |
| 66 | -** | |
| 67 | -** It is imperitive that NO callback functions EVER output ANYTHING to | |
| 68 | -** stdout, as that will effectively corrupt any JSON output, and | |
| 69 | -** almost certainly will corrupt any HTTP response headers. Output | |
| 70 | -** sent to stderr ends up in my apache log, so that might be useful | |
| 71 | -** for debuggering in some cases, but so such code should be left | |
| 72 | -** enabled for non-debuggering builds. | |
| 73 | -*/ | |
| 74 | -typedef cson_value * (*fossil_json_f)(); | |
| 75 | - | |
| 76 | 44 | /* |
| 77 | 45 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 78 | 46 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 79 | 47 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 80 | 48 | */ |
| @@ -92,34 +60,10 @@ | ||
| 92 | 60 | static cson_value * json_page_nyi(){ |
| 93 | 61 | g.json.resultCode = FSL_JSON_E_NYI; |
| 94 | 62 | return NULL; |
| 95 | 63 | } |
| 96 | 64 | |
| 97 | -/* | |
| 98 | -** Holds keys used for various JSON API properties. | |
| 99 | -*/ | |
| 100 | -static const struct FossilJsonKeys_{ | |
| 101 | - /** maintainers: please keep alpha sorted (case-insensitive) */ | |
| 102 | - char const * commandPath; | |
| 103 | - char const * anonymousSeed; | |
| 104 | - char const * authToken; | |
| 105 | - char const * payload; | |
| 106 | - char const * requestId; | |
| 107 | - char const * resultCode; | |
| 108 | - char const * resultText; | |
| 109 | - char const * timestamp; | |
| 110 | -} FossilJsonKeys = { | |
| 111 | - "COMMAND_PATH" /*commandPath*/, | |
| 112 | - "anonymousSeed" /*anonymousSeed*/, | |
| 113 | - "authToken" /*authToken*/, | |
| 114 | - "payload" /* payload */, | |
| 115 | - "requestId" /*requestId*/, | |
| 116 | - "resultCode" /*resultCode*/, | |
| 117 | - "resultText" /*resultText*/, | |
| 118 | - "timestamp" /*timestamp*/ | |
| 119 | -}; | |
| 120 | - | |
| 121 | 65 | /* |
| 122 | 66 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 123 | 67 | ** as a resultText string. Returns some unspecified string if errCode |
| 124 | 68 | ** is not one of the FossilJsonCodes values. |
| 125 | 69 | */ |
| @@ -160,10 +104,11 @@ | ||
| 160 | 104 | #undef C |
| 161 | 105 | default: |
| 162 | 106 | return "Unknown Error"; |
| 163 | 107 | } |
| 164 | 108 | } |
| 109 | + | |
| 165 | 110 | /* |
| 166 | 111 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 167 | 112 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 168 | 113 | ** which n bytes of src will be appended. |
| 169 | 114 | **/ |
| @@ -206,10 +151,11 @@ | ||
| 206 | 151 | cson_value * root = NULL; |
| 207 | 152 | blob_rewind( pSrc ); |
| 208 | 153 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 209 | 154 | return root; |
| 210 | 155 | } |
| 156 | + | |
| 211 | 157 | /* |
| 212 | 158 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 213 | 159 | ** cgi_append_content(). pState is ignored. |
| 214 | 160 | **/ |
| 215 | 161 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | ||
| 476 | 422 | ** info in time (and future changes to that state may cause unexpected |
| 477 | 423 | ** results). |
| 478 | 424 | ** |
| 479 | 425 | ** The result of this call are cached for future calls. |
| 480 | 426 | */ |
| 481 | -static cson_value * json_auth_token(){ | |
| 427 | +cson_value * json_auth_token(){ | |
| 482 | 428 | if( !g.json.authToken ){ |
| 483 | 429 | /* Try to get an authorization token from GET parameter, POSTed |
| 484 | 430 | JSON, or fossil cookie (in that order). */ |
| 485 | 431 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 486 | 432 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | ||
| 859 | 805 | ** |
| 860 | 806 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 861 | 807 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 862 | 808 | ** |
| 863 | 809 | */ |
| 864 | -static char const * json_command_arg(unsigned char ndx){ | |
| 810 | +char const * json_command_arg(unsigned char ndx){ | |
| 865 | 811 | cson_array * ar = g.json.cmd.a; |
| 866 | 812 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 867 | 813 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 868 | 814 | if( g.json.cmd.offset < 0 ){ |
| 869 | 815 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | ||
| 899 | 845 | ** given property is searched for in the request payload. If found it |
| 900 | 846 | ** is returned. The returned value is owned by (or shares ownership |
| 901 | 847 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 902 | 848 | ** caller. |
| 903 | 849 | */ |
| 904 | -static cson_value * json_payload_property( char const * key ){ | |
| 850 | +cson_value * json_payload_property( char const * key ){ | |
| 905 | 851 | return g.json.reqPayload.o ? |
| 906 | 852 | cson_object_get( g.json.reqPayload.o, key ) |
| 907 | 853 | : NULL; |
| 908 | 854 | } |
| 909 | 855 | |
| @@ -914,49 +860,18 @@ | ||
| 914 | 860 | char const * json_auth_token_cstr(){ |
| 915 | 861 | return cson_value_get_cstr( json_auth_token() ); |
| 916 | 862 | } |
| 917 | 863 | |
| 918 | 864 | |
| 919 | -/* | |
| 920 | -** Holds name-to-function mappings for JSON page/command dispatching. | |
| 921 | -** | |
| 922 | -*/ | |
| 923 | -typedef struct JsonPageDef{ | |
| 924 | - /* | |
| 925 | - ** The commmand/page's name (path, not including leading /json/). | |
| 926 | - ** | |
| 927 | - ** Reminder to self: we cannot use sub-paths with commands this way | |
| 928 | - ** without additional string-splitting downstream. e.g. foo/bar. | |
| 929 | - ** Alternately, we can create different JsonPageDef arrays for each | |
| 930 | - ** subset. | |
| 931 | - */ | |
| 932 | - char const * name; | |
| 933 | - /* | |
| 934 | - ** Returns a payload object for the response. If it returns a | |
| 935 | - ** non-NULL value, the caller owns it. To trigger an error this | |
| 936 | - ** function should set g.json.resultCode to a value from the | |
| 937 | - ** FossilJsonCodes enum. If it sets an error value and returns | |
| 938 | - ** a payload, the payload will be destroyed (not sent with the | |
| 939 | - ** response). | |
| 940 | - */ | |
| 941 | - fossil_json_f func; | |
| 942 | - /* | |
| 943 | - ** Which mode(s) of execution does func() support: | |
| 944 | - ** | |
| 945 | - ** <0 = CLI only, >0 = HTTP only, 0==both | |
| 946 | - */ | |
| 947 | - char runMode; | |
| 948 | -} JsonPageDef; | |
| 949 | - | |
| 950 | 865 | /* |
| 951 | 866 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 952 | 867 | ** found. |
| 953 | 868 | ** |
| 954 | 869 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 955 | 870 | ** last entry has a NULL name. |
| 956 | 871 | */ |
| 957 | -static JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ | |
| 872 | +JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ | |
| 958 | 873 | JsonPageDef const * pageDef = head; |
| 959 | 874 | assert( head != NULL ); |
| 960 | 875 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 961 | 876 | if( 0 == strcmp(name, pageDef->name) ){ |
| 962 | 877 | return pageDef; |
| @@ -1001,22 +916,23 @@ | ||
| 1001 | 916 | static cson_value * json_julian_to_timestamp(double j){ |
| 1002 | 917 | return cson_value_new_integer((cson_int_t) |
| 1003 | 918 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 1004 | 919 | ); |
| 1005 | 920 | } |
| 921 | + | |
| 1006 | 922 | /* |
| 1007 | 923 | ** Returns a timestamp value. |
| 1008 | 924 | */ |
| 1009 | -static cson_int_t json_timestamp(){ | |
| 925 | +cson_int_t json_timestamp(){ | |
| 1010 | 926 | return (cson_int_t)time(0); |
| 1011 | 927 | } |
| 1012 | 928 | /* |
| 1013 | 929 | ** Returns a new JSON value (owned by the caller) representing |
| 1014 | 930 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 1015 | 931 | ** the time, else timeVal is used as-is |
| 1016 | 932 | */ |
| 1017 | -static cson_value * json_new_timestamp(cson_int_t timeVal){ | |
| 933 | +cson_value * json_new_timestamp(cson_int_t timeVal){ | |
| 1018 | 934 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 1019 | 935 | } |
| 1020 | 936 | |
| 1021 | 937 | /* |
| 1022 | 938 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | ||
| 1284 | 1200 | ADD(Zip); |
| 1285 | 1201 | ADD(Private); |
| 1286 | 1202 | #undef ADD |
| 1287 | 1203 | return payload; |
| 1288 | 1204 | } |
| 1289 | - | |
| 1290 | -/* | |
| 1291 | -** Implementation of the /json/login page. | |
| 1292 | -** | |
| 1293 | -*/ | |
| 1294 | -cson_value * json_page_login(){ | |
| 1295 | - static char preciseErrors = /* if true, "complete" JSON error codes are used, | |
| 1296 | - else they are "dumbed down" to a generic login | |
| 1297 | - error code. | |
| 1298 | - */ | |
| 1299 | -#if 0 | |
| 1300 | - g.json.errorDetailParanoia ? 0 : 1 | |
| 1301 | -#else | |
| 1302 | - 0 | |
| 1303 | -#endif | |
| 1304 | - ; | |
| 1305 | - /* | |
| 1306 | - FIXME: we want to check the GET/POST args in this order: | |
| 1307 | - | |
| 1308 | - - GET: name, n, password, p | |
| 1309 | - - POST: name, password | |
| 1310 | - | |
| 1311 | - but a bug in cgi_parameter() is breaking that, causing PD() to | |
| 1312 | - return the last element of the PATH_INFO instead. | |
| 1313 | - | |
| 1314 | - Summary: If we check for P("name") first, then P("n"), | |
| 1315 | - then ONLY a GET param of "name" will match ("n" | |
| 1316 | - is not recognized). If we reverse the order of the | |
| 1317 | - checks then both forms work. Strangely enough, the | |
| 1318 | - "p"/"password" check is not affected by this. | |
| 1319 | - */ | |
| 1320 | - char const * name = cson_value_get_cstr(json_payload_property("name")); | |
| 1321 | - char const * pw = NULL; | |
| 1322 | - char const * anonSeed = NULL; | |
| 1323 | - cson_value * payload = NULL; | |
| 1324 | - int uid = 0; | |
| 1325 | - if( !name ){ | |
| 1326 | - name = PD("n",NULL); | |
| 1327 | - if( !name ){ | |
| 1328 | - name = PD("name",NULL); | |
| 1329 | - if( !name ){ | |
| 1330 | - g.json.resultCode = preciseErrors | |
| 1331 | - ? FSL_JSON_E_LOGIN_FAILED_NONAME | |
| 1332 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1333 | - return NULL; | |
| 1334 | - } | |
| 1335 | - } | |
| 1336 | - } | |
| 1337 | - | |
| 1338 | - pw = cson_value_get_cstr(json_payload_property("password")); | |
| 1339 | - if( !pw ){ | |
| 1340 | - pw = PD("p",NULL); | |
| 1341 | - if( !pw ){ | |
| 1342 | - pw = PD("password",NULL); | |
| 1343 | - } | |
| 1344 | - } | |
| 1345 | - if(!pw){ | |
| 1346 | - g.json.resultCode = preciseErrors | |
| 1347 | - ? FSL_JSON_E_LOGIN_FAILED_NOPW | |
| 1348 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1349 | - return NULL; | |
| 1350 | - } | |
| 1351 | - | |
| 1352 | - if(0 == strcmp("anonymous",name)){ | |
| 1353 | - /* check captcha/seed values... */ | |
| 1354 | - enum { SeedBufLen = 100 /* in some JSON tests i once actually got an | |
| 1355 | - 80-digit number. | |
| 1356 | - */ | |
| 1357 | - }; | |
| 1358 | - static char seedBuffer[SeedBufLen]; | |
| 1359 | - cson_value const * jseed = json_getenv(FossilJsonKeys.anonymousSeed); | |
| 1360 | - seedBuffer[0] = 0; | |
| 1361 | - if( !jseed ){ | |
| 1362 | - jseed = json_payload_property(FossilJsonKeys.anonymousSeed); | |
| 1363 | - if( !jseed ){ | |
| 1364 | - jseed = json_getenv("cs") /* name used by HTML interface */; | |
| 1365 | - } | |
| 1366 | - } | |
| 1367 | - if(jseed){ | |
| 1368 | - if( cson_value_is_number(jseed) ){ | |
| 1369 | - sprintf(seedBuffer, "%"CSON_INT_T_PFMT, cson_value_get_integer(jseed)); | |
| 1370 | - anonSeed = seedBuffer; | |
| 1371 | - }else if( cson_value_is_string(jseed) ){ | |
| 1372 | - anonSeed = cson_string_cstr(cson_value_get_string(jseed)); | |
| 1373 | - } | |
| 1374 | - } | |
| 1375 | - if(!anonSeed){ | |
| 1376 | - g.json.resultCode = preciseErrors | |
| 1377 | - ? FSL_JSON_E_LOGIN_FAILED_NOSEED | |
| 1378 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1379 | - return NULL; | |
| 1380 | - } | |
| 1381 | - } | |
| 1382 | - | |
| 1383 | -#if 0 | |
| 1384 | - { | |
| 1385 | - /* only for debugging the PD()-incorrect-result problem */ | |
| 1386 | - cson_object * o = NULL; | |
| 1387 | - uid = login_search_uid( name, pw ); | |
| 1388 | - payload = cson_value_new_object(); | |
| 1389 | - o = cson_value_get_object(payload); | |
| 1390 | - cson_object_set( o, "n", cson_value_new_string(name,strlen(name))); | |
| 1391 | - cson_object_set( o, "p", cson_value_new_string(pw,strlen(pw))); | |
| 1392 | - return payload; | |
| 1393 | - } | |
| 1394 | -#else | |
| 1395 | - uid = anonSeed | |
| 1396 | - ? login_is_valid_anonymous(name, pw, anonSeed) | |
| 1397 | - : login_search_uid(name, pw) | |
| 1398 | - ; | |
| 1399 | - if( !uid ){ | |
| 1400 | - g.json.resultCode = preciseErrors | |
| 1401 | - ? FSL_JSON_E_LOGIN_FAILED_NOTFOUND | |
| 1402 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1403 | - return NULL; | |
| 1404 | - }else{ | |
| 1405 | - char * cookie = NULL; | |
| 1406 | - if(anonSeed){ | |
| 1407 | - login_set_anon_cookie(NULL, &cookie); | |
| 1408 | - }else{ | |
| 1409 | - login_set_user_cookie(name, uid, &cookie); | |
| 1410 | - } | |
| 1411 | - payload = cookie | |
| 1412 | - ? cson_value_new_string( cookie, strlen(cookie) ) | |
| 1413 | - : cson_value_null()/*why null instead of NULL?*/; | |
| 1414 | - free(cookie); | |
| 1415 | - return payload; | |
| 1416 | - } | |
| 1417 | -#endif | |
| 1418 | -} | |
| 1419 | - | |
| 1420 | -/* | |
| 1421 | -** Impl of /json/logout. | |
| 1422 | -** | |
| 1423 | -*/ | |
| 1424 | -cson_value * json_page_logout(){ | |
| 1425 | - cson_value const *token = g.json.authToken; | |
| 1426 | - /* Remember that json_mode_bootstrap() replaces the login cookie | |
| 1427 | - with the JSON auth token if the request contains it. If the | |
| 1428 | - reqest is missing the auth token then this will fetch fossil's | |
| 1429 | - original cookie. Either way, it's what we want :). | |
| 1430 | - | |
| 1431 | - We require the auth token to avoid someone maliciously | |
| 1432 | - trying to log someone else out (not 100% sure if that | |
| 1433 | - would be possible, given fossil's hardened cookie, but | |
| 1434 | - i'll assume it would be for the time being). | |
| 1435 | - */ | |
| 1436 | - ; | |
| 1437 | - if(!token){ | |
| 1438 | - g.json.resultCode = FSL_JSON_E_MISSING_AUTH; | |
| 1439 | - }else{ | |
| 1440 | - login_clear_login_data(); | |
| 1441 | - g.json.authToken = NULL /* memory is owned elsewhere.*/; | |
| 1442 | - } | |
| 1443 | - return NULL; | |
| 1444 | -} | |
| 1445 | - | |
| 1446 | -/* | |
| 1447 | -** Implementation of the /json/anonymousPassword page. | |
| 1448 | -*/ | |
| 1449 | -cson_value * json_page_anon_password(){ | |
| 1450 | - cson_value * v = cson_value_new_object(); | |
| 1451 | - cson_object * o = cson_value_get_object(v); | |
| 1452 | - unsigned const int seed = captcha_seed(); | |
| 1453 | - char const * zCaptcha = captcha_decode(seed); | |
| 1454 | - cson_object_set(o, "seed", | |
| 1455 | - cson_value_new_integer( (cson_int_t)seed ) | |
| 1456 | - ); | |
| 1457 | - cson_object_set(o, "password", | |
| 1458 | - cson_value_new_string( zCaptcha, strlen(zCaptcha) ) | |
| 1459 | - ); | |
| 1460 | - return v; | |
| 1461 | -} | |
| 1462 | - | |
| 1463 | 1205 | |
| 1464 | 1206 | /* |
| 1465 | 1207 | ** Implementation of the /json/stat page/command. |
| 1466 | 1208 | ** |
| 1467 | 1209 | */ |
| @@ -2540,10 +2282,16 @@ | ||
| 2540 | 2282 | } |
| 2541 | 2283 | db_finalize(&q); |
| 2542 | 2284 | return payV; |
| 2543 | 2285 | } |
| 2544 | 2286 | |
| 2287 | +/* Impl in json_login.c. */ | |
| 2288 | +cson_value * json_page_anon_password(); | |
| 2289 | +/* Impl in json_login.c. */ | |
| 2290 | +cson_value * json_page_login(); | |
| 2291 | +/* Impl in json_login.c. */ | |
| 2292 | +cson_value * json_page_logout(); | |
| 2545 | 2293 | |
| 2546 | 2294 | /* |
| 2547 | 2295 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2548 | 2296 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2549 | 2297 | */ |
| 2550 | 2298 |
| --- src/json.c | |
| +++ src/json.c | |
| @@ -36,45 +36,13 @@ | |
| 36 | #include "json.h" |
| 37 | #include <assert.h> |
| 38 | #include <time.h> |
| 39 | |
| 40 | #if INTERFACE |
| 41 | #include "cson_amalgamation.h" |
| 42 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 43 | #endif |
| 44 | |
| 45 | /* |
| 46 | ** Signature for JSON page/command callbacks. Each callback is |
| 47 | ** responsible for handling one JSON request/command and/or |
| 48 | ** dispatching to sub-commands. |
| 49 | ** |
| 50 | ** By the time the callback is called, json_page_top() (HTTP mode) or |
| 51 | ** json_cmd_top() (CLI mode) will have set up the JSON-related |
| 52 | ** environment. Implementations may generate a "result payload" of any |
| 53 | ** JSON type by returning its value from this function (ownership is |
| 54 | ** tranferred to the caller). On error they should set |
| 55 | ** g.json.resultCode to one of the FossilJsonCodes values and return |
| 56 | ** either their payload object or NULL. Note that NULL is a legal |
| 57 | ** success value - it simply means the response will contain no |
| 58 | ** payload. If g.json.resultCode is non-zero when this function |
| 59 | ** returns then the top-level dispatcher will destroy any payload |
| 60 | ** returned by this function and will output a JSON error response |
| 61 | ** instead. |
| 62 | ** |
| 63 | ** All of the setup/response code is handled by the top dispatcher |
| 64 | ** functions and the callbacks concern themselves only with generating |
| 65 | ** the payload. |
| 66 | ** |
| 67 | ** It is imperitive that NO callback functions EVER output ANYTHING to |
| 68 | ** stdout, as that will effectively corrupt any JSON output, and |
| 69 | ** almost certainly will corrupt any HTTP response headers. Output |
| 70 | ** sent to stderr ends up in my apache log, so that might be useful |
| 71 | ** for debuggering in some cases, but so such code should be left |
| 72 | ** enabled for non-debuggering builds. |
| 73 | */ |
| 74 | typedef cson_value * (*fossil_json_f)(); |
| 75 | |
| 76 | /* |
| 77 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 78 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 79 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 80 | */ |
| @@ -92,34 +60,10 @@ | |
| 92 | static cson_value * json_page_nyi(){ |
| 93 | g.json.resultCode = FSL_JSON_E_NYI; |
| 94 | return NULL; |
| 95 | } |
| 96 | |
| 97 | /* |
| 98 | ** Holds keys used for various JSON API properties. |
| 99 | */ |
| 100 | static const struct FossilJsonKeys_{ |
| 101 | /** maintainers: please keep alpha sorted (case-insensitive) */ |
| 102 | char const * commandPath; |
| 103 | char const * anonymousSeed; |
| 104 | char const * authToken; |
| 105 | char const * payload; |
| 106 | char const * requestId; |
| 107 | char const * resultCode; |
| 108 | char const * resultText; |
| 109 | char const * timestamp; |
| 110 | } FossilJsonKeys = { |
| 111 | "COMMAND_PATH" /*commandPath*/, |
| 112 | "anonymousSeed" /*anonymousSeed*/, |
| 113 | "authToken" /*authToken*/, |
| 114 | "payload" /* payload */, |
| 115 | "requestId" /*requestId*/, |
| 116 | "resultCode" /*resultCode*/, |
| 117 | "resultText" /*resultText*/, |
| 118 | "timestamp" /*timestamp*/ |
| 119 | }; |
| 120 | |
| 121 | /* |
| 122 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 123 | ** as a resultText string. Returns some unspecified string if errCode |
| 124 | ** is not one of the FossilJsonCodes values. |
| 125 | */ |
| @@ -160,10 +104,11 @@ | |
| 160 | #undef C |
| 161 | default: |
| 162 | return "Unknown Error"; |
| 163 | } |
| 164 | } |
| 165 | /* |
| 166 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 167 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 168 | ** which n bytes of src will be appended. |
| 169 | **/ |
| @@ -206,10 +151,11 @@ | |
| 206 | cson_value * root = NULL; |
| 207 | blob_rewind( pSrc ); |
| 208 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 209 | return root; |
| 210 | } |
| 211 | /* |
| 212 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 213 | ** cgi_append_content(). pState is ignored. |
| 214 | **/ |
| 215 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | |
| 476 | ** info in time (and future changes to that state may cause unexpected |
| 477 | ** results). |
| 478 | ** |
| 479 | ** The result of this call are cached for future calls. |
| 480 | */ |
| 481 | static cson_value * json_auth_token(){ |
| 482 | if( !g.json.authToken ){ |
| 483 | /* Try to get an authorization token from GET parameter, POSTed |
| 484 | JSON, or fossil cookie (in that order). */ |
| 485 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 486 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | |
| 859 | ** |
| 860 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 861 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 862 | ** |
| 863 | */ |
| 864 | static char const * json_command_arg(unsigned char ndx){ |
| 865 | cson_array * ar = g.json.cmd.a; |
| 866 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 867 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 868 | if( g.json.cmd.offset < 0 ){ |
| 869 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | |
| 899 | ** given property is searched for in the request payload. If found it |
| 900 | ** is returned. The returned value is owned by (or shares ownership |
| 901 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 902 | ** caller. |
| 903 | */ |
| 904 | static cson_value * json_payload_property( char const * key ){ |
| 905 | return g.json.reqPayload.o ? |
| 906 | cson_object_get( g.json.reqPayload.o, key ) |
| 907 | : NULL; |
| 908 | } |
| 909 | |
| @@ -914,49 +860,18 @@ | |
| 914 | char const * json_auth_token_cstr(){ |
| 915 | return cson_value_get_cstr( json_auth_token() ); |
| 916 | } |
| 917 | |
| 918 | |
| 919 | /* |
| 920 | ** Holds name-to-function mappings for JSON page/command dispatching. |
| 921 | ** |
| 922 | */ |
| 923 | typedef struct JsonPageDef{ |
| 924 | /* |
| 925 | ** The commmand/page's name (path, not including leading /json/). |
| 926 | ** |
| 927 | ** Reminder to self: we cannot use sub-paths with commands this way |
| 928 | ** without additional string-splitting downstream. e.g. foo/bar. |
| 929 | ** Alternately, we can create different JsonPageDef arrays for each |
| 930 | ** subset. |
| 931 | */ |
| 932 | char const * name; |
| 933 | /* |
| 934 | ** Returns a payload object for the response. If it returns a |
| 935 | ** non-NULL value, the caller owns it. To trigger an error this |
| 936 | ** function should set g.json.resultCode to a value from the |
| 937 | ** FossilJsonCodes enum. If it sets an error value and returns |
| 938 | ** a payload, the payload will be destroyed (not sent with the |
| 939 | ** response). |
| 940 | */ |
| 941 | fossil_json_f func; |
| 942 | /* |
| 943 | ** Which mode(s) of execution does func() support: |
| 944 | ** |
| 945 | ** <0 = CLI only, >0 = HTTP only, 0==both |
| 946 | */ |
| 947 | char runMode; |
| 948 | } JsonPageDef; |
| 949 | |
| 950 | /* |
| 951 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 952 | ** found. |
| 953 | ** |
| 954 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 955 | ** last entry has a NULL name. |
| 956 | */ |
| 957 | static JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ |
| 958 | JsonPageDef const * pageDef = head; |
| 959 | assert( head != NULL ); |
| 960 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 961 | if( 0 == strcmp(name, pageDef->name) ){ |
| 962 | return pageDef; |
| @@ -1001,22 +916,23 @@ | |
| 1001 | static cson_value * json_julian_to_timestamp(double j){ |
| 1002 | return cson_value_new_integer((cson_int_t) |
| 1003 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 1004 | ); |
| 1005 | } |
| 1006 | /* |
| 1007 | ** Returns a timestamp value. |
| 1008 | */ |
| 1009 | static cson_int_t json_timestamp(){ |
| 1010 | return (cson_int_t)time(0); |
| 1011 | } |
| 1012 | /* |
| 1013 | ** Returns a new JSON value (owned by the caller) representing |
| 1014 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 1015 | ** the time, else timeVal is used as-is |
| 1016 | */ |
| 1017 | static cson_value * json_new_timestamp(cson_int_t timeVal){ |
| 1018 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 1019 | } |
| 1020 | |
| 1021 | /* |
| 1022 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | |
| 1284 | ADD(Zip); |
| 1285 | ADD(Private); |
| 1286 | #undef ADD |
| 1287 | return payload; |
| 1288 | } |
| 1289 | |
| 1290 | /* |
| 1291 | ** Implementation of the /json/login page. |
| 1292 | ** |
| 1293 | */ |
| 1294 | cson_value * json_page_login(){ |
| 1295 | static char preciseErrors = /* if true, "complete" JSON error codes are used, |
| 1296 | else they are "dumbed down" to a generic login |
| 1297 | error code. |
| 1298 | */ |
| 1299 | #if 0 |
| 1300 | g.json.errorDetailParanoia ? 0 : 1 |
| 1301 | #else |
| 1302 | 0 |
| 1303 | #endif |
| 1304 | ; |
| 1305 | /* |
| 1306 | FIXME: we want to check the GET/POST args in this order: |
| 1307 | |
| 1308 | - GET: name, n, password, p |
| 1309 | - POST: name, password |
| 1310 | |
| 1311 | but a bug in cgi_parameter() is breaking that, causing PD() to |
| 1312 | return the last element of the PATH_INFO instead. |
| 1313 | |
| 1314 | Summary: If we check for P("name") first, then P("n"), |
| 1315 | then ONLY a GET param of "name" will match ("n" |
| 1316 | is not recognized). If we reverse the order of the |
| 1317 | checks then both forms work. Strangely enough, the |
| 1318 | "p"/"password" check is not affected by this. |
| 1319 | */ |
| 1320 | char const * name = cson_value_get_cstr(json_payload_property("name")); |
| 1321 | char const * pw = NULL; |
| 1322 | char const * anonSeed = NULL; |
| 1323 | cson_value * payload = NULL; |
| 1324 | int uid = 0; |
| 1325 | if( !name ){ |
| 1326 | name = PD("n",NULL); |
| 1327 | if( !name ){ |
| 1328 | name = PD("name",NULL); |
| 1329 | if( !name ){ |
| 1330 | g.json.resultCode = preciseErrors |
| 1331 | ? FSL_JSON_E_LOGIN_FAILED_NONAME |
| 1332 | : FSL_JSON_E_LOGIN_FAILED; |
| 1333 | return NULL; |
| 1334 | } |
| 1335 | } |
| 1336 | } |
| 1337 | |
| 1338 | pw = cson_value_get_cstr(json_payload_property("password")); |
| 1339 | if( !pw ){ |
| 1340 | pw = PD("p",NULL); |
| 1341 | if( !pw ){ |
| 1342 | pw = PD("password",NULL); |
| 1343 | } |
| 1344 | } |
| 1345 | if(!pw){ |
| 1346 | g.json.resultCode = preciseErrors |
| 1347 | ? FSL_JSON_E_LOGIN_FAILED_NOPW |
| 1348 | : FSL_JSON_E_LOGIN_FAILED; |
| 1349 | return NULL; |
| 1350 | } |
| 1351 | |
| 1352 | if(0 == strcmp("anonymous",name)){ |
| 1353 | /* check captcha/seed values... */ |
| 1354 | enum { SeedBufLen = 100 /* in some JSON tests i once actually got an |
| 1355 | 80-digit number. |
| 1356 | */ |
| 1357 | }; |
| 1358 | static char seedBuffer[SeedBufLen]; |
| 1359 | cson_value const * jseed = json_getenv(FossilJsonKeys.anonymousSeed); |
| 1360 | seedBuffer[0] = 0; |
| 1361 | if( !jseed ){ |
| 1362 | jseed = json_payload_property(FossilJsonKeys.anonymousSeed); |
| 1363 | if( !jseed ){ |
| 1364 | jseed = json_getenv("cs") /* name used by HTML interface */; |
| 1365 | } |
| 1366 | } |
| 1367 | if(jseed){ |
| 1368 | if( cson_value_is_number(jseed) ){ |
| 1369 | sprintf(seedBuffer, "%"CSON_INT_T_PFMT, cson_value_get_integer(jseed)); |
| 1370 | anonSeed = seedBuffer; |
| 1371 | }else if( cson_value_is_string(jseed) ){ |
| 1372 | anonSeed = cson_string_cstr(cson_value_get_string(jseed)); |
| 1373 | } |
| 1374 | } |
| 1375 | if(!anonSeed){ |
| 1376 | g.json.resultCode = preciseErrors |
| 1377 | ? FSL_JSON_E_LOGIN_FAILED_NOSEED |
| 1378 | : FSL_JSON_E_LOGIN_FAILED; |
| 1379 | return NULL; |
| 1380 | } |
| 1381 | } |
| 1382 | |
| 1383 | #if 0 |
| 1384 | { |
| 1385 | /* only for debugging the PD()-incorrect-result problem */ |
| 1386 | cson_object * o = NULL; |
| 1387 | uid = login_search_uid( name, pw ); |
| 1388 | payload = cson_value_new_object(); |
| 1389 | o = cson_value_get_object(payload); |
| 1390 | cson_object_set( o, "n", cson_value_new_string(name,strlen(name))); |
| 1391 | cson_object_set( o, "p", cson_value_new_string(pw,strlen(pw))); |
| 1392 | return payload; |
| 1393 | } |
| 1394 | #else |
| 1395 | uid = anonSeed |
| 1396 | ? login_is_valid_anonymous(name, pw, anonSeed) |
| 1397 | : login_search_uid(name, pw) |
| 1398 | ; |
| 1399 | if( !uid ){ |
| 1400 | g.json.resultCode = preciseErrors |
| 1401 | ? FSL_JSON_E_LOGIN_FAILED_NOTFOUND |
| 1402 | : FSL_JSON_E_LOGIN_FAILED; |
| 1403 | return NULL; |
| 1404 | }else{ |
| 1405 | char * cookie = NULL; |
| 1406 | if(anonSeed){ |
| 1407 | login_set_anon_cookie(NULL, &cookie); |
| 1408 | }else{ |
| 1409 | login_set_user_cookie(name, uid, &cookie); |
| 1410 | } |
| 1411 | payload = cookie |
| 1412 | ? cson_value_new_string( cookie, strlen(cookie) ) |
| 1413 | : cson_value_null()/*why null instead of NULL?*/; |
| 1414 | free(cookie); |
| 1415 | return payload; |
| 1416 | } |
| 1417 | #endif |
| 1418 | } |
| 1419 | |
| 1420 | /* |
| 1421 | ** Impl of /json/logout. |
| 1422 | ** |
| 1423 | */ |
| 1424 | cson_value * json_page_logout(){ |
| 1425 | cson_value const *token = g.json.authToken; |
| 1426 | /* Remember that json_mode_bootstrap() replaces the login cookie |
| 1427 | with the JSON auth token if the request contains it. If the |
| 1428 | reqest is missing the auth token then this will fetch fossil's |
| 1429 | original cookie. Either way, it's what we want :). |
| 1430 | |
| 1431 | We require the auth token to avoid someone maliciously |
| 1432 | trying to log someone else out (not 100% sure if that |
| 1433 | would be possible, given fossil's hardened cookie, but |
| 1434 | i'll assume it would be for the time being). |
| 1435 | */ |
| 1436 | ; |
| 1437 | if(!token){ |
| 1438 | g.json.resultCode = FSL_JSON_E_MISSING_AUTH; |
| 1439 | }else{ |
| 1440 | login_clear_login_data(); |
| 1441 | g.json.authToken = NULL /* memory is owned elsewhere.*/; |
| 1442 | } |
| 1443 | return NULL; |
| 1444 | } |
| 1445 | |
| 1446 | /* |
| 1447 | ** Implementation of the /json/anonymousPassword page. |
| 1448 | */ |
| 1449 | cson_value * json_page_anon_password(){ |
| 1450 | cson_value * v = cson_value_new_object(); |
| 1451 | cson_object * o = cson_value_get_object(v); |
| 1452 | unsigned const int seed = captcha_seed(); |
| 1453 | char const * zCaptcha = captcha_decode(seed); |
| 1454 | cson_object_set(o, "seed", |
| 1455 | cson_value_new_integer( (cson_int_t)seed ) |
| 1456 | ); |
| 1457 | cson_object_set(o, "password", |
| 1458 | cson_value_new_string( zCaptcha, strlen(zCaptcha) ) |
| 1459 | ); |
| 1460 | return v; |
| 1461 | } |
| 1462 | |
| 1463 | |
| 1464 | /* |
| 1465 | ** Implementation of the /json/stat page/command. |
| 1466 | ** |
| 1467 | */ |
| @@ -2540,10 +2282,16 @@ | |
| 2540 | } |
| 2541 | db_finalize(&q); |
| 2542 | return payV; |
| 2543 | } |
| 2544 | |
| 2545 | |
| 2546 | /* |
| 2547 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2548 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2549 | */ |
| 2550 |
| --- src/json.c | |
| +++ src/json.c | |
| @@ -36,45 +36,13 @@ | |
| 36 | #include "json.h" |
| 37 | #include <assert.h> |
| 38 | #include <time.h> |
| 39 | |
| 40 | #if INTERFACE |
| 41 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 42 | #endif |
| 43 | |
| 44 | /* |
| 45 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 46 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 47 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 48 | */ |
| @@ -92,34 +60,10 @@ | |
| 60 | static cson_value * json_page_nyi(){ |
| 61 | g.json.resultCode = FSL_JSON_E_NYI; |
| 62 | return NULL; |
| 63 | } |
| 64 | |
| 65 | /* |
| 66 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 67 | ** as a resultText string. Returns some unspecified string if errCode |
| 68 | ** is not one of the FossilJsonCodes values. |
| 69 | */ |
| @@ -160,10 +104,11 @@ | |
| 104 | #undef C |
| 105 | default: |
| 106 | return "Unknown Error"; |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | /* |
| 111 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 112 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 113 | ** which n bytes of src will be appended. |
| 114 | **/ |
| @@ -206,10 +151,11 @@ | |
| 151 | cson_value * root = NULL; |
| 152 | blob_rewind( pSrc ); |
| 153 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 154 | return root; |
| 155 | } |
| 156 | |
| 157 | /* |
| 158 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 159 | ** cgi_append_content(). pState is ignored. |
| 160 | **/ |
| 161 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | |
| 422 | ** info in time (and future changes to that state may cause unexpected |
| 423 | ** results). |
| 424 | ** |
| 425 | ** The result of this call are cached for future calls. |
| 426 | */ |
| 427 | cson_value * json_auth_token(){ |
| 428 | if( !g.json.authToken ){ |
| 429 | /* Try to get an authorization token from GET parameter, POSTed |
| 430 | JSON, or fossil cookie (in that order). */ |
| 431 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 432 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | |
| 805 | ** |
| 806 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 807 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 808 | ** |
| 809 | */ |
| 810 | char const * json_command_arg(unsigned char ndx){ |
| 811 | cson_array * ar = g.json.cmd.a; |
| 812 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 813 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 814 | if( g.json.cmd.offset < 0 ){ |
| 815 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | |
| 845 | ** given property is searched for in the request payload. If found it |
| 846 | ** is returned. The returned value is owned by (or shares ownership |
| 847 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 848 | ** caller. |
| 849 | */ |
| 850 | cson_value * json_payload_property( char const * key ){ |
| 851 | return g.json.reqPayload.o ? |
| 852 | cson_object_get( g.json.reqPayload.o, key ) |
| 853 | : NULL; |
| 854 | } |
| 855 | |
| @@ -914,49 +860,18 @@ | |
| 860 | char const * json_auth_token_cstr(){ |
| 861 | return cson_value_get_cstr( json_auth_token() ); |
| 862 | } |
| 863 | |
| 864 | |
| 865 | /* |
| 866 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 867 | ** found. |
| 868 | ** |
| 869 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 870 | ** last entry has a NULL name. |
| 871 | */ |
| 872 | JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ |
| 873 | JsonPageDef const * pageDef = head; |
| 874 | assert( head != NULL ); |
| 875 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 876 | if( 0 == strcmp(name, pageDef->name) ){ |
| 877 | return pageDef; |
| @@ -1001,22 +916,23 @@ | |
| 916 | static cson_value * json_julian_to_timestamp(double j){ |
| 917 | return cson_value_new_integer((cson_int_t) |
| 918 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 919 | ); |
| 920 | } |
| 921 | |
| 922 | /* |
| 923 | ** Returns a timestamp value. |
| 924 | */ |
| 925 | cson_int_t json_timestamp(){ |
| 926 | return (cson_int_t)time(0); |
| 927 | } |
| 928 | /* |
| 929 | ** Returns a new JSON value (owned by the caller) representing |
| 930 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 931 | ** the time, else timeVal is used as-is |
| 932 | */ |
| 933 | cson_value * json_new_timestamp(cson_int_t timeVal){ |
| 934 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 935 | } |
| 936 | |
| 937 | /* |
| 938 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | |
| 1200 | ADD(Zip); |
| 1201 | ADD(Private); |
| 1202 | #undef ADD |
| 1203 | return payload; |
| 1204 | } |
| 1205 | |
| 1206 | /* |
| 1207 | ** Implementation of the /json/stat page/command. |
| 1208 | ** |
| 1209 | */ |
| @@ -2540,10 +2282,16 @@ | |
| 2282 | } |
| 2283 | db_finalize(&q); |
| 2284 | return payV; |
| 2285 | } |
| 2286 | |
| 2287 | /* Impl in json_login.c. */ |
| 2288 | cson_value * json_page_anon_password(); |
| 2289 | /* Impl in json_login.c. */ |
| 2290 | cson_value * json_page_login(); |
| 2291 | /* Impl in json_login.c. */ |
| 2292 | cson_value * json_page_logout(); |
| 2293 | |
| 2294 | /* |
| 2295 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2296 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2297 | */ |
| 2298 |
+15
-267
| --- src/json.c | ||
| +++ src/json.c | ||
| @@ -36,45 +36,13 @@ | ||
| 36 | 36 | #include "json.h" |
| 37 | 37 | #include <assert.h> |
| 38 | 38 | #include <time.h> |
| 39 | 39 | |
| 40 | 40 | #if INTERFACE |
| 41 | -#include "cson_amalgamation.h" | |
| 42 | 41 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 43 | 42 | #endif |
| 44 | 43 | |
| 45 | -/* | |
| 46 | -** Signature for JSON page/command callbacks. Each callback is | |
| 47 | -** responsible for handling one JSON request/command and/or | |
| 48 | -** dispatching to sub-commands. | |
| 49 | -** | |
| 50 | -** By the time the callback is called, json_page_top() (HTTP mode) or | |
| 51 | -** json_cmd_top() (CLI mode) will have set up the JSON-related | |
| 52 | -** environment. Implementations may generate a "result payload" of any | |
| 53 | -** JSON type by returning its value from this function (ownership is | |
| 54 | -** tranferred to the caller). On error they should set | |
| 55 | -** g.json.resultCode to one of the FossilJsonCodes values and return | |
| 56 | -** either their payload object or NULL. Note that NULL is a legal | |
| 57 | -** success value - it simply means the response will contain no | |
| 58 | -** payload. If g.json.resultCode is non-zero when this function | |
| 59 | -** returns then the top-level dispatcher will destroy any payload | |
| 60 | -** returned by this function and will output a JSON error response | |
| 61 | -** instead. | |
| 62 | -** | |
| 63 | -** All of the setup/response code is handled by the top dispatcher | |
| 64 | -** functions and the callbacks concern themselves only with generating | |
| 65 | -** the payload. | |
| 66 | -** | |
| 67 | -** It is imperitive that NO callback functions EVER output ANYTHING to | |
| 68 | -** stdout, as that will effectively corrupt any JSON output, and | |
| 69 | -** almost certainly will corrupt any HTTP response headers. Output | |
| 70 | -** sent to stderr ends up in my apache log, so that might be useful | |
| 71 | -** for debuggering in some cases, but so such code should be left | |
| 72 | -** enabled for non-debuggering builds. | |
| 73 | -*/ | |
| 74 | -typedef cson_value * (*fossil_json_f)(); | |
| 75 | - | |
| 76 | 44 | /* |
| 77 | 45 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 78 | 46 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 79 | 47 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 80 | 48 | */ |
| @@ -92,34 +60,10 @@ | ||
| 92 | 60 | static cson_value * json_page_nyi(){ |
| 93 | 61 | g.json.resultCode = FSL_JSON_E_NYI; |
| 94 | 62 | return NULL; |
| 95 | 63 | } |
| 96 | 64 | |
| 97 | -/* | |
| 98 | -** Holds keys used for various JSON API properties. | |
| 99 | -*/ | |
| 100 | -static const struct FossilJsonKeys_{ | |
| 101 | - /** maintainers: please keep alpha sorted (case-insensitive) */ | |
| 102 | - char const * commandPath; | |
| 103 | - char const * anonymousSeed; | |
| 104 | - char const * authToken; | |
| 105 | - char const * payload; | |
| 106 | - char const * requestId; | |
| 107 | - char const * resultCode; | |
| 108 | - char const * resultText; | |
| 109 | - char const * timestamp; | |
| 110 | -} FossilJsonKeys = { | |
| 111 | - "COMMAND_PATH" /*commandPath*/, | |
| 112 | - "anonymousSeed" /*anonymousSeed*/, | |
| 113 | - "authToken" /*authToken*/, | |
| 114 | - "payload" /* payload */, | |
| 115 | - "requestId" /*requestId*/, | |
| 116 | - "resultCode" /*resultCode*/, | |
| 117 | - "resultText" /*resultText*/, | |
| 118 | - "timestamp" /*timestamp*/ | |
| 119 | -}; | |
| 120 | - | |
| 121 | 65 | /* |
| 122 | 66 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 123 | 67 | ** as a resultText string. Returns some unspecified string if errCode |
| 124 | 68 | ** is not one of the FossilJsonCodes values. |
| 125 | 69 | */ |
| @@ -160,10 +104,11 @@ | ||
| 160 | 104 | #undef C |
| 161 | 105 | default: |
| 162 | 106 | return "Unknown Error"; |
| 163 | 107 | } |
| 164 | 108 | } |
| 109 | + | |
| 165 | 110 | /* |
| 166 | 111 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 167 | 112 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 168 | 113 | ** which n bytes of src will be appended. |
| 169 | 114 | **/ |
| @@ -206,10 +151,11 @@ | ||
| 206 | 151 | cson_value * root = NULL; |
| 207 | 152 | blob_rewind( pSrc ); |
| 208 | 153 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 209 | 154 | return root; |
| 210 | 155 | } |
| 156 | + | |
| 211 | 157 | /* |
| 212 | 158 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 213 | 159 | ** cgi_append_content(). pState is ignored. |
| 214 | 160 | **/ |
| 215 | 161 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | ||
| 476 | 422 | ** info in time (and future changes to that state may cause unexpected |
| 477 | 423 | ** results). |
| 478 | 424 | ** |
| 479 | 425 | ** The result of this call are cached for future calls. |
| 480 | 426 | */ |
| 481 | -static cson_value * json_auth_token(){ | |
| 427 | +cson_value * json_auth_token(){ | |
| 482 | 428 | if( !g.json.authToken ){ |
| 483 | 429 | /* Try to get an authorization token from GET parameter, POSTed |
| 484 | 430 | JSON, or fossil cookie (in that order). */ |
| 485 | 431 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 486 | 432 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | ||
| 859 | 805 | ** |
| 860 | 806 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 861 | 807 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 862 | 808 | ** |
| 863 | 809 | */ |
| 864 | -static char const * json_command_arg(unsigned char ndx){ | |
| 810 | +char const * json_command_arg(unsigned char ndx){ | |
| 865 | 811 | cson_array * ar = g.json.cmd.a; |
| 866 | 812 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 867 | 813 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 868 | 814 | if( g.json.cmd.offset < 0 ){ |
| 869 | 815 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | ||
| 899 | 845 | ** given property is searched for in the request payload. If found it |
| 900 | 846 | ** is returned. The returned value is owned by (or shares ownership |
| 901 | 847 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 902 | 848 | ** caller. |
| 903 | 849 | */ |
| 904 | -static cson_value * json_payload_property( char const * key ){ | |
| 850 | +cson_value * json_payload_property( char const * key ){ | |
| 905 | 851 | return g.json.reqPayload.o ? |
| 906 | 852 | cson_object_get( g.json.reqPayload.o, key ) |
| 907 | 853 | : NULL; |
| 908 | 854 | } |
| 909 | 855 | |
| @@ -914,49 +860,18 @@ | ||
| 914 | 860 | char const * json_auth_token_cstr(){ |
| 915 | 861 | return cson_value_get_cstr( json_auth_token() ); |
| 916 | 862 | } |
| 917 | 863 | |
| 918 | 864 | |
| 919 | -/* | |
| 920 | -** Holds name-to-function mappings for JSON page/command dispatching. | |
| 921 | -** | |
| 922 | -*/ | |
| 923 | -typedef struct JsonPageDef{ | |
| 924 | - /* | |
| 925 | - ** The commmand/page's name (path, not including leading /json/). | |
| 926 | - ** | |
| 927 | - ** Reminder to self: we cannot use sub-paths with commands this way | |
| 928 | - ** without additional string-splitting downstream. e.g. foo/bar. | |
| 929 | - ** Alternately, we can create different JsonPageDef arrays for each | |
| 930 | - ** subset. | |
| 931 | - */ | |
| 932 | - char const * name; | |
| 933 | - /* | |
| 934 | - ** Returns a payload object for the response. If it returns a | |
| 935 | - ** non-NULL value, the caller owns it. To trigger an error this | |
| 936 | - ** function should set g.json.resultCode to a value from the | |
| 937 | - ** FossilJsonCodes enum. If it sets an error value and returns | |
| 938 | - ** a payload, the payload will be destroyed (not sent with the | |
| 939 | - ** response). | |
| 940 | - */ | |
| 941 | - fossil_json_f func; | |
| 942 | - /* | |
| 943 | - ** Which mode(s) of execution does func() support: | |
| 944 | - ** | |
| 945 | - ** <0 = CLI only, >0 = HTTP only, 0==both | |
| 946 | - */ | |
| 947 | - char runMode; | |
| 948 | -} JsonPageDef; | |
| 949 | - | |
| 950 | 865 | /* |
| 951 | 866 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 952 | 867 | ** found. |
| 953 | 868 | ** |
| 954 | 869 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 955 | 870 | ** last entry has a NULL name. |
| 956 | 871 | */ |
| 957 | -static JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ | |
| 872 | +JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ | |
| 958 | 873 | JsonPageDef const * pageDef = head; |
| 959 | 874 | assert( head != NULL ); |
| 960 | 875 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 961 | 876 | if( 0 == strcmp(name, pageDef->name) ){ |
| 962 | 877 | return pageDef; |
| @@ -1001,22 +916,23 @@ | ||
| 1001 | 916 | static cson_value * json_julian_to_timestamp(double j){ |
| 1002 | 917 | return cson_value_new_integer((cson_int_t) |
| 1003 | 918 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 1004 | 919 | ); |
| 1005 | 920 | } |
| 921 | + | |
| 1006 | 922 | /* |
| 1007 | 923 | ** Returns a timestamp value. |
| 1008 | 924 | */ |
| 1009 | -static cson_int_t json_timestamp(){ | |
| 925 | +cson_int_t json_timestamp(){ | |
| 1010 | 926 | return (cson_int_t)time(0); |
| 1011 | 927 | } |
| 1012 | 928 | /* |
| 1013 | 929 | ** Returns a new JSON value (owned by the caller) representing |
| 1014 | 930 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 1015 | 931 | ** the time, else timeVal is used as-is |
| 1016 | 932 | */ |
| 1017 | -static cson_value * json_new_timestamp(cson_int_t timeVal){ | |
| 933 | +cson_value * json_new_timestamp(cson_int_t timeVal){ | |
| 1018 | 934 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 1019 | 935 | } |
| 1020 | 936 | |
| 1021 | 937 | /* |
| 1022 | 938 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | ||
| 1284 | 1200 | ADD(Zip); |
| 1285 | 1201 | ADD(Private); |
| 1286 | 1202 | #undef ADD |
| 1287 | 1203 | return payload; |
| 1288 | 1204 | } |
| 1289 | - | |
| 1290 | -/* | |
| 1291 | -** Implementation of the /json/login page. | |
| 1292 | -** | |
| 1293 | -*/ | |
| 1294 | -cson_value * json_page_login(){ | |
| 1295 | - static char preciseErrors = /* if true, "complete" JSON error codes are used, | |
| 1296 | - else they are "dumbed down" to a generic login | |
| 1297 | - error code. | |
| 1298 | - */ | |
| 1299 | -#if 0 | |
| 1300 | - g.json.errorDetailParanoia ? 0 : 1 | |
| 1301 | -#else | |
| 1302 | - 0 | |
| 1303 | -#endif | |
| 1304 | - ; | |
| 1305 | - /* | |
| 1306 | - FIXME: we want to check the GET/POST args in this order: | |
| 1307 | - | |
| 1308 | - - GET: name, n, password, p | |
| 1309 | - - POST: name, password | |
| 1310 | - | |
| 1311 | - but a bug in cgi_parameter() is breaking that, causing PD() to | |
| 1312 | - return the last element of the PATH_INFO instead. | |
| 1313 | - | |
| 1314 | - Summary: If we check for P("name") first, then P("n"), | |
| 1315 | - then ONLY a GET param of "name" will match ("n" | |
| 1316 | - is not recognized). If we reverse the order of the | |
| 1317 | - checks then both forms work. Strangely enough, the | |
| 1318 | - "p"/"password" check is not affected by this. | |
| 1319 | - */ | |
| 1320 | - char const * name = cson_value_get_cstr(json_payload_property("name")); | |
| 1321 | - char const * pw = NULL; | |
| 1322 | - char const * anonSeed = NULL; | |
| 1323 | - cson_value * payload = NULL; | |
| 1324 | - int uid = 0; | |
| 1325 | - if( !name ){ | |
| 1326 | - name = PD("n",NULL); | |
| 1327 | - if( !name ){ | |
| 1328 | - name = PD("name",NULL); | |
| 1329 | - if( !name ){ | |
| 1330 | - g.json.resultCode = preciseErrors | |
| 1331 | - ? FSL_JSON_E_LOGIN_FAILED_NONAME | |
| 1332 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1333 | - return NULL; | |
| 1334 | - } | |
| 1335 | - } | |
| 1336 | - } | |
| 1337 | - | |
| 1338 | - pw = cson_value_get_cstr(json_payload_property("password")); | |
| 1339 | - if( !pw ){ | |
| 1340 | - pw = PD("p",NULL); | |
| 1341 | - if( !pw ){ | |
| 1342 | - pw = PD("password",NULL); | |
| 1343 | - } | |
| 1344 | - } | |
| 1345 | - if(!pw){ | |
| 1346 | - g.json.resultCode = preciseErrors | |
| 1347 | - ? FSL_JSON_E_LOGIN_FAILED_NOPW | |
| 1348 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1349 | - return NULL; | |
| 1350 | - } | |
| 1351 | - | |
| 1352 | - if(0 == strcmp("anonymous",name)){ | |
| 1353 | - /* check captcha/seed values... */ | |
| 1354 | - enum { SeedBufLen = 100 /* in some JSON tests i once actually got an | |
| 1355 | - 80-digit number. | |
| 1356 | - */ | |
| 1357 | - }; | |
| 1358 | - static char seedBuffer[SeedBufLen]; | |
| 1359 | - cson_value const * jseed = json_getenv(FossilJsonKeys.anonymousSeed); | |
| 1360 | - seedBuffer[0] = 0; | |
| 1361 | - if( !jseed ){ | |
| 1362 | - jseed = json_payload_property(FossilJsonKeys.anonymousSeed); | |
| 1363 | - if( !jseed ){ | |
| 1364 | - jseed = json_getenv("cs") /* name used by HTML interface */; | |
| 1365 | - } | |
| 1366 | - } | |
| 1367 | - if(jseed){ | |
| 1368 | - if( cson_value_is_number(jseed) ){ | |
| 1369 | - sprintf(seedBuffer, "%"CSON_INT_T_PFMT, cson_value_get_integer(jseed)); | |
| 1370 | - anonSeed = seedBuffer; | |
| 1371 | - }else if( cson_value_is_string(jseed) ){ | |
| 1372 | - anonSeed = cson_string_cstr(cson_value_get_string(jseed)); | |
| 1373 | - } | |
| 1374 | - } | |
| 1375 | - if(!anonSeed){ | |
| 1376 | - g.json.resultCode = preciseErrors | |
| 1377 | - ? FSL_JSON_E_LOGIN_FAILED_NOSEED | |
| 1378 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1379 | - return NULL; | |
| 1380 | - } | |
| 1381 | - } | |
| 1382 | - | |
| 1383 | -#if 0 | |
| 1384 | - { | |
| 1385 | - /* only for debugging the PD()-incorrect-result problem */ | |
| 1386 | - cson_object * o = NULL; | |
| 1387 | - uid = login_search_uid( name, pw ); | |
| 1388 | - payload = cson_value_new_object(); | |
| 1389 | - o = cson_value_get_object(payload); | |
| 1390 | - cson_object_set( o, "n", cson_value_new_string(name,strlen(name))); | |
| 1391 | - cson_object_set( o, "p", cson_value_new_string(pw,strlen(pw))); | |
| 1392 | - return payload; | |
| 1393 | - } | |
| 1394 | -#else | |
| 1395 | - uid = anonSeed | |
| 1396 | - ? login_is_valid_anonymous(name, pw, anonSeed) | |
| 1397 | - : login_search_uid(name, pw) | |
| 1398 | - ; | |
| 1399 | - if( !uid ){ | |
| 1400 | - g.json.resultCode = preciseErrors | |
| 1401 | - ? FSL_JSON_E_LOGIN_FAILED_NOTFOUND | |
| 1402 | - : FSL_JSON_E_LOGIN_FAILED; | |
| 1403 | - return NULL; | |
| 1404 | - }else{ | |
| 1405 | - char * cookie = NULL; | |
| 1406 | - if(anonSeed){ | |
| 1407 | - login_set_anon_cookie(NULL, &cookie); | |
| 1408 | - }else{ | |
| 1409 | - login_set_user_cookie(name, uid, &cookie); | |
| 1410 | - } | |
| 1411 | - payload = cookie | |
| 1412 | - ? cson_value_new_string( cookie, strlen(cookie) ) | |
| 1413 | - : cson_value_null()/*why null instead of NULL?*/; | |
| 1414 | - free(cookie); | |
| 1415 | - return payload; | |
| 1416 | - } | |
| 1417 | -#endif | |
| 1418 | -} | |
| 1419 | - | |
| 1420 | -/* | |
| 1421 | -** Impl of /json/logout. | |
| 1422 | -** | |
| 1423 | -*/ | |
| 1424 | -cson_value * json_page_logout(){ | |
| 1425 | - cson_value const *token = g.json.authToken; | |
| 1426 | - /* Remember that json_mode_bootstrap() replaces the login cookie | |
| 1427 | - with the JSON auth token if the request contains it. If the | |
| 1428 | - reqest is missing the auth token then this will fetch fossil's | |
| 1429 | - original cookie. Either way, it's what we want :). | |
| 1430 | - | |
| 1431 | - We require the auth token to avoid someone maliciously | |
| 1432 | - trying to log someone else out (not 100% sure if that | |
| 1433 | - would be possible, given fossil's hardened cookie, but | |
| 1434 | - i'll assume it would be for the time being). | |
| 1435 | - */ | |
| 1436 | - ; | |
| 1437 | - if(!token){ | |
| 1438 | - g.json.resultCode = FSL_JSON_E_MISSING_AUTH; | |
| 1439 | - }else{ | |
| 1440 | - login_clear_login_data(); | |
| 1441 | - g.json.authToken = NULL /* memory is owned elsewhere.*/; | |
| 1442 | - } | |
| 1443 | - return NULL; | |
| 1444 | -} | |
| 1445 | - | |
| 1446 | -/* | |
| 1447 | -** Implementation of the /json/anonymousPassword page. | |
| 1448 | -*/ | |
| 1449 | -cson_value * json_page_anon_password(){ | |
| 1450 | - cson_value * v = cson_value_new_object(); | |
| 1451 | - cson_object * o = cson_value_get_object(v); | |
| 1452 | - unsigned const int seed = captcha_seed(); | |
| 1453 | - char const * zCaptcha = captcha_decode(seed); | |
| 1454 | - cson_object_set(o, "seed", | |
| 1455 | - cson_value_new_integer( (cson_int_t)seed ) | |
| 1456 | - ); | |
| 1457 | - cson_object_set(o, "password", | |
| 1458 | - cson_value_new_string( zCaptcha, strlen(zCaptcha) ) | |
| 1459 | - ); | |
| 1460 | - return v; | |
| 1461 | -} | |
| 1462 | - | |
| 1463 | 1205 | |
| 1464 | 1206 | /* |
| 1465 | 1207 | ** Implementation of the /json/stat page/command. |
| 1466 | 1208 | ** |
| 1467 | 1209 | */ |
| @@ -2540,10 +2282,16 @@ | ||
| 2540 | 2282 | } |
| 2541 | 2283 | db_finalize(&q); |
| 2542 | 2284 | return payV; |
| 2543 | 2285 | } |
| 2544 | 2286 | |
| 2287 | +/* Impl in json_login.c. */ | |
| 2288 | +cson_value * json_page_anon_password(); | |
| 2289 | +/* Impl in json_login.c. */ | |
| 2290 | +cson_value * json_page_login(); | |
| 2291 | +/* Impl in json_login.c. */ | |
| 2292 | +cson_value * json_page_logout(); | |
| 2545 | 2293 | |
| 2546 | 2294 | /* |
| 2547 | 2295 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2548 | 2296 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2549 | 2297 | */ |
| 2550 | 2298 |
| --- src/json.c | |
| +++ src/json.c | |
| @@ -36,45 +36,13 @@ | |
| 36 | #include "json.h" |
| 37 | #include <assert.h> |
| 38 | #include <time.h> |
| 39 | |
| 40 | #if INTERFACE |
| 41 | #include "cson_amalgamation.h" |
| 42 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 43 | #endif |
| 44 | |
| 45 | /* |
| 46 | ** Signature for JSON page/command callbacks. Each callback is |
| 47 | ** responsible for handling one JSON request/command and/or |
| 48 | ** dispatching to sub-commands. |
| 49 | ** |
| 50 | ** By the time the callback is called, json_page_top() (HTTP mode) or |
| 51 | ** json_cmd_top() (CLI mode) will have set up the JSON-related |
| 52 | ** environment. Implementations may generate a "result payload" of any |
| 53 | ** JSON type by returning its value from this function (ownership is |
| 54 | ** tranferred to the caller). On error they should set |
| 55 | ** g.json.resultCode to one of the FossilJsonCodes values and return |
| 56 | ** either their payload object or NULL. Note that NULL is a legal |
| 57 | ** success value - it simply means the response will contain no |
| 58 | ** payload. If g.json.resultCode is non-zero when this function |
| 59 | ** returns then the top-level dispatcher will destroy any payload |
| 60 | ** returned by this function and will output a JSON error response |
| 61 | ** instead. |
| 62 | ** |
| 63 | ** All of the setup/response code is handled by the top dispatcher |
| 64 | ** functions and the callbacks concern themselves only with generating |
| 65 | ** the payload. |
| 66 | ** |
| 67 | ** It is imperitive that NO callback functions EVER output ANYTHING to |
| 68 | ** stdout, as that will effectively corrupt any JSON output, and |
| 69 | ** almost certainly will corrupt any HTTP response headers. Output |
| 70 | ** sent to stderr ends up in my apache log, so that might be useful |
| 71 | ** for debuggering in some cases, but so such code should be left |
| 72 | ** enabled for non-debuggering builds. |
| 73 | */ |
| 74 | typedef cson_value * (*fossil_json_f)(); |
| 75 | |
| 76 | /* |
| 77 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 78 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 79 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 80 | */ |
| @@ -92,34 +60,10 @@ | |
| 92 | static cson_value * json_page_nyi(){ |
| 93 | g.json.resultCode = FSL_JSON_E_NYI; |
| 94 | return NULL; |
| 95 | } |
| 96 | |
| 97 | /* |
| 98 | ** Holds keys used for various JSON API properties. |
| 99 | */ |
| 100 | static const struct FossilJsonKeys_{ |
| 101 | /** maintainers: please keep alpha sorted (case-insensitive) */ |
| 102 | char const * commandPath; |
| 103 | char const * anonymousSeed; |
| 104 | char const * authToken; |
| 105 | char const * payload; |
| 106 | char const * requestId; |
| 107 | char const * resultCode; |
| 108 | char const * resultText; |
| 109 | char const * timestamp; |
| 110 | } FossilJsonKeys = { |
| 111 | "COMMAND_PATH" /*commandPath*/, |
| 112 | "anonymousSeed" /*anonymousSeed*/, |
| 113 | "authToken" /*authToken*/, |
| 114 | "payload" /* payload */, |
| 115 | "requestId" /*requestId*/, |
| 116 | "resultCode" /*resultCode*/, |
| 117 | "resultText" /*resultText*/, |
| 118 | "timestamp" /*timestamp*/ |
| 119 | }; |
| 120 | |
| 121 | /* |
| 122 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 123 | ** as a resultText string. Returns some unspecified string if errCode |
| 124 | ** is not one of the FossilJsonCodes values. |
| 125 | */ |
| @@ -160,10 +104,11 @@ | |
| 160 | #undef C |
| 161 | default: |
| 162 | return "Unknown Error"; |
| 163 | } |
| 164 | } |
| 165 | /* |
| 166 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 167 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 168 | ** which n bytes of src will be appended. |
| 169 | **/ |
| @@ -206,10 +151,11 @@ | |
| 206 | cson_value * root = NULL; |
| 207 | blob_rewind( pSrc ); |
| 208 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 209 | return root; |
| 210 | } |
| 211 | /* |
| 212 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 213 | ** cgi_append_content(). pState is ignored. |
| 214 | **/ |
| 215 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | |
| 476 | ** info in time (and future changes to that state may cause unexpected |
| 477 | ** results). |
| 478 | ** |
| 479 | ** The result of this call are cached for future calls. |
| 480 | */ |
| 481 | static cson_value * json_auth_token(){ |
| 482 | if( !g.json.authToken ){ |
| 483 | /* Try to get an authorization token from GET parameter, POSTed |
| 484 | JSON, or fossil cookie (in that order). */ |
| 485 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 486 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | |
| 859 | ** |
| 860 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 861 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 862 | ** |
| 863 | */ |
| 864 | static char const * json_command_arg(unsigned char ndx){ |
| 865 | cson_array * ar = g.json.cmd.a; |
| 866 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 867 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 868 | if( g.json.cmd.offset < 0 ){ |
| 869 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | |
| 899 | ** given property is searched for in the request payload. If found it |
| 900 | ** is returned. The returned value is owned by (or shares ownership |
| 901 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 902 | ** caller. |
| 903 | */ |
| 904 | static cson_value * json_payload_property( char const * key ){ |
| 905 | return g.json.reqPayload.o ? |
| 906 | cson_object_get( g.json.reqPayload.o, key ) |
| 907 | : NULL; |
| 908 | } |
| 909 | |
| @@ -914,49 +860,18 @@ | |
| 914 | char const * json_auth_token_cstr(){ |
| 915 | return cson_value_get_cstr( json_auth_token() ); |
| 916 | } |
| 917 | |
| 918 | |
| 919 | /* |
| 920 | ** Holds name-to-function mappings for JSON page/command dispatching. |
| 921 | ** |
| 922 | */ |
| 923 | typedef struct JsonPageDef{ |
| 924 | /* |
| 925 | ** The commmand/page's name (path, not including leading /json/). |
| 926 | ** |
| 927 | ** Reminder to self: we cannot use sub-paths with commands this way |
| 928 | ** without additional string-splitting downstream. e.g. foo/bar. |
| 929 | ** Alternately, we can create different JsonPageDef arrays for each |
| 930 | ** subset. |
| 931 | */ |
| 932 | char const * name; |
| 933 | /* |
| 934 | ** Returns a payload object for the response. If it returns a |
| 935 | ** non-NULL value, the caller owns it. To trigger an error this |
| 936 | ** function should set g.json.resultCode to a value from the |
| 937 | ** FossilJsonCodes enum. If it sets an error value and returns |
| 938 | ** a payload, the payload will be destroyed (not sent with the |
| 939 | ** response). |
| 940 | */ |
| 941 | fossil_json_f func; |
| 942 | /* |
| 943 | ** Which mode(s) of execution does func() support: |
| 944 | ** |
| 945 | ** <0 = CLI only, >0 = HTTP only, 0==both |
| 946 | */ |
| 947 | char runMode; |
| 948 | } JsonPageDef; |
| 949 | |
| 950 | /* |
| 951 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 952 | ** found. |
| 953 | ** |
| 954 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 955 | ** last entry has a NULL name. |
| 956 | */ |
| 957 | static JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ |
| 958 | JsonPageDef const * pageDef = head; |
| 959 | assert( head != NULL ); |
| 960 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 961 | if( 0 == strcmp(name, pageDef->name) ){ |
| 962 | return pageDef; |
| @@ -1001,22 +916,23 @@ | |
| 1001 | static cson_value * json_julian_to_timestamp(double j){ |
| 1002 | return cson_value_new_integer((cson_int_t) |
| 1003 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 1004 | ); |
| 1005 | } |
| 1006 | /* |
| 1007 | ** Returns a timestamp value. |
| 1008 | */ |
| 1009 | static cson_int_t json_timestamp(){ |
| 1010 | return (cson_int_t)time(0); |
| 1011 | } |
| 1012 | /* |
| 1013 | ** Returns a new JSON value (owned by the caller) representing |
| 1014 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 1015 | ** the time, else timeVal is used as-is |
| 1016 | */ |
| 1017 | static cson_value * json_new_timestamp(cson_int_t timeVal){ |
| 1018 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 1019 | } |
| 1020 | |
| 1021 | /* |
| 1022 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | |
| 1284 | ADD(Zip); |
| 1285 | ADD(Private); |
| 1286 | #undef ADD |
| 1287 | return payload; |
| 1288 | } |
| 1289 | |
| 1290 | /* |
| 1291 | ** Implementation of the /json/login page. |
| 1292 | ** |
| 1293 | */ |
| 1294 | cson_value * json_page_login(){ |
| 1295 | static char preciseErrors = /* if true, "complete" JSON error codes are used, |
| 1296 | else they are "dumbed down" to a generic login |
| 1297 | error code. |
| 1298 | */ |
| 1299 | #if 0 |
| 1300 | g.json.errorDetailParanoia ? 0 : 1 |
| 1301 | #else |
| 1302 | 0 |
| 1303 | #endif |
| 1304 | ; |
| 1305 | /* |
| 1306 | FIXME: we want to check the GET/POST args in this order: |
| 1307 | |
| 1308 | - GET: name, n, password, p |
| 1309 | - POST: name, password |
| 1310 | |
| 1311 | but a bug in cgi_parameter() is breaking that, causing PD() to |
| 1312 | return the last element of the PATH_INFO instead. |
| 1313 | |
| 1314 | Summary: If we check for P("name") first, then P("n"), |
| 1315 | then ONLY a GET param of "name" will match ("n" |
| 1316 | is not recognized). If we reverse the order of the |
| 1317 | checks then both forms work. Strangely enough, the |
| 1318 | "p"/"password" check is not affected by this. |
| 1319 | */ |
| 1320 | char const * name = cson_value_get_cstr(json_payload_property("name")); |
| 1321 | char const * pw = NULL; |
| 1322 | char const * anonSeed = NULL; |
| 1323 | cson_value * payload = NULL; |
| 1324 | int uid = 0; |
| 1325 | if( !name ){ |
| 1326 | name = PD("n",NULL); |
| 1327 | if( !name ){ |
| 1328 | name = PD("name",NULL); |
| 1329 | if( !name ){ |
| 1330 | g.json.resultCode = preciseErrors |
| 1331 | ? FSL_JSON_E_LOGIN_FAILED_NONAME |
| 1332 | : FSL_JSON_E_LOGIN_FAILED; |
| 1333 | return NULL; |
| 1334 | } |
| 1335 | } |
| 1336 | } |
| 1337 | |
| 1338 | pw = cson_value_get_cstr(json_payload_property("password")); |
| 1339 | if( !pw ){ |
| 1340 | pw = PD("p",NULL); |
| 1341 | if( !pw ){ |
| 1342 | pw = PD("password",NULL); |
| 1343 | } |
| 1344 | } |
| 1345 | if(!pw){ |
| 1346 | g.json.resultCode = preciseErrors |
| 1347 | ? FSL_JSON_E_LOGIN_FAILED_NOPW |
| 1348 | : FSL_JSON_E_LOGIN_FAILED; |
| 1349 | return NULL; |
| 1350 | } |
| 1351 | |
| 1352 | if(0 == strcmp("anonymous",name)){ |
| 1353 | /* check captcha/seed values... */ |
| 1354 | enum { SeedBufLen = 100 /* in some JSON tests i once actually got an |
| 1355 | 80-digit number. |
| 1356 | */ |
| 1357 | }; |
| 1358 | static char seedBuffer[SeedBufLen]; |
| 1359 | cson_value const * jseed = json_getenv(FossilJsonKeys.anonymousSeed); |
| 1360 | seedBuffer[0] = 0; |
| 1361 | if( !jseed ){ |
| 1362 | jseed = json_payload_property(FossilJsonKeys.anonymousSeed); |
| 1363 | if( !jseed ){ |
| 1364 | jseed = json_getenv("cs") /* name used by HTML interface */; |
| 1365 | } |
| 1366 | } |
| 1367 | if(jseed){ |
| 1368 | if( cson_value_is_number(jseed) ){ |
| 1369 | sprintf(seedBuffer, "%"CSON_INT_T_PFMT, cson_value_get_integer(jseed)); |
| 1370 | anonSeed = seedBuffer; |
| 1371 | }else if( cson_value_is_string(jseed) ){ |
| 1372 | anonSeed = cson_string_cstr(cson_value_get_string(jseed)); |
| 1373 | } |
| 1374 | } |
| 1375 | if(!anonSeed){ |
| 1376 | g.json.resultCode = preciseErrors |
| 1377 | ? FSL_JSON_E_LOGIN_FAILED_NOSEED |
| 1378 | : FSL_JSON_E_LOGIN_FAILED; |
| 1379 | return NULL; |
| 1380 | } |
| 1381 | } |
| 1382 | |
| 1383 | #if 0 |
| 1384 | { |
| 1385 | /* only for debugging the PD()-incorrect-result problem */ |
| 1386 | cson_object * o = NULL; |
| 1387 | uid = login_search_uid( name, pw ); |
| 1388 | payload = cson_value_new_object(); |
| 1389 | o = cson_value_get_object(payload); |
| 1390 | cson_object_set( o, "n", cson_value_new_string(name,strlen(name))); |
| 1391 | cson_object_set( o, "p", cson_value_new_string(pw,strlen(pw))); |
| 1392 | return payload; |
| 1393 | } |
| 1394 | #else |
| 1395 | uid = anonSeed |
| 1396 | ? login_is_valid_anonymous(name, pw, anonSeed) |
| 1397 | : login_search_uid(name, pw) |
| 1398 | ; |
| 1399 | if( !uid ){ |
| 1400 | g.json.resultCode = preciseErrors |
| 1401 | ? FSL_JSON_E_LOGIN_FAILED_NOTFOUND |
| 1402 | : FSL_JSON_E_LOGIN_FAILED; |
| 1403 | return NULL; |
| 1404 | }else{ |
| 1405 | char * cookie = NULL; |
| 1406 | if(anonSeed){ |
| 1407 | login_set_anon_cookie(NULL, &cookie); |
| 1408 | }else{ |
| 1409 | login_set_user_cookie(name, uid, &cookie); |
| 1410 | } |
| 1411 | payload = cookie |
| 1412 | ? cson_value_new_string( cookie, strlen(cookie) ) |
| 1413 | : cson_value_null()/*why null instead of NULL?*/; |
| 1414 | free(cookie); |
| 1415 | return payload; |
| 1416 | } |
| 1417 | #endif |
| 1418 | } |
| 1419 | |
| 1420 | /* |
| 1421 | ** Impl of /json/logout. |
| 1422 | ** |
| 1423 | */ |
| 1424 | cson_value * json_page_logout(){ |
| 1425 | cson_value const *token = g.json.authToken; |
| 1426 | /* Remember that json_mode_bootstrap() replaces the login cookie |
| 1427 | with the JSON auth token if the request contains it. If the |
| 1428 | reqest is missing the auth token then this will fetch fossil's |
| 1429 | original cookie. Either way, it's what we want :). |
| 1430 | |
| 1431 | We require the auth token to avoid someone maliciously |
| 1432 | trying to log someone else out (not 100% sure if that |
| 1433 | would be possible, given fossil's hardened cookie, but |
| 1434 | i'll assume it would be for the time being). |
| 1435 | */ |
| 1436 | ; |
| 1437 | if(!token){ |
| 1438 | g.json.resultCode = FSL_JSON_E_MISSING_AUTH; |
| 1439 | }else{ |
| 1440 | login_clear_login_data(); |
| 1441 | g.json.authToken = NULL /* memory is owned elsewhere.*/; |
| 1442 | } |
| 1443 | return NULL; |
| 1444 | } |
| 1445 | |
| 1446 | /* |
| 1447 | ** Implementation of the /json/anonymousPassword page. |
| 1448 | */ |
| 1449 | cson_value * json_page_anon_password(){ |
| 1450 | cson_value * v = cson_value_new_object(); |
| 1451 | cson_object * o = cson_value_get_object(v); |
| 1452 | unsigned const int seed = captcha_seed(); |
| 1453 | char const * zCaptcha = captcha_decode(seed); |
| 1454 | cson_object_set(o, "seed", |
| 1455 | cson_value_new_integer( (cson_int_t)seed ) |
| 1456 | ); |
| 1457 | cson_object_set(o, "password", |
| 1458 | cson_value_new_string( zCaptcha, strlen(zCaptcha) ) |
| 1459 | ); |
| 1460 | return v; |
| 1461 | } |
| 1462 | |
| 1463 | |
| 1464 | /* |
| 1465 | ** Implementation of the /json/stat page/command. |
| 1466 | ** |
| 1467 | */ |
| @@ -2540,10 +2282,16 @@ | |
| 2540 | } |
| 2541 | db_finalize(&q); |
| 2542 | return payV; |
| 2543 | } |
| 2544 | |
| 2545 | |
| 2546 | /* |
| 2547 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2548 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2549 | */ |
| 2550 |
| --- src/json.c | |
| +++ src/json.c | |
| @@ -36,45 +36,13 @@ | |
| 36 | #include "json.h" |
| 37 | #include <assert.h> |
| 38 | #include <time.h> |
| 39 | |
| 40 | #if INTERFACE |
| 41 | #include "json_detail.h" /* workaround for apparent enum limitation in makeheaders */ |
| 42 | #endif |
| 43 | |
| 44 | /* |
| 45 | ** Internal helpers to manipulate a byte array as a bitset. The B |
| 46 | ** argument must be-a array at least (BIT/8+1) bytes long. |
| 47 | ** The BIT argument is the bit number to query/set/clear/toggle. |
| 48 | */ |
| @@ -92,34 +60,10 @@ | |
| 60 | static cson_value * json_page_nyi(){ |
| 61 | g.json.resultCode = FSL_JSON_E_NYI; |
| 62 | return NULL; |
| 63 | } |
| 64 | |
| 65 | /* |
| 66 | ** Given a FossilJsonCodes value, it returns a string suitable for use |
| 67 | ** as a resultText string. Returns some unspecified string if errCode |
| 68 | ** is not one of the FossilJsonCodes values. |
| 69 | */ |
| @@ -160,10 +104,11 @@ | |
| 104 | #undef C |
| 105 | default: |
| 106 | return "Unknown Error"; |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | /* |
| 111 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 112 | ** a fossil Blob object. pState must be-a initialized (Blob*), to |
| 113 | ** which n bytes of src will be appended. |
| 114 | **/ |
| @@ -206,10 +151,11 @@ | |
| 151 | cson_value * root = NULL; |
| 152 | blob_rewind( pSrc ); |
| 153 | cson_parse( &root, cson_data_src_Blob, pSrc, NULL, pInfo ); |
| 154 | return root; |
| 155 | } |
| 156 | |
| 157 | /* |
| 158 | ** Implements the cson_data_dest_f() interface and outputs the data to |
| 159 | ** cgi_append_content(). pState is ignored. |
| 160 | **/ |
| 161 | int cson_data_dest_cgi(void * pState, void const * src, unsigned int n){ |
| @@ -476,11 +422,11 @@ | |
| 422 | ** info in time (and future changes to that state may cause unexpected |
| 423 | ** results). |
| 424 | ** |
| 425 | ** The result of this call are cached for future calls. |
| 426 | */ |
| 427 | cson_value * json_auth_token(){ |
| 428 | if( !g.json.authToken ){ |
| 429 | /* Try to get an authorization token from GET parameter, POSTed |
| 430 | JSON, or fossil cookie (in that order). */ |
| 431 | g.json.authToken = json_getenv(FossilJsonKeys.authToken); |
| 432 | if(g.json.authToken |
| @@ -859,11 +805,11 @@ | |
| 805 | ** |
| 806 | ** In CLI mode the "path" is the list of arguments (skipping argv[0]). |
| 807 | ** In server/CGI modes the path is taken from PATH_INFO. |
| 808 | ** |
| 809 | */ |
| 810 | char const * json_command_arg(unsigned char ndx){ |
| 811 | cson_array * ar = g.json.cmd.a; |
| 812 | assert((NULL!=ar) && "Internal error. Was json_mode_bootstrap() called?"); |
| 813 | assert((g.argc>1) && "Internal error - we never should have gotten this far."); |
| 814 | if( g.json.cmd.offset < 0 ){ |
| 815 | /* first-time setup. */ |
| @@ -899,11 +845,11 @@ | |
| 845 | ** given property is searched for in the request payload. If found it |
| 846 | ** is returned. The returned value is owned by (or shares ownership |
| 847 | ** with) g.json, and must NOT be cson_value_free()'d by the |
| 848 | ** caller. |
| 849 | */ |
| 850 | cson_value * json_payload_property( char const * key ){ |
| 851 | return g.json.reqPayload.o ? |
| 852 | cson_object_get( g.json.reqPayload.o, key ) |
| 853 | : NULL; |
| 854 | } |
| 855 | |
| @@ -914,49 +860,18 @@ | |
| 860 | char const * json_auth_token_cstr(){ |
| 861 | return cson_value_get_cstr( json_auth_token() ); |
| 862 | } |
| 863 | |
| 864 | |
| 865 | /* |
| 866 | ** Returns the JsonPageDef with the given name, or NULL if no match is |
| 867 | ** found. |
| 868 | ** |
| 869 | ** head must be a pointer to an array of JsonPageDefs in which the |
| 870 | ** last entry has a NULL name. |
| 871 | */ |
| 872 | JsonPageDef const * json_handler_for_name( char const * name, JsonPageDef const * head ){ |
| 873 | JsonPageDef const * pageDef = head; |
| 874 | assert( head != NULL ); |
| 875 | if(name && *name) for( ; pageDef->name; ++pageDef ){ |
| 876 | if( 0 == strcmp(name, pageDef->name) ){ |
| 877 | return pageDef; |
| @@ -1001,22 +916,23 @@ | |
| 916 | static cson_value * json_julian_to_timestamp(double j){ |
| 917 | return cson_value_new_integer((cson_int_t) |
| 918 | db_int64(0,"SELECT strftime('%%s',%lf)",j) |
| 919 | ); |
| 920 | } |
| 921 | |
| 922 | /* |
| 923 | ** Returns a timestamp value. |
| 924 | */ |
| 925 | cson_int_t json_timestamp(){ |
| 926 | return (cson_int_t)time(0); |
| 927 | } |
| 928 | /* |
| 929 | ** Returns a new JSON value (owned by the caller) representing |
| 930 | ** a timestamp. If timeVal is < 0 then time(0) is used to fetch |
| 931 | ** the time, else timeVal is used as-is |
| 932 | */ |
| 933 | cson_value * json_new_timestamp(cson_int_t timeVal){ |
| 934 | return cson_value_new_integer((timeVal<0) ? (cson_int_t)time(0) : timeVal); |
| 935 | } |
| 936 | |
| 937 | /* |
| 938 | ** Creates a new Fossil/JSON response envelope skeleton. It is owned |
| @@ -1284,184 +1200,10 @@ | |
| 1200 | ADD(Zip); |
| 1201 | ADD(Private); |
| 1202 | #undef ADD |
| 1203 | return payload; |
| 1204 | } |
| 1205 | |
| 1206 | /* |
| 1207 | ** Implementation of the /json/stat page/command. |
| 1208 | ** |
| 1209 | */ |
| @@ -2540,10 +2282,16 @@ | |
| 2282 | } |
| 2283 | db_finalize(&q); |
| 2284 | return payV; |
| 2285 | } |
| 2286 | |
| 2287 | /* Impl in json_login.c. */ |
| 2288 | cson_value * json_page_anon_password(); |
| 2289 | /* Impl in json_login.c. */ |
| 2290 | cson_value * json_page_login(); |
| 2291 | /* Impl in json_login.c. */ |
| 2292 | cson_value * json_page_logout(); |
| 2293 | |
| 2294 | /* |
| 2295 | ** Mapping of names to JSON pages/commands. Each name is a subpath of |
| 2296 | ** /json (in CGI mode) or a subcommand of the json command in CLI mode |
| 2297 | */ |
| 2298 |
+92
| --- src/json_detail.h | ||
| +++ src/json_detail.h | ||
| @@ -1,5 +1,9 @@ | ||
| 1 | +#if !defined(FOSSIL_JSON_DETAIL_H_INCLUDED) | |
| 2 | +#define FOSSIL_JSON_DETAIL_H_INCLUDED | |
| 3 | + | |
| 4 | +#include "cson_amalgamation.h" | |
| 1 | 5 | /* |
| 2 | 6 | ** Impl details for the JSON API which need to be shared |
| 3 | 7 | ** across multiple C files. |
| 4 | 8 | */ |
| 5 | 9 | |
| @@ -59,5 +63,93 @@ | ||
| 59 | 63 | |
| 60 | 64 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 61 | 65 | |
| 62 | 66 | }; |
| 63 | 67 | |
| 68 | + | |
| 69 | +/* | |
| 70 | +** Signature for JSON page/command callbacks. Each callback is | |
| 71 | +** responsible for handling one JSON request/command and/or | |
| 72 | +** dispatching to sub-commands. | |
| 73 | +** | |
| 74 | +** By the time the callback is called, json_page_top() (HTTP mode) or | |
| 75 | +** json_cmd_top() (CLI mode) will have set up the JSON-related | |
| 76 | +** environment. Implementations may generate a "result payload" of any | |
| 77 | +** JSON type by returning its value from this function (ownership is | |
| 78 | +** tranferred to the caller). On error they should set | |
| 79 | +** g.json.resultCode to one of the FossilJsonCodes values and return | |
| 80 | +** either their payload object or NULL. Note that NULL is a legal | |
| 81 | +** success value - it simply means the response will contain no | |
| 82 | +** payload. If g.json.resultCode is non-zero when this function | |
| 83 | +** returns then the top-level dispatcher will destroy any payload | |
| 84 | +** returned by this function and will output a JSON error response | |
| 85 | +** instead. | |
| 86 | +** | |
| 87 | +** All of the setup/response code is handled by the top dispatcher | |
| 88 | +** functions and the callbacks concern themselves only with generating | |
| 89 | +** the payload. | |
| 90 | +** | |
| 91 | +** It is imperitive that NO callback functions EVER output ANYTHING to | |
| 92 | +** stdout, as that will effectively corrupt any JSON output, and | |
| 93 | +** almost certainly will corrupt any HTTP response headers. Output | |
| 94 | +** sent to stderr ends up in my apache log, so that might be useful | |
| 95 | +** for debuggering in some cases, but so such code should be left | |
| 96 | +** enabled for non-debuggering builds. | |
| 97 | +*/ | |
| 98 | +typedef cson_value * (*fossil_json_f)(); | |
| 99 | + | |
| 100 | +/* | |
| 101 | +** Holds name-to-function mappings for JSON page/command dispatching. | |
| 102 | +** | |
| 103 | +*/ | |
| 104 | +typedef struct JsonPageDef{ | |
| 105 | + /* | |
| 106 | + ** The commmand/page's name (path, not including leading /json/). | |
| 107 | + ** | |
| 108 | + ** Reminder to self: we cannot use sub-paths with commands this way | |
| 109 | + ** without additional string-splitting downstream. e.g. foo/bar. | |
| 110 | + ** Alternately, we can create different JsonPageDef arrays for each | |
| 111 | + ** subset. | |
| 112 | + */ | |
| 113 | + char const * name; | |
| 114 | + /* | |
| 115 | + ** Returns a payload object for the response. If it returns a | |
| 116 | + ** non-NULL value, the caller owns it. To trigger an error this | |
| 117 | + ** function should set g.json.resultCode to a value from the | |
| 118 | + ** FossilJsonCodes enum. If it sets an error value and returns | |
| 119 | + ** a payload, the payload will be destroyed (not sent with the | |
| 120 | + ** response). | |
| 121 | + */ | |
| 122 | + fossil_json_f func; | |
| 123 | + /* | |
| 124 | + ** Which mode(s) of execution does func() support: | |
| 125 | + ** | |
| 126 | + ** <0 = CLI only, >0 = HTTP only, 0==both | |
| 127 | + */ | |
| 128 | + char runMode; | |
| 129 | +} JsonPageDef; | |
| 130 | + | |
| 131 | +/* | |
| 132 | +** Holds common keys used for various JSON API properties. | |
| 133 | +*/ | |
| 134 | +static const struct FossilJsonKeys_{ | |
| 135 | + /** maintainers: please keep alpha sorted (case-insensitive) */ | |
| 136 | + char const * anonymousSeed; | |
| 137 | + char const * authToken; | |
| 138 | + char const * commandPath; | |
| 139 | + char const * payload; | |
| 140 | + char const * requestId; | |
| 141 | + char const * resultCode; | |
| 142 | + char const * resultText; | |
| 143 | + char const * timestamp; | |
| 144 | +} FossilJsonKeys = { | |
| 145 | + "anonymousSeed" /*anonymousSeed*/, | |
| 146 | + "authToken" /*authToken*/, | |
| 147 | + "COMMAND_PATH" /*commandPath*/, | |
| 148 | + "payload" /* payload */, | |
| 149 | + "requestId" /*requestId*/, | |
| 150 | + "resultCode" /*resultCode*/, | |
| 151 | + "resultText" /*resultText*/, | |
| 152 | + "timestamp" /*timestamp*/ | |
| 153 | +}; | |
| 154 | + | |
| 155 | +#endif/*FOSSIL_JSON_DETAIL_H_INCLUDED*/ | |
| 64 | 156 | |
| 65 | 157 | ADDED src/json_login.c |
| --- src/json_detail.h | |
| +++ src/json_detail.h | |
| @@ -1,5 +1,9 @@ | |
| 1 | /* |
| 2 | ** Impl details for the JSON API which need to be shared |
| 3 | ** across multiple C files. |
| 4 | */ |
| 5 | |
| @@ -59,5 +63,93 @@ | |
| 59 | |
| 60 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 61 | |
| 62 | }; |
| 63 | |
| 64 | |
| 65 | DDED src/json_login.c |
| --- src/json_detail.h | |
| +++ src/json_detail.h | |
| @@ -1,5 +1,9 @@ | |
| 1 | #if !defined(FOSSIL_JSON_DETAIL_H_INCLUDED) |
| 2 | #define FOSSIL_JSON_DETAIL_H_INCLUDED |
| 3 | |
| 4 | #include "cson_amalgamation.h" |
| 5 | /* |
| 6 | ** Impl details for the JSON API which need to be shared |
| 7 | ** across multiple C files. |
| 8 | */ |
| 9 | |
| @@ -59,5 +63,93 @@ | |
| 63 | |
| 64 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 65 | |
| 66 | }; |
| 67 | |
| 68 | |
| 69 | /* |
| 70 | ** Signature for JSON page/command callbacks. Each callback is |
| 71 | ** responsible for handling one JSON request/command and/or |
| 72 | ** dispatching to sub-commands. |
| 73 | ** |
| 74 | ** By the time the callback is called, json_page_top() (HTTP mode) or |
| 75 | ** json_cmd_top() (CLI mode) will have set up the JSON-related |
| 76 | ** environment. Implementations may generate a "result payload" of any |
| 77 | ** JSON type by returning its value from this function (ownership is |
| 78 | ** tranferred to the caller). On error they should set |
| 79 | ** g.json.resultCode to one of the FossilJsonCodes values and return |
| 80 | ** either their payload object or NULL. Note that NULL is a legal |
| 81 | ** success value - it simply means the response will contain no |
| 82 | ** payload. If g.json.resultCode is non-zero when this function |
| 83 | ** returns then the top-level dispatcher will destroy any payload |
| 84 | ** returned by this function and will output a JSON error response |
| 85 | ** instead. |
| 86 | ** |
| 87 | ** All of the setup/response code is handled by the top dispatcher |
| 88 | ** functions and the callbacks concern themselves only with generating |
| 89 | ** the payload. |
| 90 | ** |
| 91 | ** It is imperitive that NO callback functions EVER output ANYTHING to |
| 92 | ** stdout, as that will effectively corrupt any JSON output, and |
| 93 | ** almost certainly will corrupt any HTTP response headers. Output |
| 94 | ** sent to stderr ends up in my apache log, so that might be useful |
| 95 | ** for debuggering in some cases, but so such code should be left |
| 96 | ** enabled for non-debuggering builds. |
| 97 | */ |
| 98 | typedef cson_value * (*fossil_json_f)(); |
| 99 | |
| 100 | /* |
| 101 | ** Holds name-to-function mappings for JSON page/command dispatching. |
| 102 | ** |
| 103 | */ |
| 104 | typedef struct JsonPageDef{ |
| 105 | /* |
| 106 | ** The commmand/page's name (path, not including leading /json/). |
| 107 | ** |
| 108 | ** Reminder to self: we cannot use sub-paths with commands this way |
| 109 | ** without additional string-splitting downstream. e.g. foo/bar. |
| 110 | ** Alternately, we can create different JsonPageDef arrays for each |
| 111 | ** subset. |
| 112 | */ |
| 113 | char const * name; |
| 114 | /* |
| 115 | ** Returns a payload object for the response. If it returns a |
| 116 | ** non-NULL value, the caller owns it. To trigger an error this |
| 117 | ** function should set g.json.resultCode to a value from the |
| 118 | ** FossilJsonCodes enum. If it sets an error value and returns |
| 119 | ** a payload, the payload will be destroyed (not sent with the |
| 120 | ** response). |
| 121 | */ |
| 122 | fossil_json_f func; |
| 123 | /* |
| 124 | ** Which mode(s) of execution does func() support: |
| 125 | ** |
| 126 | ** <0 = CLI only, >0 = HTTP only, 0==both |
| 127 | */ |
| 128 | char runMode; |
| 129 | } JsonPageDef; |
| 130 | |
| 131 | /* |
| 132 | ** Holds common keys used for various JSON API properties. |
| 133 | */ |
| 134 | static const struct FossilJsonKeys_{ |
| 135 | /** maintainers: please keep alpha sorted (case-insensitive) */ |
| 136 | char const * anonymousSeed; |
| 137 | char const * authToken; |
| 138 | char const * commandPath; |
| 139 | char const * payload; |
| 140 | char const * requestId; |
| 141 | char const * resultCode; |
| 142 | char const * resultText; |
| 143 | char const * timestamp; |
| 144 | } FossilJsonKeys = { |
| 145 | "anonymousSeed" /*anonymousSeed*/, |
| 146 | "authToken" /*authToken*/, |
| 147 | "COMMAND_PATH" /*commandPath*/, |
| 148 | "payload" /* payload */, |
| 149 | "requestId" /*requestId*/, |
| 150 | "resultCode" /*resultCode*/, |
| 151 | "resultText" /*resultText*/, |
| 152 | "timestamp" /*timestamp*/ |
| 153 | }; |
| 154 | |
| 155 | #endif/*FOSSIL_JSON_DETAIL_H_INCLUDED*/ |
| 156 | |
| 157 | DDED src/json_login.c |
+92
| --- src/json_detail.h | ||
| +++ src/json_detail.h | ||
| @@ -1,5 +1,9 @@ | ||
| 1 | +#if !defined(FOSSIL_JSON_DETAIL_H_INCLUDED) | |
| 2 | +#define FOSSIL_JSON_DETAIL_H_INCLUDED | |
| 3 | + | |
| 4 | +#include "cson_amalgamation.h" | |
| 1 | 5 | /* |
| 2 | 6 | ** Impl details for the JSON API which need to be shared |
| 3 | 7 | ** across multiple C files. |
| 4 | 8 | */ |
| 5 | 9 | |
| @@ -59,5 +63,93 @@ | ||
| 59 | 63 | |
| 60 | 64 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 61 | 65 | |
| 62 | 66 | }; |
| 63 | 67 | |
| 68 | + | |
| 69 | +/* | |
| 70 | +** Signature for JSON page/command callbacks. Each callback is | |
| 71 | +** responsible for handling one JSON request/command and/or | |
| 72 | +** dispatching to sub-commands. | |
| 73 | +** | |
| 74 | +** By the time the callback is called, json_page_top() (HTTP mode) or | |
| 75 | +** json_cmd_top() (CLI mode) will have set up the JSON-related | |
| 76 | +** environment. Implementations may generate a "result payload" of any | |
| 77 | +** JSON type by returning its value from this function (ownership is | |
| 78 | +** tranferred to the caller). On error they should set | |
| 79 | +** g.json.resultCode to one of the FossilJsonCodes values and return | |
| 80 | +** either their payload object or NULL. Note that NULL is a legal | |
| 81 | +** success value - it simply means the response will contain no | |
| 82 | +** payload. If g.json.resultCode is non-zero when this function | |
| 83 | +** returns then the top-level dispatcher will destroy any payload | |
| 84 | +** returned by this function and will output a JSON error response | |
| 85 | +** instead. | |
| 86 | +** | |
| 87 | +** All of the setup/response code is handled by the top dispatcher | |
| 88 | +** functions and the callbacks concern themselves only with generating | |
| 89 | +** the payload. | |
| 90 | +** | |
| 91 | +** It is imperitive that NO callback functions EVER output ANYTHING to | |
| 92 | +** stdout, as that will effectively corrupt any JSON output, and | |
| 93 | +** almost certainly will corrupt any HTTP response headers. Output | |
| 94 | +** sent to stderr ends up in my apache log, so that might be useful | |
| 95 | +** for debuggering in some cases, but so such code should be left | |
| 96 | +** enabled for non-debuggering builds. | |
| 97 | +*/ | |
| 98 | +typedef cson_value * (*fossil_json_f)(); | |
| 99 | + | |
| 100 | +/* | |
| 101 | +** Holds name-to-function mappings for JSON page/command dispatching. | |
| 102 | +** | |
| 103 | +*/ | |
| 104 | +typedef struct JsonPageDef{ | |
| 105 | + /* | |
| 106 | + ** The commmand/page's name (path, not including leading /json/). | |
| 107 | + ** | |
| 108 | + ** Reminder to self: we cannot use sub-paths with commands this way | |
| 109 | + ** without additional string-splitting downstream. e.g. foo/bar. | |
| 110 | + ** Alternately, we can create different JsonPageDef arrays for each | |
| 111 | + ** subset. | |
| 112 | + */ | |
| 113 | + char const * name; | |
| 114 | + /* | |
| 115 | + ** Returns a payload object for the response. If it returns a | |
| 116 | + ** non-NULL value, the caller owns it. To trigger an error this | |
| 117 | + ** function should set g.json.resultCode to a value from the | |
| 118 | + ** FossilJsonCodes enum. If it sets an error value and returns | |
| 119 | + ** a payload, the payload will be destroyed (not sent with the | |
| 120 | + ** response). | |
| 121 | + */ | |
| 122 | + fossil_json_f func; | |
| 123 | + /* | |
| 124 | + ** Which mode(s) of execution does func() support: | |
| 125 | + ** | |
| 126 | + ** <0 = CLI only, >0 = HTTP only, 0==both | |
| 127 | + */ | |
| 128 | + char runMode; | |
| 129 | +} JsonPageDef; | |
| 130 | + | |
| 131 | +/* | |
| 132 | +** Holds common keys used for various JSON API properties. | |
| 133 | +*/ | |
| 134 | +static const struct FossilJsonKeys_{ | |
| 135 | + /** maintainers: please keep alpha sorted (case-insensitive) */ | |
| 136 | + char const * anonymousSeed; | |
| 137 | + char const * authToken; | |
| 138 | + char const * commandPath; | |
| 139 | + char const * payload; | |
| 140 | + char const * requestId; | |
| 141 | + char const * resultCode; | |
| 142 | + char const * resultText; | |
| 143 | + char const * timestamp; | |
| 144 | +} FossilJsonKeys = { | |
| 145 | + "anonymousSeed" /*anonymousSeed*/, | |
| 146 | + "authToken" /*authToken*/, | |
| 147 | + "COMMAND_PATH" /*commandPath*/, | |
| 148 | + "payload" /* payload */, | |
| 149 | + "requestId" /*requestId*/, | |
| 150 | + "resultCode" /*resultCode*/, | |
| 151 | + "resultText" /*resultText*/, | |
| 152 | + "timestamp" /*timestamp*/ | |
| 153 | +}; | |
| 154 | + | |
| 155 | +#endif/*FOSSIL_JSON_DETAIL_H_INCLUDED*/ | |
| 64 | 156 | |
| 65 | 157 | ADDED src/json_login.c |
| --- src/json_detail.h | |
| +++ src/json_detail.h | |
| @@ -1,5 +1,9 @@ | |
| 1 | /* |
| 2 | ** Impl details for the JSON API which need to be shared |
| 3 | ** across multiple C files. |
| 4 | */ |
| 5 | |
| @@ -59,5 +63,93 @@ | |
| 59 | |
| 60 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 61 | |
| 62 | }; |
| 63 | |
| 64 | |
| 65 | DDED src/json_login.c |
| --- src/json_detail.h | |
| +++ src/json_detail.h | |
| @@ -1,5 +1,9 @@ | |
| 1 | #if !defined(FOSSIL_JSON_DETAIL_H_INCLUDED) |
| 2 | #define FOSSIL_JSON_DETAIL_H_INCLUDED |
| 3 | |
| 4 | #include "cson_amalgamation.h" |
| 5 | /* |
| 6 | ** Impl details for the JSON API which need to be shared |
| 7 | ** across multiple C files. |
| 8 | */ |
| 9 | |
| @@ -59,5 +63,93 @@ | |
| 63 | |
| 64 | FSL_JSON_E_DB_NEEDS_REBUILD = FSL_JSON_E_DB + 101 |
| 65 | |
| 66 | }; |
| 67 | |
| 68 | |
| 69 | /* |
| 70 | ** Signature for JSON page/command callbacks. Each callback is |
| 71 | ** responsible for handling one JSON request/command and/or |
| 72 | ** dispatching to sub-commands. |
| 73 | ** |
| 74 | ** By the time the callback is called, json_page_top() (HTTP mode) or |
| 75 | ** json_cmd_top() (CLI mode) will have set up the JSON-related |
| 76 | ** environment. Implementations may generate a "result payload" of any |
| 77 | ** JSON type by returning its value from this function (ownership is |
| 78 | ** tranferred to the caller). On error they should set |
| 79 | ** g.json.resultCode to one of the FossilJsonCodes values and return |
| 80 | ** either their payload object or NULL. Note that NULL is a legal |
| 81 | ** success value - it simply means the response will contain no |
| 82 | ** payload. If g.json.resultCode is non-zero when this function |
| 83 | ** returns then the top-level dispatcher will destroy any payload |
| 84 | ** returned by this function and will output a JSON error response |
| 85 | ** instead. |
| 86 | ** |
| 87 | ** All of the setup/response code is handled by the top dispatcher |
| 88 | ** functions and the callbacks concern themselves only with generating |
| 89 | ** the payload. |
| 90 | ** |
| 91 | ** It is imperitive that NO callback functions EVER output ANYTHING to |
| 92 | ** stdout, as that will effectively corrupt any JSON output, and |
| 93 | ** almost certainly will corrupt any HTTP response headers. Output |
| 94 | ** sent to stderr ends up in my apache log, so that might be useful |
| 95 | ** for debuggering in some cases, but so such code should be left |
| 96 | ** enabled for non-debuggering builds. |
| 97 | */ |
| 98 | typedef cson_value * (*fossil_json_f)(); |
| 99 | |
| 100 | /* |
| 101 | ** Holds name-to-function mappings for JSON page/command dispatching. |
| 102 | ** |
| 103 | */ |
| 104 | typedef struct JsonPageDef{ |
| 105 | /* |
| 106 | ** The commmand/page's name (path, not including leading /json/). |
| 107 | ** |
| 108 | ** Reminder to self: we cannot use sub-paths with commands this way |
| 109 | ** without additional string-splitting downstream. e.g. foo/bar. |
| 110 | ** Alternately, we can create different JsonPageDef arrays for each |
| 111 | ** subset. |
| 112 | */ |
| 113 | char const * name; |
| 114 | /* |
| 115 | ** Returns a payload object for the response. If it returns a |
| 116 | ** non-NULL value, the caller owns it. To trigger an error this |
| 117 | ** function should set g.json.resultCode to a value from the |
| 118 | ** FossilJsonCodes enum. If it sets an error value and returns |
| 119 | ** a payload, the payload will be destroyed (not sent with the |
| 120 | ** response). |
| 121 | */ |
| 122 | fossil_json_f func; |
| 123 | /* |
| 124 | ** Which mode(s) of execution does func() support: |
| 125 | ** |
| 126 | ** <0 = CLI only, >0 = HTTP only, 0==both |
| 127 | */ |
| 128 | char runMode; |
| 129 | } JsonPageDef; |
| 130 | |
| 131 | /* |
| 132 | ** Holds common keys used for various JSON API properties. |
| 133 | */ |
| 134 | static const struct FossilJsonKeys_{ |
| 135 | /** maintainers: please keep alpha sorted (case-insensitive) */ |
| 136 | char const * anonymousSeed; |
| 137 | char const * authToken; |
| 138 | char const * commandPath; |
| 139 | char const * payload; |
| 140 | char const * requestId; |
| 141 | char const * resultCode; |
| 142 | char const * resultText; |
| 143 | char const * timestamp; |
| 144 | } FossilJsonKeys = { |
| 145 | "anonymousSeed" /*anonymousSeed*/, |
| 146 | "authToken" /*authToken*/, |
| 147 | "COMMAND_PATH" /*commandPath*/, |
| 148 | "payload" /* payload */, |
| 149 | "requestId" /*requestId*/, |
| 150 | "resultCode" /*resultCode*/, |
| 151 | "resultText" /*resultText*/, |
| 152 | "timestamp" /*timestamp*/ |
| 153 | }; |
| 154 | |
| 155 | #endif/*FOSSIL_JSON_DETAIL_H_INCLUDED*/ |
| 156 | |
| 157 | DDED src/json_login.c |
+3
| --- a/src/json_login.c | ||
| +++ b/src/json_login.c | ||
| @@ -0,0 +1,3 @@ | ||
| 1 | + static */ | |
| 2 | +#if 0 VERSION | |
| 3 | +#if 0 |
| --- a/src/json_login.c | |
| +++ b/src/json_login.c | |
| @@ -0,0 +1,3 @@ | |
| --- a/src/json_login.c | |
| +++ b/src/json_login.c | |
| @@ -0,0 +1,3 @@ | |
| 1 | static */ |
| 2 | #if 0 VERSION |
| 3 | #if 0 |
+3
| --- a/src/json_login.c | ||
| +++ b/src/json_login.c | ||
| @@ -0,0 +1,3 @@ | ||
| 1 | + static */ | |
| 2 | +#if 0 VERSION | |
| 3 | +#if 0 |
| --- a/src/json_login.c | |
| +++ b/src/json_login.c | |
| @@ -0,0 +1,3 @@ | |
| --- a/src/json_login.c | |
| +++ b/src/json_login.c | |
| @@ -0,0 +1,3 @@ | |
| 1 | static */ |
| 2 | #if 0 VERSION |
| 3 | #if 0 |
+15
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -765,10 +765,25 @@ | ||
| 765 | 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | 766 | } |
| 767 | 767 | multi_column_list(aCmd, nCmd); |
| 768 | 768 | } |
| 769 | 769 | |
| 770 | + | |
| 771 | +/* | |
| 772 | +** COMMAND: test-list-webpage | |
| 773 | +** | |
| 774 | +** List all web pages | |
| 775 | +*/ | |
| 776 | +void cmd_test_webpage_list(void){ | |
| 777 | + int i, nCmd; | |
| 778 | + const char *aCmd[count(aWebpage)]; | |
| 779 | + for(i=nCmd=0; i<count(aWebpage); i++){ | |
| 780 | + aCmd[nCmd++] = aWebpage[i].zName; | |
| 781 | + } | |
| 782 | + multi_column_list(aCmd, nCmd); | |
| 783 | +} | |
| 784 | + | |
| 770 | 785 | |
| 771 | 786 | /* |
| 772 | 787 | ** COMMAND: version |
| 773 | 788 | ** |
| 774 | 789 | ** Usage: %fossil version |
| 775 | 790 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -765,10 +765,25 @@ | |
| 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | } |
| 767 | multi_column_list(aCmd, nCmd); |
| 768 | } |
| 769 | |
| 770 | |
| 771 | /* |
| 772 | ** COMMAND: version |
| 773 | ** |
| 774 | ** Usage: %fossil version |
| 775 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -765,10 +765,25 @@ | |
| 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | } |
| 767 | multi_column_list(aCmd, nCmd); |
| 768 | } |
| 769 | |
| 770 | |
| 771 | /* |
| 772 | ** COMMAND: test-list-webpage |
| 773 | ** |
| 774 | ** List all web pages |
| 775 | */ |
| 776 | void cmd_test_webpage_list(void){ |
| 777 | int i, nCmd; |
| 778 | const char *aCmd[count(aWebpage)]; |
| 779 | for(i=nCmd=0; i<count(aWebpage); i++){ |
| 780 | aCmd[nCmd++] = aWebpage[i].zName; |
| 781 | } |
| 782 | multi_column_list(aCmd, nCmd); |
| 783 | } |
| 784 | |
| 785 | |
| 786 | /* |
| 787 | ** COMMAND: version |
| 788 | ** |
| 789 | ** Usage: %fossil version |
| 790 |
+15
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -765,10 +765,25 @@ | ||
| 765 | 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | 766 | } |
| 767 | 767 | multi_column_list(aCmd, nCmd); |
| 768 | 768 | } |
| 769 | 769 | |
| 770 | + | |
| 771 | +/* | |
| 772 | +** COMMAND: test-list-webpage | |
| 773 | +** | |
| 774 | +** List all web pages | |
| 775 | +*/ | |
| 776 | +void cmd_test_webpage_list(void){ | |
| 777 | + int i, nCmd; | |
| 778 | + const char *aCmd[count(aWebpage)]; | |
| 779 | + for(i=nCmd=0; i<count(aWebpage); i++){ | |
| 780 | + aCmd[nCmd++] = aWebpage[i].zName; | |
| 781 | + } | |
| 782 | + multi_column_list(aCmd, nCmd); | |
| 783 | +} | |
| 784 | + | |
| 770 | 785 | |
| 771 | 786 | /* |
| 772 | 787 | ** COMMAND: version |
| 773 | 788 | ** |
| 774 | 789 | ** Usage: %fossil version |
| 775 | 790 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -765,10 +765,25 @@ | |
| 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | } |
| 767 | multi_column_list(aCmd, nCmd); |
| 768 | } |
| 769 | |
| 770 | |
| 771 | /* |
| 772 | ** COMMAND: version |
| 773 | ** |
| 774 | ** Usage: %fossil version |
| 775 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -765,10 +765,25 @@ | |
| 765 | aCmd[nCmd++] = aCommand[i].zName; |
| 766 | } |
| 767 | multi_column_list(aCmd, nCmd); |
| 768 | } |
| 769 | |
| 770 | |
| 771 | /* |
| 772 | ** COMMAND: test-list-webpage |
| 773 | ** |
| 774 | ** List all web pages |
| 775 | */ |
| 776 | void cmd_test_webpage_list(void){ |
| 777 | int i, nCmd; |
| 778 | const char *aCmd[count(aWebpage)]; |
| 779 | for(i=nCmd=0; i<count(aWebpage); i++){ |
| 780 | aCmd[nCmd++] = aWebpage[i].zName; |
| 781 | } |
| 782 | multi_column_list(aCmd, nCmd); |
| 783 | } |
| 784 | |
| 785 | |
| 786 | /* |
| 787 | ** COMMAND: version |
| 788 | ** |
| 789 | ** Usage: %fossil version |
| 790 |
+12
-1
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -48,10 +48,11 @@ | ||
| 48 | 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | 49 | $(SRCDIR)/http_transport.c \ |
| 50 | 50 | $(SRCDIR)/import.c \ |
| 51 | 51 | $(SRCDIR)/info.c \ |
| 52 | 52 | $(SRCDIR)/json.c \ |
| 53 | + $(SRCDIR)/json_login.c \ | |
| 53 | 54 | $(SRCDIR)/leaf.c \ |
| 54 | 55 | $(SRCDIR)/login.c \ |
| 55 | 56 | $(SRCDIR)/main.c \ |
| 56 | 57 | $(SRCDIR)/manifest.c \ |
| 57 | 58 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | ||
| 133 | 134 | $(OBJDIR)/http_ssl_.c \ |
| 134 | 135 | $(OBJDIR)/http_transport_.c \ |
| 135 | 136 | $(OBJDIR)/import_.c \ |
| 136 | 137 | $(OBJDIR)/info_.c \ |
| 137 | 138 | $(OBJDIR)/json_.c \ |
| 139 | + $(OBJDIR)/json_login_.c \ | |
| 138 | 140 | $(OBJDIR)/leaf_.c \ |
| 139 | 141 | $(OBJDIR)/login_.c \ |
| 140 | 142 | $(OBJDIR)/main_.c \ |
| 141 | 143 | $(OBJDIR)/manifest_.c \ |
| 142 | 144 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | ||
| 218 | 220 | $(OBJDIR)/http_ssl.o \ |
| 219 | 221 | $(OBJDIR)/http_transport.o \ |
| 220 | 222 | $(OBJDIR)/import.o \ |
| 221 | 223 | $(OBJDIR)/info.o \ |
| 222 | 224 | $(OBJDIR)/json.o \ |
| 225 | + $(OBJDIR)/json_login.o \ | |
| 223 | 226 | $(OBJDIR)/leaf.o \ |
| 224 | 227 | $(OBJDIR)/login.o \ |
| 225 | 228 | $(OBJDIR)/main.o \ |
| 226 | 229 | $(OBJDIR)/manifest.o \ |
| 227 | 230 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | ||
| 322 | 325 | |
| 323 | 326 | |
| 324 | 327 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 325 | 328 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 326 | 329 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 327 | - $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 330 | + $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 328 | 331 | touch $(OBJDIR)/headers |
| 329 | 332 | $(OBJDIR)/headers: Makefile |
| 333 | +$(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h | |
| 330 | 334 | Makefile: |
| 331 | 335 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 332 | 336 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 333 | 337 | |
| 334 | 338 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | ||
| 599 | 603 | |
| 600 | 604 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 601 | 605 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 602 | 606 | |
| 603 | 607 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 608 | +$(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate | |
| 609 | + $(OBJDIR)/translate $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c | |
| 610 | + | |
| 611 | +$(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h | |
| 612 | + $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c | |
| 613 | + | |
| 614 | +$(OBJDIR)/json_login.h: $(OBJDIR)/headers | |
| 604 | 615 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 605 | 616 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 606 | 617 | |
| 607 | 618 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 608 | 619 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 609 | 620 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -48,10 +48,11 @@ | |
| 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | $(SRCDIR)/http_transport.c \ |
| 50 | $(SRCDIR)/import.c \ |
| 51 | $(SRCDIR)/info.c \ |
| 52 | $(SRCDIR)/json.c \ |
| 53 | $(SRCDIR)/leaf.c \ |
| 54 | $(SRCDIR)/login.c \ |
| 55 | $(SRCDIR)/main.c \ |
| 56 | $(SRCDIR)/manifest.c \ |
| 57 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | |
| 133 | $(OBJDIR)/http_ssl_.c \ |
| 134 | $(OBJDIR)/http_transport_.c \ |
| 135 | $(OBJDIR)/import_.c \ |
| 136 | $(OBJDIR)/info_.c \ |
| 137 | $(OBJDIR)/json_.c \ |
| 138 | $(OBJDIR)/leaf_.c \ |
| 139 | $(OBJDIR)/login_.c \ |
| 140 | $(OBJDIR)/main_.c \ |
| 141 | $(OBJDIR)/manifest_.c \ |
| 142 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | |
| 218 | $(OBJDIR)/http_ssl.o \ |
| 219 | $(OBJDIR)/http_transport.o \ |
| 220 | $(OBJDIR)/import.o \ |
| 221 | $(OBJDIR)/info.o \ |
| 222 | $(OBJDIR)/json.o \ |
| 223 | $(OBJDIR)/leaf.o \ |
| 224 | $(OBJDIR)/login.o \ |
| 225 | $(OBJDIR)/main.o \ |
| 226 | $(OBJDIR)/manifest.o \ |
| 227 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | |
| 322 | |
| 323 | |
| 324 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 325 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 326 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 327 | $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 328 | touch $(OBJDIR)/headers |
| 329 | $(OBJDIR)/headers: Makefile |
| 330 | Makefile: |
| 331 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 332 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 333 | |
| 334 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | |
| 599 | |
| 600 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 601 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 602 | |
| 603 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 604 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 605 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 606 | |
| 607 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 608 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 609 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -48,10 +48,11 @@ | |
| 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | $(SRCDIR)/http_transport.c \ |
| 50 | $(SRCDIR)/import.c \ |
| 51 | $(SRCDIR)/info.c \ |
| 52 | $(SRCDIR)/json.c \ |
| 53 | $(SRCDIR)/json_login.c \ |
| 54 | $(SRCDIR)/leaf.c \ |
| 55 | $(SRCDIR)/login.c \ |
| 56 | $(SRCDIR)/main.c \ |
| 57 | $(SRCDIR)/manifest.c \ |
| 58 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | |
| 134 | $(OBJDIR)/http_ssl_.c \ |
| 135 | $(OBJDIR)/http_transport_.c \ |
| 136 | $(OBJDIR)/import_.c \ |
| 137 | $(OBJDIR)/info_.c \ |
| 138 | $(OBJDIR)/json_.c \ |
| 139 | $(OBJDIR)/json_login_.c \ |
| 140 | $(OBJDIR)/leaf_.c \ |
| 141 | $(OBJDIR)/login_.c \ |
| 142 | $(OBJDIR)/main_.c \ |
| 143 | $(OBJDIR)/manifest_.c \ |
| 144 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | |
| 220 | $(OBJDIR)/http_ssl.o \ |
| 221 | $(OBJDIR)/http_transport.o \ |
| 222 | $(OBJDIR)/import.o \ |
| 223 | $(OBJDIR)/info.o \ |
| 224 | $(OBJDIR)/json.o \ |
| 225 | $(OBJDIR)/json_login.o \ |
| 226 | $(OBJDIR)/leaf.o \ |
| 227 | $(OBJDIR)/login.o \ |
| 228 | $(OBJDIR)/main.o \ |
| 229 | $(OBJDIR)/manifest.o \ |
| 230 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | |
| 325 | |
| 326 | |
| 327 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 328 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 329 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 330 | $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 331 | touch $(OBJDIR)/headers |
| 332 | $(OBJDIR)/headers: Makefile |
| 333 | $(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h |
| 334 | Makefile: |
| 335 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 336 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 337 | |
| 338 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | |
| 603 | |
| 604 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 605 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 606 | |
| 607 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 608 | $(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate |
| 609 | $(OBJDIR)/translate $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c |
| 610 | |
| 611 | $(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h |
| 612 | $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c |
| 613 | |
| 614 | $(OBJDIR)/json_login.h: $(OBJDIR)/headers |
| 615 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 616 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 617 | |
| 618 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 619 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 620 |
+12
-1
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -48,10 +48,11 @@ | ||
| 48 | 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | 49 | $(SRCDIR)/http_transport.c \ |
| 50 | 50 | $(SRCDIR)/import.c \ |
| 51 | 51 | $(SRCDIR)/info.c \ |
| 52 | 52 | $(SRCDIR)/json.c \ |
| 53 | + $(SRCDIR)/json_login.c \ | |
| 53 | 54 | $(SRCDIR)/leaf.c \ |
| 54 | 55 | $(SRCDIR)/login.c \ |
| 55 | 56 | $(SRCDIR)/main.c \ |
| 56 | 57 | $(SRCDIR)/manifest.c \ |
| 57 | 58 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | ||
| 133 | 134 | $(OBJDIR)/http_ssl_.c \ |
| 134 | 135 | $(OBJDIR)/http_transport_.c \ |
| 135 | 136 | $(OBJDIR)/import_.c \ |
| 136 | 137 | $(OBJDIR)/info_.c \ |
| 137 | 138 | $(OBJDIR)/json_.c \ |
| 139 | + $(OBJDIR)/json_login_.c \ | |
| 138 | 140 | $(OBJDIR)/leaf_.c \ |
| 139 | 141 | $(OBJDIR)/login_.c \ |
| 140 | 142 | $(OBJDIR)/main_.c \ |
| 141 | 143 | $(OBJDIR)/manifest_.c \ |
| 142 | 144 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | ||
| 218 | 220 | $(OBJDIR)/http_ssl.o \ |
| 219 | 221 | $(OBJDIR)/http_transport.o \ |
| 220 | 222 | $(OBJDIR)/import.o \ |
| 221 | 223 | $(OBJDIR)/info.o \ |
| 222 | 224 | $(OBJDIR)/json.o \ |
| 225 | + $(OBJDIR)/json_login.o \ | |
| 223 | 226 | $(OBJDIR)/leaf.o \ |
| 224 | 227 | $(OBJDIR)/login.o \ |
| 225 | 228 | $(OBJDIR)/main.o \ |
| 226 | 229 | $(OBJDIR)/manifest.o \ |
| 227 | 230 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | ||
| 322 | 325 | |
| 323 | 326 | |
| 324 | 327 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 325 | 328 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 326 | 329 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 327 | - $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 330 | + $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 328 | 331 | touch $(OBJDIR)/headers |
| 329 | 332 | $(OBJDIR)/headers: Makefile |
| 333 | +$(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h | |
| 330 | 334 | Makefile: |
| 331 | 335 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 332 | 336 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 333 | 337 | |
| 334 | 338 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | ||
| 599 | 603 | |
| 600 | 604 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 601 | 605 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 602 | 606 | |
| 603 | 607 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 608 | +$(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate | |
| 609 | + $(OBJDIR)/translate $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c | |
| 610 | + | |
| 611 | +$(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h | |
| 612 | + $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c | |
| 613 | + | |
| 614 | +$(OBJDIR)/json_login.h: $(OBJDIR)/headers | |
| 604 | 615 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 605 | 616 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 606 | 617 | |
| 607 | 618 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 608 | 619 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 609 | 620 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -48,10 +48,11 @@ | |
| 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | $(SRCDIR)/http_transport.c \ |
| 50 | $(SRCDIR)/import.c \ |
| 51 | $(SRCDIR)/info.c \ |
| 52 | $(SRCDIR)/json.c \ |
| 53 | $(SRCDIR)/leaf.c \ |
| 54 | $(SRCDIR)/login.c \ |
| 55 | $(SRCDIR)/main.c \ |
| 56 | $(SRCDIR)/manifest.c \ |
| 57 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | |
| 133 | $(OBJDIR)/http_ssl_.c \ |
| 134 | $(OBJDIR)/http_transport_.c \ |
| 135 | $(OBJDIR)/import_.c \ |
| 136 | $(OBJDIR)/info_.c \ |
| 137 | $(OBJDIR)/json_.c \ |
| 138 | $(OBJDIR)/leaf_.c \ |
| 139 | $(OBJDIR)/login_.c \ |
| 140 | $(OBJDIR)/main_.c \ |
| 141 | $(OBJDIR)/manifest_.c \ |
| 142 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | |
| 218 | $(OBJDIR)/http_ssl.o \ |
| 219 | $(OBJDIR)/http_transport.o \ |
| 220 | $(OBJDIR)/import.o \ |
| 221 | $(OBJDIR)/info.o \ |
| 222 | $(OBJDIR)/json.o \ |
| 223 | $(OBJDIR)/leaf.o \ |
| 224 | $(OBJDIR)/login.o \ |
| 225 | $(OBJDIR)/main.o \ |
| 226 | $(OBJDIR)/manifest.o \ |
| 227 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | |
| 322 | |
| 323 | |
| 324 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 325 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 326 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 327 | $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 328 | touch $(OBJDIR)/headers |
| 329 | $(OBJDIR)/headers: Makefile |
| 330 | Makefile: |
| 331 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 332 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 333 | |
| 334 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | |
| 599 | |
| 600 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 601 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 602 | |
| 603 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 604 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 605 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 606 | |
| 607 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 608 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 609 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -48,10 +48,11 @@ | |
| 48 | $(SRCDIR)/http_ssl.c \ |
| 49 | $(SRCDIR)/http_transport.c \ |
| 50 | $(SRCDIR)/import.c \ |
| 51 | $(SRCDIR)/info.c \ |
| 52 | $(SRCDIR)/json.c \ |
| 53 | $(SRCDIR)/json_login.c \ |
| 54 | $(SRCDIR)/leaf.c \ |
| 55 | $(SRCDIR)/login.c \ |
| 56 | $(SRCDIR)/main.c \ |
| 57 | $(SRCDIR)/manifest.c \ |
| 58 | $(SRCDIR)/md5.c \ |
| @@ -133,10 +134,11 @@ | |
| 134 | $(OBJDIR)/http_ssl_.c \ |
| 135 | $(OBJDIR)/http_transport_.c \ |
| 136 | $(OBJDIR)/import_.c \ |
| 137 | $(OBJDIR)/info_.c \ |
| 138 | $(OBJDIR)/json_.c \ |
| 139 | $(OBJDIR)/json_login_.c \ |
| 140 | $(OBJDIR)/leaf_.c \ |
| 141 | $(OBJDIR)/login_.c \ |
| 142 | $(OBJDIR)/main_.c \ |
| 143 | $(OBJDIR)/manifest_.c \ |
| 144 | $(OBJDIR)/md5_.c \ |
| @@ -218,10 +220,11 @@ | |
| 220 | $(OBJDIR)/http_ssl.o \ |
| 221 | $(OBJDIR)/http_transport.o \ |
| 222 | $(OBJDIR)/import.o \ |
| 223 | $(OBJDIR)/info.o \ |
| 224 | $(OBJDIR)/json.o \ |
| 225 | $(OBJDIR)/json_login.o \ |
| 226 | $(OBJDIR)/leaf.o \ |
| 227 | $(OBJDIR)/login.o \ |
| 228 | $(OBJDIR)/main.o \ |
| 229 | $(OBJDIR)/manifest.o \ |
| 230 | $(OBJDIR)/md5.o \ |
| @@ -322,13 +325,14 @@ | |
| 325 | |
| 326 | |
| 327 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 328 | $(OBJDIR)/mkindex $(TRANS_SRC) >$@ |
| 329 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 330 | $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 331 | touch $(OBJDIR)/headers |
| 332 | $(OBJDIR)/headers: Makefile |
| 333 | $(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h |
| 334 | Makefile: |
| 335 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| 336 | $(OBJDIR)/translate $(SRCDIR)/add.c >$(OBJDIR)/add_.c |
| 337 | |
| 338 | $(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h |
| @@ -599,10 +603,17 @@ | |
| 603 | |
| 604 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 605 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 606 | |
| 607 | $(OBJDIR)/json.h: $(OBJDIR)/headers |
| 608 | $(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate |
| 609 | $(OBJDIR)/translate $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c |
| 610 | |
| 611 | $(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h |
| 612 | $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c |
| 613 | |
| 614 | $(OBJDIR)/json_login.h: $(OBJDIR)/headers |
| 615 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 616 | $(OBJDIR)/translate $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 617 | |
| 618 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 619 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| 620 |
+9
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -54,10 +54,11 @@ | ||
| 54 | 54 | http_socket |
| 55 | 55 | http_transport |
| 56 | 56 | import |
| 57 | 57 | info |
| 58 | 58 | json |
| 59 | + json_login | |
| 59 | 60 | leaf |
| 60 | 61 | login |
| 61 | 62 | main |
| 62 | 63 | manifest |
| 63 | 64 | md5 |
| @@ -235,10 +236,11 @@ | ||
| 235 | 236 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 236 | 237 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 237 | 238 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 238 | 239 | writeln "\ttouch \$(OBJDIR)/headers" |
| 239 | 240 | writeln "\$(OBJDIR)/headers: Makefile" |
| 241 | +writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" | |
| 240 | 242 | writeln "Makefile:" |
| 241 | 243 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 242 | 244 | |
| 243 | 245 | foreach s [lsort $src] { |
| 244 | 246 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | ||
| 478 | 480 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 479 | 481 | |
| 480 | 482 | set opt {} |
| 481 | 483 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 482 | 484 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 485 | +writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" | |
| 483 | 486 | |
| 484 | 487 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 485 | 488 | set opt {-Dmain=sqlite3_shell} |
| 486 | 489 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 487 | 490 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | ||
| 607 | 610 | -del *.obj *_.c *.h *.map |
| 608 | 611 | |
| 609 | 612 | realclean: |
| 610 | 613 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 611 | 614 | |
| 615 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 616 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 617 | + | |
| 612 | 618 | } |
| 613 | 619 | foreach s [lsort $src] { |
| 614 | 620 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 615 | 621 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 616 | 622 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | ||
| 747 | 753 | -del headers linkopts |
| 748 | 754 | |
| 749 | 755 | realclean: |
| 750 | 756 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 751 | 757 | |
| 758 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 759 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 760 | + | |
| 752 | 761 | } |
| 753 | 762 | foreach s [lsort $src] { |
| 754 | 763 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 755 | 764 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 756 | 765 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 757 | 766 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -54,10 +54,11 @@ | |
| 54 | http_socket |
| 55 | http_transport |
| 56 | import |
| 57 | info |
| 58 | json |
| 59 | leaf |
| 60 | login |
| 61 | main |
| 62 | manifest |
| 63 | md5 |
| @@ -235,10 +236,11 @@ | |
| 235 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 236 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 237 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 238 | writeln "\ttouch \$(OBJDIR)/headers" |
| 239 | writeln "\$(OBJDIR)/headers: Makefile" |
| 240 | writeln "Makefile:" |
| 241 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 242 | |
| 243 | foreach s [lsort $src] { |
| 244 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | |
| 478 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 479 | |
| 480 | set opt {} |
| 481 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 482 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 483 | |
| 484 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 485 | set opt {-Dmain=sqlite3_shell} |
| 486 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 487 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | |
| 607 | -del *.obj *_.c *.h *.map |
| 608 | |
| 609 | realclean: |
| 610 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 611 | |
| 612 | } |
| 613 | foreach s [lsort $src] { |
| 614 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 615 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 616 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | |
| 747 | -del headers linkopts |
| 748 | |
| 749 | realclean: |
| 750 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 751 | |
| 752 | } |
| 753 | foreach s [lsort $src] { |
| 754 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 755 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 756 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 757 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -54,10 +54,11 @@ | |
| 54 | http_socket |
| 55 | http_transport |
| 56 | import |
| 57 | info |
| 58 | json |
| 59 | json_login |
| 60 | leaf |
| 61 | login |
| 62 | main |
| 63 | manifest |
| 64 | md5 |
| @@ -235,10 +236,11 @@ | |
| 236 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 237 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 238 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 239 | writeln "\ttouch \$(OBJDIR)/headers" |
| 240 | writeln "\$(OBJDIR)/headers: Makefile" |
| 241 | writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" |
| 242 | writeln "Makefile:" |
| 243 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 244 | |
| 245 | foreach s [lsort $src] { |
| 246 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | |
| 480 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 481 | |
| 482 | set opt {} |
| 483 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 484 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 485 | writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" |
| 486 | |
| 487 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 488 | set opt {-Dmain=sqlite3_shell} |
| 489 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 490 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | |
| 610 | -del *.obj *_.c *.h *.map |
| 611 | |
| 612 | realclean: |
| 613 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 614 | |
| 615 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 616 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 617 | |
| 618 | } |
| 619 | foreach s [lsort $src] { |
| 620 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 621 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 622 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | |
| 753 | -del headers linkopts |
| 754 | |
| 755 | realclean: |
| 756 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 757 | |
| 758 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 759 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 760 | |
| 761 | } |
| 762 | foreach s [lsort $src] { |
| 763 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 764 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 765 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 766 |
+9
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -54,10 +54,11 @@ | ||
| 54 | 54 | http_socket |
| 55 | 55 | http_transport |
| 56 | 56 | import |
| 57 | 57 | info |
| 58 | 58 | json |
| 59 | + json_login | |
| 59 | 60 | leaf |
| 60 | 61 | login |
| 61 | 62 | main |
| 62 | 63 | manifest |
| 63 | 64 | md5 |
| @@ -235,10 +236,11 @@ | ||
| 235 | 236 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 236 | 237 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 237 | 238 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 238 | 239 | writeln "\ttouch \$(OBJDIR)/headers" |
| 239 | 240 | writeln "\$(OBJDIR)/headers: Makefile" |
| 241 | +writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" | |
| 240 | 242 | writeln "Makefile:" |
| 241 | 243 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 242 | 244 | |
| 243 | 245 | foreach s [lsort $src] { |
| 244 | 246 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | ||
| 478 | 480 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 479 | 481 | |
| 480 | 482 | set opt {} |
| 481 | 483 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 482 | 484 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 485 | +writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" | |
| 483 | 486 | |
| 484 | 487 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 485 | 488 | set opt {-Dmain=sqlite3_shell} |
| 486 | 489 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 487 | 490 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | ||
| 607 | 610 | -del *.obj *_.c *.h *.map |
| 608 | 611 | |
| 609 | 612 | realclean: |
| 610 | 613 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 611 | 614 | |
| 615 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 616 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 617 | + | |
| 612 | 618 | } |
| 613 | 619 | foreach s [lsort $src] { |
| 614 | 620 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 615 | 621 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 616 | 622 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | ||
| 747 | 753 | -del headers linkopts |
| 748 | 754 | |
| 749 | 755 | realclean: |
| 750 | 756 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 751 | 757 | |
| 758 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 759 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 760 | + | |
| 752 | 761 | } |
| 753 | 762 | foreach s [lsort $src] { |
| 754 | 763 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 755 | 764 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 756 | 765 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 757 | 766 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -54,10 +54,11 @@ | |
| 54 | http_socket |
| 55 | http_transport |
| 56 | import |
| 57 | info |
| 58 | json |
| 59 | leaf |
| 60 | login |
| 61 | main |
| 62 | manifest |
| 63 | md5 |
| @@ -235,10 +236,11 @@ | |
| 235 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 236 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 237 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 238 | writeln "\ttouch \$(OBJDIR)/headers" |
| 239 | writeln "\$(OBJDIR)/headers: Makefile" |
| 240 | writeln "Makefile:" |
| 241 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 242 | |
| 243 | foreach s [lsort $src] { |
| 244 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | |
| 478 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 479 | |
| 480 | set opt {} |
| 481 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 482 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 483 | |
| 484 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 485 | set opt {-Dmain=sqlite3_shell} |
| 486 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 487 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | |
| 607 | -del *.obj *_.c *.h *.map |
| 608 | |
| 609 | realclean: |
| 610 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 611 | |
| 612 | } |
| 613 | foreach s [lsort $src] { |
| 614 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 615 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 616 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | |
| 747 | -del headers linkopts |
| 748 | |
| 749 | realclean: |
| 750 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 751 | |
| 752 | } |
| 753 | foreach s [lsort $src] { |
| 754 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 755 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 756 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 757 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -54,10 +54,11 @@ | |
| 54 | http_socket |
| 55 | http_transport |
| 56 | import |
| 57 | info |
| 58 | json |
| 59 | json_login |
| 60 | leaf |
| 61 | login |
| 62 | main |
| 63 | manifest |
| 64 | md5 |
| @@ -235,10 +236,11 @@ | |
| 236 | writeln "\t\$(OBJDIR)/mkindex \$(TRANS_SRC) >$@" |
| 237 | writeln "\$(OBJDIR)/headers:\t\$(OBJDIR)/page_index.h \$(OBJDIR)/makeheaders \$(OBJDIR)/VERSION.h" |
| 238 | writeln "\t\$(OBJDIR)/makeheaders $mhargs" |
| 239 | writeln "\ttouch \$(OBJDIR)/headers" |
| 240 | writeln "\$(OBJDIR)/headers: Makefile" |
| 241 | writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" |
| 242 | writeln "Makefile:" |
| 243 | set extra_h(main) \$(OBJDIR)/page_index.h |
| 244 | |
| 245 | foreach s [lsort $src] { |
| 246 | writeln "\$(OBJDIR)/${s}_.c:\t\$(SRCDIR)/$s.c \$(OBJDIR)/translate" |
| @@ -478,10 +480,11 @@ | |
| 480 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 481 | |
| 482 | set opt {} |
| 483 | writeln "\$(OBJDIR)/cson_amalgamation.o:\t\$(SRCDIR)/cson_amalgamation.c" |
| 484 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/cson_amalgamation.c -o \$(OBJDIR)/cson_amalgamation.o\n" |
| 485 | writeln "\$(OBJDIR)/json.o \$(OBJDIR)/json_login.o : \$(SRCDIR)/json_detail.h" |
| 486 | |
| 487 | writeln "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c \$(SRCDIR)/sqlite3.h" |
| 488 | set opt {-Dmain=sqlite3_shell} |
| 489 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 490 | writeln "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| @@ -607,10 +610,13 @@ | |
| 610 | -del *.obj *_.c *.h *.map |
| 611 | |
| 612 | realclean: |
| 613 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 614 | |
| 615 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 616 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 617 | |
| 618 | } |
| 619 | foreach s [lsort $src] { |
| 620 | writeln "\$(OBJDIR)\\$s\$O : ${s}_.c ${s}.h" |
| 621 | writeln "\t\$(TCC) -o\$@ -c ${s}_.c\n" |
| 622 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| @@ -747,10 +753,13 @@ | |
| 753 | -del headers linkopts |
| 754 | |
| 755 | realclean: |
| 756 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 757 | |
| 758 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 759 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 760 | |
| 761 | } |
| 762 | foreach s [lsort $src] { |
| 763 | writeln "\$(OX)\\$s\$O : ${s}_.c ${s}.h" |
| 764 | writeln "\t\$(TCC) /Fo\$@ -c ${s}_.c\n" |
| 765 | writeln "${s}_.c : \$(SRCDIR)\\$s.c" |
| 766 |
+13
-4
| --- win/Makefile.dmc | ||
| +++ win/Makefile.dmc | ||
| @@ -22,13 +22,13 @@ | ||
| 22 | 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | 24 | |
| 25 | 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | 26 | |
| 27 | -SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 27 | +SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 28 | 28 | |
| 29 | -OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 29 | +OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_login$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 30 | 30 | |
| 31 | 31 | |
| 32 | 32 | RC=$(DMDIR)\bin\rcc |
| 33 | 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | 34 | |
| @@ -42,11 +42,11 @@ | ||
| 42 | 42 | |
| 43 | 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | 45 | |
| 46 | 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | - +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ | |
| 47 | + +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_login leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ | |
| 48 | 48 | +echo fossil >> $@ |
| 49 | 49 | +echo fossil >> $@ |
| 50 | 50 | +echo $(LIBS) >> $@ |
| 51 | 51 | +echo. >> $@ |
| 52 | 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | ||
| 89 | 89 | -del *.obj *_.c *.h *.map |
| 90 | 90 | |
| 91 | 91 | realclean: |
| 92 | 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | 93 | |
| 94 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 95 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 96 | + | |
| 94 | 97 | |
| 95 | 98 | $(OBJDIR)\add$O : add_.c add.h |
| 96 | 99 | $(TCC) -o$@ -c add_.c |
| 97 | 100 | |
| 98 | 101 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | ||
| 323 | 326 | $(OBJDIR)\json$O : json_.c json.h |
| 324 | 327 | $(TCC) -o$@ -c json_.c |
| 325 | 328 | |
| 326 | 329 | json_.c : $(SRCDIR)\json.c |
| 327 | 330 | +translate$E $** > $@ |
| 331 | + | |
| 332 | +$(OBJDIR)\json_login$O : json_login_.c json_login.h | |
| 333 | + $(TCC) -o$@ -c json_login_.c | |
| 334 | + | |
| 335 | +json_login_.c : $(SRCDIR)\json_login.c | |
| 336 | + +translate$E $** > $@ | |
| 328 | 337 | |
| 329 | 338 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 330 | 339 | $(TCC) -o$@ -c leaf_.c |
| 331 | 340 | |
| 332 | 341 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | ||
| 589 | 598 | |
| 590 | 599 | zip_.c : $(SRCDIR)\zip.c |
| 591 | 600 | +translate$E $** > $@ |
| 592 | 601 | |
| 593 | 602 | headers: makeheaders$E page_index.h VERSION.h |
| 594 | - +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 603 | + +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 595 | 604 | @copy /Y nul: headers |
| 596 | 605 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -22,13 +22,13 @@ | |
| 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | |
| 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | |
| 27 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 28 | |
| 29 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 30 | |
| 31 | |
| 32 | RC=$(DMDIR)\bin\rcc |
| 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | |
| @@ -42,11 +42,11 @@ | |
| 42 | |
| 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | |
| 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ |
| 48 | +echo fossil >> $@ |
| 49 | +echo fossil >> $@ |
| 50 | +echo $(LIBS) >> $@ |
| 51 | +echo. >> $@ |
| 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | |
| 89 | -del *.obj *_.c *.h *.map |
| 90 | |
| 91 | realclean: |
| 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | |
| 94 | |
| 95 | $(OBJDIR)\add$O : add_.c add.h |
| 96 | $(TCC) -o$@ -c add_.c |
| 97 | |
| 98 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | |
| 323 | $(OBJDIR)\json$O : json_.c json.h |
| 324 | $(TCC) -o$@ -c json_.c |
| 325 | |
| 326 | json_.c : $(SRCDIR)\json.c |
| 327 | +translate$E $** > $@ |
| 328 | |
| 329 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 330 | $(TCC) -o$@ -c leaf_.c |
| 331 | |
| 332 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | |
| 589 | |
| 590 | zip_.c : $(SRCDIR)\zip.c |
| 591 | +translate$E $** > $@ |
| 592 | |
| 593 | headers: makeheaders$E page_index.h VERSION.h |
| 594 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 595 | @copy /Y nul: headers |
| 596 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -22,13 +22,13 @@ | |
| 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | |
| 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | |
| 27 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 28 | |
| 29 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_login$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 30 | |
| 31 | |
| 32 | RC=$(DMDIR)\bin\rcc |
| 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | |
| @@ -42,11 +42,11 @@ | |
| 42 | |
| 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | |
| 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_login leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ |
| 48 | +echo fossil >> $@ |
| 49 | +echo fossil >> $@ |
| 50 | +echo $(LIBS) >> $@ |
| 51 | +echo. >> $@ |
| 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | |
| 89 | -del *.obj *_.c *.h *.map |
| 90 | |
| 91 | realclean: |
| 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | |
| 94 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 95 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 96 | |
| 97 | |
| 98 | $(OBJDIR)\add$O : add_.c add.h |
| 99 | $(TCC) -o$@ -c add_.c |
| 100 | |
| 101 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | |
| 326 | $(OBJDIR)\json$O : json_.c json.h |
| 327 | $(TCC) -o$@ -c json_.c |
| 328 | |
| 329 | json_.c : $(SRCDIR)\json.c |
| 330 | +translate$E $** > $@ |
| 331 | |
| 332 | $(OBJDIR)\json_login$O : json_login_.c json_login.h |
| 333 | $(TCC) -o$@ -c json_login_.c |
| 334 | |
| 335 | json_login_.c : $(SRCDIR)\json_login.c |
| 336 | +translate$E $** > $@ |
| 337 | |
| 338 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 339 | $(TCC) -o$@ -c leaf_.c |
| 340 | |
| 341 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | |
| 598 | |
| 599 | zip_.c : $(SRCDIR)\zip.c |
| 600 | +translate$E $** > $@ |
| 601 | |
| 602 | headers: makeheaders$E page_index.h VERSION.h |
| 603 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 604 | @copy /Y nul: headers |
| 605 |
+13
-4
| --- win/Makefile.dmc | ||
| +++ win/Makefile.dmc | ||
| @@ -22,13 +22,13 @@ | ||
| 22 | 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | 24 | |
| 25 | 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | 26 | |
| 27 | -SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 27 | +SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 28 | 28 | |
| 29 | -OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 29 | +OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_login$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O | |
| 30 | 30 | |
| 31 | 31 | |
| 32 | 32 | RC=$(DMDIR)\bin\rcc |
| 33 | 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | 34 | |
| @@ -42,11 +42,11 @@ | ||
| 42 | 42 | |
| 43 | 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | 45 | |
| 46 | 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | - +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ | |
| 47 | + +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_login leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ | |
| 48 | 48 | +echo fossil >> $@ |
| 49 | 49 | +echo fossil >> $@ |
| 50 | 50 | +echo $(LIBS) >> $@ |
| 51 | 51 | +echo. >> $@ |
| 52 | 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | ||
| 89 | 89 | -del *.obj *_.c *.h *.map |
| 90 | 90 | |
| 91 | 91 | realclean: |
| 92 | 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | 93 | |
| 94 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 95 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 96 | + | |
| 94 | 97 | |
| 95 | 98 | $(OBJDIR)\add$O : add_.c add.h |
| 96 | 99 | $(TCC) -o$@ -c add_.c |
| 97 | 100 | |
| 98 | 101 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | ||
| 323 | 326 | $(OBJDIR)\json$O : json_.c json.h |
| 324 | 327 | $(TCC) -o$@ -c json_.c |
| 325 | 328 | |
| 326 | 329 | json_.c : $(SRCDIR)\json.c |
| 327 | 330 | +translate$E $** > $@ |
| 331 | + | |
| 332 | +$(OBJDIR)\json_login$O : json_login_.c json_login.h | |
| 333 | + $(TCC) -o$@ -c json_login_.c | |
| 334 | + | |
| 335 | +json_login_.c : $(SRCDIR)\json_login.c | |
| 336 | + +translate$E $** > $@ | |
| 328 | 337 | |
| 329 | 338 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 330 | 339 | $(TCC) -o$@ -c leaf_.c |
| 331 | 340 | |
| 332 | 341 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | ||
| 589 | 598 | |
| 590 | 599 | zip_.c : $(SRCDIR)\zip.c |
| 591 | 600 | +translate$E $** > $@ |
| 592 | 601 | |
| 593 | 602 | headers: makeheaders$E page_index.h VERSION.h |
| 594 | - +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 603 | + +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 595 | 604 | @copy /Y nul: headers |
| 596 | 605 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -22,13 +22,13 @@ | |
| 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | |
| 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | |
| 27 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 28 | |
| 29 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 30 | |
| 31 | |
| 32 | RC=$(DMDIR)\bin\rcc |
| 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | |
| @@ -42,11 +42,11 @@ | |
| 42 | |
| 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | |
| 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ |
| 48 | +echo fossil >> $@ |
| 49 | +echo fossil >> $@ |
| 50 | +echo $(LIBS) >> $@ |
| 51 | +echo. >> $@ |
| 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | |
| 89 | -del *.obj *_.c *.h *.map |
| 90 | |
| 91 | realclean: |
| 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | |
| 94 | |
| 95 | $(OBJDIR)\add$O : add_.c add.h |
| 96 | $(TCC) -o$@ -c add_.c |
| 97 | |
| 98 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | |
| 323 | $(OBJDIR)\json$O : json_.c json.h |
| 324 | $(TCC) -o$@ -c json_.c |
| 325 | |
| 326 | json_.c : $(SRCDIR)\json.c |
| 327 | +translate$E $** > $@ |
| 328 | |
| 329 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 330 | $(TCC) -o$@ -c leaf_.c |
| 331 | |
| 332 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | |
| 589 | |
| 590 | zip_.c : $(SRCDIR)\zip.c |
| 591 | +translate$E $** > $@ |
| 592 | |
| 593 | headers: makeheaders$E page_index.h VERSION.h |
| 594 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 595 | @copy /Y nul: headers |
| 596 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -22,13 +22,13 @@ | |
| 22 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 23 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 |
| 24 | |
| 25 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 26 | |
| 27 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 28 | |
| 29 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_login$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 30 | |
| 31 | |
| 32 | RC=$(DMDIR)\bin\rcc |
| 33 | RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__ |
| 34 | |
| @@ -42,11 +42,11 @@ | |
| 42 | |
| 43 | $(OBJDIR)\fossil.res: $B\win\fossil.rc |
| 44 | $(RC) $(RCFLAGS) -o$@ $** |
| 45 | |
| 46 | $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res |
| 47 | +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_login leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer zip shell sqlite3 th th_lang > $@ |
| 48 | +echo fossil >> $@ |
| 49 | +echo fossil >> $@ |
| 50 | +echo $(LIBS) >> $@ |
| 51 | +echo. >> $@ |
| 52 | +echo fossil >> $@ |
| @@ -89,10 +89,13 @@ | |
| 89 | -del *.obj *_.c *.h *.map |
| 90 | |
| 91 | realclean: |
| 92 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 93 | |
| 94 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 95 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 96 | |
| 97 | |
| 98 | $(OBJDIR)\add$O : add_.c add.h |
| 99 | $(TCC) -o$@ -c add_.c |
| 100 | |
| 101 | add_.c : $(SRCDIR)\add.c |
| @@ -323,10 +326,16 @@ | |
| 326 | $(OBJDIR)\json$O : json_.c json.h |
| 327 | $(TCC) -o$@ -c json_.c |
| 328 | |
| 329 | json_.c : $(SRCDIR)\json.c |
| 330 | +translate$E $** > $@ |
| 331 | |
| 332 | $(OBJDIR)\json_login$O : json_login_.c json_login.h |
| 333 | $(TCC) -o$@ -c json_login_.c |
| 334 | |
| 335 | json_login_.c : $(SRCDIR)\json_login.c |
| 336 | +translate$E $** > $@ |
| 337 | |
| 338 | $(OBJDIR)\leaf$O : leaf_.c leaf.h |
| 339 | $(TCC) -o$@ -c leaf_.c |
| 340 | |
| 341 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -589,7 +598,7 @@ | |
| 598 | |
| 599 | zip_.c : $(SRCDIR)\zip.c |
| 600 | +translate$E $** > $@ |
| 601 | |
| 602 | headers: makeheaders$E page_index.h VERSION.h |
| 603 | +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 604 | @copy /Y nul: headers |
| 605 |
+12
-1
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -111,10 +111,11 @@ | ||
| 111 | 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | 112 | $(SRCDIR)/http_transport.c \ |
| 113 | 113 | $(SRCDIR)/import.c \ |
| 114 | 114 | $(SRCDIR)/info.c \ |
| 115 | 115 | $(SRCDIR)/json.c \ |
| 116 | + $(SRCDIR)/json_login.c \ | |
| 116 | 117 | $(SRCDIR)/leaf.c \ |
| 117 | 118 | $(SRCDIR)/login.c \ |
| 118 | 119 | $(SRCDIR)/main.c \ |
| 119 | 120 | $(SRCDIR)/manifest.c \ |
| 120 | 121 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | ||
| 196 | 197 | $(OBJDIR)/http_ssl_.c \ |
| 197 | 198 | $(OBJDIR)/http_transport_.c \ |
| 198 | 199 | $(OBJDIR)/import_.c \ |
| 199 | 200 | $(OBJDIR)/info_.c \ |
| 200 | 201 | $(OBJDIR)/json_.c \ |
| 202 | + $(OBJDIR)/json_login_.c \ | |
| 201 | 203 | $(OBJDIR)/leaf_.c \ |
| 202 | 204 | $(OBJDIR)/login_.c \ |
| 203 | 205 | $(OBJDIR)/main_.c \ |
| 204 | 206 | $(OBJDIR)/manifest_.c \ |
| 205 | 207 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | ||
| 281 | 283 | $(OBJDIR)/http_ssl.o \ |
| 282 | 284 | $(OBJDIR)/http_transport.o \ |
| 283 | 285 | $(OBJDIR)/import.o \ |
| 284 | 286 | $(OBJDIR)/info.o \ |
| 285 | 287 | $(OBJDIR)/json.o \ |
| 288 | + $(OBJDIR)/json_login.o \ | |
| 286 | 289 | $(OBJDIR)/leaf.o \ |
| 287 | 290 | $(OBJDIR)/login.o \ |
| 288 | 291 | $(OBJDIR)/main.o \ |
| 289 | 292 | $(OBJDIR)/manifest.o \ |
| 290 | 293 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | ||
| 391 | 394 | |
| 392 | 395 | |
| 393 | 396 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 394 | 397 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 395 | 398 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 396 | - $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 399 | + $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 397 | 400 | echo Done >$(OBJDIR)/headers |
| 398 | 401 | |
| 399 | 402 | $(OBJDIR)/headers: Makefile |
| 400 | 403 | Makefile: |
| 401 | 404 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | ||
| 669 | 672 | |
| 670 | 673 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 671 | 674 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 672 | 675 | |
| 673 | 676 | json.h: $(OBJDIR)/headers |
| 677 | +$(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate | |
| 678 | + $(TRANSLATE) $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c | |
| 679 | + | |
| 680 | +$(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h | |
| 681 | + $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c | |
| 682 | + | |
| 683 | +json_login.h: $(OBJDIR)/headers | |
| 674 | 684 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 675 | 685 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 676 | 686 | |
| 677 | 687 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 678 | 688 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | ||
| 983 | 993 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 984 | 994 | |
| 985 | 995 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 986 | 996 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 987 | 997 | |
| 998 | +$(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h | |
| 988 | 999 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 989 | 1000 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 990 | 1001 | |
| 991 | 1002 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 992 | 1003 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 993 | 1004 | |
| 994 | 1005 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 995 | 1006 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 996 | 1007 | |
| 997 | 1008 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -111,10 +111,11 @@ | |
| 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | $(SRCDIR)/http_transport.c \ |
| 113 | $(SRCDIR)/import.c \ |
| 114 | $(SRCDIR)/info.c \ |
| 115 | $(SRCDIR)/json.c \ |
| 116 | $(SRCDIR)/leaf.c \ |
| 117 | $(SRCDIR)/login.c \ |
| 118 | $(SRCDIR)/main.c \ |
| 119 | $(SRCDIR)/manifest.c \ |
| 120 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | |
| 196 | $(OBJDIR)/http_ssl_.c \ |
| 197 | $(OBJDIR)/http_transport_.c \ |
| 198 | $(OBJDIR)/import_.c \ |
| 199 | $(OBJDIR)/info_.c \ |
| 200 | $(OBJDIR)/json_.c \ |
| 201 | $(OBJDIR)/leaf_.c \ |
| 202 | $(OBJDIR)/login_.c \ |
| 203 | $(OBJDIR)/main_.c \ |
| 204 | $(OBJDIR)/manifest_.c \ |
| 205 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | |
| 281 | $(OBJDIR)/http_ssl.o \ |
| 282 | $(OBJDIR)/http_transport.o \ |
| 283 | $(OBJDIR)/import.o \ |
| 284 | $(OBJDIR)/info.o \ |
| 285 | $(OBJDIR)/json.o \ |
| 286 | $(OBJDIR)/leaf.o \ |
| 287 | $(OBJDIR)/login.o \ |
| 288 | $(OBJDIR)/main.o \ |
| 289 | $(OBJDIR)/manifest.o \ |
| 290 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | |
| 391 | |
| 392 | |
| 393 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 394 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 395 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 396 | $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 397 | echo Done >$(OBJDIR)/headers |
| 398 | |
| 399 | $(OBJDIR)/headers: Makefile |
| 400 | Makefile: |
| 401 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | |
| 669 | |
| 670 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 671 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 672 | |
| 673 | json.h: $(OBJDIR)/headers |
| 674 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 675 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 676 | |
| 677 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 678 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | |
| 983 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 984 | |
| 985 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 986 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 987 | |
| 988 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 989 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 990 | |
| 991 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 992 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 993 | |
| 994 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 995 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 996 | |
| 997 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -111,10 +111,11 @@ | |
| 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | $(SRCDIR)/http_transport.c \ |
| 113 | $(SRCDIR)/import.c \ |
| 114 | $(SRCDIR)/info.c \ |
| 115 | $(SRCDIR)/json.c \ |
| 116 | $(SRCDIR)/json_login.c \ |
| 117 | $(SRCDIR)/leaf.c \ |
| 118 | $(SRCDIR)/login.c \ |
| 119 | $(SRCDIR)/main.c \ |
| 120 | $(SRCDIR)/manifest.c \ |
| 121 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | |
| 197 | $(OBJDIR)/http_ssl_.c \ |
| 198 | $(OBJDIR)/http_transport_.c \ |
| 199 | $(OBJDIR)/import_.c \ |
| 200 | $(OBJDIR)/info_.c \ |
| 201 | $(OBJDIR)/json_.c \ |
| 202 | $(OBJDIR)/json_login_.c \ |
| 203 | $(OBJDIR)/leaf_.c \ |
| 204 | $(OBJDIR)/login_.c \ |
| 205 | $(OBJDIR)/main_.c \ |
| 206 | $(OBJDIR)/manifest_.c \ |
| 207 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | |
| 283 | $(OBJDIR)/http_ssl.o \ |
| 284 | $(OBJDIR)/http_transport.o \ |
| 285 | $(OBJDIR)/import.o \ |
| 286 | $(OBJDIR)/info.o \ |
| 287 | $(OBJDIR)/json.o \ |
| 288 | $(OBJDIR)/json_login.o \ |
| 289 | $(OBJDIR)/leaf.o \ |
| 290 | $(OBJDIR)/login.o \ |
| 291 | $(OBJDIR)/main.o \ |
| 292 | $(OBJDIR)/manifest.o \ |
| 293 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | |
| 394 | |
| 395 | |
| 396 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 397 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 398 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 399 | $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 400 | echo Done >$(OBJDIR)/headers |
| 401 | |
| 402 | $(OBJDIR)/headers: Makefile |
| 403 | Makefile: |
| 404 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | |
| 672 | |
| 673 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 674 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 675 | |
| 676 | json.h: $(OBJDIR)/headers |
| 677 | $(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate |
| 678 | $(TRANSLATE) $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c |
| 679 | |
| 680 | $(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h |
| 681 | $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c |
| 682 | |
| 683 | json_login.h: $(OBJDIR)/headers |
| 684 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 685 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 686 | |
| 687 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 688 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | |
| 993 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 994 | |
| 995 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 996 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 997 | |
| 998 | $(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h |
| 999 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 1000 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 1001 | |
| 1002 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 1003 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 1004 | |
| 1005 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 1006 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 1007 | |
| 1008 |
+12
-1
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -111,10 +111,11 @@ | ||
| 111 | 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | 112 | $(SRCDIR)/http_transport.c \ |
| 113 | 113 | $(SRCDIR)/import.c \ |
| 114 | 114 | $(SRCDIR)/info.c \ |
| 115 | 115 | $(SRCDIR)/json.c \ |
| 116 | + $(SRCDIR)/json_login.c \ | |
| 116 | 117 | $(SRCDIR)/leaf.c \ |
| 117 | 118 | $(SRCDIR)/login.c \ |
| 118 | 119 | $(SRCDIR)/main.c \ |
| 119 | 120 | $(SRCDIR)/manifest.c \ |
| 120 | 121 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | ||
| 196 | 197 | $(OBJDIR)/http_ssl_.c \ |
| 197 | 198 | $(OBJDIR)/http_transport_.c \ |
| 198 | 199 | $(OBJDIR)/import_.c \ |
| 199 | 200 | $(OBJDIR)/info_.c \ |
| 200 | 201 | $(OBJDIR)/json_.c \ |
| 202 | + $(OBJDIR)/json_login_.c \ | |
| 201 | 203 | $(OBJDIR)/leaf_.c \ |
| 202 | 204 | $(OBJDIR)/login_.c \ |
| 203 | 205 | $(OBJDIR)/main_.c \ |
| 204 | 206 | $(OBJDIR)/manifest_.c \ |
| 205 | 207 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | ||
| 281 | 283 | $(OBJDIR)/http_ssl.o \ |
| 282 | 284 | $(OBJDIR)/http_transport.o \ |
| 283 | 285 | $(OBJDIR)/import.o \ |
| 284 | 286 | $(OBJDIR)/info.o \ |
| 285 | 287 | $(OBJDIR)/json.o \ |
| 288 | + $(OBJDIR)/json_login.o \ | |
| 286 | 289 | $(OBJDIR)/leaf.o \ |
| 287 | 290 | $(OBJDIR)/login.o \ |
| 288 | 291 | $(OBJDIR)/main.o \ |
| 289 | 292 | $(OBJDIR)/manifest.o \ |
| 290 | 293 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | ||
| 391 | 394 | |
| 392 | 395 | |
| 393 | 396 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 394 | 397 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 395 | 398 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 396 | - $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 399 | + $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h | |
| 397 | 400 | echo Done >$(OBJDIR)/headers |
| 398 | 401 | |
| 399 | 402 | $(OBJDIR)/headers: Makefile |
| 400 | 403 | Makefile: |
| 401 | 404 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | ||
| 669 | 672 | |
| 670 | 673 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 671 | 674 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 672 | 675 | |
| 673 | 676 | json.h: $(OBJDIR)/headers |
| 677 | +$(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate | |
| 678 | + $(TRANSLATE) $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c | |
| 679 | + | |
| 680 | +$(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h | |
| 681 | + $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c | |
| 682 | + | |
| 683 | +json_login.h: $(OBJDIR)/headers | |
| 674 | 684 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 675 | 685 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 676 | 686 | |
| 677 | 687 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 678 | 688 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | ||
| 983 | 993 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 984 | 994 | |
| 985 | 995 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 986 | 996 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 987 | 997 | |
| 998 | +$(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h | |
| 988 | 999 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 989 | 1000 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 990 | 1001 | |
| 991 | 1002 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 992 | 1003 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 993 | 1004 | |
| 994 | 1005 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 995 | 1006 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 996 | 1007 | |
| 997 | 1008 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -111,10 +111,11 @@ | |
| 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | $(SRCDIR)/http_transport.c \ |
| 113 | $(SRCDIR)/import.c \ |
| 114 | $(SRCDIR)/info.c \ |
| 115 | $(SRCDIR)/json.c \ |
| 116 | $(SRCDIR)/leaf.c \ |
| 117 | $(SRCDIR)/login.c \ |
| 118 | $(SRCDIR)/main.c \ |
| 119 | $(SRCDIR)/manifest.c \ |
| 120 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | |
| 196 | $(OBJDIR)/http_ssl_.c \ |
| 197 | $(OBJDIR)/http_transport_.c \ |
| 198 | $(OBJDIR)/import_.c \ |
| 199 | $(OBJDIR)/info_.c \ |
| 200 | $(OBJDIR)/json_.c \ |
| 201 | $(OBJDIR)/leaf_.c \ |
| 202 | $(OBJDIR)/login_.c \ |
| 203 | $(OBJDIR)/main_.c \ |
| 204 | $(OBJDIR)/manifest_.c \ |
| 205 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | |
| 281 | $(OBJDIR)/http_ssl.o \ |
| 282 | $(OBJDIR)/http_transport.o \ |
| 283 | $(OBJDIR)/import.o \ |
| 284 | $(OBJDIR)/info.o \ |
| 285 | $(OBJDIR)/json.o \ |
| 286 | $(OBJDIR)/leaf.o \ |
| 287 | $(OBJDIR)/login.o \ |
| 288 | $(OBJDIR)/main.o \ |
| 289 | $(OBJDIR)/manifest.o \ |
| 290 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | |
| 391 | |
| 392 | |
| 393 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 394 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 395 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 396 | $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 397 | echo Done >$(OBJDIR)/headers |
| 398 | |
| 399 | $(OBJDIR)/headers: Makefile |
| 400 | Makefile: |
| 401 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | |
| 669 | |
| 670 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 671 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 672 | |
| 673 | json.h: $(OBJDIR)/headers |
| 674 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 675 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 676 | |
| 677 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 678 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | |
| 983 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 984 | |
| 985 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 986 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 987 | |
| 988 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 989 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 990 | |
| 991 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 992 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 993 | |
| 994 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 995 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 996 | |
| 997 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -111,10 +111,11 @@ | |
| 111 | $(SRCDIR)/http_ssl.c \ |
| 112 | $(SRCDIR)/http_transport.c \ |
| 113 | $(SRCDIR)/import.c \ |
| 114 | $(SRCDIR)/info.c \ |
| 115 | $(SRCDIR)/json.c \ |
| 116 | $(SRCDIR)/json_login.c \ |
| 117 | $(SRCDIR)/leaf.c \ |
| 118 | $(SRCDIR)/login.c \ |
| 119 | $(SRCDIR)/main.c \ |
| 120 | $(SRCDIR)/manifest.c \ |
| 121 | $(SRCDIR)/md5.c \ |
| @@ -196,10 +197,11 @@ | |
| 197 | $(OBJDIR)/http_ssl_.c \ |
| 198 | $(OBJDIR)/http_transport_.c \ |
| 199 | $(OBJDIR)/import_.c \ |
| 200 | $(OBJDIR)/info_.c \ |
| 201 | $(OBJDIR)/json_.c \ |
| 202 | $(OBJDIR)/json_login_.c \ |
| 203 | $(OBJDIR)/leaf_.c \ |
| 204 | $(OBJDIR)/login_.c \ |
| 205 | $(OBJDIR)/main_.c \ |
| 206 | $(OBJDIR)/manifest_.c \ |
| 207 | $(OBJDIR)/md5_.c \ |
| @@ -281,10 +283,11 @@ | |
| 283 | $(OBJDIR)/http_ssl.o \ |
| 284 | $(OBJDIR)/http_transport.o \ |
| 285 | $(OBJDIR)/import.o \ |
| 286 | $(OBJDIR)/info.o \ |
| 287 | $(OBJDIR)/json.o \ |
| 288 | $(OBJDIR)/json_login.o \ |
| 289 | $(OBJDIR)/leaf.o \ |
| 290 | $(OBJDIR)/login.o \ |
| 291 | $(OBJDIR)/main.o \ |
| 292 | $(OBJDIR)/manifest.o \ |
| 293 | $(OBJDIR)/md5.o \ |
| @@ -391,11 +394,11 @@ | |
| 394 | |
| 395 | |
| 396 | $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex |
| 397 | $(MKINDEX) $(TRANS_SRC) >$@ |
| 398 | $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h |
| 399 | $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h |
| 400 | echo Done >$(OBJDIR)/headers |
| 401 | |
| 402 | $(OBJDIR)/headers: Makefile |
| 403 | Makefile: |
| 404 | $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate |
| @@ -669,10 +672,17 @@ | |
| 672 | |
| 673 | $(OBJDIR)/json.o: $(OBJDIR)/json_.c $(OBJDIR)/json.h $(SRCDIR)/config.h |
| 674 | $(XTCC) -o $(OBJDIR)/json.o -c $(OBJDIR)/json_.c |
| 675 | |
| 676 | json.h: $(OBJDIR)/headers |
| 677 | $(OBJDIR)/json_login_.c: $(SRCDIR)/json_login.c $(OBJDIR)/translate |
| 678 | $(TRANSLATE) $(SRCDIR)/json_login.c >$(OBJDIR)/json_login_.c |
| 679 | |
| 680 | $(OBJDIR)/json_login.o: $(OBJDIR)/json_login_.c $(OBJDIR)/json_login.h $(SRCDIR)/config.h |
| 681 | $(XTCC) -o $(OBJDIR)/json_login.o -c $(OBJDIR)/json_login_.c |
| 682 | |
| 683 | json_login.h: $(OBJDIR)/headers |
| 684 | $(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate |
| 685 | $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c |
| 686 | |
| 687 | $(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h |
| 688 | $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c |
| @@ -983,14 +993,15 @@ | |
| 993 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 994 | |
| 995 | $(OBJDIR)/cson_amalgamation.o: $(SRCDIR)/cson_amalgamation.c |
| 996 | $(XTCC) -c $(SRCDIR)/cson_amalgamation.c -o $(OBJDIR)/cson_amalgamation.o |
| 997 | |
| 998 | $(OBJDIR)/json.o $(OBJDIR)/json_login.o : $(SRCDIR)/json_detail.h |
| 999 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c $(SRCDIR)/sqlite3.h |
| 1000 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 1001 | |
| 1002 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 1003 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 1004 | |
| 1005 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 1006 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 1007 | |
| 1008 |
+15
-8
| --- win/Makefile.msc | ||
| +++ win/Makefile.msc | ||
| @@ -36,13 +36,13 @@ | ||
| 36 | 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | 38 | |
| 39 | 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | 40 | |
| 41 | -SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 41 | +SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 42 | 42 | |
| 43 | -OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O $(OX)\cson_amalgamation$O | |
| 43 | +OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_login$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O | |
| 44 | 44 | |
| 45 | 45 | |
| 46 | 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | 47 | |
| 48 | 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | ||
| 67 | 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | 68 | echo $(OX)\clone.obj >> $@ |
| 69 | 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | 70 | echo $(OX)\configure.obj >> $@ |
| 71 | 71 | echo $(OX)\content.obj >> $@ |
| 72 | - echo $(OX)\cson_amalgamation.obj >> $@ | |
| 73 | 72 | echo $(OX)\db.obj >> $@ |
| 74 | 73 | echo $(OX)\delta.obj >> $@ |
| 75 | 74 | echo $(OX)\deltacmd.obj >> $@ |
| 76 | 75 | echo $(OX)\descendants.obj >> $@ |
| 77 | 76 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | ||
| 90 | 89 | echo $(OX)\http_ssl.obj >> $@ |
| 91 | 90 | echo $(OX)\http_transport.obj >> $@ |
| 92 | 91 | echo $(OX)\import.obj >> $@ |
| 93 | 92 | echo $(OX)\info.obj >> $@ |
| 94 | 93 | echo $(OX)\json.obj >> $@ |
| 94 | + echo $(OX)\json_login.obj >> $@ | |
| 95 | 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | 96 | echo $(OX)\login.obj >> $@ |
| 97 | 97 | echo $(OX)\main.obj >> $@ |
| 98 | 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | ||
| 169 | 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | 170 | $(TCC) /Fo$@ -c $** |
| 171 | 171 | |
| 172 | 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | 173 | $(TCC) /Fo$@ -c $** |
| 174 | - | |
| 175 | -$(OX)\cson_amalgamation$O : $(SRCDIR)\cson_amalgamation.c | |
| 176 | - $(TCC) /Fo$@ -c $** | |
| 177 | - | |
| 178 | 174 | |
| 179 | 175 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 180 | 176 | $** > $@ |
| 177 | +$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h | |
| 178 | + cp $(SRCDIR)\cson_amalgamation.h $@ | |
| 181 | 179 | |
| 182 | 180 | page_index.h: mkindex$E $(SRC) |
| 183 | 181 | $** > $@ |
| 184 | 182 | |
| 185 | 183 | clean: |
| @@ -188,10 +186,13 @@ | ||
| 188 | 186 | -del headers linkopts |
| 189 | 187 | |
| 190 | 188 | realclean: |
| 191 | 189 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 192 | 190 | |
| 191 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 192 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 193 | + | |
| 193 | 194 | |
| 194 | 195 | $(OX)\add$O : add_.c add.h |
| 195 | 196 | $(TCC) /Fo$@ -c add_.c |
| 196 | 197 | |
| 197 | 198 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | ||
| 422 | 423 | $(OX)\json$O : json_.c json.h |
| 423 | 424 | $(TCC) /Fo$@ -c json_.c |
| 424 | 425 | |
| 425 | 426 | json_.c : $(SRCDIR)\json.c |
| 426 | 427 | translate$E $** > $@ |
| 428 | + | |
| 429 | +$(OX)\json_login$O : json_login_.c json_login.h | |
| 430 | + $(TCC) /Fo$@ -c json_login_.c | |
| 431 | + | |
| 432 | +json_login_.c : $(SRCDIR)\json_login.c | |
| 433 | + translate$E $** > $@ | |
| 427 | 434 | |
| 428 | 435 | $(OX)\leaf$O : leaf_.c leaf.h |
| 429 | 436 | $(TCC) /Fo$@ -c leaf_.c |
| 430 | 437 | |
| 431 | 438 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | ||
| 688 | 695 | |
| 689 | 696 | zip_.c : $(SRCDIR)\zip.c |
| 690 | 697 | translate$E $** > $@ |
| 691 | 698 | |
| 692 | 699 | headers: makeheaders$E page_index.h VERSION.h |
| 693 | - makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 700 | + makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 694 | 701 | @copy /Y nul: headers |
| 695 | 702 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -36,13 +36,13 @@ | |
| 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | |
| 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | |
| 41 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 42 | |
| 43 | OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O $(OX)\cson_amalgamation$O |
| 44 | |
| 45 | |
| 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | |
| 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | |
| 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | echo $(OX)\clone.obj >> $@ |
| 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | echo $(OX)\configure.obj >> $@ |
| 71 | echo $(OX)\content.obj >> $@ |
| 72 | echo $(OX)\cson_amalgamation.obj >> $@ |
| 73 | echo $(OX)\db.obj >> $@ |
| 74 | echo $(OX)\delta.obj >> $@ |
| 75 | echo $(OX)\deltacmd.obj >> $@ |
| 76 | echo $(OX)\descendants.obj >> $@ |
| 77 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | |
| 90 | echo $(OX)\http_ssl.obj >> $@ |
| 91 | echo $(OX)\http_transport.obj >> $@ |
| 92 | echo $(OX)\import.obj >> $@ |
| 93 | echo $(OX)\info.obj >> $@ |
| 94 | echo $(OX)\json.obj >> $@ |
| 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | echo $(OX)\login.obj >> $@ |
| 97 | echo $(OX)\main.obj >> $@ |
| 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | |
| 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | $(TCC) /Fo$@ -c $** |
| 171 | |
| 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | $(TCC) /Fo$@ -c $** |
| 174 | |
| 175 | $(OX)\cson_amalgamation$O : $(SRCDIR)\cson_amalgamation.c |
| 176 | $(TCC) /Fo$@ -c $** |
| 177 | |
| 178 | |
| 179 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 180 | $** > $@ |
| 181 | |
| 182 | page_index.h: mkindex$E $(SRC) |
| 183 | $** > $@ |
| 184 | |
| 185 | clean: |
| @@ -188,10 +186,13 @@ | |
| 188 | -del headers linkopts |
| 189 | |
| 190 | realclean: |
| 191 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 192 | |
| 193 | |
| 194 | $(OX)\add$O : add_.c add.h |
| 195 | $(TCC) /Fo$@ -c add_.c |
| 196 | |
| 197 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | |
| 422 | $(OX)\json$O : json_.c json.h |
| 423 | $(TCC) /Fo$@ -c json_.c |
| 424 | |
| 425 | json_.c : $(SRCDIR)\json.c |
| 426 | translate$E $** > $@ |
| 427 | |
| 428 | $(OX)\leaf$O : leaf_.c leaf.h |
| 429 | $(TCC) /Fo$@ -c leaf_.c |
| 430 | |
| 431 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | |
| 688 | |
| 689 | zip_.c : $(SRCDIR)\zip.c |
| 690 | translate$E $** > $@ |
| 691 | |
| 692 | headers: makeheaders$E page_index.h VERSION.h |
| 693 | makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 694 | @copy /Y nul: headers |
| 695 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -36,13 +36,13 @@ | |
| 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | |
| 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | |
| 41 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 42 | |
| 43 | OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_login$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O |
| 44 | |
| 45 | |
| 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | |
| 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | |
| 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | echo $(OX)\clone.obj >> $@ |
| 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | echo $(OX)\configure.obj >> $@ |
| 71 | echo $(OX)\content.obj >> $@ |
| 72 | echo $(OX)\db.obj >> $@ |
| 73 | echo $(OX)\delta.obj >> $@ |
| 74 | echo $(OX)\deltacmd.obj >> $@ |
| 75 | echo $(OX)\descendants.obj >> $@ |
| 76 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | |
| 89 | echo $(OX)\http_ssl.obj >> $@ |
| 90 | echo $(OX)\http_transport.obj >> $@ |
| 91 | echo $(OX)\import.obj >> $@ |
| 92 | echo $(OX)\info.obj >> $@ |
| 93 | echo $(OX)\json.obj >> $@ |
| 94 | echo $(OX)\json_login.obj >> $@ |
| 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | echo $(OX)\login.obj >> $@ |
| 97 | echo $(OX)\main.obj >> $@ |
| 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | |
| 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | $(TCC) /Fo$@ -c $** |
| 171 | |
| 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | $(TCC) /Fo$@ -c $** |
| 174 | |
| 175 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 176 | $** > $@ |
| 177 | $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h |
| 178 | cp $(SRCDIR)\cson_amalgamation.h $@ |
| 179 | |
| 180 | page_index.h: mkindex$E $(SRC) |
| 181 | $** > $@ |
| 182 | |
| 183 | clean: |
| @@ -188,10 +186,13 @@ | |
| 186 | -del headers linkopts |
| 187 | |
| 188 | realclean: |
| 189 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 190 | |
| 191 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 192 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 193 | |
| 194 | |
| 195 | $(OX)\add$O : add_.c add.h |
| 196 | $(TCC) /Fo$@ -c add_.c |
| 197 | |
| 198 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | |
| 423 | $(OX)\json$O : json_.c json.h |
| 424 | $(TCC) /Fo$@ -c json_.c |
| 425 | |
| 426 | json_.c : $(SRCDIR)\json.c |
| 427 | translate$E $** > $@ |
| 428 | |
| 429 | $(OX)\json_login$O : json_login_.c json_login.h |
| 430 | $(TCC) /Fo$@ -c json_login_.c |
| 431 | |
| 432 | json_login_.c : $(SRCDIR)\json_login.c |
| 433 | translate$E $** > $@ |
| 434 | |
| 435 | $(OX)\leaf$O : leaf_.c leaf.h |
| 436 | $(TCC) /Fo$@ -c leaf_.c |
| 437 | |
| 438 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | |
| 695 | |
| 696 | zip_.c : $(SRCDIR)\zip.c |
| 697 | translate$E $** > $@ |
| 698 | |
| 699 | headers: makeheaders$E page_index.h VERSION.h |
| 700 | makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 701 | @copy /Y nul: headers |
| 702 |
+15
-8
| --- win/Makefile.msc | ||
| +++ win/Makefile.msc | ||
| @@ -36,13 +36,13 @@ | ||
| 36 | 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | 38 | |
| 39 | 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | 40 | |
| 41 | -SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 41 | +SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c | |
| 42 | 42 | |
| 43 | -OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O $(OX)\cson_amalgamation$O | |
| 43 | +OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_login$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O | |
| 44 | 44 | |
| 45 | 45 | |
| 46 | 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | 47 | |
| 48 | 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | ||
| 67 | 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | 68 | echo $(OX)\clone.obj >> $@ |
| 69 | 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | 70 | echo $(OX)\configure.obj >> $@ |
| 71 | 71 | echo $(OX)\content.obj >> $@ |
| 72 | - echo $(OX)\cson_amalgamation.obj >> $@ | |
| 73 | 72 | echo $(OX)\db.obj >> $@ |
| 74 | 73 | echo $(OX)\delta.obj >> $@ |
| 75 | 74 | echo $(OX)\deltacmd.obj >> $@ |
| 76 | 75 | echo $(OX)\descendants.obj >> $@ |
| 77 | 76 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | ||
| 90 | 89 | echo $(OX)\http_ssl.obj >> $@ |
| 91 | 90 | echo $(OX)\http_transport.obj >> $@ |
| 92 | 91 | echo $(OX)\import.obj >> $@ |
| 93 | 92 | echo $(OX)\info.obj >> $@ |
| 94 | 93 | echo $(OX)\json.obj >> $@ |
| 94 | + echo $(OX)\json_login.obj >> $@ | |
| 95 | 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | 96 | echo $(OX)\login.obj >> $@ |
| 97 | 97 | echo $(OX)\main.obj >> $@ |
| 98 | 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | ||
| 169 | 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | 170 | $(TCC) /Fo$@ -c $** |
| 171 | 171 | |
| 172 | 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | 173 | $(TCC) /Fo$@ -c $** |
| 174 | - | |
| 175 | -$(OX)\cson_amalgamation$O : $(SRCDIR)\cson_amalgamation.c | |
| 176 | - $(TCC) /Fo$@ -c $** | |
| 177 | - | |
| 178 | 174 | |
| 179 | 175 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 180 | 176 | $** > $@ |
| 177 | +$(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h | |
| 178 | + cp $(SRCDIR)\cson_amalgamation.h $@ | |
| 181 | 179 | |
| 182 | 180 | page_index.h: mkindex$E $(SRC) |
| 183 | 181 | $** > $@ |
| 184 | 182 | |
| 185 | 183 | clean: |
| @@ -188,10 +186,13 @@ | ||
| 188 | 186 | -del headers linkopts |
| 189 | 187 | |
| 190 | 188 | realclean: |
| 191 | 189 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 192 | 190 | |
| 191 | +$(OBJDIR)\json$O : $(SRCDIR)\json_detail.h | |
| 192 | +$(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h | |
| 193 | + | |
| 193 | 194 | |
| 194 | 195 | $(OX)\add$O : add_.c add.h |
| 195 | 196 | $(TCC) /Fo$@ -c add_.c |
| 196 | 197 | |
| 197 | 198 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | ||
| 422 | 423 | $(OX)\json$O : json_.c json.h |
| 423 | 424 | $(TCC) /Fo$@ -c json_.c |
| 424 | 425 | |
| 425 | 426 | json_.c : $(SRCDIR)\json.c |
| 426 | 427 | translate$E $** > $@ |
| 428 | + | |
| 429 | +$(OX)\json_login$O : json_login_.c json_login.h | |
| 430 | + $(TCC) /Fo$@ -c json_login_.c | |
| 431 | + | |
| 432 | +json_login_.c : $(SRCDIR)\json_login.c | |
| 433 | + translate$E $** > $@ | |
| 427 | 434 | |
| 428 | 435 | $(OX)\leaf$O : leaf_.c leaf.h |
| 429 | 436 | $(TCC) /Fo$@ -c leaf_.c |
| 430 | 437 | |
| 431 | 438 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | ||
| 688 | 695 | |
| 689 | 696 | zip_.c : $(SRCDIR)\zip.c |
| 690 | 697 | translate$E $** > $@ |
| 691 | 698 | |
| 692 | 699 | headers: makeheaders$E page_index.h VERSION.h |
| 693 | - makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 700 | + makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h | |
| 694 | 701 | @copy /Y nul: headers |
| 695 | 702 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -36,13 +36,13 @@ | |
| 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | |
| 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | |
| 41 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 42 | |
| 43 | OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O $(OX)\cson_amalgamation$O |
| 44 | |
| 45 | |
| 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | |
| 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | |
| 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | echo $(OX)\clone.obj >> $@ |
| 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | echo $(OX)\configure.obj >> $@ |
| 71 | echo $(OX)\content.obj >> $@ |
| 72 | echo $(OX)\cson_amalgamation.obj >> $@ |
| 73 | echo $(OX)\db.obj >> $@ |
| 74 | echo $(OX)\delta.obj >> $@ |
| 75 | echo $(OX)\deltacmd.obj >> $@ |
| 76 | echo $(OX)\descendants.obj >> $@ |
| 77 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | |
| 90 | echo $(OX)\http_ssl.obj >> $@ |
| 91 | echo $(OX)\http_transport.obj >> $@ |
| 92 | echo $(OX)\import.obj >> $@ |
| 93 | echo $(OX)\info.obj >> $@ |
| 94 | echo $(OX)\json.obj >> $@ |
| 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | echo $(OX)\login.obj >> $@ |
| 97 | echo $(OX)\main.obj >> $@ |
| 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | |
| 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | $(TCC) /Fo$@ -c $** |
| 171 | |
| 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | $(TCC) /Fo$@ -c $** |
| 174 | |
| 175 | $(OX)\cson_amalgamation$O : $(SRCDIR)\cson_amalgamation.c |
| 176 | $(TCC) /Fo$@ -c $** |
| 177 | |
| 178 | |
| 179 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 180 | $** > $@ |
| 181 | |
| 182 | page_index.h: mkindex$E $(SRC) |
| 183 | $** > $@ |
| 184 | |
| 185 | clean: |
| @@ -188,10 +186,13 @@ | |
| 188 | -del headers linkopts |
| 189 | |
| 190 | realclean: |
| 191 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 192 | |
| 193 | |
| 194 | $(OX)\add$O : add_.c add.h |
| 195 | $(TCC) /Fo$@ -c add_.c |
| 196 | |
| 197 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | |
| 422 | $(OX)\json$O : json_.c json.h |
| 423 | $(TCC) /Fo$@ -c json_.c |
| 424 | |
| 425 | json_.c : $(SRCDIR)\json.c |
| 426 | translate$E $** > $@ |
| 427 | |
| 428 | $(OX)\leaf$O : leaf_.c leaf.h |
| 429 | $(TCC) /Fo$@ -c leaf_.c |
| 430 | |
| 431 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | |
| 688 | |
| 689 | zip_.c : $(SRCDIR)\zip.c |
| 690 | translate$E $** > $@ |
| 691 | |
| 692 | headers: makeheaders$E page_index.h VERSION.h |
| 693 | makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 694 | @copy /Y nul: headers |
| 695 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -36,13 +36,13 @@ | |
| 36 | LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB) |
| 37 | LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR) |
| 38 | |
| 39 | SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0 |
| 40 | |
| 41 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_login_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c zip_.c |
| 42 | |
| 43 | OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_login$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O |
| 44 | |
| 45 | |
| 46 | APPNAME = $(OX)\fossil$(E) |
| 47 | |
| 48 | all: $(OX) $(APPNAME) |
| @@ -67,11 +67,10 @@ | |
| 67 | echo $(OX)\clearsign.obj >> $@ |
| 68 | echo $(OX)\clone.obj >> $@ |
| 69 | echo $(OX)\comformat.obj >> $@ |
| 70 | echo $(OX)\configure.obj >> $@ |
| 71 | echo $(OX)\content.obj >> $@ |
| 72 | echo $(OX)\db.obj >> $@ |
| 73 | echo $(OX)\delta.obj >> $@ |
| 74 | echo $(OX)\deltacmd.obj >> $@ |
| 75 | echo $(OX)\descendants.obj >> $@ |
| 76 | echo $(OX)\diff.obj >> $@ |
| @@ -90,10 +89,11 @@ | |
| 89 | echo $(OX)\http_ssl.obj >> $@ |
| 90 | echo $(OX)\http_transport.obj >> $@ |
| 91 | echo $(OX)\import.obj >> $@ |
| 92 | echo $(OX)\info.obj >> $@ |
| 93 | echo $(OX)\json.obj >> $@ |
| 94 | echo $(OX)\json_login.obj >> $@ |
| 95 | echo $(OX)\leaf.obj >> $@ |
| 96 | echo $(OX)\login.obj >> $@ |
| 97 | echo $(OX)\main.obj >> $@ |
| 98 | echo $(OX)\manifest.obj >> $@ |
| 99 | echo $(OX)\md5.obj >> $@ |
| @@ -169,17 +169,15 @@ | |
| 169 | $(OX)\th$O : $(SRCDIR)\th.c |
| 170 | $(TCC) /Fo$@ -c $** |
| 171 | |
| 172 | $(OX)\th_lang$O : $(SRCDIR)\th_lang.c |
| 173 | $(TCC) /Fo$@ -c $** |
| 174 | |
| 175 | VERSION.h : mkversion$E $B\manifest.uuid $B\manifest $B\VERSION |
| 176 | $** > $@ |
| 177 | $(OBJDIR)\cson_amalgamation.h : $(SRCDIR)\cson_amalgamation.h |
| 178 | cp $(SRCDIR)\cson_amalgamation.h $@ |
| 179 | |
| 180 | page_index.h: mkindex$E $(SRC) |
| 181 | $** > $@ |
| 182 | |
| 183 | clean: |
| @@ -188,10 +186,13 @@ | |
| 186 | -del headers linkopts |
| 187 | |
| 188 | realclean: |
| 189 | -del $(APPNAME) translate$E mkindex$E makeheaders$E mkversion$E |
| 190 | |
| 191 | $(OBJDIR)\json$O : $(SRCDIR)\json_detail.h |
| 192 | $(OBJDIR)\json_login$O : $(SRCDIR)\json_detail.h |
| 193 | |
| 194 | |
| 195 | $(OX)\add$O : add_.c add.h |
| 196 | $(TCC) /Fo$@ -c add_.c |
| 197 | |
| 198 | add_.c : $(SRCDIR)\add.c |
| @@ -422,10 +423,16 @@ | |
| 423 | $(OX)\json$O : json_.c json.h |
| 424 | $(TCC) /Fo$@ -c json_.c |
| 425 | |
| 426 | json_.c : $(SRCDIR)\json.c |
| 427 | translate$E $** > $@ |
| 428 | |
| 429 | $(OX)\json_login$O : json_login_.c json_login.h |
| 430 | $(TCC) /Fo$@ -c json_login_.c |
| 431 | |
| 432 | json_login_.c : $(SRCDIR)\json_login.c |
| 433 | translate$E $** > $@ |
| 434 | |
| 435 | $(OX)\leaf$O : leaf_.c leaf.h |
| 436 | $(TCC) /Fo$@ -c leaf_.c |
| 437 | |
| 438 | leaf_.c : $(SRCDIR)\leaf.c |
| @@ -688,7 +695,7 @@ | |
| 695 | |
| 696 | zip_.c : $(SRCDIR)\zip.c |
| 697 | translate$E $** > $@ |
| 698 | |
| 699 | headers: makeheaders$E page_index.h VERSION.h |
| 700 | makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_login_.c:json_login.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h |
| 701 | @copy /Y nul: headers |
| 702 |