Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch arjen-doc-updates Excluding Merge-Ins
This is equivalent to a diff from 474850cff5 to d23f98877d
2011-05-30
| ||
06:55 | Online help for several more commands adapted Leaf check-in: d23f98877d user: Arjen Markus tags: arjen-doc-updates | |
2011-05-27
| ||
06:48 | Add makefile to ensure no DLLs are used for the MinGW build (zlib was installed as both a static and a dynamic library) Extensions and minor textual revisions to the online help for several commands check-in: 6469b814ab user: Arjen Markus tags: arjen-doc-updates | |
2011-05-25
| ||
13:54 | Update the Mac icon for the download page. check-in: a2e1c48373 user: drh tags: trunk | |
2011-05-24
| ||
12:02 | Merge the latest trunk changes into the versionable-settings branch. check-in: 9c915adb0a user: drh tags: versionable-settings | |
12:00 | Merge the latest trunk changes into the arjen-doc-updates branch. check-in: 5d4ef37a9d user: drh tags: arjen-doc-updates | |
2011-05-23
| ||
15:11 | Merge the ben-security branch into the trunk. check-in: 474850cff5 user: drh tags: trunk, release | |
15:06 | Merge the solaris10 branch into the trunk. check-in: 3e0efc3827 user: drh tags: trunk | |
2011-05-22
| ||
15:08 | Follow web app best practise by marking cookies as HttpOnly and, if it's over an https connection, as 'secure' so they will only be transmitted over https. Options supported by major browsers, and harmless where not supported. check-in: e4b57a3230 user: ben tags: ben-security | |
Changes to BUILD.txt.
3 3 use the Makefile. To do a complete build on unix, just type: 4 4 5 5 make 6 6 7 7 On a windows box, use one of the Makefiles in the win/ subdirectory, 8 8 according to your compiler and environment. For example: 9 9 10 - make -f win/Makefile.w32 10 + make -f win/Makefile.mingw 11 + 12 +Note: 13 +Some of the Makefiles require that you build in the src directory, 14 +rather than the toplevel directory. These include: Makefile.msc, 15 +Makefile.dmc and Makefile.PellesCGMake. 16 + 17 +Fossil requires the zlib library as its only external dependency. 11 18 12 19 If you have trouble, or you want to do something fancy, just look at 13 20 top level makefile. There are 6 configuration options that are all well 14 21 commented. Instead of editing the Makefile, consider copying the Makefile 15 22 to an alternative name such as "GNUMakefile", "BSDMakefile", or "makefile" 16 23 and editing the copy. 17 24 ................................................................................ 24 31 2. Copy "Makefile" from the source into the build directory and 25 32 modify the SRCDIR macro along the lines of: 26 33 27 34 SRCDIR=../src 28 35 29 36 3. type: "make" 30 37 31 -This will now keep all generates files seperate from the maintained 38 +This will now keep all generates files separate from the maintained 32 39 source code. 33 40 34 41 -------------------------------------------------------------------------- 35 42 36 43 Here are some notes on what is happening behind the scenes: 37 44 38 45 * The Makefile just sets up a few macros and then invokes the ................................................................................ 39 46 real makefile in src/main.mk. The src/main.mk makefile is 40 47 automatically generated by a TCL script found at src/makemake.tcl. 41 48 Do not edit src/main.mk directly. Update src/makemake.tcl and 42 49 then rerun it. 43 50 44 51 * The *.h header files are automatically generated using a program 45 52 called "makeheaders". Source code to the makeheaders program is 46 - found in src/makeheaders.c. Documentation is found in 53 + found in src/makeheaders.c. Documentation is found in 47 54 src/makeheaders.html. 48 55 49 56 * Most *.c source files are preprocessed using a program called 50 57 "translate". The sources to translate are found in src/translate.c. 51 58 A header comment in src/translate.c explains in detail what it does. 52 59 53 60 * The src/mkindex.c program generates some C code that implements 54 61 static lookup tables. See the header comment in the source code 55 62 for details on what it does.
Changes to src/allrepo.c.
52 52 ** COMMAND: all 53 53 ** 54 54 ** Usage: %fossil all (list|ls|pull|push|rebuild|sync) 55 55 ** 56 56 ** The ~/.fossil file records the location of all repositories for a 57 57 ** user. This command performs certain operations on all repositories 58 58 ** that can be useful before or after a period of disconnected operation. 59 +** 60 +** The rebuild subcommand is especially useful if the repositories were built 61 +** with an older version of fossil. 59 62 ** 60 63 ** On Win32 systems, the file is named "_fossil" and is located in 61 64 ** %LOCALAPPDATA%, %APPDATA% or %HOMEPATH%. 62 65 ** 63 66 ** Available operations are: 64 67 ** 65 68 ** ignore Arguments are repositories that should be ignored ................................................................................ 75 78 ** 76 79 ** sync Run a "sync" on all repositories 77 80 ** 78 81 ** Respositories are automatically added to the set of known repositories 79 82 ** when one of the following commands against the repository: clone, info, 80 83 ** pull, push, or sync. Even previously ignored repositories are added back 81 84 ** to the list of repositories by these commands. 85 +** 86 +** 87 +** SUMMARY: fossil all subcommand|subcommand repository1 ?repository2 ...? 88 +** Subcommands: list, ls, pull push, rebuild or sync 89 +** Or: ignore repository1 ... 82 90 */ 83 91 void all_cmd(void){ 84 92 int n; 85 93 Stmt q; 86 94 const char *zCmd; 87 95 char *zSyscmd; 88 96 char *zFossil; 89 97 char *zQFilename; 90 98 int nMissing; 91 99 int stopOnError = find_option("dontstop",0,0)==0; 92 100 int rc; 93 - 101 + 94 102 if( g.argc<3 ){ 95 103 usage("list|ls|pull|push|rebuild|sync"); 96 104 } 97 105 n = strlen(g.argv[2]); 98 106 db_open_config(1); 99 107 zCmd = g.argv[2]; 100 108 if( strncmp(zCmd, "list", n)==0 || strncmp(zCmd,"ls",n)==0 ){ ................................................................................ 148 156 free(zSyscmd); 149 157 free(zQFilename); 150 158 if( stopOnError && rc ){ 151 159 nMissing = 0; 152 160 break; 153 161 } 154 162 } 155 - 163 + 156 164 /* If any repositories whose names appear in the ~/.fossil file could not 157 165 ** be found, remove those names from the ~/.fossil file. 158 166 */ 159 167 if( nMissing ){ 160 168 db_begin_transaction(); 161 169 db_reset(&q); 162 170 while( db_step(&q)==SQLITE_ROW ){
Changes to src/bisect.c.
89 89 } 90 90 91 91 /* 92 92 ** COMMAND: bisect 93 93 ** 94 94 ** Usage: %fossil bisect SUBCOMMAND ... 95 95 ** 96 -** Run various subcommands useful for searching for bugs. 96 +** Run various subcommands useful for searching for bugs. It does so 97 +** by marking versions as "good" and "bad" and allowing you to "interpolate" 98 +** as it were between these two versions. 97 99 ** 98 100 ** fossil bisect bad ?VERSION? 99 101 ** 100 102 ** Identify version VERSION as non-working. If VERSION is omitted, 101 103 ** the current checkout is marked as non-working. 102 104 ** 103 105 ** fossil bisect good ?VERSION? ................................................................................ 119 121 ** 120 122 ** Reinitialize a bisect session. This cancels prior bisect history 121 123 ** and allows a bisect session to start over from the beginning. 122 124 ** 123 125 ** fossil bisect vlist 124 126 ** 125 127 ** List the versions in between "bad" and "good". 128 +** 129 +** SUMMARY: fossil bisect subcommand ... 130 +** Subcommands: bad, good ?VERSION? 131 +** Or: next, reset, vlist 132 +** Or: options ?NAME? ?VALUE? 126 133 */ 127 134 void bisect_cmd(void){ 128 135 int n; 129 136 const char *zCmd; 130 137 db_must_be_within_tree(); 131 138 if( g.argc<3 ){ 132 139 usage("bisect SUBCOMMAND ARGS...");
Changes to src/branch.c.
38 38 const char *zColor; /* Color of the new branch */ 39 39 Blob branch; /* manifest for the new branch */ 40 40 Manifest *pParent; /* Parsed parent manifest */ 41 41 Blob mcksum; /* Self-checksum on the manifest */ 42 42 const char *zDateOvrd; /* Override date string */ 43 43 const char *zUserOvrd; /* Override user name */ 44 44 int isPrivate = 0; /* True if the branch should be private */ 45 - 45 + 46 46 noSign = find_option("nosign","",0)!=0; 47 47 zColor = find_option("bgcolor","c",1); 48 48 isPrivate = find_option("private",0,0)!=0; 49 49 zDateOvrd = find_option("date-override",0,1); 50 50 zUserOvrd = find_option("user-override",0,1); 51 51 verify_all_options(); 52 52 if( g.argc<5 ){ 53 53 usage("new BRANCH-NAME CHECK-IN ?-bgcolor COLOR?"); 54 54 } 55 - db_find_and_open_repository(0, 0); 55 + db_find_and_open_repository(0, 0); 56 56 noSign = db_get_int("omitsign", 0)|noSign; 57 - 57 + 58 58 /* fossil branch new name */ 59 59 zBranch = g.argv[3]; 60 60 if( zBranch==0 || zBranch[0]==0 ){ 61 61 fossil_panic("branch name cannot be empty"); 62 62 } 63 63 if( db_exists( 64 64 "SELECT 1 FROM tagxref" ................................................................................ 130 130 " ORDER BY tagname", 131 131 rootid); 132 132 while( db_step(&q)==SQLITE_ROW ){ 133 133 const char *zTag = db_column_text(&q, 0); 134 134 blob_appendf(&branch, "T -%F *\n", zTag); 135 135 } 136 136 db_finalize(&q); 137 - 137 + 138 138 blob_appendf(&branch, "U %F\n", zUserOvrd ? zUserOvrd : g.zLogin); 139 139 md5sum_blob(&branch, &mcksum); 140 140 blob_appendf(&branch, "Z %b\n", &mcksum); 141 141 if( !noSign && clearsign(&branch, &branch) ){ 142 142 Blob ans; 143 143 blob_zero(&ans); 144 144 prompt_user("unable to sign manifest. continue (y/N)? ", &ans); ................................................................................ 170 170 fossil_nameofexe(), zBranch 171 171 ); 172 172 } 173 173 174 174 175 175 /* Commit */ 176 176 db_end_transaction(0); 177 - 177 + 178 178 /* Do an autosync push, if requested */ 179 179 autosync(AUTOSYNC_PUSH); 180 180 } 181 181 182 182 /* 183 183 ** COMMAND: branch 184 184 ** ................................................................................ 194 194 ** --private option makes the branch private. 195 195 ** 196 196 ** %fossil branch list 197 197 ** %fossil branch ls 198 198 ** 199 199 ** List all branches 200 200 ** 201 +** 202 +** SUMMARY: fossil branch subcommand ... 203 +** Subcommands: new branchname basis ?-R|-repository file? ?--bgcolor color? 204 +** ?--private? 205 +** Or: list, ls 201 206 */ 202 207 void branch_cmd(void){ 203 208 int n; 204 209 const char *zCmd = "list"; 205 210 db_find_and_open_repository(0, 0); 206 211 if( g.argc<2 ){ 207 212 usage("new|list|ls ..."); ................................................................................ 334 339 ** This routine is called while for each check-in that is rendered by 335 340 ** the timeline of a "brlist" page. Add some additional hyperlinks 336 341 ** to the end of the line. 337 342 */ 338 343 static void brtimeline_extra(int rid){ 339 344 Stmt q; 340 345 if( !g.okHistory ) return; 341 - db_prepare(&q, 346 + db_prepare(&q, 342 347 "SELECT substr(tagname,5) FROM tagxref, tag" 343 348 " WHERE tagxref.rid=%d" 344 349 " AND tagxref.tagid=tag.tagid" 345 350 " AND tagxref.tagtype>0" 346 351 " AND tag.tagname GLOB 'sym-*'", 347 352 rid 348 353 );
Changes to src/checkin.c.
35 35 Blob *report, /* Append the status report here */ 36 36 const char *zPrefix, /* Prefix on each line of the report */ 37 37 int missingIsFatal /* MISSING and NOT_A_FILE are fatal errors */ 38 38 ){ 39 39 Stmt q; 40 40 int nPrefix = strlen(zPrefix); 41 41 int nErr = 0; 42 - db_prepare(&q, 42 + db_prepare(&q, 43 43 "SELECT pathname, deleted, chnged, rid, coalesce(origname!=pathname,0)" 44 44 " FROM vfile " 45 45 " WHERE file_is_selected(id)" 46 46 " AND (chnged OR deleted OR rid=0 OR pathname!=origname) ORDER BY 1" 47 47 ); 48 48 while( db_step(&q)==SQLITE_ROW ){ 49 49 const char *zPathname = db_column_text(&q,0); ................................................................................ 105 105 ** Report on the edit status of all files in the current checkout. 106 106 ** See also the "status" and "extra" commands. 107 107 ** 108 108 ** Options: 109 109 ** 110 110 ** --sha1sum Verify file status using SHA1 hashing rather 111 111 ** than relying on file mtimes. 112 +** 113 +** 114 +** SUMMARY: fossil changes ?--sha1sum? 112 115 */ 113 116 void changes_cmd(void){ 114 117 Blob report; 115 118 int vid; 116 119 int useSha1sum = find_option("sha1sum", 0, 0)!=0; 117 120 db_must_be_within_tree(); 118 121 blob_zero(&report); ................................................................................ 129 132 ** 130 133 ** Report on the status of the current checkout. 131 134 ** 132 135 ** Options: 133 136 ** 134 137 ** --sha1sum Verify file status using SHA1 hashing rather 135 138 ** than relying on file mtimes. 139 +** 140 +** 141 +** SUMMARY: fossil status ?--sha1sum? 136 142 */ 137 143 void status_cmd(void){ 138 144 int vid; 139 145 db_must_be_within_tree(); 140 146 /* 012345678901234 */ 141 147 fossil_print("repository: %s\n", db_lget("repository","")); 142 148 fossil_print("local-root: %s\n", g.zLocalRoot); ................................................................................ 151 157 /* 152 158 ** COMMAND: ls 153 159 ** 154 160 ** Usage: %fossil ls [-l] 155 161 ** 156 162 ** Show the names of all files in the current checkout. The -l provides 157 163 ** extra information about each file. 164 +** 165 +** 166 +** SUMMARY: fossil ls ?-l? 158 167 */ 159 168 void ls_cmd(void){ 160 169 int vid; 161 170 Stmt q; 162 171 int isBrief; 163 172 164 173 isBrief = find_option("l","l", 0)==0; ................................................................................ 201 210 db_finalize(&q); 202 211 } 203 212 204 213 /* 205 214 ** COMMAND: extras 206 215 ** Usage: %fossil extras ?--dotfiles? ?--ignore GLOBPATTERN? 207 216 ** 208 -** Print a list of all files in the source tree that are not part of 217 +** Print a list of all files in the source tree that are NOT part of 209 218 ** the current checkout. See also the "clean" command. 210 219 ** 211 220 ** Files and subdirectories whose names begin with "." are normally 212 221 ** ignored but can be included by adding the --dotfiles option. 213 222 ** 214 223 ** The GLOBPATTERN is a comma-separated list of GLOB expressions for 215 224 ** files that are ignored. The GLOBPATTERN specified by the "ignore-glob" 216 -** is used if the --ignore option is omitted. 225 +** setting is used if the --ignore option is omitted. (See the settings 226 +** command for more information.) 227 +** 228 +** 229 +** SUMMARY: fossil extras ?-dotfiles? ?--ignore globpattern? 217 230 */ 218 231 void extra_cmd(void){ 219 232 Blob path; 220 233 Blob repo; 221 234 Stmt q; 222 235 int n; 223 236 const char *zIgnoreFlag = find_option("ignore",0,1); ................................................................................ 232 245 blob_init(&path, g.zLocalRoot, n-1); 233 246 if( zIgnoreFlag==0 ){ 234 247 zIgnoreFlag = db_get("ignore-glob", 0); 235 248 } 236 249 pIgnore = glob_create(zIgnoreFlag); 237 250 vfile_scan(&path, blob_size(&path), allFlag, pIgnore); 238 251 glob_free(pIgnore); 239 - db_prepare(&q, 252 + db_prepare(&q, 240 253 "SELECT x FROM sfile" 241 254 " WHERE x NOT IN (%s)" 242 255 " ORDER BY 1", 243 256 fossil_all_reserved_names() 244 257 ); 245 258 if( file_tree_name(g.zRepositoryName, &repo, 0) ){ 246 259 db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo); ................................................................................ 253 266 254 267 /* 255 268 ** COMMAND: clean 256 269 ** Usage: %fossil clean ?--force? ?--dotfiles? ?--ignore GLOBPATTERN? 257 270 ** 258 271 ** Delete all "extra" files in the source tree. "Extra" files are 259 272 ** files that are not officially part of the checkout. See also 260 -** the "extra" command. This operation cannot be undone. 273 +** the "extras" command. 274 +** 275 +** TAKE CARE: This operation cannot be undone! 261 276 ** 262 277 ** You will be prompted before removing each file. If you are 263 278 ** sure you wish to remove all "extra" files you can specify the 264 -** optional --force flag and no prompts will be issued. 279 +** --force flag and no prompts will be issued. 265 280 ** 266 281 ** Files and subdirectories whose names begin with "." are 267 282 ** normally ignored. They are included if the "--dotfiles" option 268 283 ** is used. 269 284 ** 270 285 ** The GLOBPATTERN is a comma-separated list of GLOB expressions for 271 286 ** files that are ignored. The GLOBPATTERN specified by the "ignore-glob" 272 -** is used if the --ignore option is omitted. 287 +** setting is used if the --ignore option is omitted. (See the settings 288 +** command for more information.) 289 +** 290 +** 291 +** SUMMARY: fossil clean ?--force? ?--dotfiles? ?--ignore globpattern? 273 292 */ 274 293 void clean_cmd(void){ 275 294 int allFlag; 276 295 int dotfilesFlag; 277 296 const char *zIgnoreFlag; 278 297 Blob path, repo; 279 298 Stmt q; ................................................................................ 289 308 } 290 309 db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY)"); 291 310 n = strlen(g.zLocalRoot); 292 311 blob_init(&path, g.zLocalRoot, n-1); 293 312 pIgnore = glob_create(zIgnoreFlag); 294 313 vfile_scan(&path, blob_size(&path), dotfilesFlag, pIgnore); 295 314 glob_free(pIgnore); 296 - db_prepare(&q, 315 + db_prepare(&q, 297 316 "SELECT %Q || x FROM sfile" 298 317 " WHERE x NOT IN (%s)" 299 318 " ORDER BY 1", 300 319 g.zLocalRoot, fossil_all_reserved_names() 301 320 ); 302 321 if( file_tree_name(g.zRepositoryName, &repo, 0) ){ 303 322 db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo); ................................................................................ 495 514 " Use -f to override.", zUuid, zDate); 496 515 } 497 516 #endif 498 517 } 499 518 500 519 /* 501 520 ** zDate should be a valid date string. Convert this string into the 502 -** format YYYY-MM-DDTHH:MM:SS. If the string is not a valid date, 521 +** format YYYY-MM-DDTHH:MM:SS. If the string is not a valid date, 503 522 ** print a fatal error and quit. 504 523 */ 505 524 char *date_in_standard_format(const char *zInputDate){ 506 525 char *zDate; 507 526 zDate = db_text(0, "SELECT strftime('%%Y-%%m-%%dT%%H:%%M:%%f',%Q)", 508 527 zInputDate); 509 528 if( zDate[0]==0 ){ ................................................................................ 577 596 int isexe = db_column_int(&q, 4); 578 597 int isSelected = db_column_int(&q, 5); 579 598 const char *zPerm; 580 599 int cmp; 581 600 #if !defined(_WIN32) 582 601 /* For unix, extract the "executable" permission bit directly from 583 602 ** the filesystem. On windows, the "executable" bit is retained 584 - ** unchanged from the original. 603 + ** unchanged from the original. 585 604 */ 586 605 blob_resize(&filename, nBasename); 587 606 blob_append(&filename, zName, -1); 588 607 isexe = file_isexe(blob_str(&filename)); 589 608 #endif 590 609 if( isexe ){ 591 610 zPerm = " x"; ................................................................................ 669 688 " ORDER BY tagname", 670 689 vid, zBranch); 671 690 while( db_step(&q)==SQLITE_ROW ){ 672 691 const char *zTag = db_column_text(&q, 0); 673 692 blob_appendf(pOut, "T -%F *\n", zTag); 674 693 } 675 694 db_finalize(&q); 676 - } 695 + } 677 696 blob_appendf(pOut, "U %F\n", zUserOvrd ? zUserOvrd : g.zLogin); 678 697 md5sum_blob(pOut, &mcksum); 679 698 blob_appendf(pOut, "Z %b\n", &mcksum); 680 699 if( pnFBcard ) *pnFBcard = nFBcard; 681 700 } 682 701 683 702 /* ................................................................................ 737 756 ** COMMAND: ci 738 757 ** COMMAND: commit 739 758 ** 740 759 ** Usage: %fossil commit ?OPTIONS? ?FILE...? 741 760 ** 742 761 ** Create a new version containing all of the changes in the current 743 762 ** checkout. You will be prompted to enter a check-in comment unless 744 -** the comment has been specified on the command-line using "-m" or a 763 +** the comment has been specified on the command-line using "-m" or a 745 764 ** file containing the comment using -M. The editor defined in the 746 765 ** "editor" fossil option (see %fossil help set) will be used, or from 747 766 ** the "VISUAL" or "EDITOR" environment variables (in that order) if 748 767 ** no editor is set. 749 768 ** 750 769 ** All files that have changed will be committed unless some subset of 751 770 ** files is specified on the command line. ................................................................................ 759 778 ** option appears. A check-in is not allowed against a closed check-in. 760 779 ** 761 780 ** The --private option creates a private check-in that is never synced. 762 781 ** Children of private check-ins are automatically private. 763 782 ** 764 783 ** the --tag option applies the symbolic tag name to the check-in. 765 784 ** 766 -** Options: 785 +** Notes: 786 +** - If you commit without the --branch option, the last branch (or the 787 +** trunk) will be used. 788 +** - If you do not specify a commit message or an empty message, the commit 789 +** will be aborted. 790 +** - fossil prefers text files in the UNIX format (line-endings only "LF"). 791 +** If it encounters text files in the Windows format (CRLF), it will 792 +** warn about that. 793 +** (File that are considered binary are stored as-is) 767 794 ** 795 +** SUMMARY: fossil commit ?OPTIONS? ?FILE...? 796 +** Options: 768 797 ** --comment|-m COMMENT-TEXT 769 798 ** --message-file|-M COMMENT-FILE 770 799 ** --branch NEW-BRANCH-NAME 771 800 ** --bgcolor COLOR 772 801 ** --nosign 773 802 ** --force|-f 774 803 ** --private 775 804 ** --baseline 776 805 ** --delta 777 806 ** --tag TAG-NAME 778 -** 807 +** 779 808 */ 780 809 void commit_cmd(void){ 781 810 int hasChanges; /* True if unsaved changes exist */ 782 811 int vid; /* blob-id of parent version */ 783 812 int nrid; /* blob-id of a modified file */ 784 813 int nvid; /* Blob-id of the new check-in */ 785 814 Blob comment; /* Check-in comment */ ................................................................................ 803 832 const char *zTag; /* Symbolic tag to apply to this check-in */ 804 833 Blob manifest; /* Manifest in baseline form */ 805 834 Blob muuid; /* Manifest uuid */ 806 835 Blob cksum1, cksum2; /* Before and after commit checksums */ 807 836 Blob cksum1b; /* Checksum recorded in the manifest */ 808 837 int szD; /* Size of the delta manifest */ 809 838 int szB; /* Size of the baseline manifest */ 810 - 839 + 811 840 url_proxy_options(); 812 841 noSign = find_option("nosign",0,0)!=0; 813 842 forceDelta = find_option("delta",0,0)!=0; 814 843 forceBaseline = find_option("baseline",0,0)!=0; 815 844 if( forceDelta && forceBaseline ){ 816 845 fossil_fatal("cannot use --delta and --baseline together"); 817 846 } ................................................................................ 897 926 user_select(); 898 927 /* 899 928 ** Check that the user exists. 900 929 */ 901 930 if( !db_exists("SELECT 1 FROM user WHERE login=%Q", g.zLogin) ){ 902 931 fossil_fatal("no such user: %s", g.zLogin); 903 932 } 904 - 933 + 905 934 hasChanges = unsaved_changes(); 906 935 db_begin_transaction(); 907 936 db_record_repository_filename(0); 908 937 if( hasChanges==0 && !isAMerge && !forceFlag ){ 909 938 fossil_fatal("nothing has changed"); 910 939 } 911 940 ................................................................................ 912 941 /* If one or more files that were named on the command line have not 913 942 ** been modified, bail out now. 914 943 */ 915 944 if( g.aCommitFile ){ 916 945 Blob unmodified; 917 946 memset(&unmodified, 0, sizeof(Blob)); 918 947 blob_init(&unmodified, 0, 0); 919 - db_blob(&unmodified, 948 + db_blob(&unmodified, 920 949 "SELECT pathname FROM vfile" 921 950 " WHERE chnged = 0 AND origname IS NULL AND file_is_selected(id)" 922 951 ); 923 952 if( strlen(blob_str(&unmodified)) ){ 924 953 fossil_fatal("file %s has not changed", blob_str(&unmodified)); 925 954 } 926 955 } ................................................................................ 930 959 ** is used or unless this is a private check-in. 931 960 */ 932 961 if( zBranch==0 && forceFlag==0 && g.markPrivate==0 && !is_a_leaf(vid) ){ 933 962 fossil_fatal("would fork. \"update\" first or use -f or --force."); 934 963 } 935 964 936 965 /* 937 - ** Do not allow a commit against a closed leaf 966 + ** Do not allow a commit against a closed leaf 938 967 */ 939 968 if( db_exists("SELECT 1 FROM tagxref" 940 969 " WHERE tagid=%d AND rid=%d AND tagtype>0", 941 970 TAG_CLOSED, vid) ){ 942 971 fossil_fatal("cannot commit against a closed leaf"); 943 972 } 944 973 ................................................................................ 963 992 } 964 993 }else{ 965 994 db_multi_exec("REPLACE INTO vvar VALUES('ci-comment',%B)", &comment); 966 995 db_end_transaction(0); 967 996 db_begin_transaction(); 968 997 } 969 998 970 - /* Step 1: Insert records for all modified files into the blob 999 + /* Step 1: Insert records for all modified files into the blob 971 1000 ** table. If there were arguments passed to this command, only 972 1001 ** the identified fils are inserted (if they have been modified). 973 1002 */ 974 1003 db_prepare(&q, 975 1004 "SELECT id, %Q || pathname, mrid, %s FROM vfile " 976 1005 "WHERE chnged==1 AND NOT deleted AND file_is_selected(id)", 977 1006 g.zLocalRoot, glob_expr("pathname", db_get("crnl-glob","")) ................................................................................ 1065 1094 prompt_user("unable to sign manifest. continue (y/N)? ", &ans); 1066 1095 if( blob_str(&ans)[0]!='y' ){ 1067 1096 fossil_exit(1); 1068 1097 } 1069 1098 } 1070 1099 1071 1100 /* If the --test option is specified, output the manifest file 1072 - ** and rollback the transaction. 1101 + ** and rollback the transaction. 1073 1102 */ 1074 1103 if( testRun ){ 1075 1104 blob_write_to_file(&manifest, ""); 1076 1105 } 1077 1106 1078 1107 if( outputManifest ){ 1079 1108 zManifestFile = mprintf("%smanifest", g.zLocalRoot); ................................................................................ 1097 1126 blob_zero(&muuid); 1098 1127 blob_appendf(&muuid, "%s\n", zUuid); 1099 1128 blob_write_to_file(&muuid, zManifestFile); 1100 1129 free(zManifestFile); 1101 1130 blob_reset(&muuid); 1102 1131 } 1103 1132 1104 - 1133 + 1105 1134 /* Update the vfile and vmerge tables */ 1106 1135 db_multi_exec( 1107 1136 "DELETE FROM vfile WHERE (vid!=%d OR deleted) AND file_is_selected(id);" 1108 1137 "DELETE FROM vmerge WHERE file_is_selected(id) OR id=0;" 1109 1138 "UPDATE vfile SET vid=%d;" 1110 1139 "UPDATE vfile SET rid=mrid, chnged=0, deleted=0, origname=NULL" 1111 1140 " WHERE file_is_selected(id);" ................................................................................ 1121 1150 vfile_aggregate_checksum_repository(nvid, &cksum2); 1122 1151 if( blob_compare(&cksum1, &cksum2) ){ 1123 1152 vfile_compare_repository_to_disk(nvid); 1124 1153 fossil_fatal("working checkout does not match what would have ended " 1125 1154 "up in the repository: %b versus %b", 1126 1155 &cksum1, &cksum2); 1127 1156 } 1128 - 1157 + 1129 1158 /* Verify that the manifest checksum matches the expected checksum */ 1130 1159 vfile_aggregate_checksum_manifest(nvid, &cksum2, &cksum1b); 1131 1160 if( blob_compare(&cksum1, &cksum1b) ){ 1132 1161 fossil_fatal("manifest checksum self-test failed: " 1133 1162 "%b versus %b", &cksum1, &cksum1b); 1134 1163 } 1135 1164 if( blob_compare(&cksum1, &cksum2) ){ 1136 1165 fossil_fatal( 1137 1166 "working checkout does not match manifest after commit: " 1138 1167 "%b versus %b", &cksum1, &cksum2); 1139 1168 } 1140 - 1169 + 1141 1170 /* Verify that the commit did not modify any disk images. */ 1142 1171 vfile_aggregate_checksum_disk(nvid, &cksum2); 1143 1172 if( blob_compare(&cksum1, &cksum2) ){ 1144 1173 fossil_fatal("working checkout before and after commit does not match"); 1145 1174 } 1146 1175 } 1147 1176 ................................................................................ 1153 1182 if( testRun ){ 1154 1183 db_end_transaction(1); 1155 1184 exit(1); 1156 1185 } 1157 1186 db_end_transaction(0); 1158 1187 1159 1188 if( !g.markPrivate ){ 1160 - autosync(AUTOSYNC_PUSH); 1189 + autosync(AUTOSYNC_PUSH); 1161 1190 } 1162 1191 if( count_nonbranch_children(vid)>1 ){ 1163 1192 fossil_print("**** warning: a fork has occurred *****\n"); 1164 1193 } 1165 1194 }
Changes to src/checkout.c.
164 164 } 165 165 if( !db_exists("SELECT 1 FROM vfile WHERE pathname='manifest.uuid'") ){ 166 166 zManFile = mprintf("%smanifest.uuid", g.zLocalRoot); 167 167 file_delete(zManFile); 168 168 free(zManFile); 169 169 } 170 170 } 171 - 171 + 172 172 } 173 173 174 174 /* 175 175 ** COMMAND: checkout 176 176 ** COMMAND: co 177 177 ** 178 178 ** Usage: %fossil checkout VERSION ?-f|--force? ?--keep? ................................................................................ 183 183 ** leaves files on disk unchanged, except the manifest and manifest.uuid 184 184 ** files. 185 185 ** 186 186 ** The --latest flag can be used in place of VERSION to checkout the 187 187 ** latest version in the repository. 188 188 ** 189 189 ** See also the "update" command. 190 +** 191 +** SUMMARY: fossil checkout VERSION ?-f|--force? ?--keep? 192 +** Note: VERSION can also be --latest 190 193 */ 191 194 void checkout_cmd(void){ 192 195 int forceFlag; /* Force checkout even if edits exist */ 193 196 int keepFlag; /* Do not change any files on disk */ 194 197 int latestFlag; /* Checkout the latest version */ 195 198 char *zVers; /* Version to checkout */ 196 199 int promptFlag; /* True to prompt before overwriting */ 197 200 int vid, prior; 198 201 Blob cksum1, cksum1b, cksum2; 199 - 202 + 200 203 db_must_be_within_tree(); 201 204 db_begin_transaction(); 202 205 forceFlag = find_option("force","f",0)!=0; 203 206 keepFlag = find_option("keep",0,0)!=0; 204 207 latestFlag = find_option("latest",0,0)!=0; 205 208 promptFlag = find_option("prompt",0,0)!=0 || forceFlag==0; 206 209 if( (latestFlag!=0 && g.argc!=2) || (latestFlag==0 && g.argc!=3) ){ ................................................................................ 278 281 279 282 /* 280 283 ** COMMAND: close 281 284 ** 282 285 ** Usage: %fossil close ?-f|--force? 283 286 ** 284 287 ** The opposite of "open". Close the current database connection. 285 -** Require a -f or --force flag if there are unsaved changed in the 288 +** Require a -f or --force flag if there are unsaved changes in the 286 289 ** current check-out. 290 +** 291 +** SUMMARY: fossil close ?-f|--force? 287 292 */ 288 293 void close_cmd(void){ 289 294 int forceFlag = find_option("force","f",0)!=0; 290 295 db_must_be_within_tree(); 291 296 if( !forceFlag && unsaved_changes()==1 ){ 292 297 fossil_fatal("there are unsaved changes in the current checkout"); 293 298 } 294 299 unlink_local_database(1); 295 300 db_close(1); 296 301 unlink_local_database(0); 297 302 }
Changes to src/clone.c.
25 25 26 26 /* 27 27 ** COMMAND: clone 28 28 ** 29 29 ** Usage: %fossil clone ?OPTIONS? URL FILENAME 30 30 ** 31 31 ** Make a clone of a repository specified by URL in the local 32 -** file named FILENAME. 32 +** file named FILENAME. 33 33 ** 34 34 ** By default, your current login name is used to create the default 35 35 ** admin user. This can be overridden using the -A|--admin-user 36 36 ** parameter. 37 37 ** 38 +** SUMMARY: fossil clone ?OPTIONS? URL FILENAME 38 39 ** Options: 39 -** 40 40 ** --admin-user|-A USERNAME Make USERNAME the administrator 41 -** --private Also clone private branches 41 +** --private Also clone private branches 42 42 ** 43 43 */ 44 44 void clone_cmd(void){ 45 45 char *zPassword; 46 46 const char *zDefaultUser; /* Optional name of the default user */ 47 47 int nErr = 0; 48 48 int bPrivate; /* Also clone private branches */
Changes to src/configure.c.
59 59 { "/user", CONFIGSET_USER, "Users and privilege settings" }, 60 60 { "/all", CONFIGSET_ALL, "All of the above" }, 61 61 }; 62 62 63 63 64 64 /* 65 65 ** The following is a list of settings that we are willing to 66 -** transfer. 66 +** transfer. 67 67 ** 68 68 ** Setting names that begin with an alphabetic characters refer to 69 69 ** single entries in the CONFIG table. Setting names that begin with 70 70 ** "@" are for special processing. 71 71 */ 72 72 static struct { 73 73 const char *zName; /* Name of the configuration parameter */ ................................................................................ 173 173 ** evaluated will populate the corresponding table with data. 174 174 */ 175 175 void configure_render_special_name(const char *zName, Blob *pOut){ 176 176 Stmt q; 177 177 if( fossil_strcmp(zName, "@shun")==0 ){ 178 178 db_prepare(&q, "SELECT uuid FROM shun"); 179 179 while( db_step(&q)==SQLITE_ROW ){ 180 - blob_appendf(pOut, "INSERT OR IGNORE INTO shun VALUES('%s');\n", 180 + blob_appendf(pOut, "INSERT OR IGNORE INTO shun VALUES('%s');\n", 181 181 db_column_text(&q, 0) 182 182 ); 183 183 } 184 184 db_finalize(&q); 185 185 }else if( fossil_strcmp(zName, "@reportfmt")==0 ){ 186 186 db_prepare(&q, "SELECT title, cols, sqlcode FROM reportfmt"); 187 187 while( db_step(&q)==SQLITE_ROW ){ 188 188 blob_appendf(pOut, "INSERT INTO _xfer_reportfmt(title,cols,sqlcode)" 189 - " VALUES(%Q,%Q,%Q);\n", 189 + " VALUES(%Q,%Q,%Q);\n", 190 190 db_column_text(&q, 0), 191 191 db_column_text(&q, 1), 192 192 db_column_text(&q, 2) 193 193 ); 194 194 } 195 195 db_finalize(&q); 196 196 }else if( fossil_strcmp(zName, "@user")==0 ){ 197 - db_prepare(&q, 197 + db_prepare(&q, 198 198 "SELECT login, CASE WHEN length(pw)==40 THEN pw END," 199 199 " cap, info, quote(photo) FROM user"); 200 200 while( db_step(&q)==SQLITE_ROW ){ 201 201 blob_appendf(pOut, "INSERT INTO _xfer_user(login,pw,cap,info,photo)" 202 202 " VALUES(%Q,%Q,%Q,%Q,%s);\n", 203 203 db_column_text(&q, 0), 204 204 db_column_text(&q, 1), ................................................................................ 288 288 @ ); 289 289 @ INSERT INTO _xfer_reportfmt 290 290 @ SELECT rn,owner,title,cols,sqlcode FROM reportfmt; 291 291 @ INSERT INTO _xfer_user 292 292 @ SELECT uid,login,pw,cap,cookie,ipaddr,cexpire,info,photo FROM user; 293 293 ; 294 294 db_multi_exec(zSQL1); 295 - 295 + 296 296 /* When the replace flag is set, add triggers that run the first time 297 297 ** that new data is seen. The triggers run only once and delete all the 298 298 ** existing data. 299 299 */ 300 300 if( replaceFlag ){ 301 301 static const char zSQL2[] = 302 302 @ CREATE TRIGGER _xfer_r1 BEFORE INSERT ON _xfer_reportfmt ................................................................................ 769 769 ** 770 770 ** Restore the configuration to the default. AREA as above. 771 771 ** 772 772 ** %fossil configuration sync AREA ?URL? 773 773 ** 774 774 ** Synchronize configuration changes in the local repository with 775 775 ** the remote repository at URL. 776 +** 777 +** 778 +** SUMMARY: fossil configure METHOD ... ?-R|--repository REPOSITORY? 779 +** Where: METHOD = export, import, merge, pull, push or reset 780 +** 781 +** For methods export, pull, push and reset: 782 +** 783 +** fossil configure METHOD AREA ?FILENAME|URL? ?-R|--repository REPOSITORY? 784 +** 785 +** AREA = all email project shun skin ticket user 786 +** 787 +** FILENAME used with methods export, URL used with the others 788 +** 789 +** For methods import and merge 790 +** 791 +** fossil configure METHOD FILENAME -R|--repository REPOSITORY? 776 792 */ 777 793 void configuration_cmd(void){ 778 794 int n; 779 795 const char *zMethod; 780 796 if( g.argc<3 ){ 781 797 usage("export|import|merge|pull|reset ..."); 782 798 } ................................................................................ 797 813 zSince, zSince 798 814 ); 799 815 }else{ 800 816 iStart = 0; 801 817 } 802 818 export_config(mask, g.argv[3], iStart, g.argv[4]); 803 819 }else 804 - if( strncmp(zMethod, "import", n)==0 820 + if( strncmp(zMethod, "import", n)==0 805 821 || strncmp(zMethod, "merge", n)==0 ){ 806 822 Blob in; 807 823 int groupMask; 808 824 if( g.argc!=4 ) usage(mprintf("%s FILENAME",zMethod)); 809 825 blob_read_from_file(&in, g.argv[3]); 810 826 db_begin_transaction(); 811 827 if( zMethod[0]=='i' ){ ................................................................................ 860 876 } 861 877 }else 862 878 if( strncmp(zMethod, "reset", n)==0 ){ 863 879 int mask, i; 864 880 char *zBackup; 865 881 if( g.argc!=4 ) usage("reset AREA"); 866 882 mask = configure_name_to_mask(g.argv[3], 1); 867 - zBackup = db_text(0, 883 + zBackup = db_text(0, 868 884 "SELECT strftime('config-backup-%%Y%%m%%d%%H%%M%%f','now')"); 869 885 db_begin_transaction(); 870 886 export_config(mask, g.argv[3], 0, zBackup); 871 887 for(i=0; i<count(aConfig); i++){ 872 888 const char *zName = aConfig[i].zName; 873 889 if( (aConfig[i].groupMask & mask)==0 ) continue; 874 890 if( zName[0]!='@' ){
Changes to src/content.c.
113 113 bag_clear(&contentCache.available); 114 114 bag_clear(&contentCache.inCache); 115 115 contentCache.n = 0; 116 116 contentCache.szTotal = 0; 117 117 } 118 118 119 119 /* 120 -** Return the srcid associated with rid. Or return 0 if rid is 120 +** Return the srcid associated with rid. Or return 0 if rid is 121 121 ** original content and not a delta. 122 122 */ 123 123 static int findSrcid(int rid){ 124 124 static Stmt q; 125 125 int srcid; 126 126 db_static_prepare(&q, "SELECT srcid FROM delta WHERE rid=:rid"); 127 127 db_bind_int(&q, ":rid", rid); ................................................................................ 153 153 ** Check to see if content is available for artifact "rid". Return 154 154 ** true if it is. Return false if rid is a phantom or depends on 155 155 ** a phantom. 156 156 */ 157 157 int content_is_available(int rid){ 158 158 int srcid; 159 159 int depth = 0; /* Limit to recursion depth */ 160 - while( depth++ < 10000000 ){ 160 + while( depth++ < 10000000 ){ 161 161 if( bag_find(&contentCache.missing, rid) ){ 162 162 return 0; 163 163 } 164 164 if( bag_find(&contentCache.available, rid) ){ 165 165 return 1; 166 166 } 167 167 if( content_size(rid, -1)<0 ){ ................................................................................ 305 305 } 306 306 307 307 /* 308 308 ** COMMAND: artifact 309 309 ** 310 310 ** Usage: %fossil artifact ARTIFACT-ID ?OUTPUT-FILENAME? ?OPTIONS? 311 311 ** 312 -** Extract an artifact by its SHA1 hash and write the results on 313 -** standard output, or if the optional 4th argument is given, in 314 -** the named output file. 312 +** Extract an artifact (file) by its artifact ID (the SHA1 hash) and write 313 +** the results on standard output, or if the optional 4th argument 314 +** is given, in the named output file. 315 +** 316 +** You can find the artifact ID in the Files section of the repository's 317 +** web interface (see the server/ui commands). 315 318 ** 316 319 ** Options: 317 320 ** 318 321 ** -R|--repository FILE Extract artifacts from repository FILE 322 +** 323 +** 324 +** SUMMARY: fossil artifact ARTIFACT-ID ?OUTPUT-FILENAME? ?OPTIONS? 325 +** Options: -R|--repository 319 326 */ 320 327 void artifact_cmd(void){ 321 328 int rid; 322 329 Blob content; 323 330 const char *zFile; 324 331 db_find_and_open_repository(OPEN_ANY_SCHEMA, 0); 325 332 if( g.argc!=4 && g.argc!=3 ) usage("ARTIFACT-ID ?FILENAME? ?OPTIONS?"); ................................................................................ 408 415 db_multi_exec("DELETE FROM orphan WHERE baseline=%d", rid); 409 416 } 410 417 411 418 /* Recursively dephantomize all artifacts that are derived by 412 419 ** delta from artifact rid and which have not already been 413 420 ** cross-linked. */ 414 421 nChildUsed = 0; 415 - db_prepare(&q, 422 + db_prepare(&q, 416 423 "SELECT rid FROM delta" 417 424 " WHERE srcid=%d" 418 425 " AND NOT EXISTS(SELECT 1 FROM mlink WHERE mid=delta.rid)", 419 426 rid 420 427 ); 421 428 while( db_step(&q)==SQLITE_ROW ){ 422 429 int child = db_column_int(&q, 0); ................................................................................ 447 454 } 448 455 449 456 /* 450 457 ** Write content into the database. Return the record ID. If the 451 458 ** content is already in the database, just return the record ID. 452 459 ** 453 460 ** If srcId is specified, then pBlob is delta content from 454 -** the srcId record. srcId might be a phantom. 461 +** the srcId record. srcId might be a phantom. 455 462 ** 456 463 ** pBlob is normally uncompressed text. But if nBlob>0 then the 457 464 ** pBlob value has already been compressed and nBlob is its uncompressed 458 465 ** size. If nBlob>0 then zUuid must be valid. 459 466 ** 460 467 ** zUuid is the UUID of the artifact, if it is specified. When srcId is 461 468 ** specified then zUuid must always be specified. If srcId is zero, ................................................................................ 478 485 int size; 479 486 int rid; 480 487 Stmt s1; 481 488 Blob cmpr; 482 489 Blob hash; 483 490 int markAsUnclustered = 0; 484 491 int isDephantomize = 0; 485 - 492 + 486 493 assert( g.repositoryOpen ); 487 494 assert( pBlob!=0 ); 488 495 assert( srcId==0 || zUuid!=0 ); 489 496 if( zUuid==0 ){ 490 497 assert( pBlob!=0 ); 491 498 assert( nBlob==0 ); 492 499 sha1sum_blob(pBlob, &hash); ................................................................................ 573 580 574 581 /* If the srcId is specified, then the data we just added is 575 582 ** really a delta. Record this fact in the delta table. 576 583 */ 577 584 if( srcId ){ 578 585 db_multi_exec("REPLACE INTO delta(rid,srcid) VALUES(%d,%d)", rid, srcId); 579 586 } 580 - if( !isDephantomize && bag_find(&contentCache.missing, rid) && 587 + if( !isDephantomize && bag_find(&contentCache.missing, rid) && 581 588 (srcId==0 || content_is_available(srcId)) ){ 582 589 content_mark_available(rid); 583 590 } 584 591 if( isDephantomize ){ 585 592 after_dephantomize(rid, 0); 586 593 } 587 - 594 + 588 595 /* Add the element to the unclustered table if has never been 589 596 ** previously seen. 590 597 */ 591 598 if( markAsUnclustered ){ 592 599 db_multi_exec("INSERT OR IGNORE INTO unclustered VALUES(%d)", rid); 593 600 } 594 601 ................................................................................ 621 628 622 629 /* 623 630 ** Create a new phantom with the given UUID and return its artifact ID. 624 631 */ 625 632 int content_new(const char *zUuid, int isPrivate){ 626 633 int rid; 627 634 static Stmt s1, s2, s3; 628 - 635 + 629 636 assert( g.repositoryOpen ); 630 637 db_begin_transaction(); 631 638 if( uuid_is_shunned(zUuid) ){ 632 639 db_end_transaction(0); 633 640 return 0; 634 641 } 635 642 db_static_prepare(&s1, ................................................................................ 717 724 int rc; 718 725 db_static_prepare(&s1, 719 726 "SELECT 1 FROM private WHERE rid=:rid" 720 727 ); 721 728 db_bind_int(&s1, ":rid", rid); 722 729 rc = db_step(&s1); 723 730 db_reset(&s1); 724 - return rc==SQLITE_ROW; 731 + return rc==SQLITE_ROW; 725 732 } 726 733 727 734 /* 728 -** Make sure an artifact is public. 735 +** Make sure an artifact is public. 729 736 */ 730 737 void content_make_public(int rid){ 731 738 static Stmt s1; 732 739 db_static_prepare(&s1, 733 740 "DELETE FROM private WHERE rid=:rid" 734 741 ); 735 742 db_bind_int(&s1, ":rid", rid); ................................................................................ 748 755 ** the source of the delta. It is OK to delta private->private and 749 756 ** public->private and public->public. Just no private->public delta. 750 757 ** 751 758 ** If srcid is a delta that depends on rid, then srcid is 752 759 ** converted to undeltaed text. 753 760 ** 754 761 ** If either rid or srcid contain less than 50 bytes, or if the 755 -** resulting delta does not achieve a compression of at least 25% 762 +** resulting delta does not achieve a compression of at least 25% 756 763 ** the rid is left untouched. 757 764 ** 758 765 ** Return 1 if a delta is made and 0 if no delta occurs. 759 766 */ 760 767 int content_deltify(int rid, int srcid, int force){ 761 768 int s; 762 769 Blob data, src, delta;
Changes to src/db.c.
34 34 #endif 35 35 #include <sqlite3.h> 36 36 #include <sys/types.h> 37 37 #include <sys/stat.h> 38 38 #include <unistd.h> 39 39 #include <time.h> 40 40 #include "db.h" 41 + 42 +#if defined(_WIN32) || defined(WIN32) 43 +# include <io.h> 44 +#define access(f,m) _access((f),(m)) 45 +#endif 41 46 42 47 #if INTERFACE 43 48 /* 44 49 ** An single SQL statement is represented as an instance of the following 45 50 ** structure. 46 51 */ 47 52 struct Stmt { ................................................................................ 54 59 55 60 /* 56 61 ** Call this routine when a database error occurs. 57 62 */ 58 63 static void db_err(const char *zFormat, ...){ 59 64 va_list ap; 60 65 char *z; 61 - static const char zRebuildMsg[] = 66 + static const char zRebuildMsg[] = 62 67 "If you have recently updated your fossil executable, you might\n" 63 68 "need to run \"fossil all rebuild\" to bring the repository\n" 64 69 "schemas up to date.\n"; 65 70 va_start(ap, zFormat); 66 71 z = vmprintf(zFormat, ap); 67 72 va_end(ap); 68 73 if( g.xferPanic ){ ................................................................................ 640 645 zDbName, &db, 641 646 SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 642 647 zVfs 643 648 ); 644 649 if( rc!=SQLITE_OK ){ 645 650 db_err(sqlite3_errmsg(db)); 646 651 } 647 - sqlite3_busy_timeout(db, 5000); 652 + sqlite3_busy_timeout(db, 5000); 648 653 sqlite3_wal_autocheckpoint(db, 1); /* Set to checkpoint frequently */ 649 654 sqlite3_create_function(db, "now", 0, SQLITE_ANY, 0, db_now_function, 0, 0); 650 655 return db; 651 656 } 652 657 653 658 654 659 /* ................................................................................ 749 754 db_open_or_attach(zDbName, "localdb"); 750 755 g.localOpen = 1; 751 756 db_open_config(0); 752 757 db_open_repository(0); 753 758 754 759 /* If the "isexe" column is missing from the vfile table, then 755 760 ** add it now. This code added on 2010-03-06. After all users have 756 - ** upgraded, this code can be safely deleted. 761 + ** upgraded, this code can be safely deleted. 757 762 */ 758 763 rc = sqlite3_prepare(g.db, "SELECT isexe FROM vfile", -1, &pStmt, 0); 759 764 nPrepare++; 760 765 sqlite3_finalize(pStmt); 761 766 if( rc==SQLITE_ERROR ){ 762 767 sqlite3_exec(g.db, "ALTER TABLE vfile ADD COLUMN isexe BOOLEAN", 0, 0, 0); 763 768 } 764 769 765 770 #if 0 766 771 /* If the "mtime" column is missing from the vfile table, then 767 772 ** add it now. This code added on 2008-12-06. After all users have 768 - ** upgraded, this code can be safely deleted. 773 + ** upgraded, this code can be safely deleted. 769 774 */ 770 775 rc = sqlite3_prepare(g.db, "SELECT mtime FROM vfile", -1, &pStmt, 0); 771 776 sqlite3_finalize(pStmt); 772 777 if( rc==SQLITE_ERROR ){ 773 778 sqlite3_exec(g.db, "ALTER TABLE vfile ADD COLUMN mtime INTEGER", 0, 0, 0); 774 779 } 775 780 #endif 776 781 777 782 #if 0 778 783 /* If the "origname" column is missing from the vfile table, then 779 784 ** add it now. This code added on 2008-11-09. After all users have 780 - ** upgraded, this code can be safely deleted. 785 + ** upgraded, this code can be safely deleted. 781 786 */ 782 787 rc = sqlite3_prepare(g.db, "SELECT origname FROM vfile", -1, &pStmt, 0); 783 788 sqlite3_finalize(pStmt); 784 789 if( rc==SQLITE_ERROR ){ 785 790 sqlite3_exec(g.db, "ALTER TABLE vfile ADD COLUMN origname TEXT", 0, 0, 0); 786 791 } 787 792 #endif ................................................................................ 790 795 } 791 796 792 797 /* 793 798 ** Locate the root directory of the local repository tree. The root 794 799 ** directory is found by searching for a file named "_FOSSIL_" or ".fos" 795 800 ** that contains a valid repository database. 796 801 ** 797 -** If no valid _FOSSIL_ or .fos file is found, we move up one level and 802 +** If no valid _FOSSIL_ or .fos file is found, we move up one level and 798 803 ** try again. Once the file is found, the g.zLocalRoot variable is set 799 804 ** to the root of the repository tree and this routine returns 1. If 800 805 ** no database is found, then this routine return 0. 801 806 ** 802 807 ** This routine always opens the user database regardless of whether or 803 808 ** not the repository database is found. If the _FOSSIL_ or .fos file 804 809 ** is found, it is attached to the open database connection too. 805 810 */ 806 811 int db_open_local(void){ 807 812 int i, n; 808 813 char zPwd[2000]; 809 814 static const char *aDbName[] = { "/_FOSSIL_", "/.fos" }; 810 - 815 + 811 816 if( g.localOpen) return 1; 812 817 file_getcwd(zPwd, sizeof(zPwd)-20); 813 818 n = strlen(zPwd); 814 819 while( n>0 ){ 815 820 if( file_access(zPwd, W_OK) ) break; 816 821 for(i=0; i<sizeof(aDbName)/sizeof(aDbName[0]); i++){ 817 822 sqlite3_snprintf(sizeof(zPwd)-n, &zPwd[n], "%s", aDbName[i]); ................................................................................ 1164 1169 ** parameter. 1165 1170 ** 1166 1171 ** Options: 1167 1172 ** 1168 1173 ** --admin-user|-A USERNAME 1169 1174 ** --date-override DATETIME 1170 1175 ** 1176 +** 1177 +** SUMMARY: fossil new ?OPTIONS? FILENAME 1178 +** Options: --admin-user|-A, --date-override 1179 +** 1171 1180 */ 1172 1181 void create_repository_cmd(void){ 1173 1182 char *zPassword; 1174 1183 const char *zDate; /* Date of the initial check-in */ 1175 1184 const char *zDefaultUser; /* Optional name of the default user */ 1176 1185 1177 1186 zDate = find_option("date-override",0,1); ................................................................................ 1185 1194 db_open_config(0); 1186 1195 db_begin_transaction(); 1187 1196 db_initial_setup(zDate, zDefaultUser, 1); 1188 1197 db_end_transaction(0); 1189 1198 fossil_print("project-id: %s\n", db_get("project-code", 0)); 1190 1199 fossil_print("server-id: %s\n", db_get("server-code", 0)); 1191 1200 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin); 1192 - fossil_print("admin-user: %s (initial password is \"%s\")\n", 1201 + fossil_print("admin-user: %s (initial password is \"%s\")\n", 1193 1202 g.zLogin, zPassword); 1194 1203 } 1195 1204 1196 1205 /* 1197 1206 ** SQL functions for debugging. 1198 1207 ** 1199 1208 ** The print() function writes its arguments on stdout, but only ................................................................................ 1229 1238 if( g.zLogin!=0 ){ 1230 1239 sqlite3_result_text(context, g.zLogin, -1, SQLITE_STATIC); 1231 1240 } 1232 1241 } 1233 1242 1234 1243 /* 1235 1244 ** Implement the cgi() SQL function. cgi() takes a an argument which is 1236 -** a name of CGI query parameter. The value of that parameter is returned, 1245 +** a name of CGI query parameter. The value of that parameter is returned, 1237 1246 ** if available. optional second argument will be returned if the first 1238 1247 ** doesn't exist as a CGI parameter. 1239 1248 */ 1240 1249 static void db_sql_cgi(sqlite3_context *context, int argc, sqlite3_value **argv){ 1241 1250 const char* zP; 1242 1251 if( argc!=1 && argc!=2 ) return; 1243 1252 zP = P((const char*)sqlite3_value_text(argv[0])); ................................................................................ 1539 1548 ** 1540 1549 ** Open a connection to the local repository in FILENAME. A checkout 1541 1550 ** for the repository is created with its root at the working directory. 1542 1551 ** If VERSION is specified then that version is checked out. Otherwise 1543 1552 ** the latest version is checked out. No files other than "manifest" 1544 1553 ** and "manifest.uuid" are modified if the --keep option is present. 1545 1554 ** 1555 +** You can find the version IDs via the web interface 1556 +** (see the server/ui commands). 1557 +** 1546 1558 ** See also the "close" command. 1559 +** 1560 +** 1561 +** SUMMARY: fossil open FILENAME ?VERSION? ?OPTIONS? 1562 +** Options: --keep, --nested 1547 1563 */ 1548 1564 void cmd_open(void){ 1549 1565 Blob path; 1550 1566 int vid; 1551 1567 int keepFlag; 1552 1568 int allowNested; 1553 1569 static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0 }; ................................................................................ 1669 1685 { 0,0,0,0 } 1670 1686 }; 1671 1687 1672 1688 /* 1673 1689 ** COMMAND: settings 1674 1690 ** COMMAND: unset 1675 1691 ** 1676 -** %fossil settings ?PROPERTY? ?VALUE? ?-global? 1692 +** %fossil settings ?PROPERTY? ?VALUE? ?--global? 1677 1693 ** %fossil unset PROPERTY ?-global? 1678 1694 ** 1679 1695 ** The "settings" command with no arguments lists all properties and their 1680 1696 ** values. With just a property name it shows the value of that property. 1681 1697 ** With a value argument it changes the property for the current repository. 1682 1698 ** 1683 -** The "unset" command clears a property setting. 1699 +** The "unset" command clears a property setting (restoring fossil's default). 1684 1700 ** 1685 1701 ** 1686 1702 ** auto-captcha If enabled, the Login page provides a button to 1687 1703 ** fill in the captcha password. Default: on 1688 1704 ** 1689 1705 ** auto-shun If enabled, automatically pull the shunning list 1706 +** (for removing unwanted files and Wiki pages) 1690 1707 ** from a server to which the client autosyncs. 1691 1708 ** Default: on 1692 1709 ** 1693 1710 ** autosync If enabled, automatically pull prior to commit 1694 1711 ** or update and automatically push after commit or 1695 1712 ** tag or branch creation. If the value is "pullonly" 1696 1713 ** then only pull operations occur automatically. ................................................................................ 1715 1732 ** diff-command External command to run when performing a diff. 1716 1733 ** If undefined, the internal text diff will be used. 1717 1734 ** 1718 1735 ** dont-push Prevent this repository from pushing from client to 1719 1736 ** server. Useful when setting up a private branch. 1720 1737 ** 1721 1738 ** editor Text editor command used for check-in comments. 1739 +** (The default depends on the platform) 1722 1740 ** 1723 1741 ** gdiff-command External command to run when performing a graphical 1724 1742 ** diff. If undefined, text diff will be used. 1725 1743 ** 1726 1744 ** gmerge-command A graphical merge conflict resolver command operating 1727 1745 ** on four files. 1728 1746 ** Ex: kdiff3 "%baseline" "%original" "%merge" -o "%output" ................................................................................ 1777 1795 ** ssh-command Command used to talk to a remote machine with 1778 1796 ** the "ssh://" protocol. 1779 1797 ** 1780 1798 ** web-browser A shell command used to launch your preferred 1781 1799 ** web browser when given a URL as an argument. 1782 1800 ** Defaults to "start" on windows, "open" on Mac, 1783 1801 ** and "firefox" on Unix. 1802 +** 1803 +** SUMMARY: fossil settings ?PROPERTY? ?VALUE? ?OPTIONS? 1804 +** fossil unset PROPERTY ?OPTIONS? 1805 +** Options: --global 1806 +** Where: PROPERTY = auto-captcha, auto-shun, autosync, binary-glob, 1807 +** clearsign, crnl-glob, default-perms, diff-command, 1808 +** dont-push, editor, gdiff-command, gmerge-command, 1809 +** http-port, https-login, ignore-glob, localauth, 1810 +** main-branch, manifest, max-upload, mtime-changes, 1811 +** pgp-command, proxy, repo-cksum, self-register, 1812 +** ssh-command, web-browser 1784 1813 */ 1785 1814 void setting_cmd(void){ 1786 1815 int i; 1787 1816 int globalFlag = find_option("global","g",0)!=0; 1788 1817 int unsetFlag = g.argv[1][0]=='u'; 1789 1818 db_open_config(1); 1790 1819 if( !globalFlag ){ ................................................................................ 1862 1891 ** %fossil test-timespan TIMESTAMP 1863 1892 ** 1864 1893 ** Print the approximate span of time from now to TIMESTAMP. 1865 1894 */ 1866 1895 void test_timespan_cmd(void){ 1867 1896 double rDiff; 1868 1897 if( g.argc!=3 ) usage("TIMESTAMP"); 1869 - sqlite3_open(":memory:", &g.db); 1898 + sqlite3_open(":memory:", &g.db); 1870 1899 rDiff = db_double(0.0, "SELECT julianday('now') - julianday(%Q)", g.argv[2]); 1871 1900 fossil_print("Time differences: %s\n", db_timespan_name(rDiff)); 1872 1901 sqlite3_close(g.db); 1873 1902 g.db = 0; 1874 1903 }
Changes to src/descendants.c.
69 69 /* Initialize the bags. */ 70 70 bag_init(&seen); 71 71 bag_init(&pending); 72 72 bag_insert(&pending, iBase); 73 73 74 74 /* This query returns all non-branch-merge children of check-in :rid. 75 75 ** 76 - ** If a a child is a merge of a fork within the same branch, it is 76 + ** If a a child is a merge of a fork within the same branch, it is 77 77 ** returned. Only merge children in different branches are excluded. 78 78 */ 79 79 db_prepare(&q1, 80 80 "SELECT cid FROM plink" 81 81 " WHERE pid=:rid" 82 82 " AND (isprim" 83 83 " OR coalesce((SELECT value FROM tagxref" 84 84 " WHERE tagid=%d AND rid=plink.pid), 'trunk')" 85 85 "=coalesce((SELECT value FROM tagxref" 86 86 " WHERE tagid=%d AND rid=plink.cid), 'trunk'))", 87 87 TAG_BRANCH, TAG_BRANCH 88 88 ); 89 - 89 + 90 90 /* This query returns a single row if check-in :rid is the first 91 91 ** check-in of a new branch. 92 92 */ 93 - db_prepare(&isBr, 93 + db_prepare(&isBr, 94 94 "SELECT 1 FROM tagxref" 95 95 " WHERE rid=:rid AND tagid=%d AND tagtype=2" 96 96 " AND srcid>0", 97 97 TAG_BRANCH 98 98 ); 99 - 99 + 100 100 /* This statement inserts check-in :rid into the LEAVES table. 101 101 */ 102 102 db_prepare(&ins, "INSERT OR IGNORE INTO leaves VALUES(:rid)"); 103 - 103 + 104 104 while( bag_count(&pending) ){ 105 105 int rid = bag_first(&pending); 106 106 int cnt = 0; 107 107 bag_remove(&pending, rid); 108 108 db_bind_int(&q1, ":rid", rid); 109 109 while( db_step(&q1)==SQLITE_ROW ){ 110 110 int cid = db_column_int(&q1, 0); ................................................................................ 231 231 /* 232 232 ** COMMAND: descendants 233 233 ** 234 234 ** Usage: %fossil descendants ?BASELINE-ID? 235 235 ** 236 236 ** Find all leaf descendants of the baseline specified or if the argument 237 237 ** is omitted, of the baseline currently checked out. 238 +** 239 +** 240 +** SUMMARY: fossil descendants ?BASELINE-ID? 238 241 */ 239 242 void descendants_cmd(void){ 240 243 Stmt q; 241 244 int base; 242 245 243 246 db_must_be_within_tree(); 244 247 if( g.argc==2 ){ ................................................................................ 257 260 print_timeline(&q, 20); 258 261 db_finalize(&q); 259 262 } 260 263 261 264 /* 262 265 ** COMMAND: leaves 263 266 ** 264 -** Usage: %fossil leaves ?--all? ?--closed? 267 +** Usage: %fossil leaves ?--all? ?--closed? ?--recompute? 265 268 ** 266 269 ** Find leaves of all branches. By default show only open leaves. 267 270 ** The --all flag causes all leaves (closed and open) to be shown. 268 271 ** The --closed flag shows only closed leaves. 269 272 ** 270 273 ** The --recompute flag causes the content of the "leaf" table in the 271 274 ** repository database to be recomputed. 275 +** 276 +** 277 +** SUMMARY: fossil leaves ?OPTIONS? 278 +** Options: --all, --closed, --recompute 272 279 */ 273 280 void leaves_cmd(void){ 274 281 Stmt q; 275 282 Blob sql; 276 283 int showAll = find_option("all", 0, 0)!=0; 277 284 int showClosed = find_option("closed", 0, 0)!=0; 278 285 int recomputeFlag = find_option("recompute",0,0)!=0;
Changes to src/diff.c.
60 60 int nFrom; /* Number of lines in aFrom[] */ 61 61 DLine *aTo; /* File on right side of the diff */ 62 62 int nTo; /* Number of lines in aTo[] */ 63 63 }; 64 64 65 65 /* 66 66 ** Return an array of DLine objects containing a pointer to the 67 -** start of each line and a hash of that line. The lower 67 +** start of each line and a hash of that line. The lower 68 68 ** bits of the hash store the length of each line. 69 69 ** 70 70 ** Trailing whitespace is removed from each line. 2010-08-20: Not any 71 71 ** more. If trailing whitespace is ignored, the "patch" command gets 72 72 ** confused by the diff output. Ticket [a9f7b23c2e376af5b0e5b] 73 73 ** 74 74 ** Return 0 if the file is binary or contains a line that is ................................................................................ 169 169 return; 170 170 } 171 171 } 172 172 if( nCopy==0 && nDel==0 ){ 173 173 p->aEdit[p->nEdit-1] += nIns; 174 174 return; 175 175 } 176 - } 176 + } 177 177 if( p->nEdit+3>p->nEditAlloc ){ 178 178 expandEdit(p, p->nEdit*2 + 15); 179 179 if( p->aEdit==0 ) return; 180 180 } 181 181 p->aEdit[p->nEdit++] = nCopy; 182 182 p->aEdit[p->nEdit++] = nDel; 183 183 p->aEdit[p->nEdit++] = nIns; ................................................................................ 186 186 187 187 /* 188 188 ** Given a diff context in which the aEdit[] array has been filled 189 189 ** in, compute a context diff into pOut. 190 190 */ 191 191 static void contextDiff(DContext *p, Blob *pOut, int nContext){ 192 192 DLine *A; /* Left side of the diff */ 193 - DLine *B; /* Right side of the diff */ 193 + DLine *B; /* Right side of the diff */ 194 194 int a = 0; /* Index of next line in A[] */ 195 195 int b = 0; /* Index of next line in B[] */ 196 196 int *R; /* Array of COPY/DELETE/INSERT triples */ 197 197 int r; /* Index into R[] */ 198 198 int nr; /* Number of COPY/DELETE/INSERT triples to process */ 199 199 int mxr; /* Maximum value for r */ 200 200 int na, nb; /* Number of lines shown from A and B */ ................................................................................ 339 339 ** If there are two or more possible answers of the same length, the 340 340 ** returned sequence should be the one closest to the center of the 341 341 ** input range. 342 342 ** 343 343 ** Ideally, the common sequence should be the longest possible common 344 344 ** sequence. However, an exact computation of LCS is O(N*N) which is 345 345 ** way too slow for larger files. So this routine uses an O(N) 346 -** heuristic approximation based on hashing that usually works about 346 +** heuristic approximation based on hashing that usually works about 347 347 ** as well. But if the O(N) algorithm doesn't get a good solution 348 348 ** and N is not too large, we fall back to an exact solution by 349 349 ** calling optimalLCS(). 350 350 */ 351 351 static void longestCommonSequence( 352 352 DContext *p, /* Two files being compared */ 353 353 int iS1, int iE1, /* Range of lines in p->aFrom[] */ ................................................................................ 370 370 iEXb = iEXp = iS1; 371 371 iSYb = iSYp = iS2; 372 372 iEYb = iEYp = iS2; 373 373 mid = (iE1 + iS1)/2; 374 374 for(i=iS1; i<iE1; i++){ 375 375 int limit = 0; 376 376 j = p->aTo[p->aFrom[i].h % p->nTo].iHash; 377 - while( j>0 377 + while( j>0 378 378 && (j-1<iS2 || j>=iE2 || !same_dline(&p->aFrom[i], &p->aTo[j-1])) 379 379 ){ 380 380 if( limit++ > 10 ){ 381 381 j = 0; 382 382 break; 383 383 } 384 384 j = p->aTo[j-1].iNext; ................................................................................ 423 423 optimalLCS(p, iS1, iE1, iS2, iE2, piSX, piEX, piSY, piEY); 424 424 }else{ 425 425 *piSX = iSXb; 426 426 *piSY = iSYb; 427 427 *piEX = iEXb; 428 428 *piEY = iEYb; 429 429 } 430 - /* printf("LCS(%d..%d/%d..%d) = %d..%d/%d..%d\n", 430 + /* printf("LCS(%d..%d/%d..%d) = %d..%d/%d..%d\n", 431 431 iS1, iE1, iS2, iE2, *piSX, *piEX, *piSY, *piEY); */ 432 432 } 433 433 434 434 /* 435 435 ** Do a single step in the difference. Compute a sequence of 436 436 ** copy/delete/insert steps that will convert lines iS1 through iE1-1 of 437 437 ** the input into lines iS2 through iE2-1 of the output and write ................................................................................ 523 523 } 524 524 } 525 525 526 526 /* 527 527 ** Generate a report of the differences between files pA and pB. 528 528 ** If pOut is not NULL then a unified diff is appended there. It 529 529 ** is assumed that pOut has already been initialized. If pOut is 530 -** NULL, then a pointer to an array of integers is returned. 530 +** NULL, then a pointer to an array of integers is returned. 531 531 ** The integers come in triples. For each triple, 532 532 ** the elements are the number of lines copied, the number of 533 533 ** lines deleted, and the number of lines inserted. The vector 534 534 ** is terminated by a triple of all zeros. 535 535 ** 536 536 ** This diff utility does not work on binary files. If a binary 537 537 ** file is encountered, 0 is returned and pOut is written with ................................................................................ 541 541 Blob *pA_Blob, /* FROM file */ 542 542 Blob *pB_Blob, /* TO file */ 543 543 Blob *pOut, /* Write unified diff here if not NULL */ 544 544 int nContext, /* Amount of context to unified diff */ 545 545 int ignoreEolWs /* Ignore whitespace at the end of lines */ 546 546 ){ 547 547 DContext c; 548 - 548 + 549 549 /* Prepare the input files */ 550 550 memset(&c, 0, sizeof(c)); 551 551 c.aFrom = break_into_lines(blob_str(pA_Blob), blob_size(pA_Blob), 552 552 &c.nFrom, ignoreEolWs); 553 553 c.aTo = break_into_lines(blob_str(pB_Blob), blob_size(pB_Blob), 554 554 &c.nTo, ignoreEolWs); 555 555 if( c.aFrom==0 || c.aTo==0 ){ ................................................................................ 708 708 /* Clear out the diff results */ 709 709 free(p->c.aEdit); 710 710 p->c.aEdit = 0; 711 711 p->c.nEdit = 0; 712 712 p->c.nEditAlloc = 0; 713 713 714 714 /* Clear out the from file */ 715 - free(p->c.aFrom); 715 + free(p->c.aFrom); 716 716 blob_zero(pParent); 717 717 718 718 /* Return no errors */ 719 719 return 0; 720 720 } 721 721 722 722 ................................................................................ 779 779 if( !content_get(rid, &toAnnotate) ){ 780 780 fossil_panic("unable to retrieve content of artifact #%d", rid); 781 781 } 782 782 db_multi_exec("CREATE TEMP TABLE ok(rid INTEGER PRIMARY KEY)"); 783 783 compute_ancestors(mid, 1000000000); 784 784 annotation_start(p, &toAnnotate); 785 785 786 - db_prepare(&q, 786 + db_prepare(&q, 787 787 "SELECT mlink.fid," 788 788 " (SELECT uuid FROM blob WHERE rid=mlink.%s)," 789 789 " date(event.mtime), " 790 790 " coalesce(event.euser,event.user) " 791 791 " FROM mlink, event" 792 792 " WHERE mlink.fnid=%d" 793 793 " AND mlink.mid IN ok" ................................................................................ 801 801 while( db_step(&q)==SQLITE_ROW ){ 802 802 int pid = db_column_int(&q, 0); 803 803 const char *zUuid = db_column_text(&q, 1); 804 804 const char *zDate = db_column_text(&q, 2); 805 805 const char *zUser = db_column_text(&q, 3); 806 806 if( webLabel ){ 807 807 zLabel = mprintf( 808 - "<a href='%s/info/%s' target='infowindow'>%.10s</a> %s %9.9s", 808 + "<a href='%s/info/%s' target='infowindow'>%.10s</a> %s %9.9s", 809 809 g.zTop, zUuid, zUuid, zDate, zUser 810 810 ); 811 811 }else{ 812 812 zLabel = mprintf("%.10s %s %9.9s", zUuid, zDate, zUser); 813 813 } 814 814 p->nVers++; 815 815 p->azVers = fossil_realloc(p->azVers, p->nVers*sizeof(p->azVers[0]) ); ................................................................................ 877 877 ** Output the text of a file with markings to show when each line of 878 878 ** the file was last modified. 879 879 ** 880 880 ** Options: 881 881 ** --limit N Only look backwards in time by N versions 882 882 ** --log List all versions analyzed 883 883 ** --filevers Show file version numbers rather than check-in versions 884 +** 885 +** 886 +** SUMMARY: fossil annotate FILENAME ?options? 887 +** Options: --limit N, --log, --filevers 884 888 */ 885 889 void annotate_cmd(void){ 886 890 int fnid; /* Filename ID */ 887 891 int fid; /* File instance ID */ 888 892 int mid; /* Manifest where file was checked in */ 889 893 Blob treename; /* FILENAME translated to canonical form */ 890 894 char *zFilename; /* Cannonical filename */ ................................................................................ 924 928 if( showLog ){ 925 929 for(i=0; i<ann.nVers; i++){ 926 930 printf("version %3d: %s\n", i+1, ann.azVers[i]); 927 931 } 928 932 printf("---------------------------------------------------\n"); 929 933 } 930 934 for(i=0; i<ann.nOrig; i++){ 931 - fossil_print("%s: %.*s\n", 935 + fossil_print("%s: %.*s\n", 932 936 ann.aOrig[i].zSrc, ann.aOrig[i].n, ann.aOrig[i].z); 933 937 } 934 938 }
Changes to src/diffcmd.c.
410 410 ** COMMAND: diff 411 411 ** COMMAND: gdiff 412 412 ** 413 413 ** Usage: %fossil diff|gdiff ?options? ?FILE? 414 414 ** 415 415 ** Show the difference between the current version of FILE (as it 416 416 ** exists on disk) and that same file as it was checked out. Or 417 -** if the FILE argument is omitted, show the unsaved changed currently 417 +** if the FILE argument is omitted, show the unsaved changes currently 418 418 ** in the working check-out. 419 419 ** 420 420 ** If the "--from VERSION" or "-r VERSION" option is used it specifies 421 -** the source check-in for the diff operation. If not specified, the 421 +** the source check-in for the diff operation. If not specified, the 422 422 ** source check-in is the base check-in for the current check-out. 423 423 ** 424 424 ** If the "--to VERSION" option appears, it specifies the check-in from 425 425 ** which the second version of the file or files is taken. If there is 426 426 ** no "--to" option then the (possibly edited) files in the current check-out 427 427 ** are used. 428 428 ** ................................................................................ 429 429 ** The "-i" command-line option forces the use of the internal diff logic 430 430 ** rather than any external diff program that might be configured using 431 431 ** the "setting" command. If no external diff program is configured, then 432 432 ** the "-i" option is a no-op. The "-i" option converts "gdiff" into "diff". 433 433 ** 434 434 ** The "-N" or "--new-file" option causes the complete text of added or 435 435 ** deleted files to be displayed. 436 +** 437 +** 438 +** SUMMARY: fossil diff ?options? ?FILE? 439 +** fossil gdiff ?options? ?FILE? 440 +** Options: -i, --from VERSION, --to VERSION, -N|--new-file 441 +** 436 442 */ 437 443 void diff_cmd(void){ 438 444 int isGDiff; /* True for gdiff. False for normal diff */ 439 445 int isInternDiff; /* True for internal diff */ 440 446 int hasNFlag; /* True if -N or --new-file flag is used */ 441 447 const char *zFrom; /* Source version number */ 442 448 const char *zTo; /* Target version number */
Changes to src/export.c.
84 84 /* 85 85 ** COMMAND: export 86 86 ** 87 87 ** Usage: %fossil export --git ?REPOSITORY? 88 88 ** 89 89 ** Write an export of all check-ins to standard output. The export is 90 90 ** written in the git-fast-export file format assuming the --git option is 91 -** provided. The git-fast-export format is currently the only VCS 91 +** provided. The git-fast-export format is currently the only VCS 92 92 ** interchange format supported, though other formats may be added in 93 93 ** the future. 94 94 ** 95 -** Run this command within a checkout. Or use the -R or --repository 96 -** option to specify a Fossil repository to be exported. 95 +** Run this command within a checkout or specify the name of the 96 +** Fossil repository to be exported. 97 97 ** 98 -** Only check-ins are exported using --git. Git does not support tickets 98 +** Only check-ins are exported using --git. Git does not support tickets 99 99 ** or wiki or events or attachments, so none of those are exported. 100 +** 101 +** 102 +** SUMMARY: fossil export --git ?REPOSITORY? 100 103 */ 101 104 void export_cmd(void){ 102 105 Stmt q; 103 106 int i; 104 107 int firstCkin; /* Integer offset to check-in marks */ 105 108 Bag blobs, vers; 106 109 bag_init(&blobs); ................................................................................ 108 111 109 112 find_option("git", 0, 0); /* Ignore the --git option for now */ 110 113 db_find_and_open_repository(0, 2); 111 114 verify_all_options(); 112 115 if( g.argc!=2 && g.argc!=3 ){ usage("--git ?REPOSITORY?"); } 113 116 114 117 /* Step 1: Generate "blob" records for every artifact that is part 115 - ** of a check-in 118 + ** of a check-in 116 119 */ 117 120 fossil_binary_mode(stdout); 118 121 db_prepare(&q, "SELECT DISTINCT fid FROM mlink WHERE fid>0"); 119 122 while( db_step(&q)==SQLITE_ROW ){ 120 123 int rid = db_column_int(&q, 0); 121 124 Blob content; 122 125 content_get(rid, &content);
Added win/Makefile.mingw_static.
1 +#!/usr/bin/make 2 +# 3 +# This is a makefile for us on windows using mingw. 4 +# 5 +#### The toplevel directory of the source tree. Fossil can be built 6 +# in a directory that is separate from the source tree. Just change 7 +# the following to point from the build directory to the src/ folder. 8 +# 9 +SRCDIR = src 10 + 11 +#### The directory into which object code files should be written. 12 +# 13 +# 14 +OBJDIR = wbld 15 + 16 +#### C Compiler and options for use in building executables that 17 +# will run on the platform that is doing the build. This is used 18 +# to compile code-generator programs as part of the build process. 19 +# See TCC below for the C compiler for building the finished binary. 20 +# 21 +BCC = gcc 22 + 23 +#### Enable HTTPS support via OpenSSL (links to libssl and libcrypto) 24 +# 25 +# FOSSIL_ENABLE_SSL=1 26 + 27 +#### The directory in which the zlib compression library is installed. 28 +# 29 +# 30 +ZLIBDIR = /programs/gnuwin32 31 + 32 +#### C Compile and options for use in building executables that 33 +# will run on the target platform. This is usually the same 34 +# as BCC, unless you are cross-compiling. This C compiler builds 35 +# the finished binary for fossil. The BCC compiler above is used 36 +# for building intermediate code-generator tools. 37 +# 38 +TCC = gcc -Os -Wall -DFOSSIL_I18N=0 -Wl,-Bstatic -L$(ZLIBDIR)/lib -I$(ZLIBDIR)/include 39 + 40 +# With HTTPS support 41 +ifdef FOSSIL_ENABLE_SSL 42 +TCC += -static -DFOSSIL_ENABLE_SSL=1 43 +endif 44 + 45 +#### Extra arguments for linking the finished binary. Fossil needs 46 +# to link against the Z-Lib compression library. There are no 47 +# other dependencies. We sometimes add the -static option here 48 +# so that we can build a static executable that will run in a 49 +# chroot jail. 50 +# 51 +#LIB = -lz -lws2_32 52 +# OpenSSL: 53 +ifdef FOSSIL_ENABLE_SSL 54 +LIB += -lssl -lcrypto -lgdi32 55 +endif 56 +LIB += -lmingwex -lz -lws2_32 57 + 58 +#### Tcl shell for use in running the fossil testsuite. This is only 59 +# used for testing. If you do not run 60 +# 61 +TCLSH = tclsh 62 + 63 +#### Nullsoft installer makensis location 64 +# 65 +MAKENSIS = "c:\Program Files\NSIS\makensis.exe" 66 + 67 +#### Include a configuration file that can override any one of these settings. 68 +# 69 +-include config.w32 70 + 71 +# STOP HERE 72 +# You should not need to change anything below this line 73 +#-------------------------------------------------------- 74 +XTCC = $(TCC) $(CFLAGS) -I. -I$(SRCDIR) 75 + 76 +SRC = \ 77 + $(SRCDIR)/add.c \ 78 + $(SRCDIR)/allrepo.c \ 79 + $(SRCDIR)/attach.c \ 80 + $(SRCDIR)/bag.c \ 81 + $(SRCDIR)/bisect.c \ 82 + $(SRCDIR)/blob.c \ 83 + $(SRCDIR)/branch.c \ 84 + $(SRCDIR)/browse.c \ 85 + $(SRCDIR)/captcha.c \ 86 + $(SRCDIR)/cgi.c \ 87 + $(SRCDIR)/checkin.c \ 88 + $(SRCDIR)/checkout.c \ 89 + $(SRCDIR)/clearsign.c \ 90 + $(SRCDIR)/clone.c \ 91 + $(SRCDIR)/comformat.c \ 92 + $(SRCDIR)/configure.c \ 93 + $(SRCDIR)/content.c \ 94 + $(SRCDIR)/db.c \ 95 + $(SRCDIR)/delta.c \ 96 + $(SRCDIR)/deltacmd.c \ 97 + $(SRCDIR)/descendants.c \ 98 + $(SRCDIR)/diff.c \ 99 + $(SRCDIR)/diffcmd.c \ 100 + $(SRCDIR)/doc.c \ 101 + $(SRCDIR)/encode.c \ 102 + $(SRCDIR)/event.c \ 103 + $(SRCDIR)/export.c \ 104 + $(SRCDIR)/file.c \ 105 + $(SRCDIR)/finfo.c \ 106 + $(SRCDIR)/graph.c \ 107 + $(SRCDIR)/gzip.c \ 108 + $(SRCDIR)/http.c \ 109 + $(SRCDIR)/http_socket.c \ 110 + $(SRCDIR)/http_ssl.c \ 111 + $(SRCDIR)/http_transport.c \ 112 + $(SRCDIR)/import.c \ 113 + $(SRCDIR)/info.c \ 114 + $(SRCDIR)/leaf.c \ 115 + $(SRCDIR)/login.c \ 116 + $(SRCDIR)/main.c \ 117 + $(SRCDIR)/manifest.c \ 118 + $(SRCDIR)/md5.c \ 119 + $(SRCDIR)/merge.c \ 120 + $(SRCDIR)/merge3.c \ 121 + $(SRCDIR)/name.c \ 122 + $(SRCDIR)/path.c \ 123 + $(SRCDIR)/pivot.c \ 124 + $(SRCDIR)/popen.c \ 125 + $(SRCDIR)/pqueue.c \ 126 + $(SRCDIR)/printf.c \ 127 + $(SRCDIR)/rebuild.c \ 128 + $(SRCDIR)/report.c \ 129 + $(SRCDIR)/rss.c \ 130 + $(SRCDIR)/schema.c \ 131 + $(SRCDIR)/search.c \ 132 + $(SRCDIR)/setup.c \ 133 + $(SRCDIR)/sha1.c \ 134 + $(SRCDIR)/shun.c \ 135 + $(SRCDIR)/skins.c \ 136 + $(SRCDIR)/sqlcmd.c \ 137 + $(SRCDIR)/stash.c \ 138 + $(SRCDIR)/stat.c \ 139 + $(SRCDIR)/style.c \ 140 + $(SRCDIR)/sync.c \ 141 + $(SRCDIR)/tag.c \ 142 + $(SRCDIR)/tar.c \ 143 + $(SRCDIR)/th_main.c \ 144 + $(SRCDIR)/timeline.c \ 145 + $(SRCDIR)/tkt.c \ 146 + $(SRCDIR)/tktsetup.c \ 147 + $(SRCDIR)/undo.c \ 148 + $(SRCDIR)/update.c \ 149 + $(SRCDIR)/url.c \ 150 + $(SRCDIR)/user.c \ 151 + $(SRCDIR)/verify.c \ 152 + $(SRCDIR)/vfile.c \ 153 + $(SRCDIR)/wiki.c \ 154 + $(SRCDIR)/wikiformat.c \ 155 + $(SRCDIR)/winhttp.c \ 156 + $(SRCDIR)/xfer.c \ 157 + $(SRCDIR)/zip.c 158 + 159 +TRANS_SRC = \ 160 + $(OBJDIR)/add_.c \ 161 + $(OBJDIR)/allrepo_.c \ 162 + $(OBJDIR)/attach_.c \ 163 + $(OBJDIR)/bag_.c \ 164 + $(OBJDIR)/bisect_.c \ 165 + $(OBJDIR)/blob_.c \ 166 + $(OBJDIR)/branch_.c \ 167 + $(OBJDIR)/browse_.c \ 168 + $(OBJDIR)/captcha_.c \ 169 + $(OBJDIR)/cgi_.c \ 170 + $(OBJDIR)/checkin_.c \ 171 + $(OBJDIR)/checkout_.c \ 172 + $(OBJDIR)/clearsign_.c \ 173 + $(OBJDIR)/clone_.c \ 174 + $(OBJDIR)/comformat_.c \ 175 + $(OBJDIR)/configure_.c \ 176 + $(OBJDIR)/content_.c \ 177 + $(OBJDIR)/db_.c \ 178 + $(OBJDIR)/delta_.c \ 179 + $(OBJDIR)/deltacmd_.c \ 180 + $(OBJDIR)/descendants_.c \ 181 + $(OBJDIR)/diff_.c \ 182 + $(OBJDIR)/diffcmd_.c \ 183 + $(OBJDIR)/doc_.c \ 184 + $(OBJDIR)/encode_.c \ 185 + $(OBJDIR)/event_.c \ 186 + $(OBJDIR)/export_.c \ 187 + $(OBJDIR)/file_.c \ 188 + $(OBJDIR)/finfo_.c \ 189 + $(OBJDIR)/graph_.c \ 190 + $(OBJDIR)/gzip_.c \ 191 + $(OBJDIR)/http_.c \ 192 + $(OBJDIR)/http_socket_.c \ 193 + $(OBJDIR)/http_ssl_.c \ 194 + $(OBJDIR)/http_transport_.c \ 195 + $(OBJDIR)/import_.c \ 196 + $(OBJDIR)/info_.c \ 197 + $(OBJDIR)/leaf_.c \ 198 + $(OBJDIR)/login_.c \ 199 + $(OBJDIR)/main_.c \ 200 + $(OBJDIR)/manifest_.c \ 201 + $(OBJDIR)/md5_.c \ 202 + $(OBJDIR)/merge_.c \ 203 + $(OBJDIR)/merge3_.c \ 204 + $(OBJDIR)/name_.c \ 205 + $(OBJDIR)/path_.c \ 206 + $(OBJDIR)/pivot_.c \ 207 + $(OBJDIR)/popen_.c \ 208 + $(OBJDIR)/pqueue_.c \ 209 + $(OBJDIR)/printf_.c \ 210 + $(OBJDIR)/rebuild_.c \ 211 + $(OBJDIR)/report_.c \ 212 + $(OBJDIR)/rss_.c \ 213 + $(OBJDIR)/schema_.c \ 214 + $(OBJDIR)/search_.c \ 215 + $(OBJDIR)/setup_.c \ 216 + $(OBJDIR)/sha1_.c \ 217 + $(OBJDIR)/shun_.c \ 218 + $(OBJDIR)/skins_.c \ 219 + $(OBJDIR)/sqlcmd_.c \ 220 + $(OBJDIR)/stash_.c \ 221 + $(OBJDIR)/stat_.c \ 222 + $(OBJDIR)/style_.c \ 223 + $(OBJDIR)/sync_.c \ 224 + $(OBJDIR)/tag_.c \ 225 + $(OBJDIR)/tar_.c \ 226 + $(OBJDIR)/th_main_.c \ 227 + $(OBJDIR)/timeline_.c \ 228 + $(OBJDIR)/tkt_.c \ 229 + $(OBJDIR)/tktsetup_.c \ 230 + $(OBJDIR)/undo_.c \ 231 + $(OBJDIR)/update_.c \ 232 + $(OBJDIR)/url_.c \ 233 + $(OBJDIR)/user_.c \ 234 + $(OBJDIR)/verify_.c \ 235 + $(OBJDIR)/vfile_.c \ 236 + $(OBJDIR)/wiki_.c \ 237 + $(OBJDIR)/wikiformat_.c \ 238 + $(OBJDIR)/winhttp_.c \ 239 + $(OBJDIR)/xfer_.c \ 240 + $(OBJDIR)/zip_.c 241 + 242 +OBJ = \ 243 + $(OBJDIR)/add.o \ 244 + $(OBJDIR)/allrepo.o \ 245 + $(OBJDIR)/attach.o \ 246 + $(OBJDIR)/bag.o \ 247 + $(OBJDIR)/bisect.o \ 248 + $(OBJDIR)/blob.o \ 249 + $(OBJDIR)/branch.o \ 250 + $(OBJDIR)/browse.o \ 251 + $(OBJDIR)/captcha.o \ 252 + $(OBJDIR)/cgi.o \ 253 + $(OBJDIR)/checkin.o \ 254 + $(OBJDIR)/checkout.o \ 255 + $(OBJDIR)/clearsign.o \ 256 + $(OBJDIR)/clone.o \ 257 + $(OBJDIR)/comformat.o \ 258 + $(OBJDIR)/configure.o \ 259 + $(OBJDIR)/content.o \ 260 + $(OBJDIR)/db.o \ 261 + $(OBJDIR)/delta.o \ 262 + $(OBJDIR)/deltacmd.o \ 263 + $(OBJDIR)/descendants.o \ 264 + $(OBJDIR)/diff.o \ 265 + $(OBJDIR)/diffcmd.o \ 266 + $(OBJDIR)/doc.o \ 267 + $(OBJDIR)/encode.o \ 268 + $(OBJDIR)/event.o \ 269 + $(OBJDIR)/export.o \ 270 + $(OBJDIR)/file.o \ 271 + $(OBJDIR)/finfo.o \ 272 + $(OBJDIR)/graph.o \ 273 + $(OBJDIR)/gzip.o \ 274 + $(OBJDIR)/http.o \ 275 + $(OBJDIR)/http_socket.o \ 276 + $(OBJDIR)/http_ssl.o \ 277 + $(OBJDIR)/http_transport.o \ 278 + $(OBJDIR)/import.o \ 279 + $(OBJDIR)/info.o \ 280 + $(OBJDIR)/leaf.o \ 281 + $(OBJDIR)/login.o \ 282 + $(OBJDIR)/main.o \ 283 + $(OBJDIR)/manifest.o \ 284 + $(OBJDIR)/md5.o \ 285 + $(OBJDIR)/merge.o \ 286 + $(OBJDIR)/merge3.o \ 287 + $(OBJDIR)/name.o \ 288 + $(OBJDIR)/path.o \ 289 + $(OBJDIR)/pivot.o \ 290 + $(OBJDIR)/popen.o \ 291 + $(OBJDIR)/pqueue.o \ 292 + $(OBJDIR)/printf.o \ 293 + $(OBJDIR)/rebuild.o \ 294 + $(OBJDIR)/report.o \ 295 + $(OBJDIR)/rss.o \ 296 + $(OBJDIR)/schema.o \ 297 + $(OBJDIR)/search.o \ 298 + $(OBJDIR)/setup.o \ 299 + $(OBJDIR)/sha1.o \ 300 + $(OBJDIR)/shun.o \ 301 + $(OBJDIR)/skins.o \ 302 + $(OBJDIR)/sqlcmd.o \ 303 + $(OBJDIR)/stash.o \ 304 + $(OBJDIR)/stat.o \ 305 + $(OBJDIR)/style.o \ 306 + $(OBJDIR)/sync.o \ 307 + $(OBJDIR)/tag.o \ 308 + $(OBJDIR)/tar.o \ 309 + $(OBJDIR)/th_main.o \ 310 + $(OBJDIR)/timeline.o \ 311 + $(OBJDIR)/tkt.o \ 312 + $(OBJDIR)/tktsetup.o \ 313 + $(OBJDIR)/undo.o \ 314 + $(OBJDIR)/update.o \ 315 + $(OBJDIR)/url.o \ 316 + $(OBJDIR)/user.o \ 317 + $(OBJDIR)/verify.o \ 318 + $(OBJDIR)/vfile.o \ 319 + $(OBJDIR)/wiki.o \ 320 + $(OBJDIR)/wikiformat.o \ 321 + $(OBJDIR)/winhttp.o \ 322 + $(OBJDIR)/xfer.o \ 323 + $(OBJDIR)/zip.o 324 + 325 +APPNAME = fossil.exe 326 +TRANSLATE = $(subst /,\\,$(OBJDIR)/translate.exe) 327 +MAKEHEADERS = $(subst /,\\,$(OBJDIR)/makeheaders.exe) 328 +MKINDEX = $(subst /,\\,$(OBJDIR)/mkindex.exe) 329 +VERSION = $(subst /,\\,$(OBJDIR)/version.exe) 330 + 331 + 332 +all: $(OBJDIR) $(APPNAME) 333 + 334 +$(OBJDIR)/icon.o: $(SRCDIR)/../win/icon.rc 335 + cp $(SRCDIR)/../win/icon.rc $(OBJDIR) 336 + windres $(OBJDIR)/icon.rc -o $(OBJDIR)/icon.o 337 + 338 +install: $(APPNAME) 339 + mv $(APPNAME) $(INSTALLDIR) 340 + 341 +$(OBJDIR): 342 + mkdir $(OBJDIR) 343 + 344 +$(OBJDIR)/translate: $(SRCDIR)/translate.c 345 + $(BCC) -o $(OBJDIR)/translate $(SRCDIR)/translate.c 346 + 347 +$(OBJDIR)/makeheaders: $(SRCDIR)/makeheaders.c 348 + $(BCC) -o $(OBJDIR)/makeheaders $(SRCDIR)/makeheaders.c 349 + 350 +$(OBJDIR)/mkindex: $(SRCDIR)/mkindex.c 351 + $(BCC) -o $(OBJDIR)/mkindex $(SRCDIR)/mkindex.c 352 + 353 +$(VERSION): $(SRCDIR)/../win/version.c 354 + $(BCC) -o $(OBJDIR)/version $(SRCDIR)/../win/version.c 355 + 356 +# WARNING. DANGER. Running the testsuite modifies the repository the 357 +# build is done from, i.e. the checkout belongs to. Do not sync/push 358 +# the repository after running the tests. 359 +test: $(APPNAME) 360 + $(TCLSH) test/tester.tcl $(APPNAME) 361 + 362 +$(OBJDIR)/VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(VERSION) 363 + $(VERSION) $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest >$(OBJDIR)/VERSION.h 364 + 365 +EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o 366 + 367 +$(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) $(OBJDIR)/icon.o 368 + $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) $(OBJDIR)/icon.o 369 + 370 +# This rule prevents make from using its default rules to try build 371 +# an executable named "manifest" out of the file named "manifest.c" 372 +# 373 +$(SRCDIR)/../manifest: 374 + # noop 375 + 376 +# Requires msys to be installed in addition to the mingw, for the "rm" 377 +# command. "del" will not work here because it is not a separate command 378 +# but a MSDOS-shell builtin. 379 +# 380 +clean: 381 + rm -rf $(OBJDIR) $(APPNAME) 382 + 383 +setup: $(OBJDIR) $(APPNAME) 384 + $(MAKENSIS) ./fossil.nsi 385 + 386 + 387 +$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex 388 + $(MKINDEX) $(TRANS_SRC) >$@ 389 +$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h 390 + $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h 391 + echo Done >$(OBJDIR)/headers 392 + 393 +$(OBJDIR)/headers: Makefile 394 +Makefile: 395 +$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate 396 + $(TRANSLATE) $(SRCDIR)/add.c >$(OBJDIR)/add_.c 397 + 398 +$(OBJDIR)/add.o: $(OBJDIR)/add_.c $(OBJDIR)/add.h $(SRCDIR)/config.h 399 + $(XTCC) -o $(OBJDIR)/add.o -c $(OBJDIR)/add_.c 400 + 401 +add.h: $(OBJDIR)/headers 402 +$(OBJDIR)/allrepo_.c: $(SRCDIR)/allrepo.c $(OBJDIR)/translate 403 + $(TRANSLATE) $(SRCDIR)/allrepo.c >$(OBJDIR)/allrepo_.c 404 + 405 +$(OBJDIR)/allrepo.o: $(OBJDIR)/allrepo_.c $(OBJDIR)/allrepo.h $(SRCDIR)/config.h 406 + $(XTCC) -o $(OBJDIR)/allrepo.o -c $(OBJDIR)/allrepo_.c 407 + 408 +allrepo.h: $(OBJDIR)/headers 409 +$(OBJDIR)/attach_.c: $(SRCDIR)/attach.c $(OBJDIR)/translate 410 + $(TRANSLATE) $(SRCDIR)/attach.c >$(OBJDIR)/attach_.c 411 + 412 +$(OBJDIR)/attach.o: $(OBJDIR)/attach_.c $(OBJDIR)/attach.h $(SRCDIR)/config.h 413 + $(XTCC) -o $(OBJDIR)/attach.o -c $(OBJDIR)/attach_.c 414 + 415 +attach.h: $(OBJDIR)/headers 416 +$(OBJDIR)/bag_.c: $(SRCDIR)/bag.c $(OBJDIR)/translate 417 + $(TRANSLATE) $(SRCDIR)/bag.c >$(OBJDIR)/bag_.c 418 + 419 +$(OBJDIR)/bag.o: $(OBJDIR)/bag_.c $(OBJDIR)/bag.h $(SRCDIR)/config.h 420 + $(XTCC) -o $(OBJDIR)/bag.o -c $(OBJDIR)/bag_.c 421 + 422 +bag.h: $(OBJDIR)/headers 423 +$(OBJDIR)/bisect_.c: $(SRCDIR)/bisect.c $(OBJDIR)/translate 424 + $(TRANSLATE) $(SRCDIR)/bisect.c >$(OBJDIR)/bisect_.c 425 + 426 +$(OBJDIR)/bisect.o: $(OBJDIR)/bisect_.c $(OBJDIR)/bisect.h $(SRCDIR)/config.h 427 + $(XTCC) -o $(OBJDIR)/bisect.o -c $(OBJDIR)/bisect_.c 428 + 429 +bisect.h: $(OBJDIR)/headers 430 +$(OBJDIR)/blob_.c: $(SRCDIR)/blob.c $(OBJDIR)/translate 431 + $(TRANSLATE) $(SRCDIR)/blob.c >$(OBJDIR)/blob_.c 432 + 433 +$(OBJDIR)/blob.o: $(OBJDIR)/blob_.c $(OBJDIR)/blob.h $(SRCDIR)/config.h 434 + $(XTCC) -o $(OBJDIR)/blob.o -c $(OBJDIR)/blob_.c 435 + 436 +blob.h: $(OBJDIR)/headers 437 +$(OBJDIR)/branch_.c: $(SRCDIR)/branch.c $(OBJDIR)/translate 438 + $(TRANSLATE) $(SRCDIR)/branch.c >$(OBJDIR)/branch_.c 439 + 440 +$(OBJDIR)/branch.o: $(OBJDIR)/branch_.c $(OBJDIR)/branch.h $(SRCDIR)/config.h 441 + $(XTCC) -o $(OBJDIR)/branch.o -c $(OBJDIR)/branch_.c 442 + 443 +branch.h: $(OBJDIR)/headers 444 +$(OBJDIR)/browse_.c: $(SRCDIR)/browse.c $(OBJDIR)/translate 445 + $(TRANSLATE) $(SRCDIR)/browse.c >$(OBJDIR)/browse_.c 446 + 447 +$(OBJDIR)/browse.o: $(OBJDIR)/browse_.c $(OBJDIR)/browse.h $(SRCDIR)/config.h 448 + $(XTCC) -o $(OBJDIR)/browse.o -c $(OBJDIR)/browse_.c 449 + 450 +browse.h: $(OBJDIR)/headers 451 +$(OBJDIR)/captcha_.c: $(SRCDIR)/captcha.c $(OBJDIR)/translate 452 + $(TRANSLATE) $(SRCDIR)/captcha.c >$(OBJDIR)/captcha_.c 453 + 454 +$(OBJDIR)/captcha.o: $(OBJDIR)/captcha_.c $(OBJDIR)/captcha.h $(SRCDIR)/config.h 455 + $(XTCC) -o $(OBJDIR)/captcha.o -c $(OBJDIR)/captcha_.c 456 + 457 +captcha.h: $(OBJDIR)/headers 458 +$(OBJDIR)/cgi_.c: $(SRCDIR)/cgi.c $(OBJDIR)/translate 459 + $(TRANSLATE) $(SRCDIR)/cgi.c >$(OBJDIR)/cgi_.c 460 + 461 +$(OBJDIR)/cgi.o: $(OBJDIR)/cgi_.c $(OBJDIR)/cgi.h $(SRCDIR)/config.h 462 + $(XTCC) -o $(OBJDIR)/cgi.o -c $(OBJDIR)/cgi_.c 463 + 464 +cgi.h: $(OBJDIR)/headers 465 +$(OBJDIR)/checkin_.c: $(SRCDIR)/checkin.c $(OBJDIR)/translate 466 + $(TRANSLATE) $(SRCDIR)/checkin.c >$(OBJDIR)/checkin_.c 467 + 468 +$(OBJDIR)/checkin.o: $(OBJDIR)/checkin_.c $(OBJDIR)/checkin.h $(SRCDIR)/config.h 469 + $(XTCC) -o $(OBJDIR)/checkin.o -c $(OBJDIR)/checkin_.c 470 + 471 +checkin.h: $(OBJDIR)/headers 472 +$(OBJDIR)/checkout_.c: $(SRCDIR)/checkout.c $(OBJDIR)/translate 473 + $(TRANSLATE) $(SRCDIR)/checkout.c >$(OBJDIR)/checkout_.c 474 + 475 +$(OBJDIR)/checkout.o: $(OBJDIR)/checkout_.c $(OBJDIR)/checkout.h $(SRCDIR)/config.h 476 + $(XTCC) -o $(OBJDIR)/checkout.o -c $(OBJDIR)/checkout_.c 477 + 478 +checkout.h: $(OBJDIR)/headers 479 +$(OBJDIR)/clearsign_.c: $(SRCDIR)/clearsign.c $(OBJDIR)/translate 480 + $(TRANSLATE) $(SRCDIR)/clearsign.c >$(OBJDIR)/clearsign_.c 481 + 482 +$(OBJDIR)/clearsign.o: $(OBJDIR)/clearsign_.c $(OBJDIR)/clearsign.h $(SRCDIR)/config.h 483 + $(XTCC) -o $(OBJDIR)/clearsign.o -c $(OBJDIR)/clearsign_.c 484 + 485 +clearsign.h: $(OBJDIR)/headers 486 +$(OBJDIR)/clone_.c: $(SRCDIR)/clone.c $(OBJDIR)/translate 487 + $(TRANSLATE) $(SRCDIR)/clone.c >$(OBJDIR)/clone_.c 488 + 489 +$(OBJDIR)/clone.o: $(OBJDIR)/clone_.c $(OBJDIR)/clone.h $(SRCDIR)/config.h 490 + $(XTCC) -o $(OBJDIR)/clone.o -c $(OBJDIR)/clone_.c 491 + 492 +clone.h: $(OBJDIR)/headers 493 +$(OBJDIR)/comformat_.c: $(SRCDIR)/comformat.c $(OBJDIR)/translate 494 + $(TRANSLATE) $(SRCDIR)/comformat.c >$(OBJDIR)/comformat_.c 495 + 496 +$(OBJDIR)/comformat.o: $(OBJDIR)/comformat_.c $(OBJDIR)/comformat.h $(SRCDIR)/config.h 497 + $(XTCC) -o $(OBJDIR)/comformat.o -c $(OBJDIR)/comformat_.c 498 + 499 +comformat.h: $(OBJDIR)/headers 500 +$(OBJDIR)/configure_.c: $(SRCDIR)/configure.c $(OBJDIR)/translate 501 + $(TRANSLATE) $(SRCDIR)/configure.c >$(OBJDIR)/configure_.c 502 + 503 +$(OBJDIR)/configure.o: $(OBJDIR)/configure_.c $(OBJDIR)/configure.h $(SRCDIR)/config.h 504 + $(XTCC) -o $(OBJDIR)/configure.o -c $(OBJDIR)/configure_.c 505 + 506 +configure.h: $(OBJDIR)/headers 507 +$(OBJDIR)/content_.c: $(SRCDIR)/content.c $(OBJDIR)/translate 508 + $(TRANSLATE) $(SRCDIR)/content.c >$(OBJDIR)/content_.c 509 + 510 +$(OBJDIR)/content.o: $(OBJDIR)/content_.c $(OBJDIR)/content.h $(SRCDIR)/config.h 511 + $(XTCC) -o $(OBJDIR)/content.o -c $(OBJDIR)/content_.c 512 + 513 +content.h: $(OBJDIR)/headers 514 +$(OBJDIR)/db_.c: $(SRCDIR)/db.c $(OBJDIR)/translate 515 + $(TRANSLATE) $(SRCDIR)/db.c >$(OBJDIR)/db_.c 516 + 517 +$(OBJDIR)/db.o: $(OBJDIR)/db_.c $(OBJDIR)/db.h $(SRCDIR)/config.h 518 + $(XTCC) -o $(OBJDIR)/db.o -c $(OBJDIR)/db_.c 519 + 520 +db.h: $(OBJDIR)/headers 521 +$(OBJDIR)/delta_.c: $(SRCDIR)/delta.c $(OBJDIR)/translate 522 + $(TRANSLATE) $(SRCDIR)/delta.c >$(OBJDIR)/delta_.c 523 + 524 +$(OBJDIR)/delta.o: $(OBJDIR)/delta_.c $(OBJDIR)/delta.h $(SRCDIR)/config.h 525 + $(XTCC) -o $(OBJDIR)/delta.o -c $(OBJDIR)/delta_.c 526 + 527 +delta.h: $(OBJDIR)/headers 528 +$(OBJDIR)/deltacmd_.c: $(SRCDIR)/deltacmd.c $(OBJDIR)/translate 529 + $(TRANSLATE) $(SRCDIR)/deltacmd.c >$(OBJDIR)/deltacmd_.c 530 + 531 +$(OBJDIR)/deltacmd.o: $(OBJDIR)/deltacmd_.c $(OBJDIR)/deltacmd.h $(SRCDIR)/config.h 532 + $(XTCC) -o $(OBJDIR)/deltacmd.o -c $(OBJDIR)/deltacmd_.c 533 + 534 +deltacmd.h: $(OBJDIR)/headers 535 +$(OBJDIR)/descendants_.c: $(SRCDIR)/descendants.c $(OBJDIR)/translate 536 + $(TRANSLATE) $(SRCDIR)/descendants.c >$(OBJDIR)/descendants_.c 537 + 538 +$(OBJDIR)/descendants.o: $(OBJDIR)/descendants_.c $(OBJDIR)/descendants.h $(SRCDIR)/config.h 539 + $(XTCC) -o $(OBJDIR)/descendants.o -c $(OBJDIR)/descendants_.c 540 + 541 +descendants.h: $(OBJDIR)/headers 542 +$(OBJDIR)/diff_.c: $(SRCDIR)/diff.c $(OBJDIR)/translate 543 + $(TRANSLATE) $(SRCDIR)/diff.c >$(OBJDIR)/diff_.c 544 + 545 +$(OBJDIR)/diff.o: $(OBJDIR)/diff_.c $(OBJDIR)/diff.h $(SRCDIR)/config.h 546 + $(XTCC) -o $(OBJDIR)/diff.o -c $(OBJDIR)/diff_.c 547 + 548 +diff.h: $(OBJDIR)/headers 549 +$(OBJDIR)/diffcmd_.c: $(SRCDIR)/diffcmd.c $(OBJDIR)/translate 550 + $(TRANSLATE) $(SRCDIR)/diffcmd.c >$(OBJDIR)/diffcmd_.c 551 + 552 +$(OBJDIR)/diffcmd.o: $(OBJDIR)/diffcmd_.c $(OBJDIR)/diffcmd.h $(SRCDIR)/config.h 553 + $(XTCC) -o $(OBJDIR)/diffcmd.o -c $(OBJDIR)/diffcmd_.c 554 + 555 +diffcmd.h: $(OBJDIR)/headers 556 +$(OBJDIR)/doc_.c: $(SRCDIR)/doc.c $(OBJDIR)/translate 557 + $(TRANSLATE) $(SRCDIR)/doc.c >$(OBJDIR)/doc_.c 558 + 559 +$(OBJDIR)/doc.o: $(OBJDIR)/doc_.c $(OBJDIR)/doc.h $(SRCDIR)/config.h 560 + $(XTCC) -o $(OBJDIR)/doc.o -c $(OBJDIR)/doc_.c 561 + 562 +doc.h: $(OBJDIR)/headers 563 +$(OBJDIR)/encode_.c: $(SRCDIR)/encode.c $(OBJDIR)/translate 564 + $(TRANSLATE) $(SRCDIR)/encode.c >$(OBJDIR)/encode_.c 565 + 566 +$(OBJDIR)/encode.o: $(OBJDIR)/encode_.c $(OBJDIR)/encode.h $(SRCDIR)/config.h 567 + $(XTCC) -o $(OBJDIR)/encode.o -c $(OBJDIR)/encode_.c 568 + 569 +encode.h: $(OBJDIR)/headers 570 +$(OBJDIR)/event_.c: $(SRCDIR)/event.c $(OBJDIR)/translate 571 + $(TRANSLATE) $(SRCDIR)/event.c >$(OBJDIR)/event_.c 572 + 573 +$(OBJDIR)/event.o: $(OBJDIR)/event_.c $(OBJDIR)/event.h $(SRCDIR)/config.h 574 + $(XTCC) -o $(OBJDIR)/event.o -c $(OBJDIR)/event_.c 575 + 576 +event.h: $(OBJDIR)/headers 577 +$(OBJDIR)/export_.c: $(SRCDIR)/export.c $(OBJDIR)/translate 578 + $(TRANSLATE) $(SRCDIR)/export.c >$(OBJDIR)/export_.c 579 + 580 +$(OBJDIR)/export.o: $(OBJDIR)/export_.c $(OBJDIR)/export.h $(SRCDIR)/config.h 581 + $(XTCC) -o $(OBJDIR)/export.o -c $(OBJDIR)/export_.c 582 + 583 +export.h: $(OBJDIR)/headers 584 +$(OBJDIR)/file_.c: $(SRCDIR)/file.c $(OBJDIR)/translate 585 + $(TRANSLATE) $(SRCDIR)/file.c >$(OBJDIR)/file_.c 586 + 587 +$(OBJDIR)/file.o: $(OBJDIR)/file_.c $(OBJDIR)/file.h $(SRCDIR)/config.h 588 + $(XTCC) -o $(OBJDIR)/file.o -c $(OBJDIR)/file_.c 589 + 590 +file.h: $(OBJDIR)/headers 591 +$(OBJDIR)/finfo_.c: $(SRCDIR)/finfo.c $(OBJDIR)/translate 592 + $(TRANSLATE) $(SRCDIR)/finfo.c >$(OBJDIR)/finfo_.c 593 + 594 +$(OBJDIR)/finfo.o: $(OBJDIR)/finfo_.c $(OBJDIR)/finfo.h $(SRCDIR)/config.h 595 + $(XTCC) -o $(OBJDIR)/finfo.o -c $(OBJDIR)/finfo_.c 596 + 597 +finfo.h: $(OBJDIR)/headers 598 +$(OBJDIR)/graph_.c: $(SRCDIR)/graph.c $(OBJDIR)/translate 599 + $(TRANSLATE) $(SRCDIR)/graph.c >$(OBJDIR)/graph_.c 600 + 601 +$(OBJDIR)/graph.o: $(OBJDIR)/graph_.c $(OBJDIR)/graph.h $(SRCDIR)/config.h 602 + $(XTCC) -o $(OBJDIR)/graph.o -c $(OBJDIR)/graph_.c 603 + 604 +graph.h: $(OBJDIR)/headers 605 +$(OBJDIR)/gzip_.c: $(SRCDIR)/gzip.c $(OBJDIR)/translate 606 + $(TRANSLATE) $(SRCDIR)/gzip.c >$(OBJDIR)/gzip_.c 607 + 608 +$(OBJDIR)/gzip.o: $(OBJDIR)/gzip_.c $(OBJDIR)/gzip.h $(SRCDIR)/config.h 609 + $(XTCC) -o $(OBJDIR)/gzip.o -c $(OBJDIR)/gzip_.c 610 + 611 +gzip.h: $(OBJDIR)/headers 612 +$(OBJDIR)/http_.c: $(SRCDIR)/http.c $(OBJDIR)/translate 613 + $(TRANSLATE) $(SRCDIR)/http.c >$(OBJDIR)/http_.c 614 + 615 +$(OBJDIR)/http.o: $(OBJDIR)/http_.c $(OBJDIR)/http.h $(SRCDIR)/config.h 616 + $(XTCC) -o $(OBJDIR)/http.o -c $(OBJDIR)/http_.c 617 + 618 +http.h: $(OBJDIR)/headers 619 +$(OBJDIR)/http_socket_.c: $(SRCDIR)/http_socket.c $(OBJDIR)/translate 620 + $(TRANSLATE) $(SRCDIR)/http_socket.c >$(OBJDIR)/http_socket_.c 621 + 622 +$(OBJDIR)/http_socket.o: $(OBJDIR)/http_socket_.c $(OBJDIR)/http_socket.h $(SRCDIR)/config.h 623 + $(XTCC) -o $(OBJDIR)/http_socket.o -c $(OBJDIR)/http_socket_.c 624 + 625 +http_socket.h: $(OBJDIR)/headers 626 +$(OBJDIR)/http_ssl_.c: $(SRCDIR)/http_ssl.c $(OBJDIR)/translate 627 + $(TRANSLATE) $(SRCDIR)/http_ssl.c >$(OBJDIR)/http_ssl_.c 628 + 629 +$(OBJDIR)/http_ssl.o: $(OBJDIR)/http_ssl_.c $(OBJDIR)/http_ssl.h $(SRCDIR)/config.h 630 + $(XTCC) -o $(OBJDIR)/http_ssl.o -c $(OBJDIR)/http_ssl_.c 631 + 632 +http_ssl.h: $(OBJDIR)/headers 633 +$(OBJDIR)/http_transport_.c: $(SRCDIR)/http_transport.c $(OBJDIR)/translate 634 + $(TRANSLATE) $(SRCDIR)/http_transport.c >$(OBJDIR)/http_transport_.c 635 + 636 +$(OBJDIR)/http_transport.o: $(OBJDIR)/http_transport_.c $(OBJDIR)/http_transport.h $(SRCDIR)/config.h 637 + $(XTCC) -o $(OBJDIR)/http_transport.o -c $(OBJDIR)/http_transport_.c 638 + 639 +http_transport.h: $(OBJDIR)/headers 640 +$(OBJDIR)/import_.c: $(SRCDIR)/import.c $(OBJDIR)/translate 641 + $(TRANSLATE) $(SRCDIR)/import.c >$(OBJDIR)/import_.c 642 + 643 +$(OBJDIR)/import.o: $(OBJDIR)/import_.c $(OBJDIR)/import.h $(SRCDIR)/config.h 644 + $(XTCC) -o $(OBJDIR)/import.o -c $(OBJDIR)/import_.c 645 + 646 +import.h: $(OBJDIR)/headers 647 +$(OBJDIR)/info_.c: $(SRCDIR)/info.c $(OBJDIR)/translate 648 + $(TRANSLATE) $(SRCDIR)/info.c >$(OBJDIR)/info_.c 649 + 650 +$(OBJDIR)/info.o: $(OBJDIR)/info_.c $(OBJDIR)/info.h $(SRCDIR)/config.h 651 + $(XTCC) -o $(OBJDIR)/info.o -c $(OBJDIR)/info_.c 652 + 653 +info.h: $(OBJDIR)/headers 654 +$(OBJDIR)/leaf_.c: $(SRCDIR)/leaf.c $(OBJDIR)/translate 655 + $(TRANSLATE) $(SRCDIR)/leaf.c >$(OBJDIR)/leaf_.c 656 + 657 +$(OBJDIR)/leaf.o: $(OBJDIR)/leaf_.c $(OBJDIR)/leaf.h $(SRCDIR)/config.h 658 + $(XTCC) -o $(OBJDIR)/leaf.o -c $(OBJDIR)/leaf_.c 659 + 660 +leaf.h: $(OBJDIR)/headers 661 +$(OBJDIR)/login_.c: $(SRCDIR)/login.c $(OBJDIR)/translate 662 + $(TRANSLATE) $(SRCDIR)/login.c >$(OBJDIR)/login_.c 663 + 664 +$(OBJDIR)/login.o: $(OBJDIR)/login_.c $(OBJDIR)/login.h $(SRCDIR)/config.h 665 + $(XTCC) -o $(OBJDIR)/login.o -c $(OBJDIR)/login_.c 666 + 667 +login.h: $(OBJDIR)/headers 668 +$(OBJDIR)/main_.c: $(SRCDIR)/main.c $(OBJDIR)/translate 669 + $(TRANSLATE) $(SRCDIR)/main.c >$(OBJDIR)/main_.c 670 + 671 +$(OBJDIR)/main.o: $(OBJDIR)/main_.c $(OBJDIR)/main.h $(OBJDIR)/page_index.h $(SRCDIR)/config.h 672 + $(XTCC) -o $(OBJDIR)/main.o -c $(OBJDIR)/main_.c 673 + 674 +main.h: $(OBJDIR)/headers 675 +$(OBJDIR)/manifest_.c: $(SRCDIR)/manifest.c $(OBJDIR)/translate 676 + $(TRANSLATE) $(SRCDIR)/manifest.c >$(OBJDIR)/manifest_.c 677 + 678 +$(OBJDIR)/manifest.o: $(OBJDIR)/manifest_.c $(OBJDIR)/manifest.h $(SRCDIR)/config.h 679 + $(XTCC) -o $(OBJDIR)/manifest.o -c $(OBJDIR)/manifest_.c 680 + 681 +manifest.h: $(OBJDIR)/headers 682 +$(OBJDIR)/md5_.c: $(SRCDIR)/md5.c $(OBJDIR)/translate 683 + $(TRANSLATE) $(SRCDIR)/md5.c >$(OBJDIR)/md5_.c 684 + 685 +$(OBJDIR)/md5.o: $(OBJDIR)/md5_.c $(OBJDIR)/md5.h $(SRCDIR)/config.h 686 + $(XTCC) -o $(OBJDIR)/md5.o -c $(OBJDIR)/md5_.c 687 + 688 +md5.h: $(OBJDIR)/headers 689 +$(OBJDIR)/merge_.c: $(SRCDIR)/merge.c $(OBJDIR)/translate 690 + $(TRANSLATE) $(SRCDIR)/merge.c >$(OBJDIR)/merge_.c 691 + 692 +$(OBJDIR)/merge.o: $(OBJDIR)/merge_.c $(OBJDIR)/merge.h $(SRCDIR)/config.h 693 + $(XTCC) -o $(OBJDIR)/merge.o -c $(OBJDIR)/merge_.c 694 + 695 +merge.h: $(OBJDIR)/headers 696 +$(OBJDIR)/merge3_.c: $(SRCDIR)/merge3.c $(OBJDIR)/translate 697 + $(TRANSLATE) $(SRCDIR)/merge3.c >$(OBJDIR)/merge3_.c 698 + 699 +$(OBJDIR)/merge3.o: $(OBJDIR)/merge3_.c $(OBJDIR)/merge3.h $(SRCDIR)/config.h 700 + $(XTCC) -o $(OBJDIR)/merge3.o -c $(OBJDIR)/merge3_.c 701 + 702 +merge3.h: $(OBJDIR)/headers 703 +$(OBJDIR)/name_.c: $(SRCDIR)/name.c $(OBJDIR)/translate 704 + $(TRANSLATE) $(SRCDIR)/name.c >$(OBJDIR)/name_.c 705 + 706 +$(OBJDIR)/name.o: $(OBJDIR)/name_.c $(OBJDIR)/name.h $(SRCDIR)/config.h 707 + $(XTCC) -o $(OBJDIR)/name.o -c $(OBJDIR)/name_.c 708 + 709 +name.h: $(OBJDIR)/headers 710 +$(OBJDIR)/path_.c: $(SRCDIR)/path.c $(OBJDIR)/translate 711 + $(TRANSLATE) $(SRCDIR)/path.c >$(OBJDIR)/path_.c 712 + 713 +$(OBJDIR)/path.o: $(OBJDIR)/path_.c $(OBJDIR)/path.h $(SRCDIR)/config.h 714 + $(XTCC) -o $(OBJDIR)/path.o -c $(OBJDIR)/path_.c 715 + 716 +path.h: $(OBJDIR)/headers 717 +$(OBJDIR)/pivot_.c: $(SRCDIR)/pivot.c $(OBJDIR)/translate 718 + $(TRANSLATE) $(SRCDIR)/pivot.c >$(OBJDIR)/pivot_.c 719 + 720 +$(OBJDIR)/pivot.o: $(OBJDIR)/pivot_.c $(OBJDIR)/pivot.h $(SRCDIR)/config.h 721 + $(XTCC) -o $(OBJDIR)/pivot.o -c $(OBJDIR)/pivot_.c 722 + 723 +pivot.h: $(OBJDIR)/headers 724 +$(OBJDIR)/popen_.c: $(SRCDIR)/popen.c $(OBJDIR)/translate 725 + $(TRANSLATE) $(SRCDIR)/popen.c >$(OBJDIR)/popen_.c 726 + 727 +$(OBJDIR)/popen.o: $(OBJDIR)/popen_.c $(OBJDIR)/popen.h $(SRCDIR)/config.h 728 + $(XTCC) -o $(OBJDIR)/popen.o -c $(OBJDIR)/popen_.c 729 + 730 +popen.h: $(OBJDIR)/headers 731 +$(OBJDIR)/pqueue_.c: $(SRCDIR)/pqueue.c $(OBJDIR)/translate 732 + $(TRANSLATE) $(SRCDIR)/pqueue.c >$(OBJDIR)/pqueue_.c 733 + 734 +$(OBJDIR)/pqueue.o: $(OBJDIR)/pqueue_.c $(OBJDIR)/pqueue.h $(SRCDIR)/config.h 735 + $(XTCC) -o $(OBJDIR)/pqueue.o -c $(OBJDIR)/pqueue_.c 736 + 737 +pqueue.h: $(OBJDIR)/headers 738 +$(OBJDIR)/printf_.c: $(SRCDIR)/printf.c $(OBJDIR)/translate 739 + $(TRANSLATE) $(SRCDIR)/printf.c >$(OBJDIR)/printf_.c 740 + 741 +$(OBJDIR)/printf.o: $(OBJDIR)/printf_.c $(OBJDIR)/printf.h $(SRCDIR)/config.h 742 + $(XTCC) -o $(OBJDIR)/printf.o -c $(OBJDIR)/printf_.c 743 + 744 +printf.h: $(OBJDIR)/headers 745 +$(OBJDIR)/rebuild_.c: $(SRCDIR)/rebuild.c $(OBJDIR)/translate 746 + $(TRANSLATE) $(SRCDIR)/rebuild.c >$(OBJDIR)/rebuild_.c 747 + 748 +$(OBJDIR)/rebuild.o: $(OBJDIR)/rebuild_.c $(OBJDIR)/rebuild.h $(SRCDIR)/config.h 749 + $(XTCC) -o $(OBJDIR)/rebuild.o -c $(OBJDIR)/rebuild_.c 750 + 751 +rebuild.h: $(OBJDIR)/headers 752 +$(OBJDIR)/report_.c: $(SRCDIR)/report.c $(OBJDIR)/translate 753 + $(TRANSLATE) $(SRCDIR)/report.c >$(OBJDIR)/report_.c 754 + 755 +$(OBJDIR)/report.o: $(OBJDIR)/report_.c $(OBJDIR)/report.h $(SRCDIR)/config.h 756 + $(XTCC) -o $(OBJDIR)/report.o -c $(OBJDIR)/report_.c 757 + 758 +report.h: $(OBJDIR)/headers 759 +$(OBJDIR)/rss_.c: $(SRCDIR)/rss.c $(OBJDIR)/translate 760 + $(TRANSLATE) $(SRCDIR)/rss.c >$(OBJDIR)/rss_.c 761 + 762 +$(OBJDIR)/rss.o: $(OBJDIR)/rss_.c $(OBJDIR)/rss.h $(SRCDIR)/config.h 763 + $(XTCC) -o $(OBJDIR)/rss.o -c $(OBJDIR)/rss_.c 764 + 765 +rss.h: $(OBJDIR)/headers 766 +$(OBJDIR)/schema_.c: $(SRCDIR)/schema.c $(OBJDIR)/translate 767 + $(TRANSLATE) $(SRCDIR)/schema.c >$(OBJDIR)/schema_.c 768 + 769 +$(OBJDIR)/schema.o: $(OBJDIR)/schema_.c $(OBJDIR)/schema.h $(SRCDIR)/config.h 770 + $(XTCC) -o $(OBJDIR)/schema.o -c $(OBJDIR)/schema_.c 771 + 772 +schema.h: $(OBJDIR)/headers 773 +$(OBJDIR)/search_.c: $(SRCDIR)/search.c $(OBJDIR)/translate 774 + $(TRANSLATE) $(SRCDIR)/search.c >$(OBJDIR)/search_.c 775 + 776 +$(OBJDIR)/search.o: $(OBJDIR)/search_.c $(OBJDIR)/search.h $(SRCDIR)/config.h 777 + $(XTCC) -o $(OBJDIR)/search.o -c $(OBJDIR)/search_.c 778 + 779 +search.h: $(OBJDIR)/headers 780 +$(OBJDIR)/setup_.c: $(SRCDIR)/setup.c $(OBJDIR)/translate 781 + $(TRANSLATE) $(SRCDIR)/setup.c >$(OBJDIR)/setup_.c 782 + 783 +$(OBJDIR)/setup.o: $(OBJDIR)/setup_.c $(OBJDIR)/setup.h $(SRCDIR)/config.h 784 + $(XTCC) -o $(OBJDIR)/setup.o -c $(OBJDIR)/setup_.c 785 + 786 +setup.h: $(OBJDIR)/headers 787 +$(OBJDIR)/sha1_.c: $(SRCDIR)/sha1.c $(OBJDIR)/translate 788 + $(TRANSLATE) $(SRCDIR)/sha1.c >$(OBJDIR)/sha1_.c 789 + 790 +$(OBJDIR)/sha1.o: $(OBJDIR)/sha1_.c $(OBJDIR)/sha1.h $(SRCDIR)/config.h 791 + $(XTCC) -o $(OBJDIR)/sha1.o -c $(OBJDIR)/sha1_.c 792 + 793 +sha1.h: $(OBJDIR)/headers 794 +$(OBJDIR)/shun_.c: $(SRCDIR)/shun.c $(OBJDIR)/translate 795 + $(TRANSLATE) $(SRCDIR)/shun.c >$(OBJDIR)/shun_.c 796 + 797 +$(OBJDIR)/shun.o: $(OBJDIR)/shun_.c $(OBJDIR)/shun.h $(SRCDIR)/config.h 798 + $(XTCC) -o $(OBJDIR)/shun.o -c $(OBJDIR)/shun_.c 799 + 800 +shun.h: $(OBJDIR)/headers 801 +$(OBJDIR)/skins_.c: $(SRCDIR)/skins.c $(OBJDIR)/translate 802 + $(TRANSLATE) $(SRCDIR)/skins.c >$(OBJDIR)/skins_.c 803 + 804 +$(OBJDIR)/skins.o: $(OBJDIR)/skins_.c $(OBJDIR)/skins.h $(SRCDIR)/config.h 805 + $(XTCC) -o $(OBJDIR)/skins.o -c $(OBJDIR)/skins_.c 806 + 807 +skins.h: $(OBJDIR)/headers 808 +$(OBJDIR)/sqlcmd_.c: $(SRCDIR)/sqlcmd.c $(OBJDIR)/translate 809 + $(TRANSLATE) $(SRCDIR)/sqlcmd.c >$(OBJDIR)/sqlcmd_.c 810 + 811 +$(OBJDIR)/sqlcmd.o: $(OBJDIR)/sqlcmd_.c $(OBJDIR)/sqlcmd.h $(SRCDIR)/config.h 812 + $(XTCC) -o $(OBJDIR)/sqlcmd.o -c $(OBJDIR)/sqlcmd_.c 813 + 814 +sqlcmd.h: $(OBJDIR)/headers 815 +$(OBJDIR)/stash_.c: $(SRCDIR)/stash.c $(OBJDIR)/translate 816 + $(TRANSLATE) $(SRCDIR)/stash.c >$(OBJDIR)/stash_.c 817 + 818 +$(OBJDIR)/stash.o: $(OBJDIR)/stash_.c $(OBJDIR)/stash.h $(SRCDIR)/config.h 819 + $(XTCC) -o $(OBJDIR)/stash.o -c $(OBJDIR)/stash_.c 820 + 821 +stash.h: $(OBJDIR)/headers 822 +$(OBJDIR)/stat_.c: $(SRCDIR)/stat.c $(OBJDIR)/translate 823 + $(TRANSLATE) $(SRCDIR)/stat.c >$(OBJDIR)/stat_.c 824 + 825 +$(OBJDIR)/stat.o: $(OBJDIR)/stat_.c $(OBJDIR)/stat.h $(SRCDIR)/config.h 826 + $(XTCC) -o $(OBJDIR)/stat.o -c $(OBJDIR)/stat_.c 827 + 828 +stat.h: $(OBJDIR)/headers 829 +$(OBJDIR)/style_.c: $(SRCDIR)/style.c $(OBJDIR)/translate 830 + $(TRANSLATE) $(SRCDIR)/style.c >$(OBJDIR)/style_.c 831 + 832 +$(OBJDIR)/style.o: $(OBJDIR)/style_.c $(OBJDIR)/style.h $(SRCDIR)/config.h 833 + $(XTCC) -o $(OBJDIR)/style.o -c $(OBJDIR)/style_.c 834 + 835 +style.h: $(OBJDIR)/headers 836 +$(OBJDIR)/sync_.c: $(SRCDIR)/sync.c $(OBJDIR)/translate 837 + $(TRANSLATE) $(SRCDIR)/sync.c >$(OBJDIR)/sync_.c 838 + 839 +$(OBJDIR)/sync.o: $(OBJDIR)/sync_.c $(OBJDIR)/sync.h $(SRCDIR)/config.h 840 + $(XTCC) -o $(OBJDIR)/sync.o -c $(OBJDIR)/sync_.c 841 + 842 +sync.h: $(OBJDIR)/headers 843 +$(OBJDIR)/tag_.c: $(SRCDIR)/tag.c $(OBJDIR)/translate 844 + $(TRANSLATE) $(SRCDIR)/tag.c >$(OBJDIR)/tag_.c 845 + 846 +$(OBJDIR)/tag.o: $(OBJDIR)/tag_.c $(OBJDIR)/tag.h $(SRCDIR)/config.h 847 + $(XTCC) -o $(OBJDIR)/tag.o -c $(OBJDIR)/tag_.c 848 + 849 +tag.h: $(OBJDIR)/headers 850 +$(OBJDIR)/tar_.c: $(SRCDIR)/tar.c $(OBJDIR)/translate 851 + $(TRANSLATE) $(SRCDIR)/tar.c >$(OBJDIR)/tar_.c 852 + 853 +$(OBJDIR)/tar.o: $(OBJDIR)/tar_.c $(OBJDIR)/tar.h $(SRCDIR)/config.h 854 + $(XTCC) -o $(OBJDIR)/tar.o -c $(OBJDIR)/tar_.c 855 + 856 +tar.h: $(OBJDIR)/headers 857 +$(OBJDIR)/th_main_.c: $(SRCDIR)/th_main.c $(OBJDIR)/translate 858 + $(TRANSLATE) $(SRCDIR)/th_main.c >$(OBJDIR)/th_main_.c 859 + 860 +$(OBJDIR)/th_main.o: $(OBJDIR)/th_main_.c $(OBJDIR)/th_main.h $(SRCDIR)/config.h 861 + $(XTCC) -o $(OBJDIR)/th_main.o -c $(OBJDIR)/th_main_.c 862 + 863 +th_main.h: $(OBJDIR)/headers 864 +$(OBJDIR)/timeline_.c: $(SRCDIR)/timeline.c $(OBJDIR)/translate 865 + $(TRANSLATE) $(SRCDIR)/timeline.c >$(OBJDIR)/timeline_.c 866 + 867 +$(OBJDIR)/timeline.o: $(OBJDIR)/timeline_.c $(OBJDIR)/timeline.h $(SRCDIR)/config.h 868 + $(XTCC) -o $(OBJDIR)/timeline.o -c $(OBJDIR)/timeline_.c 869 + 870 +timeline.h: $(OBJDIR)/headers 871 +$(OBJDIR)/tkt_.c: $(SRCDIR)/tkt.c $(OBJDIR)/translate 872 + $(TRANSLATE) $(SRCDIR)/tkt.c >$(OBJDIR)/tkt_.c 873 + 874 +$(OBJDIR)/tkt.o: $(OBJDIR)/tkt_.c $(OBJDIR)/tkt.h $(SRCDIR)/config.h 875 + $(XTCC) -o $(OBJDIR)/tkt.o -c $(OBJDIR)/tkt_.c 876 + 877 +tkt.h: $(OBJDIR)/headers 878 +$(OBJDIR)/tktsetup_.c: $(SRCDIR)/tktsetup.c $(OBJDIR)/translate 879 + $(TRANSLATE) $(SRCDIR)/tktsetup.c >$(OBJDIR)/tktsetup_.c 880 + 881 +$(OBJDIR)/tktsetup.o: $(OBJDIR)/tktsetup_.c $(OBJDIR)/tktsetup.h $(SRCDIR)/config.h 882 + $(XTCC) -o $(OBJDIR)/tktsetup.o -c $(OBJDIR)/tktsetup_.c 883 + 884 +tktsetup.h: $(OBJDIR)/headers 885 +$(OBJDIR)/undo_.c: $(SRCDIR)/undo.c $(OBJDIR)/translate 886 + $(TRANSLATE) $(SRCDIR)/undo.c >$(OBJDIR)/undo_.c 887 + 888 +$(OBJDIR)/undo.o: $(OBJDIR)/undo_.c $(OBJDIR)/undo.h $(SRCDIR)/config.h 889 + $(XTCC) -o $(OBJDIR)/undo.o -c $(OBJDIR)/undo_.c 890 + 891 +undo.h: $(OBJDIR)/headers 892 +$(OBJDIR)/update_.c: $(SRCDIR)/update.c $(OBJDIR)/translate 893 + $(TRANSLATE) $(SRCDIR)/update.c >$(OBJDIR)/update_.c 894 + 895 +$(OBJDIR)/update.o: $(OBJDIR)/update_.c $(OBJDIR)/update.h $(SRCDIR)/config.h 896 + $(XTCC) -o $(OBJDIR)/update.o -c $(OBJDIR)/update_.c 897 + 898 +update.h: $(OBJDIR)/headers 899 +$(OBJDIR)/url_.c: $(SRCDIR)/url.c $(OBJDIR)/translate 900 + $(TRANSLATE) $(SRCDIR)/url.c >$(OBJDIR)/url_.c 901 + 902 +$(OBJDIR)/url.o: $(OBJDIR)/url_.c $(OBJDIR)/url.h $(SRCDIR)/config.h 903 + $(XTCC) -o $(OBJDIR)/url.o -c $(OBJDIR)/url_.c 904 + 905 +url.h: $(OBJDIR)/headers 906 +$(OBJDIR)/user_.c: $(SRCDIR)/user.c $(OBJDIR)/translate 907 + $(TRANSLATE) $(SRCDIR)/user.c >$(OBJDIR)/user_.c 908 + 909 +$(OBJDIR)/user.o: $(OBJDIR)/user_.c $(OBJDIR)/user.h $(SRCDIR)/config.h 910 + $(XTCC) -o $(OBJDIR)/user.o -c $(OBJDIR)/user_.c 911 + 912 +user.h: $(OBJDIR)/headers 913 +$(OBJDIR)/verify_.c: $(SRCDIR)/verify.c $(OBJDIR)/translate 914 + $(TRANSLATE) $(SRCDIR)/verify.c >$(OBJDIR)/verify_.c 915 + 916 +$(OBJDIR)/verify.o: $(OBJDIR)/verify_.c $(OBJDIR)/verify.h $(SRCDIR)/config.h 917 + $(XTCC) -o $(OBJDIR)/verify.o -c $(OBJDIR)/verify_.c 918 + 919 +verify.h: $(OBJDIR)/headers 920 +$(OBJDIR)/vfile_.c: $(SRCDIR)/vfile.c $(OBJDIR)/translate 921 + $(TRANSLATE) $(SRCDIR)/vfile.c >$(OBJDIR)/vfile_.c 922 + 923 +$(OBJDIR)/vfile.o: $(OBJDIR)/vfile_.c $(OBJDIR)/vfile.h $(SRCDIR)/config.h 924 + $(XTCC) -o $(OBJDIR)/vfile.o -c $(OBJDIR)/vfile_.c 925 + 926 +vfile.h: $(OBJDIR)/headers 927 +$(OBJDIR)/wiki_.c: $(SRCDIR)/wiki.c $(OBJDIR)/translate 928 + $(TRANSLATE) $(SRCDIR)/wiki.c >$(OBJDIR)/wiki_.c 929 + 930 +$(OBJDIR)/wiki.o: $(OBJDIR)/wiki_.c $(OBJDIR)/wiki.h $(SRCDIR)/config.h 931 + $(XTCC) -o $(OBJDIR)/wiki.o -c $(OBJDIR)/wiki_.c 932 + 933 +wiki.h: $(OBJDIR)/headers 934 +$(OBJDIR)/wikiformat_.c: $(SRCDIR)/wikiformat.c $(OBJDIR)/translate 935 + $(TRANSLATE) $(SRCDIR)/wikiformat.c >$(OBJDIR)/wikiformat_.c 936 + 937 +$(OBJDIR)/wikiformat.o: $(OBJDIR)/wikiformat_.c $(OBJDIR)/wikiformat.h $(SRCDIR)/config.h 938 + $(XTCC) -o $(OBJDIR)/wikiformat.o -c $(OBJDIR)/wikiformat_.c 939 + 940 +wikiformat.h: $(OBJDIR)/headers 941 +$(OBJDIR)/winhttp_.c: $(SRCDIR)/winhttp.c $(OBJDIR)/translate 942 + $(TRANSLATE) $(SRCDIR)/winhttp.c >$(OBJDIR)/winhttp_.c 943 + 944 +$(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h 945 + $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c 946 + 947 +winhttp.h: $(OBJDIR)/headers 948 +$(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate 949 + $(TRANSLATE) $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c 950 + 951 +$(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h 952 + $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c 953 + 954 +xfer.h: $(OBJDIR)/headers 955 +$(OBJDIR)/zip_.c: $(SRCDIR)/zip.c $(OBJDIR)/translate 956 + $(TRANSLATE) $(SRCDIR)/zip.c >$(OBJDIR)/zip_.c 957 + 958 +$(OBJDIR)/zip.o: $(OBJDIR)/zip_.c $(OBJDIR)/zip.h $(SRCDIR)/config.h 959 + $(XTCC) -o $(OBJDIR)/zip.o -c $(OBJDIR)/zip_.c 960 + 961 +zip.h: $(OBJDIR)/headers 962 +$(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c 963 + $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT2 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o 964 + 965 +$(OBJDIR)/shell.o: $(SRCDIR)/shell.c 966 + $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o 967 + 968 +$(OBJDIR)/th.o: $(SRCDIR)/th.c 969 + $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o 970 + 971 +$(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c 972 + $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o 973 +