Changes On Branch arjen-doc-updates
Not logged in

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  +