Fossil SCM

Merged in trunk.

stephan 2019-10-10 05:49 double-dash-flag2 merge
Commit 22150abaf2b6e55d761c3838cc07d7d667fa4d78a0bda07563917daf2fbb2cfa
--- a/.editorconfig
+++ b/.editorconfig
@@ -0,0 +1,12 @@
1
+# EditorConfig (https://editorconfig.com) Configuration for Fossil
2
+#
3
+# Following https://fossil-scm.org/fossil/doc/trunk/www/style.wiki
4
+#
5
+
6
+# Defaults for all files
7
+[*]
8
+end_of_line = lf
9
+insert_final_newline = true
10
+indent_style = space
11
+indent_size = 2
12
+
--- a/.editorconfig
+++ b/.editorconfig
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
--- a/.editorconfig
+++ b/.editorconfig
@@ -0,0 +1,12 @@
1 # EditorConfig (https://editorconfig.com) Configuration for Fossil
2 #
3 # Following https://fossil-scm.org/fossil/doc/trunk/www/style.wiki
4 #
5
6 # Defaults for all files
7 [*]
8 end_of_line = lf
9 insert_final_newline = true
10 indent_style = space
11 indent_size = 2
12
+1 -1
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1
-2.10
1
+2.11
22
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 2.10
2
--- VERSION
+++ VERSION
@@ -1,1 +1,1 @@
1 2.11
2
+12 -6
--- src/db.c
+++ src/db.c
@@ -4006,16 +4006,18 @@
40064006
** Also set "fingerprint" and "checkout-hash".
40074007
*/
40084008
void db_set_checkout(int rid){
40094009
char *z;
40104010
db_lset_int("checkout", rid);
4011
- z = db_text(0,"SELECT uuid FROM blob WHERE rid=%d",rid);
4012
- db_lset("checkout-hash", z);
4013
- fossil_free(z);
4014
- z = db_fingerprint(0, 1);
4015
- db_lset("fingerprint", z);
4016
- fossil_free(z);
4011
+ if (rid != 0) {
4012
+ z = db_text(0,"SELECT uuid FROM blob WHERE rid=%d",rid);
4013
+ db_lset("checkout-hash", z);
4014
+ fossil_free(z);
4015
+ z = db_fingerprint(0, 1);
4016
+ db_lset("fingerprint", z);
4017
+ fossil_free(z);
4018
+ }
40174019
}
40184020
40194021
/*
40204022
** Verify that the fingerprint recorded in the "fingerprint" entry
40214023
** of the VVAR table matches the fingerprint on the currently
@@ -4025,10 +4027,14 @@
40254027
int db_fingerprint_ok(void){
40264028
char *zCkout; /* The fingerprint recorded in the checkout database */
40274029
char *zRepo; /* The fingerprint of the repository */
40284030
int rc; /* Result */
40294031
4032
+ if( !db_lget_int("checkout", 0) ){
4033
+ /* We have an empty checkout, fingerprint is still NULL. */
4034
+ return 2;
4035
+ }
40304036
zCkout = db_text(0,"SELECT value FROM localdb.vvar WHERE name='fingerprint'");
40314037
if( zCkout==0 ){
40324038
/* This is an older checkout that does not record a fingerprint.
40334039
** We have to assume everything is ok */
40344040
return 2;
40354041
--- src/db.c
+++ src/db.c
@@ -4006,16 +4006,18 @@
4006 ** Also set "fingerprint" and "checkout-hash".
4007 */
4008 void db_set_checkout(int rid){
4009 char *z;
4010 db_lset_int("checkout", rid);
4011 z = db_text(0,"SELECT uuid FROM blob WHERE rid=%d",rid);
4012 db_lset("checkout-hash", z);
4013 fossil_free(z);
4014 z = db_fingerprint(0, 1);
4015 db_lset("fingerprint", z);
4016 fossil_free(z);
 
 
4017 }
4018
4019 /*
4020 ** Verify that the fingerprint recorded in the "fingerprint" entry
4021 ** of the VVAR table matches the fingerprint on the currently
@@ -4025,10 +4027,14 @@
4025 int db_fingerprint_ok(void){
4026 char *zCkout; /* The fingerprint recorded in the checkout database */
4027 char *zRepo; /* The fingerprint of the repository */
4028 int rc; /* Result */
4029
 
 
 
 
4030 zCkout = db_text(0,"SELECT value FROM localdb.vvar WHERE name='fingerprint'");
4031 if( zCkout==0 ){
4032 /* This is an older checkout that does not record a fingerprint.
4033 ** We have to assume everything is ok */
4034 return 2;
4035
--- src/db.c
+++ src/db.c
@@ -4006,16 +4006,18 @@
4006 ** Also set "fingerprint" and "checkout-hash".
4007 */
4008 void db_set_checkout(int rid){
4009 char *z;
4010 db_lset_int("checkout", rid);
4011 if (rid != 0) {
4012 z = db_text(0,"SELECT uuid FROM blob WHERE rid=%d",rid);
4013 db_lset("checkout-hash", z);
4014 fossil_free(z);
4015 z = db_fingerprint(0, 1);
4016 db_lset("fingerprint", z);
4017 fossil_free(z);
4018 }
4019 }
4020
4021 /*
4022 ** Verify that the fingerprint recorded in the "fingerprint" entry
4023 ** of the VVAR table matches the fingerprint on the currently
@@ -4025,10 +4027,14 @@
4027 int db_fingerprint_ok(void){
4028 char *zCkout; /* The fingerprint recorded in the checkout database */
4029 char *zRepo; /* The fingerprint of the repository */
4030 int rc; /* Result */
4031
4032 if( !db_lget_int("checkout", 0) ){
4033 /* We have an empty checkout, fingerprint is still NULL. */
4034 return 2;
4035 }
4036 zCkout = db_text(0,"SELECT value FROM localdb.vvar WHERE name='fingerprint'");
4037 if( zCkout==0 ){
4038 /* This is an older checkout that does not record a fingerprint.
4039 ** We have to assume everything is ok */
4040 return 2;
4041
+1 -1
--- src/info.c
+++ src/info.c
@@ -180,11 +180,11 @@
180180
** in the repository of the current tree that the argument refers
181181
** to. Or if the argument is the name of a repository, show
182182
** information about that repository.
183183
**
184184
** If the argument is a repository name, then the --verbose option shows
185
-** known the check-out locations for that repository and all URLs used
185
+** all known check-out locations for that repository and all URLs used
186186
** to access the repository. The --verbose is (currently) a no-op if
187187
** the argument is the name of a object within the repository.
188188
**
189189
** Use the "finfo" command to get information about a specific
190190
** file in a checkout.
191191
--- src/info.c
+++ src/info.c
@@ -180,11 +180,11 @@
180 ** in the repository of the current tree that the argument refers
181 ** to. Or if the argument is the name of a repository, show
182 ** information about that repository.
183 **
184 ** If the argument is a repository name, then the --verbose option shows
185 ** known the check-out locations for that repository and all URLs used
186 ** to access the repository. The --verbose is (currently) a no-op if
187 ** the argument is the name of a object within the repository.
188 **
189 ** Use the "finfo" command to get information about a specific
190 ** file in a checkout.
191
--- src/info.c
+++ src/info.c
@@ -180,11 +180,11 @@
180 ** in the repository of the current tree that the argument refers
181 ** to. Or if the argument is the name of a repository, show
182 ** information about that repository.
183 **
184 ** If the argument is a repository name, then the --verbose option shows
185 ** all known check-out locations for that repository and all URLs used
186 ** to access the repository. The --verbose is (currently) a no-op if
187 ** the argument is the name of a object within the repository.
188 **
189 ** Use the "finfo" command to get information about a specific
190 ** file in a checkout.
191
+1 -5
--- src/shell.c
+++ src/shell.c
@@ -16691,16 +16691,12 @@
1669116691
1669216692
/* .parameter clear
1669316693
** Clear all bind parameters by dropping the TEMP table that holds them.
1669416694
*/
1669516695
if( nArg==2 && strcmp(azArg[1],"clear")==0 ){
16696
- int wrSchema = 0;
16697
- sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, -1, &wrSchema);
16698
- sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, 1, 0);
1669916696
sqlite3_exec(p->db, "DROP TABLE IF EXISTS temp.sqlite_parameters;",
1670016697
0, 0, 0);
16701
- sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, wrSchema, 0);
1670216698
}else
1670316699
1670416700
/* .parameter list
1670516701
** List all bind parameters.
1670616702
*/
@@ -17966,11 +17962,11 @@
1796617962
sqlite3_trace_v2(p->db, mType, sql_trace_callback, p);
1796717963
}
1796817964
}else
1796917965
#endif /* !defined(SQLITE_OMIT_TRACE) */
1797017966
17971
-#ifdef SQLITE_DEBUG
17967
+#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_VIRTUALTABLE)
1797217968
if( c=='u' && strncmp(azArg[0], "unmodule", n)==0 ){
1797317969
int ii;
1797417970
int lenOpt;
1797517971
char *zOpt;
1797617972
if( nArg<2 ){
1797717973
--- src/shell.c
+++ src/shell.c
@@ -16691,16 +16691,12 @@
16691
16692 /* .parameter clear
16693 ** Clear all bind parameters by dropping the TEMP table that holds them.
16694 */
16695 if( nArg==2 && strcmp(azArg[1],"clear")==0 ){
16696 int wrSchema = 0;
16697 sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, -1, &wrSchema);
16698 sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, 1, 0);
16699 sqlite3_exec(p->db, "DROP TABLE IF EXISTS temp.sqlite_parameters;",
16700 0, 0, 0);
16701 sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, wrSchema, 0);
16702 }else
16703
16704 /* .parameter list
16705 ** List all bind parameters.
16706 */
@@ -17966,11 +17962,11 @@
17966 sqlite3_trace_v2(p->db, mType, sql_trace_callback, p);
17967 }
17968 }else
17969 #endif /* !defined(SQLITE_OMIT_TRACE) */
17970
17971 #ifdef SQLITE_DEBUG
17972 if( c=='u' && strncmp(azArg[0], "unmodule", n)==0 ){
17973 int ii;
17974 int lenOpt;
17975 char *zOpt;
17976 if( nArg<2 ){
17977
--- src/shell.c
+++ src/shell.c
@@ -16691,16 +16691,12 @@
16691
16692 /* .parameter clear
16693 ** Clear all bind parameters by dropping the TEMP table that holds them.
16694 */
16695 if( nArg==2 && strcmp(azArg[1],"clear")==0 ){
 
 
 
16696 sqlite3_exec(p->db, "DROP TABLE IF EXISTS temp.sqlite_parameters;",
16697 0, 0, 0);
 
16698 }else
16699
16700 /* .parameter list
16701 ** List all bind parameters.
16702 */
@@ -17966,11 +17962,11 @@
17962 sqlite3_trace_v2(p->db, mType, sql_trace_callback, p);
17963 }
17964 }else
17965 #endif /* !defined(SQLITE_OMIT_TRACE) */
17966
17967 #if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_VIRTUALTABLE)
17968 if( c=='u' && strncmp(azArg[0], "unmodule", n)==0 ){
17969 int ii;
17970 int lenOpt;
17971 char *zOpt;
17972 if( nArg<2 ){
17973
+71 -42
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1165,11 +1165,11 @@
11651165
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
11661166
** [sqlite_version()] and [sqlite_source_id()].
11671167
*/
11681168
#define SQLITE_VERSION "3.30.0"
11691169
#define SQLITE_VERSION_NUMBER 3030000
1170
-#define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501d7505"
1170
+#define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f"
11711171
11721172
/*
11731173
** CAPI3REF: Run-Time Library Version Numbers
11741174
** KEYWORDS: sqlite3_version sqlite3_sourceid
11751175
**
@@ -16171,10 +16171,11 @@
1617116171
#define sqlite3MutexInit() SQLITE_OK
1617216172
#define sqlite3MutexEnd()
1617316173
#define MUTEX_LOGIC(X)
1617416174
#else
1617516175
#define MUTEX_LOGIC(X) X
16176
+SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
1617616177
#endif /* defined(SQLITE_MUTEX_OMIT) */
1617716178
1617816179
/************** End of mutex.h ***********************************************/
1617916180
/************** Continuing where we left off in sqliteInt.h ******************/
1618016181
@@ -17174,12 +17175,15 @@
1717417175
sqlite3 *db; /* The database connection */
1717517176
u8 *aSortFlags; /* Sort order for each column. */
1717617177
CollSeq *aColl[1]; /* Collating sequence for each term of the key */
1717717178
};
1717817179
17179
-#define KEYINFO_ORDER_DESC 0x01
17180
-#define KEYINFO_ORDER_BIGNULL 0x02
17180
+/*
17181
+** Allowed bit values for entries in the KeyInfo.aSortFlags[] array.
17182
+*/
17183
+#define KEYINFO_ORDER_DESC 0x01 /* DESC sort order */
17184
+#define KEYINFO_ORDER_BIGNULL 0x02 /* NULL is larger than any other value */
1718117185
1718217186
/*
1718317187
** This object holds a record which has been parsed out into individual
1718417188
** fields, for the purposes of doing a comparison.
1718517189
**
@@ -17505,10 +17509,11 @@
1750517509
#endif
1750617510
int iTable; /* TK_COLUMN: cursor number of table holding column
1750717511
** TK_REGISTER: register number
1750817512
** TK_TRIGGER: 1 -> new, 0 -> old
1750917513
** EP_Unlikely: 134217728 times likelihood
17514
+ ** TK_IN: ephemerial table holding RHS
1751017515
** TK_SELECT_COLUMN: Number of columns on the LHS
1751117516
** TK_SELECT: 1st register of result vector */
1751217517
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
1751317518
** TK_VARIABLE: variable number (always >= 1).
1751417519
** TK_SELECT_COLUMN: column of the result vector */
@@ -29226,13 +29231,14 @@
2922629231
break;
2922729232
}
2922829233
2922929234
case TK_COLLATE: {
2923029235
/* COLLATE operators without the EP_Collate flag are intended to
29231
- ** emulate collation associated with a table column. Explicit
29232
- ** COLLATE operators that appear in the original SQL always have
29233
- ** the EP_Collate bit set */
29236
+ ** emulate collation associated with a table column. These show
29237
+ ** up in the treeview output as "SOFT-COLLATE". Explicit COLLATE
29238
+ ** operators that appear in the original SQL always have the
29239
+ ** EP_Collate bit set and appear in treeview output as just "COLLATE" */
2923429240
sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
2923529241
!ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
2923629242
pExpr->u.zToken, zFlgs);
2923729243
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
2923829244
break;
@@ -32583,17 +32589,33 @@
3258332589
/* # include <sys/ioctl.h> */
3258432590
# include <sys/file.h>
3258532591
# include <sys/param.h>
3258632592
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
3258732593
32588
-#if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
32589
- (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
32590
-# if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
32591
- && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
32592
-# define HAVE_GETHOSTUUID 1
32593
-# else
32594
-# warning "gethostuuid() is disabled."
32594
+/*
32595
+** Try to determine if gethostuuid() is available based on standard
32596
+** macros. This might sometimes compute the wrong value for some
32597
+** obscure platforms. For those cases, simply compile with one of
32598
+** the following:
32599
+**
32600
+** -DHAVE_GETHOSTUUID=0
32601
+** -DHAVE_GETHOSTUUID=1
32602
+**
32603
+** None if this matters except when building on Apple products with
32604
+** -DSQLITE_ENABLE_LOCKING_STYLE.
32605
+*/
32606
+#ifndef HAVE_GETHOSTUUID
32607
+# define HAVE_GETHOSTUUID 0
32608
+# if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
32609
+ (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
32610
+# if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
32611
+ && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
32612
+# undef HAVE_GETHOSTUUID
32613
+# define HAVE_GETHOSTUUID 1
32614
+# else
32615
+# warning "gethostuuid() is disabled."
32616
+# endif
3259532617
# endif
3259632618
#endif
3259732619
3259832620
3259932621
#if OS_VXWORKS
@@ -39605,11 +39627,11 @@
3960539627
SQLITE_API int sqlite3_hostid_num = 0;
3960639628
#endif
3960739629
3960839630
#define PROXY_HOSTIDLEN 16 /* conch file host id length */
3960939631
39610
-#ifdef HAVE_GETHOSTUUID
39632
+#if HAVE_GETHOSTUUID
3961139633
/* Not always defined in the headers as it ought to be */
3961239634
extern int gethostuuid(uuid_t id, const struct timespec *wait);
3961339635
#endif
3961439636
3961539637
/* get the host ID via gethostuuid(), pHostID must point to PROXY_HOSTIDLEN
@@ -39616,11 +39638,11 @@
3961639638
** bytes of writable memory.
3961739639
*/
3961839640
static int proxyGetHostID(unsigned char *pHostID, int *pError){
3961939641
assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
3962039642
memset(pHostID, 0, PROXY_HOSTIDLEN);
39621
-#ifdef HAVE_GETHOSTUUID
39643
+#if HAVE_GETHOSTUUID
3962239644
{
3962339645
struct timespec timeout = {1, 0}; /* 1 sec timeout */
3962439646
if( gethostuuid(pHostID, &timeout) ){
3962539647
int err = errno;
3962639648
if( pError ){
@@ -84381,11 +84403,11 @@
8438184403
printf(" ir:%lld", p->u.i);
8438284404
}else if( p->flags & MEM_Int ){
8438384405
printf(" i:%lld", p->u.i);
8438484406
#ifndef SQLITE_OMIT_FLOATING_POINT
8438584407
}else if( p->flags & MEM_Real ){
84386
- printf(" r:%g", p->u.r);
84408
+ printf(" r:%.17g", p->u.r);
8438784409
#endif
8438884410
}else if( sqlite3VdbeMemIsRowSet(p) ){
8438984411
printf(" (rowset)");
8439084412
}else{
8439184413
char zBuf[200];
@@ -102445,11 +102467,12 @@
102445102467
&& pA->op!=TK_TRUEFALSE
102446102468
&& (combinedFlags & EP_Reduced)==0
102447102469
){
102448102470
if( pA->iColumn!=pB->iColumn ) return 2;
102449102471
if( pA->op2!=pB->op2 ) return 2;
102450
- if( pA->iTable!=pB->iTable
102472
+ if( pA->op!=TK_IN
102473
+ && pA->iTable!=pB->iTable
102451102474
&& (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
102452102475
}
102453102476
}
102454102477
return 0;
102455102478
}
@@ -110436,11 +110459,12 @@
110436110459
goto exit_drop_table;
110437110460
}
110438110461
}
110439110462
#endif
110440110463
if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
110441
- && sqlite3StrNICmp(pTab->zName, "sqlite_stat", 11)!=0 ){
110464
+ && sqlite3StrNICmp(pTab->zName+7, "stat", 4)!=0
110465
+ && sqlite3StrNICmp(pTab->zName+7, "parameters", 10)!=0 ){
110442110466
sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
110443110467
goto exit_drop_table;
110444110468
}
110445110469
110446110470
#ifndef SQLITE_OMIT_VIEW
@@ -121079,11 +121103,15 @@
121079121103
#endif
121080121104
/* Version 3.28.0 and later */
121081121105
sqlite3_stmt_isexplain,
121082121106
sqlite3_value_frombind,
121083121107
/* Version 3.30.0 and later */
121108
+#ifndef SQLITE_OMIT_VIRTUALTABLE
121084121109
sqlite3_drop_modules,
121110
+#else
121111
+ 0,
121112
+#endif
121085121113
};
121086121114
121087121115
/*
121088121116
** Attempt to load an SQLite extension library contained in the file
121089121117
** zFile. The entry point is zProc. zProc may be 0 in which case a
@@ -162211,10 +162239,22 @@
162211162239
#ifndef SQLITE_CORE
162212162240
/* # include "sqlite3ext.h" */
162213162241
SQLITE_EXTENSION_INIT1
162214162242
#endif
162215162243
162244
+/*
162245
+** The following are copied from sqliteInt.h.
162246
+**
162247
+** Constants for the largest and smallest possible 64-bit signed integers.
162248
+** These macros are designed to work correctly on both 32-bit and 64-bit
162249
+** compilers.
162250
+*/
162251
+#ifndef SQLITE_AMALGAMATION
162252
+# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
162253
+# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
162254
+#endif
162255
+
162216162256
static int fts3EvalNext(Fts3Cursor *pCsr);
162217162257
static int fts3EvalStart(Fts3Cursor *pCsr);
162218162258
static int fts3TermSegReaderCursor(
162219162259
Fts3Cursor *, const char *, int, int, Fts3MultiSegReader **);
162220162260
@@ -163989,14 +164029,15 @@
163989164029
}
163990164030
*ppPoslist = pEnd;
163991164031
}
163992164032
163993164033
/*
163994
-** Value used to signify the end of an position-list. This is safe because
163995
-** it is not possible to have a document with 2^31 terms.
164034
+** Value used to signify the end of an position-list. This must be
164035
+** as large or larger than any value that might appear on the
164036
+** position-list, even a position list that has been corrupted.
163996164037
*/
163997
-#define POSITION_LIST_END 0x7fffffff
164038
+#define POSITION_LIST_END LARGEST_INT64
163998164039
163999164040
/*
164000164041
** This function is used to help parse position-lists. When this function is
164001164042
** called, *pp may point to the start of the next varint in the position-list
164002164043
** being parsed, or it may point to 1 byte past the end of the position-list
@@ -164068,18 +164109,18 @@
164068164109
164069164110
if( *p1==POS_COLUMN ){
164070164111
fts3GetVarint32(&p1[1], &iCol1);
164071164112
if( iCol1==0 ) return FTS_CORRUPT_VTAB;
164072164113
}
164073
- else if( *p1==POS_END ) iCol1 = POSITION_LIST_END;
164114
+ else if( *p1==POS_END ) iCol1 = 0x7fffffff;
164074164115
else iCol1 = 0;
164075164116
164076164117
if( *p2==POS_COLUMN ){
164077164118
fts3GetVarint32(&p2[1], &iCol2);
164078164119
if( iCol2==0 ) return FTS_CORRUPT_VTAB;
164079164120
}
164080
- else if( *p2==POS_END ) iCol2 = POSITION_LIST_END;
164121
+ else if( *p2==POS_END ) iCol2 = 0x7fffffff;
164081164122
else iCol2 = 0;
164082164123
164083164124
if( iCol1==iCol2 ){
164084164125
sqlite3_int64 i1 = 0; /* Last position from pp1 */
164085164126
sqlite3_int64 i2 = 0; /* Last position from pp2 */
@@ -165085,22 +165126,10 @@
165085165126
}
165086165127
assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
165087165128
return rc;
165088165129
}
165089165130
165090
-/*
165091
-** The following are copied from sqliteInt.h.
165092
-**
165093
-** Constants for the largest and smallest possible 64-bit signed integers.
165094
-** These macros are designed to work correctly on both 32-bit and 64-bit
165095
-** compilers.
165096
-*/
165097
-#ifndef SQLITE_AMALGAMATION
165098
-# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
165099
-# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
165100
-#endif
165101
-
165102165131
/*
165103165132
** If the numeric type of argument pVal is "integer", then return it
165104165133
** converted to a 64-bit signed integer. Otherwise, return a copy of
165105165134
** the second parameter, iDefault.
165106165135
*/
@@ -175826,18 +175855,18 @@
175826175855
memset(p, 0, sizeof(NodeReader));
175827175856
p->aNode = aNode;
175828175857
p->nNode = nNode;
175829175858
175830175859
/* Figure out if this is a leaf or an internal node. */
175831
- if( p->aNode[0] ){
175860
+ if( aNode && aNode[0] ){
175832175861
/* An internal node. */
175833175862
p->iOff = 1 + sqlite3Fts3GetVarint(&p->aNode[1], &p->iChild);
175834175863
}else{
175835175864
p->iOff = 1;
175836175865
}
175837175866
175838
- return nodeReaderNext(p);
175867
+ return aNode ? nodeReaderNext(p) : SQLITE_OK;
175839175868
}
175840175869
175841175870
/*
175842175871
** This function is called while writing an FTS segment each time a leaf o
175843175872
** node is finished and written to disk. The key (zTerm/nTerm) is guaranteed
@@ -176325,12 +176354,12 @@
176325176354
176326176355
for(i=nHeight; i>=0 && rc==SQLITE_OK; i--){
176327176356
NodeReader reader;
176328176357
pNode = &pWriter->aNodeWriter[i];
176329176358
176330
- rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
176331
- if( reader.aNode ){
176359
+ if( pNode->block.a){
176360
+ rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
176332176361
while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader);
176333176362
blobGrowBuffer(&pNode->key, reader.term.n, &rc);
176334176363
if( rc==SQLITE_OK ){
176335176364
memcpy(pNode->key.a, reader.term.a, reader.term.n);
176336176365
pNode->key.n = reader.term.n;
@@ -220236,11 +220265,11 @@
220236220265
int nArg, /* Number of args */
220237220266
sqlite3_value **apUnused /* Function arguments */
220238220267
){
220239220268
assert( nArg==0 );
220240220269
UNUSED_PARAM2(nArg, apUnused);
220241
- sqlite3_result_text(pCtx, "fts5: 2019-09-25 18:44:49 36d35dbd5a80dc4a149ed7409cc4b43712622fc4c6a8915b4fbb62fd1d6b7763", -1, SQLITE_TRANSIENT);
220270
+ sqlite3_result_text(pCtx, "fts5: 2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f", -1, SQLITE_TRANSIENT);
220242220271
}
220243220272
220244220273
/*
220245220274
** Return true if zName is the extension on one of the shadow tables used
220246220275
** by this module.
@@ -225004,12 +225033,12 @@
225004225033
}
225005225034
#endif /* SQLITE_CORE */
225006225035
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
225007225036
225008225037
/************** End of stmt.c ************************************************/
225009
-#if __LINE__!=225009
225038
+#if __LINE__!=225038
225010225039
#undef SQLITE_SOURCE_ID
225011
-#define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501dalt2"
225040
+#define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6alt2"
225012225041
#endif
225013225042
/* Return the source-id for this library */
225014225043
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
225015225044
/************************** End of sqlite3.c ******************************/
225016225045
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1165,11 +1165,11 @@
1165 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1166 ** [sqlite_version()] and [sqlite_source_id()].
1167 */
1168 #define SQLITE_VERSION "3.30.0"
1169 #define SQLITE_VERSION_NUMBER 3030000
1170 #define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501d7505"
1171
1172 /*
1173 ** CAPI3REF: Run-Time Library Version Numbers
1174 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1175 **
@@ -16171,10 +16171,11 @@
16171 #define sqlite3MutexInit() SQLITE_OK
16172 #define sqlite3MutexEnd()
16173 #define MUTEX_LOGIC(X)
16174 #else
16175 #define MUTEX_LOGIC(X) X
 
16176 #endif /* defined(SQLITE_MUTEX_OMIT) */
16177
16178 /************** End of mutex.h ***********************************************/
16179 /************** Continuing where we left off in sqliteInt.h ******************/
16180
@@ -17174,12 +17175,15 @@
17174 sqlite3 *db; /* The database connection */
17175 u8 *aSortFlags; /* Sort order for each column. */
17176 CollSeq *aColl[1]; /* Collating sequence for each term of the key */
17177 };
17178
17179 #define KEYINFO_ORDER_DESC 0x01
17180 #define KEYINFO_ORDER_BIGNULL 0x02
 
 
 
17181
17182 /*
17183 ** This object holds a record which has been parsed out into individual
17184 ** fields, for the purposes of doing a comparison.
17185 **
@@ -17505,10 +17509,11 @@
17505 #endif
17506 int iTable; /* TK_COLUMN: cursor number of table holding column
17507 ** TK_REGISTER: register number
17508 ** TK_TRIGGER: 1 -> new, 0 -> old
17509 ** EP_Unlikely: 134217728 times likelihood
 
17510 ** TK_SELECT_COLUMN: Number of columns on the LHS
17511 ** TK_SELECT: 1st register of result vector */
17512 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
17513 ** TK_VARIABLE: variable number (always >= 1).
17514 ** TK_SELECT_COLUMN: column of the result vector */
@@ -29226,13 +29231,14 @@
29226 break;
29227 }
29228
29229 case TK_COLLATE: {
29230 /* COLLATE operators without the EP_Collate flag are intended to
29231 ** emulate collation associated with a table column. Explicit
29232 ** COLLATE operators that appear in the original SQL always have
29233 ** the EP_Collate bit set */
 
29234 sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
29235 !ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
29236 pExpr->u.zToken, zFlgs);
29237 sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
29238 break;
@@ -32583,17 +32589,33 @@
32583 /* # include <sys/ioctl.h> */
32584 # include <sys/file.h>
32585 # include <sys/param.h>
32586 #endif /* SQLITE_ENABLE_LOCKING_STYLE */
32587
32588 #if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
32589 (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
32590 # if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
32591 && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
32592 # define HAVE_GETHOSTUUID 1
32593 # else
32594 # warning "gethostuuid() is disabled."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32595 # endif
32596 #endif
32597
32598
32599 #if OS_VXWORKS
@@ -39605,11 +39627,11 @@
39605 SQLITE_API int sqlite3_hostid_num = 0;
39606 #endif
39607
39608 #define PROXY_HOSTIDLEN 16 /* conch file host id length */
39609
39610 #ifdef HAVE_GETHOSTUUID
39611 /* Not always defined in the headers as it ought to be */
39612 extern int gethostuuid(uuid_t id, const struct timespec *wait);
39613 #endif
39614
39615 /* get the host ID via gethostuuid(), pHostID must point to PROXY_HOSTIDLEN
@@ -39616,11 +39638,11 @@
39616 ** bytes of writable memory.
39617 */
39618 static int proxyGetHostID(unsigned char *pHostID, int *pError){
39619 assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
39620 memset(pHostID, 0, PROXY_HOSTIDLEN);
39621 #ifdef HAVE_GETHOSTUUID
39622 {
39623 struct timespec timeout = {1, 0}; /* 1 sec timeout */
39624 if( gethostuuid(pHostID, &timeout) ){
39625 int err = errno;
39626 if( pError ){
@@ -84381,11 +84403,11 @@
84381 printf(" ir:%lld", p->u.i);
84382 }else if( p->flags & MEM_Int ){
84383 printf(" i:%lld", p->u.i);
84384 #ifndef SQLITE_OMIT_FLOATING_POINT
84385 }else if( p->flags & MEM_Real ){
84386 printf(" r:%g", p->u.r);
84387 #endif
84388 }else if( sqlite3VdbeMemIsRowSet(p) ){
84389 printf(" (rowset)");
84390 }else{
84391 char zBuf[200];
@@ -102445,11 +102467,12 @@
102445 && pA->op!=TK_TRUEFALSE
102446 && (combinedFlags & EP_Reduced)==0
102447 ){
102448 if( pA->iColumn!=pB->iColumn ) return 2;
102449 if( pA->op2!=pB->op2 ) return 2;
102450 if( pA->iTable!=pB->iTable
 
102451 && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
102452 }
102453 }
102454 return 0;
102455 }
@@ -110436,11 +110459,12 @@
110436 goto exit_drop_table;
110437 }
110438 }
110439 #endif
110440 if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
110441 && sqlite3StrNICmp(pTab->zName, "sqlite_stat", 11)!=0 ){
 
110442 sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
110443 goto exit_drop_table;
110444 }
110445
110446 #ifndef SQLITE_OMIT_VIEW
@@ -121079,11 +121103,15 @@
121079 #endif
121080 /* Version 3.28.0 and later */
121081 sqlite3_stmt_isexplain,
121082 sqlite3_value_frombind,
121083 /* Version 3.30.0 and later */
 
121084 sqlite3_drop_modules,
 
 
 
121085 };
121086
121087 /*
121088 ** Attempt to load an SQLite extension library contained in the file
121089 ** zFile. The entry point is zProc. zProc may be 0 in which case a
@@ -162211,10 +162239,22 @@
162211 #ifndef SQLITE_CORE
162212 /* # include "sqlite3ext.h" */
162213 SQLITE_EXTENSION_INIT1
162214 #endif
162215
 
 
 
 
 
 
 
 
 
 
 
 
162216 static int fts3EvalNext(Fts3Cursor *pCsr);
162217 static int fts3EvalStart(Fts3Cursor *pCsr);
162218 static int fts3TermSegReaderCursor(
162219 Fts3Cursor *, const char *, int, int, Fts3MultiSegReader **);
162220
@@ -163989,14 +164029,15 @@
163989 }
163990 *ppPoslist = pEnd;
163991 }
163992
163993 /*
163994 ** Value used to signify the end of an position-list. This is safe because
163995 ** it is not possible to have a document with 2^31 terms.
 
163996 */
163997 #define POSITION_LIST_END 0x7fffffff
163998
163999 /*
164000 ** This function is used to help parse position-lists. When this function is
164001 ** called, *pp may point to the start of the next varint in the position-list
164002 ** being parsed, or it may point to 1 byte past the end of the position-list
@@ -164068,18 +164109,18 @@
164068
164069 if( *p1==POS_COLUMN ){
164070 fts3GetVarint32(&p1[1], &iCol1);
164071 if( iCol1==0 ) return FTS_CORRUPT_VTAB;
164072 }
164073 else if( *p1==POS_END ) iCol1 = POSITION_LIST_END;
164074 else iCol1 = 0;
164075
164076 if( *p2==POS_COLUMN ){
164077 fts3GetVarint32(&p2[1], &iCol2);
164078 if( iCol2==0 ) return FTS_CORRUPT_VTAB;
164079 }
164080 else if( *p2==POS_END ) iCol2 = POSITION_LIST_END;
164081 else iCol2 = 0;
164082
164083 if( iCol1==iCol2 ){
164084 sqlite3_int64 i1 = 0; /* Last position from pp1 */
164085 sqlite3_int64 i2 = 0; /* Last position from pp2 */
@@ -165085,22 +165126,10 @@
165085 }
165086 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
165087 return rc;
165088 }
165089
165090 /*
165091 ** The following are copied from sqliteInt.h.
165092 **
165093 ** Constants for the largest and smallest possible 64-bit signed integers.
165094 ** These macros are designed to work correctly on both 32-bit and 64-bit
165095 ** compilers.
165096 */
165097 #ifndef SQLITE_AMALGAMATION
165098 # define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
165099 # define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
165100 #endif
165101
165102 /*
165103 ** If the numeric type of argument pVal is "integer", then return it
165104 ** converted to a 64-bit signed integer. Otherwise, return a copy of
165105 ** the second parameter, iDefault.
165106 */
@@ -175826,18 +175855,18 @@
175826 memset(p, 0, sizeof(NodeReader));
175827 p->aNode = aNode;
175828 p->nNode = nNode;
175829
175830 /* Figure out if this is a leaf or an internal node. */
175831 if( p->aNode[0] ){
175832 /* An internal node. */
175833 p->iOff = 1 + sqlite3Fts3GetVarint(&p->aNode[1], &p->iChild);
175834 }else{
175835 p->iOff = 1;
175836 }
175837
175838 return nodeReaderNext(p);
175839 }
175840
175841 /*
175842 ** This function is called while writing an FTS segment each time a leaf o
175843 ** node is finished and written to disk. The key (zTerm/nTerm) is guaranteed
@@ -176325,12 +176354,12 @@
176325
176326 for(i=nHeight; i>=0 && rc==SQLITE_OK; i--){
176327 NodeReader reader;
176328 pNode = &pWriter->aNodeWriter[i];
176329
176330 rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
176331 if( reader.aNode ){
176332 while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader);
176333 blobGrowBuffer(&pNode->key, reader.term.n, &rc);
176334 if( rc==SQLITE_OK ){
176335 memcpy(pNode->key.a, reader.term.a, reader.term.n);
176336 pNode->key.n = reader.term.n;
@@ -220236,11 +220265,11 @@
220236 int nArg, /* Number of args */
220237 sqlite3_value **apUnused /* Function arguments */
220238 ){
220239 assert( nArg==0 );
220240 UNUSED_PARAM2(nArg, apUnused);
220241 sqlite3_result_text(pCtx, "fts5: 2019-09-25 18:44:49 36d35dbd5a80dc4a149ed7409cc4b43712622fc4c6a8915b4fbb62fd1d6b7763", -1, SQLITE_TRANSIENT);
220242 }
220243
220244 /*
220245 ** Return true if zName is the extension on one of the shadow tables used
220246 ** by this module.
@@ -225004,12 +225033,12 @@
225004 }
225005 #endif /* SQLITE_CORE */
225006 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
225007
225008 /************** End of stmt.c ************************************************/
225009 #if __LINE__!=225009
225010 #undef SQLITE_SOURCE_ID
225011 #define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501dalt2"
225012 #endif
225013 /* Return the source-id for this library */
225014 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
225015 /************************** End of sqlite3.c ******************************/
225016
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -1165,11 +1165,11 @@
1165 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
1166 ** [sqlite_version()] and [sqlite_source_id()].
1167 */
1168 #define SQLITE_VERSION "3.30.0"
1169 #define SQLITE_VERSION_NUMBER 3030000
1170 #define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f"
1171
1172 /*
1173 ** CAPI3REF: Run-Time Library Version Numbers
1174 ** KEYWORDS: sqlite3_version sqlite3_sourceid
1175 **
@@ -16171,10 +16171,11 @@
16171 #define sqlite3MutexInit() SQLITE_OK
16172 #define sqlite3MutexEnd()
16173 #define MUTEX_LOGIC(X)
16174 #else
16175 #define MUTEX_LOGIC(X) X
16176 SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
16177 #endif /* defined(SQLITE_MUTEX_OMIT) */
16178
16179 /************** End of mutex.h ***********************************************/
16180 /************** Continuing where we left off in sqliteInt.h ******************/
16181
@@ -17174,12 +17175,15 @@
17175 sqlite3 *db; /* The database connection */
17176 u8 *aSortFlags; /* Sort order for each column. */
17177 CollSeq *aColl[1]; /* Collating sequence for each term of the key */
17178 };
17179
17180 /*
17181 ** Allowed bit values for entries in the KeyInfo.aSortFlags[] array.
17182 */
17183 #define KEYINFO_ORDER_DESC 0x01 /* DESC sort order */
17184 #define KEYINFO_ORDER_BIGNULL 0x02 /* NULL is larger than any other value */
17185
17186 /*
17187 ** This object holds a record which has been parsed out into individual
17188 ** fields, for the purposes of doing a comparison.
17189 **
@@ -17505,10 +17509,11 @@
17509 #endif
17510 int iTable; /* TK_COLUMN: cursor number of table holding column
17511 ** TK_REGISTER: register number
17512 ** TK_TRIGGER: 1 -> new, 0 -> old
17513 ** EP_Unlikely: 134217728 times likelihood
17514 ** TK_IN: ephemerial table holding RHS
17515 ** TK_SELECT_COLUMN: Number of columns on the LHS
17516 ** TK_SELECT: 1st register of result vector */
17517 ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
17518 ** TK_VARIABLE: variable number (always >= 1).
17519 ** TK_SELECT_COLUMN: column of the result vector */
@@ -29226,13 +29231,14 @@
29231 break;
29232 }
29233
29234 case TK_COLLATE: {
29235 /* COLLATE operators without the EP_Collate flag are intended to
29236 ** emulate collation associated with a table column. These show
29237 ** up in the treeview output as "SOFT-COLLATE". Explicit COLLATE
29238 ** operators that appear in the original SQL always have the
29239 ** EP_Collate bit set and appear in treeview output as just "COLLATE" */
29240 sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
29241 !ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
29242 pExpr->u.zToken, zFlgs);
29243 sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
29244 break;
@@ -32583,17 +32589,33 @@
32589 /* # include <sys/ioctl.h> */
32590 # include <sys/file.h>
32591 # include <sys/param.h>
32592 #endif /* SQLITE_ENABLE_LOCKING_STYLE */
32593
32594 /*
32595 ** Try to determine if gethostuuid() is available based on standard
32596 ** macros. This might sometimes compute the wrong value for some
32597 ** obscure platforms. For those cases, simply compile with one of
32598 ** the following:
32599 **
32600 ** -DHAVE_GETHOSTUUID=0
32601 ** -DHAVE_GETHOSTUUID=1
32602 **
32603 ** None if this matters except when building on Apple products with
32604 ** -DSQLITE_ENABLE_LOCKING_STYLE.
32605 */
32606 #ifndef HAVE_GETHOSTUUID
32607 # define HAVE_GETHOSTUUID 0
32608 # if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
32609 (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
32610 # if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
32611 && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
32612 # undef HAVE_GETHOSTUUID
32613 # define HAVE_GETHOSTUUID 1
32614 # else
32615 # warning "gethostuuid() is disabled."
32616 # endif
32617 # endif
32618 #endif
32619
32620
32621 #if OS_VXWORKS
@@ -39605,11 +39627,11 @@
39627 SQLITE_API int sqlite3_hostid_num = 0;
39628 #endif
39629
39630 #define PROXY_HOSTIDLEN 16 /* conch file host id length */
39631
39632 #if HAVE_GETHOSTUUID
39633 /* Not always defined in the headers as it ought to be */
39634 extern int gethostuuid(uuid_t id, const struct timespec *wait);
39635 #endif
39636
39637 /* get the host ID via gethostuuid(), pHostID must point to PROXY_HOSTIDLEN
@@ -39616,11 +39638,11 @@
39638 ** bytes of writable memory.
39639 */
39640 static int proxyGetHostID(unsigned char *pHostID, int *pError){
39641 assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
39642 memset(pHostID, 0, PROXY_HOSTIDLEN);
39643 #if HAVE_GETHOSTUUID
39644 {
39645 struct timespec timeout = {1, 0}; /* 1 sec timeout */
39646 if( gethostuuid(pHostID, &timeout) ){
39647 int err = errno;
39648 if( pError ){
@@ -84381,11 +84403,11 @@
84403 printf(" ir:%lld", p->u.i);
84404 }else if( p->flags & MEM_Int ){
84405 printf(" i:%lld", p->u.i);
84406 #ifndef SQLITE_OMIT_FLOATING_POINT
84407 }else if( p->flags & MEM_Real ){
84408 printf(" r:%.17g", p->u.r);
84409 #endif
84410 }else if( sqlite3VdbeMemIsRowSet(p) ){
84411 printf(" (rowset)");
84412 }else{
84413 char zBuf[200];
@@ -102445,11 +102467,12 @@
102467 && pA->op!=TK_TRUEFALSE
102468 && (combinedFlags & EP_Reduced)==0
102469 ){
102470 if( pA->iColumn!=pB->iColumn ) return 2;
102471 if( pA->op2!=pB->op2 ) return 2;
102472 if( pA->op!=TK_IN
102473 && pA->iTable!=pB->iTable
102474 && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
102475 }
102476 }
102477 return 0;
102478 }
@@ -110436,11 +110459,12 @@
110459 goto exit_drop_table;
110460 }
110461 }
110462 #endif
110463 if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
110464 && sqlite3StrNICmp(pTab->zName+7, "stat", 4)!=0
110465 && sqlite3StrNICmp(pTab->zName+7, "parameters", 10)!=0 ){
110466 sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
110467 goto exit_drop_table;
110468 }
110469
110470 #ifndef SQLITE_OMIT_VIEW
@@ -121079,11 +121103,15 @@
121103 #endif
121104 /* Version 3.28.0 and later */
121105 sqlite3_stmt_isexplain,
121106 sqlite3_value_frombind,
121107 /* Version 3.30.0 and later */
121108 #ifndef SQLITE_OMIT_VIRTUALTABLE
121109 sqlite3_drop_modules,
121110 #else
121111 0,
121112 #endif
121113 };
121114
121115 /*
121116 ** Attempt to load an SQLite extension library contained in the file
121117 ** zFile. The entry point is zProc. zProc may be 0 in which case a
@@ -162211,10 +162239,22 @@
162239 #ifndef SQLITE_CORE
162240 /* # include "sqlite3ext.h" */
162241 SQLITE_EXTENSION_INIT1
162242 #endif
162243
162244 /*
162245 ** The following are copied from sqliteInt.h.
162246 **
162247 ** Constants for the largest and smallest possible 64-bit signed integers.
162248 ** These macros are designed to work correctly on both 32-bit and 64-bit
162249 ** compilers.
162250 */
162251 #ifndef SQLITE_AMALGAMATION
162252 # define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
162253 # define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
162254 #endif
162255
162256 static int fts3EvalNext(Fts3Cursor *pCsr);
162257 static int fts3EvalStart(Fts3Cursor *pCsr);
162258 static int fts3TermSegReaderCursor(
162259 Fts3Cursor *, const char *, int, int, Fts3MultiSegReader **);
162260
@@ -163989,14 +164029,15 @@
164029 }
164030 *ppPoslist = pEnd;
164031 }
164032
164033 /*
164034 ** Value used to signify the end of an position-list. This must be
164035 ** as large or larger than any value that might appear on the
164036 ** position-list, even a position list that has been corrupted.
164037 */
164038 #define POSITION_LIST_END LARGEST_INT64
164039
164040 /*
164041 ** This function is used to help parse position-lists. When this function is
164042 ** called, *pp may point to the start of the next varint in the position-list
164043 ** being parsed, or it may point to 1 byte past the end of the position-list
@@ -164068,18 +164109,18 @@
164109
164110 if( *p1==POS_COLUMN ){
164111 fts3GetVarint32(&p1[1], &iCol1);
164112 if( iCol1==0 ) return FTS_CORRUPT_VTAB;
164113 }
164114 else if( *p1==POS_END ) iCol1 = 0x7fffffff;
164115 else iCol1 = 0;
164116
164117 if( *p2==POS_COLUMN ){
164118 fts3GetVarint32(&p2[1], &iCol2);
164119 if( iCol2==0 ) return FTS_CORRUPT_VTAB;
164120 }
164121 else if( *p2==POS_END ) iCol2 = 0x7fffffff;
164122 else iCol2 = 0;
164123
164124 if( iCol1==iCol2 ){
164125 sqlite3_int64 i1 = 0; /* Last position from pp1 */
164126 sqlite3_int64 i2 = 0; /* Last position from pp2 */
@@ -165085,22 +165126,10 @@
165126 }
165127 assert( ((Fts3Table *)pCsr->base.pVtab)->pSegments==0 );
165128 return rc;
165129 }
165130
 
 
 
 
 
 
 
 
 
 
 
 
165131 /*
165132 ** If the numeric type of argument pVal is "integer", then return it
165133 ** converted to a 64-bit signed integer. Otherwise, return a copy of
165134 ** the second parameter, iDefault.
165135 */
@@ -175826,18 +175855,18 @@
175855 memset(p, 0, sizeof(NodeReader));
175856 p->aNode = aNode;
175857 p->nNode = nNode;
175858
175859 /* Figure out if this is a leaf or an internal node. */
175860 if( aNode && aNode[0] ){
175861 /* An internal node. */
175862 p->iOff = 1 + sqlite3Fts3GetVarint(&p->aNode[1], &p->iChild);
175863 }else{
175864 p->iOff = 1;
175865 }
175866
175867 return aNode ? nodeReaderNext(p) : SQLITE_OK;
175868 }
175869
175870 /*
175871 ** This function is called while writing an FTS segment each time a leaf o
175872 ** node is finished and written to disk. The key (zTerm/nTerm) is guaranteed
@@ -176325,12 +176354,12 @@
176354
176355 for(i=nHeight; i>=0 && rc==SQLITE_OK; i--){
176356 NodeReader reader;
176357 pNode = &pWriter->aNodeWriter[i];
176358
176359 if( pNode->block.a){
176360 rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
176361 while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader);
176362 blobGrowBuffer(&pNode->key, reader.term.n, &rc);
176363 if( rc==SQLITE_OK ){
176364 memcpy(pNode->key.a, reader.term.a, reader.term.n);
176365 pNode->key.n = reader.term.n;
@@ -220236,11 +220265,11 @@
220265 int nArg, /* Number of args */
220266 sqlite3_value **apUnused /* Function arguments */
220267 ){
220268 assert( nArg==0 );
220269 UNUSED_PARAM2(nArg, apUnused);
220270 sqlite3_result_text(pCtx, "fts5: 2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f", -1, SQLITE_TRANSIENT);
220271 }
220272
220273 /*
220274 ** Return true if zName is the extension on one of the shadow tables used
220275 ** by this module.
@@ -225004,12 +225033,12 @@
225033 }
225034 #endif /* SQLITE_CORE */
225035 #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
225036
225037 /************** End of stmt.c ************************************************/
225038 #if __LINE__!=225038
225039 #undef SQLITE_SOURCE_ID
225040 #define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6alt2"
225041 #endif
225042 /* Return the source-id for this library */
225043 SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
225044 /************************** End of sqlite3.c ******************************/
225045
+1 -1
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123123
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124124
** [sqlite_version()] and [sqlite_source_id()].
125125
*/
126126
#define SQLITE_VERSION "3.30.0"
127127
#define SQLITE_VERSION_NUMBER 3030000
128
-#define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501d7505"
128
+#define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f"
129129
130130
/*
131131
** CAPI3REF: Run-Time Library Version Numbers
132132
** KEYWORDS: sqlite3_version sqlite3_sourceid
133133
**
134134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.30.0"
127 #define SQLITE_VERSION_NUMBER 3030000
128 #define SQLITE_SOURCE_ID "2019-09-26 16:57:42 49073b7003330027303c4c776e9f85112f8b99b89f848fec3f953eba501d7505"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
--- src/sqlite3.h
+++ src/sqlite3.h
@@ -123,11 +123,11 @@
123 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
124 ** [sqlite_version()] and [sqlite_source_id()].
125 */
126 #define SQLITE_VERSION "3.30.0"
127 #define SQLITE_VERSION_NUMBER 3030000
128 #define SQLITE_SOURCE_ID "2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f"
129
130 /*
131 ** CAPI3REF: Run-Time Library Version Numbers
132 ** KEYWORDS: sqlite3_version sqlite3_sourceid
133 **
134
+20 -18
--- src/wiki.c
+++ src/wiki.c
@@ -1495,10 +1495,11 @@
14951495
|| strncmp(g.argv[2],"create",n)==0 ){
14961496
const char *zPageName; /* page name */
14971497
Blob content; /* Input content */
14981498
int rid = 0;
14991499
Manifest *pWiki = 0; /* Parsed wiki page content */
1500
+ const int isCreate = 'r'==g.argv[2][1] /* else "commit" */;
15001501
const char *zMimeType = find_option("mimetype", "M", 1);
15011502
const char *zETime = find_option("technote", "t", 1);
15021503
const char *zTags = find_option("technote-tags", NULL, 1);
15031504
const char *zClr = find_option("technote-bgcolor", NULL, 1);
15041505
if( g.argc!=4 && g.argc!=5 ){
@@ -1509,42 +1510,43 @@
15091510
zPageName = g.argv[3];
15101511
if( g.argc==4 ){
15111512
blob_read_from_channel(&content, stdin, -1);
15121513
}else{
15131514
blob_read_from_file(&content, g.argv[4], ExtFILE);
1515
+ }
1516
+ if ( !zETime ){
1517
+ rid = db_int(0, "SELECT x.rid FROM tag t, tagxref x"
1518
+ " WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
1519
+ " ORDER BY x.mtime DESC LIMIT 1",
1520
+ zPageName
1521
+ );
1522
+ if( rid>0 ){
1523
+ pWiki = manifest_get(rid, CFTYPE_WIKI, 0);
1524
+ }
1525
+ }else{
1526
+ rid = wiki_technote_to_rid(zETime);
1527
+ if( rid>0 ){
1528
+ pWiki = manifest_get(rid, CFTYPE_EVENT, 0);
1529
+ }
15141530
}
15151531
if( !zMimeType || !*zMimeType ){
15161532
/* Try to deduce the mime type based on the prior version. */
1517
- if ( !zETime ){
1518
- rid = db_int(0, "SELECT x.rid FROM tag t, tagxref x"
1519
- " WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
1520
- " ORDER BY x.mtime DESC LIMIT 1",
1521
- zPageName
1522
- );
1523
- if( rid>0 && (pWiki = manifest_get(rid, CFTYPE_WIKI, 0))!=0
1524
- && (pWiki->zMimetype && *pWiki->zMimetype) ){
1525
- zMimeType = pWiki->zMimetype;
1526
- }
1527
- }else{
1528
- rid = wiki_technote_to_rid(zETime);
1529
- if( rid>0 && (pWiki = manifest_get(rid, CFTYPE_EVENT, 0))!=0
1530
- && (pWiki->zMimetype && *pWiki->zMimetype) ){
1531
- zMimeType = pWiki->zMimetype;
1532
- }
1533
+ if( pWiki!=0 && (pWiki->zMimetype && *pWiki->zMimetype) ){
1534
+ zMimeType = pWiki->zMimetype;
15331535
}
15341536
}else{
15351537
zMimeType = wiki_filter_mimetypes(zMimeType);
15361538
}
1537
- if( g.argv[2][1]=='r' && rid>0 ){
1539
+ if( isCreate && rid>0 ){
15381540
if ( !zETime ){
15391541
fossil_fatal("wiki page %s already exists", zPageName);
15401542
}else{
15411543
/* Creating a tech note with same timestamp is permitted
15421544
and should create a new tech note */
15431545
rid = 0;
15441546
}
1545
- }else if( g.argv[2][1]=='o' && rid == 0 ){
1547
+ }else if( !isCreate && rid == 0 ){
15461548
if ( !zETime ){
15471549
fossil_fatal("no such wiki page: %s", zPageName);
15481550
}else{
15491551
fossil_fatal("no such tech note: %s", zETime);
15501552
}
15511553
--- src/wiki.c
+++ src/wiki.c
@@ -1495,10 +1495,11 @@
1495 || strncmp(g.argv[2],"create",n)==0 ){
1496 const char *zPageName; /* page name */
1497 Blob content; /* Input content */
1498 int rid = 0;
1499 Manifest *pWiki = 0; /* Parsed wiki page content */
 
1500 const char *zMimeType = find_option("mimetype", "M", 1);
1501 const char *zETime = find_option("technote", "t", 1);
1502 const char *zTags = find_option("technote-tags", NULL, 1);
1503 const char *zClr = find_option("technote-bgcolor", NULL, 1);
1504 if( g.argc!=4 && g.argc!=5 ){
@@ -1509,42 +1510,43 @@
1509 zPageName = g.argv[3];
1510 if( g.argc==4 ){
1511 blob_read_from_channel(&content, stdin, -1);
1512 }else{
1513 blob_read_from_file(&content, g.argv[4], ExtFILE);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1514 }
1515 if( !zMimeType || !*zMimeType ){
1516 /* Try to deduce the mime type based on the prior version. */
1517 if ( !zETime ){
1518 rid = db_int(0, "SELECT x.rid FROM tag t, tagxref x"
1519 " WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
1520 " ORDER BY x.mtime DESC LIMIT 1",
1521 zPageName
1522 );
1523 if( rid>0 && (pWiki = manifest_get(rid, CFTYPE_WIKI, 0))!=0
1524 && (pWiki->zMimetype && *pWiki->zMimetype) ){
1525 zMimeType = pWiki->zMimetype;
1526 }
1527 }else{
1528 rid = wiki_technote_to_rid(zETime);
1529 if( rid>0 && (pWiki = manifest_get(rid, CFTYPE_EVENT, 0))!=0
1530 && (pWiki->zMimetype && *pWiki->zMimetype) ){
1531 zMimeType = pWiki->zMimetype;
1532 }
1533 }
1534 }else{
1535 zMimeType = wiki_filter_mimetypes(zMimeType);
1536 }
1537 if( g.argv[2][1]=='r' && rid>0 ){
1538 if ( !zETime ){
1539 fossil_fatal("wiki page %s already exists", zPageName);
1540 }else{
1541 /* Creating a tech note with same timestamp is permitted
1542 and should create a new tech note */
1543 rid = 0;
1544 }
1545 }else if( g.argv[2][1]=='o' && rid == 0 ){
1546 if ( !zETime ){
1547 fossil_fatal("no such wiki page: %s", zPageName);
1548 }else{
1549 fossil_fatal("no such tech note: %s", zETime);
1550 }
1551
--- src/wiki.c
+++ src/wiki.c
@@ -1495,10 +1495,11 @@
1495 || strncmp(g.argv[2],"create",n)==0 ){
1496 const char *zPageName; /* page name */
1497 Blob content; /* Input content */
1498 int rid = 0;
1499 Manifest *pWiki = 0; /* Parsed wiki page content */
1500 const int isCreate = 'r'==g.argv[2][1] /* else "commit" */;
1501 const char *zMimeType = find_option("mimetype", "M", 1);
1502 const char *zETime = find_option("technote", "t", 1);
1503 const char *zTags = find_option("technote-tags", NULL, 1);
1504 const char *zClr = find_option("technote-bgcolor", NULL, 1);
1505 if( g.argc!=4 && g.argc!=5 ){
@@ -1509,42 +1510,43 @@
1510 zPageName = g.argv[3];
1511 if( g.argc==4 ){
1512 blob_read_from_channel(&content, stdin, -1);
1513 }else{
1514 blob_read_from_file(&content, g.argv[4], ExtFILE);
1515 }
1516 if ( !zETime ){
1517 rid = db_int(0, "SELECT x.rid FROM tag t, tagxref x"
1518 " WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
1519 " ORDER BY x.mtime DESC LIMIT 1",
1520 zPageName
1521 );
1522 if( rid>0 ){
1523 pWiki = manifest_get(rid, CFTYPE_WIKI, 0);
1524 }
1525 }else{
1526 rid = wiki_technote_to_rid(zETime);
1527 if( rid>0 ){
1528 pWiki = manifest_get(rid, CFTYPE_EVENT, 0);
1529 }
1530 }
1531 if( !zMimeType || !*zMimeType ){
1532 /* Try to deduce the mime type based on the prior version. */
1533 if( pWiki!=0 && (pWiki->zMimetype && *pWiki->zMimetype) ){
1534 zMimeType = pWiki->zMimetype;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1535 }
1536 }else{
1537 zMimeType = wiki_filter_mimetypes(zMimeType);
1538 }
1539 if( isCreate && rid>0 ){
1540 if ( !zETime ){
1541 fossil_fatal("wiki page %s already exists", zPageName);
1542 }else{
1543 /* Creating a tech note with same timestamp is permitted
1544 and should create a new tech note */
1545 rid = 0;
1546 }
1547 }else if( !isCreate && rid == 0 ){
1548 if ( !zETime ){
1549 fossil_fatal("no such wiki page: %s", zPageName);
1550 }else{
1551 fossil_fatal("no such tech note: %s", zETime);
1552 }
1553
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,9 +1,9 @@
11
<title>Change Log</title>
22
33
<a name='v2_10'></a>
4
-<h2>Changes for Version 2.10 (pending)</h2>
4
+<h2>Changes for Version 2.10 (2019-10-04)</h2>
55
66
* Added support for [./serverext.wiki|CGI-based Server Extensions].
77
* Added the [/help?cmd=repolist-skin|repolist-skin] setting used to
88
add style to repository list pages.
99
* Enhance the hierarchical display of Forum threads to do less
1010
1111
ADDED www/javascript.md
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,9 +1,9 @@
1 <title>Change Log</title>
2
3 <a name='v2_10'></a>
4 <h2>Changes for Version 2.10 (pending)</h2>
5
6 * Added support for [./serverext.wiki|CGI-based Server Extensions].
7 * Added the [/help?cmd=repolist-skin|repolist-skin] setting used to
8 add style to repository list pages.
9 * Enhance the hierarchical display of Forum threads to do less
10
11 DDED www/javascript.md
--- www/changes.wiki
+++ www/changes.wiki
@@ -1,9 +1,9 @@
1 <title>Change Log</title>
2
3 <a name='v2_10'></a>
4 <h2>Changes for Version 2.10 (2019-10-04)</h2>
5
6 * Added support for [./serverext.wiki|CGI-based Server Extensions].
7 * Added the [/help?cmd=repolist-skin|repolist-skin] setting used to
8 add style to repository list pages.
9 * Enhance the hierarchical display of Forum threads to do less
10
11 DDED www/javascript.md
--- a/www/javascript.md
+++ b/www/javascript.md
@@ -0,0 +1,223 @@
1
+# Use of JavaScri
2
+
3
+T will eded functiment project’s policy is to use JavaScript where it
4
+helps make its web UI better, but to offer graceful fallbacks wherever
5
+practical. The intent is that the UI be usable with JavaScript entirely
6
+disabled. In every placeabled. In almost all places wh it is an
7
+enhancement to provided functio another way
8
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
9
+[below](#debate), JavaScript, the
10
+ rrelativelye remainder of this document will eded functio another way
11
+to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
12
+ S as it
13
+ a
14
+...e of JavaScript in Fossil
15
+
16
+## Philo in Fossil
17
+
18
+block"></a>Blocking Javwholesale or give up on blocking
19
+entirely, we recommend that you use] to selectively productively,
20
+as it was intended.Use of JavaScript in Fossil
21
+
22
+## Philosophy & Policy
23
+
24
+The Fossil developmeipt in Fossil
25
+
26
+## Philosophy & Policy
27
+
28
+The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
29
+
30
+## Philosophy & Policy
31
+
32
+The Fossil developmel
33
+
34
+## Philosophy &se JavaScript where it
35
+helps mak, soaScript where it
36
+helps make its web UI better, but to offer graceful fallbacks wherever
37
+practical. The intent is that the UI be usable with JavaScript entirely
38
+disabled. In every placeabled. In almost all places wh it is an
39
+enhancement to provided functio another way
40
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
41
+[below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
42
+
43
+There are several studies that have directly measured the web audience
44
+
45
+z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
46
+z@2ti,11@2uk,8: expect
47
+v@2vx,L@BW,n@2xF,E: to find that
48
+r@2yJ,F: run [powerfuavaScript in Fossil
49
+
50
+## Philosophy & Policy
51
+
52
+The Fossil development project’s policy is to use JavaScript where it
53
+helps make its web UI better, but to offer graceful fallbacks wherever
54
+practical. The intent is that the UI be usable with JavaScript entirely
55
+disabled. In every placeabled. In almost all places wh it is an
56
+enhancement to provided functio another way
57
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
58
+[below](#debate), JavaScript, the
59
+ rrelativelye remainder of this document will eded functio another way
60
+to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
61
+ S as it
62
+ a
63
+...e of JavaScript in Fossil
64
+
65
+## Philo in Fossil
66
+
67
+block"></a>Blocking Javwholesale or give up on blocking
68
+entirely, we recommend that you use] to selectively productively,
69
+as it was intended.Use of JavaScript in Fossil
70
+
71
+## Philosophy & Policy
72
+
73
+The Fossil developmeipt in Fossil
74
+
75
+## Philosophy & Policy
76
+
77
+The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
78
+
79
+## Philosophy & Policy
80
+
81
+The Fossil developmel
82
+
83
+## Philosophy &56Use of JavaScript in Fossil
84
+
85
+## Philosophy & Policy
86
+
87
+The Fossil development project’s policy is to use JavaScript where it
88
+helps make its web UI better, but to offer graceful fallbacks wherever
89
+practical. The intent is that the UI be usable with JavaScript entirely
90
+disabled. In every placeabled. In almost all places wh it is an
91
+enhancement to provided functio another way
92
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
93
+[below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
94
+
95
+There are several studies that have directly measured the web audience
96
+
97
+z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
98
+z@2ti,11@2uk,8: expect
99
+v@2vx,L@BW,n@2xF,E: to find that
100
+r@2yJ,F: run [powerful
101
+j@2zS,M@2~E,7:
102
+block J@dG,H:. We suspect thata@30J,1:
103
+X@30u,b@31U,5:[s1]:s@3EB,1_@3F6,13@3Gj,e6@pe,1:"k@1To,1:"Nq@1Ua,1:"N@1rU,1:"Aj@1rt,1:"R@21f,1:"RJ@228,1:"d@2TV,1:"6b@2UA,1:"h@2_p,1:"9C@2aZ,1:"N@32B,4:haveS@32i,1:"As@33C,3Lk@3Hn,16p1o~;SS code to
104
+ SSabled. In every placeabled. In almost all places wh it is an
105
+enhancement to provided functio another way
106
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
107
+[below](#debate), JavaScript, the
108
+ rrelativelye remainder of this document will eded functio another way
109
+to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
110
+ new wiki
111
+ as it
112
+ a
113
+...e of JavaScript in Fossil
114
+
115
+## Philo in Fossil
116
+
117
+block"></a>Blocking Javwholesale or give up on blocking
118
+entirely, we recommend that you use] to selectively productively,
119
+as it was intended.Use of JavaScript in Fossil
120
+
121
+## Philosophy & Policy
122
+
123
+The Fossil developmeipt in Fossil
124
+
125
+## Philosophy & Policy
126
+
127
+The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
128
+
129
+## Philosophy & Policy
130
+
131
+The Fossil developmel
132
+
133
+## Philosophy &56Use of JavaScript in Fossil
134
+
135
+## Philosophy & Policy
136
+
137
+The Fossil development project’s policy is to use JavaScript where it
138
+helps make its web UI better, but to offer graceful fallbacks wherever
139
+practical. The intent is that the UI be usable with JavaScript entirely
140
+disabled. In every placeabled. In almost all places wh it is an
141
+enhancement to provided functio another way
142
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
143
+[below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
144
+
145
+There are several studies that have directly measured the web audience
146
+
147
+z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0WYSIWYG Wiki Editor
148
+
149
+The Admin → Wiki → “Enable WYSIWYG Wiki Editing” toggle switches the
150
+default plaintext editor for [Fossil wiki][fw] documents to one that
151
+works like a basic word processor. This featuredience
152
+
153
+z@2m1,13@2n3,in
154
+,w@2qP,1:TG@5m0,p@2re,14@2sX,4: button, meaning
155
+: expect
156
+v@2vx,L@BW,n@2xF,E: to WYSIWYG editor
157
+E,7:
158
+block J@dG,H:. We suspect straightforward
159
+q@1Ua,1:"N@the UI be usableEdit your wiki documents in the default plain text
160
+wiki editor. Fossil’s wiki and Markdown language processors were
161
+designed to be edited that way.
162
+
163
+[fw31U,5:[s1]:s@3EB,1_@3F6,13@3Gj,e6@pe,1:"k@1To,1:"Nq@1Ua,1:"N@the UI be usable with JavaScript entirely
164
+disabled. In every placeabled. provided functio in JavaScript.
165
+([Example][mainc].)e common arguments against JavaScript
166
+[below](#debate), JavaScript, the
167
+ rrela, or provide a patch to reload thavwholesale or give
168
+server round-tripy &se JavaScript where it
169
+helps mak, soaScript where it
170
+helps make its web UI better, but to offer graceful fallbacks wherever
171
+practical. The intent is that the UI be usable with JavaScript entirely
172
+disabled. In every placeabled. In almost all places wh it is an
173
+enhancement to provided functio another way
174
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
175
+[below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
176
+
177
+There are several studies that have directly measured the web audience
178
+
179
+z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
180
+z@2ti,11@2uk,8: expect
181
+v@2vx,L@BW,n@2xF,E: to find that
182
+r@2yJ,F: run [powerfuavaScript in Fossil
183
+
184
+## Philosophy & Policy
185
+
186
+The Fossil development project’s policy is to use JavaScript where it
187
+helps make its web UI better, but to offer graceful fallbacks wherever
188
+practical. The intent is that the UI be usable with JavaScript entirely
189
+disabled. In every placeabled. In almost all places wh it is an
190
+enhancement to provided functio another way
191
+to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
192
+[below](#debate), JavaScript, the
193
+ rrelativelye remainder of this document will eded functio another way
194
+to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
195
+ S as it
196
+ a
197
+...e of JavaScript in Fossil
198
+
199
+## Philo in Fossil
200
+
201
+block"></a>Blocking Javwholesale or give up on blocking
202
+entirely, we recommend that you use] to selectively productively,
203
+as it was intended.Use of JavaScript in Fossil
204
+
205
+## Philosophy & Policy
206
+
207
+The Fossil developmeipt in Fossil
208
+
209
+## Philosophy & Policy
210
+
211
+The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
212
+
213
+## Philosophy & Policy
214
+
215
+The Fossil developmel
216
+
217
+## Philosophy &56Use of JavaScript in Fossil
218
+
219
+## Philosophy & Policy
220
+
221
+The Fossil development project’s policy is to use JavaScript where it
222
+helps make its web UI better, but to offer graceful fallbacks wherever
223
+practical. The intent is that the U
--- a/www/javascript.md
+++ b/www/javascript.md
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/www/javascript.md
+++ b/www/javascript.md
@@ -0,0 +1,223 @@
1 # Use of JavaScri
2
3 T will eded functiment project’s policy is to use JavaScript where it
4 helps make its web UI better, but to offer graceful fallbacks wherever
5 practical. The intent is that the UI be usable with JavaScript entirely
6 disabled. In every placeabled. In almost all places wh it is an
7 enhancement to provided functio another way
8 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
9 [below](#debate), JavaScript, the
10 rrelativelye remainder of this document will eded functio another way
11 to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
12 S as it
13 a
14 ...e of JavaScript in Fossil
15
16 ## Philo in Fossil
17
18 block"></a>Blocking Javwholesale or give up on blocking
19 entirely, we recommend that you use] to selectively productively,
20 as it was intended.Use of JavaScript in Fossil
21
22 ## Philosophy & Policy
23
24 The Fossil developmeipt in Fossil
25
26 ## Philosophy & Policy
27
28 The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
29
30 ## Philosophy & Policy
31
32 The Fossil developmel
33
34 ## Philosophy &se JavaScript where it
35 helps mak, soaScript where it
36 helps make its web UI better, but to offer graceful fallbacks wherever
37 practical. The intent is that the UI be usable with JavaScript entirely
38 disabled. In every placeabled. In almost all places wh it is an
39 enhancement to provided functio another way
40 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
41 [below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
42
43 There are several studies that have directly measured the web audience
44
45 z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
46 z@2ti,11@2uk,8: expect
47 v@2vx,L@BW,n@2xF,E: to find that
48 r@2yJ,F: run [powerfuavaScript in Fossil
49
50 ## Philosophy & Policy
51
52 The Fossil development project’s policy is to use JavaScript where it
53 helps make its web UI better, but to offer graceful fallbacks wherever
54 practical. The intent is that the UI be usable with JavaScript entirely
55 disabled. In every placeabled. In almost all places wh it is an
56 enhancement to provided functio another way
57 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
58 [below](#debate), JavaScript, the
59 rrelativelye remainder of this document will eded functio another way
60 to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
61 S as it
62 a
63 ...e of JavaScript in Fossil
64
65 ## Philo in Fossil
66
67 block"></a>Blocking Javwholesale or give up on blocking
68 entirely, we recommend that you use] to selectively productively,
69 as it was intended.Use of JavaScript in Fossil
70
71 ## Philosophy & Policy
72
73 The Fossil developmeipt in Fossil
74
75 ## Philosophy & Policy
76
77 The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
78
79 ## Philosophy & Policy
80
81 The Fossil developmel
82
83 ## Philosophy &56Use of JavaScript in Fossil
84
85 ## Philosophy & Policy
86
87 The Fossil development project’s policy is to use JavaScript where it
88 helps make its web UI better, but to offer graceful fallbacks wherever
89 practical. The intent is that the UI be usable with JavaScript entirely
90 disabled. In every placeabled. In almost all places wh it is an
91 enhancement to provided functio another way
92 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
93 [below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
94
95 There are several studies that have directly measured the web audience
96
97 z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
98 z@2ti,11@2uk,8: expect
99 v@2vx,L@BW,n@2xF,E: to find that
100 r@2yJ,F: run [powerful
101 j@2zS,M@2~E,7:
102 block J@dG,H:. We suspect thata@30J,1:
103 X@30u,b@31U,5:[s1]:s@3EB,1_@3F6,13@3Gj,e6@pe,1:"k@1To,1:"Nq@1Ua,1:"N@1rU,1:"Aj@1rt,1:"R@21f,1:"RJ@228,1:"d@2TV,1:"6b@2UA,1:"h@2_p,1:"9C@2aZ,1:"N@32B,4:haveS@32i,1:"As@33C,3Lk@3Hn,16p1o~;SS code to
104 SSabled. In every placeabled. In almost all places wh it is an
105 enhancement to provided functio another way
106 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
107 [below](#debate), JavaScript, the
108 rrelativelye remainder of this document will eded functio another way
109 to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
110 new wiki
111 as it
112 a
113 ...e of JavaScript in Fossil
114
115 ## Philo in Fossil
116
117 block"></a>Blocking Javwholesale or give up on blocking
118 entirely, we recommend that you use] to selectively productively,
119 as it was intended.Use of JavaScript in Fossil
120
121 ## Philosophy & Policy
122
123 The Fossil developmeipt in Fossil
124
125 ## Philosophy & Policy
126
127 The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
128
129 ## Philosophy & Policy
130
131 The Fossil developmel
132
133 ## Philosophy &56Use of JavaScript in Fossil
134
135 ## Philosophy & Policy
136
137 The Fossil development project’s policy is to use JavaScript where it
138 helps make its web UI better, but to offer graceful fallbacks wherever
139 practical. The intent is that the UI be usable with JavaScript entirely
140 disabled. In every placeabled. In almost all places wh it is an
141 enhancement to provided functio another way
142 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
143 [below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
144
145 There are several studies that have directly measured the web audience
146
147 z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0WYSIWYG Wiki Editor
148
149 The Admin → Wiki → “Enable WYSIWYG Wiki Editing” toggle switches the
150 default plaintext editor for [Fossil wiki][fw] documents to one that
151 works like a basic word processor. This featuredience
152
153 z@2m1,13@2n3,in
154 ,w@2qP,1:TG@5m0,p@2re,14@2sX,4: button, meaning
155 : expect
156 v@2vx,L@BW,n@2xF,E: to WYSIWYG editor
157 E,7:
158 block J@dG,H:. We suspect straightforward
159 q@1Ua,1:"N@the UI be usableEdit your wiki documents in the default plain text
160 wiki editor. Fossil’s wiki and Markdown language processors were
161 designed to be edited that way.
162
163 [fw31U,5:[s1]:s@3EB,1_@3F6,13@3Gj,e6@pe,1:"k@1To,1:"Nq@1Ua,1:"N@the UI be usable with JavaScript entirely
164 disabled. In every placeabled. provided functio in JavaScript.
165 ([Example][mainc].)e common arguments against JavaScript
166 [below](#debate), JavaScript, the
167 rrela, or provide a patch to reload thavwholesale or give
168 server round-tripy &se JavaScript where it
169 helps mak, soaScript where it
170 helps make its web UI better, but to offer graceful fallbacks wherever
171 practical. The intent is that the UI be usable with JavaScript entirely
172 disabled. In every placeabled. In almost all places wh it is an
173 enhancement to provided functio another way
174 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
175 [below](#debate), stats"></a>How Many Users Ru Disabled Anyway?
176
177 There are several studies that have directly measured the web audience
178
179 z@2m1,13@2n3,17@2oA,10@2pL,w@2qP,1:TG@5m0,p@2re,14@2sX,4: an
180 z@2ti,11@2uk,8: expect
181 v@2vx,L@BW,n@2xF,E: to find that
182 r@2yJ,F: run [powerfuavaScript in Fossil
183
184 ## Philosophy & Policy
185
186 The Fossil development project’s policy is to use JavaScript where it
187 helps make its web UI better, but to offer graceful fallbacks wherever
188 practical. The intent is that the UI be usable with JavaScript entirely
189 disabled. In every placeabled. In almost all places wh it is an
190 enhancement to provided functio another way
191 to accomplish a given end `vi`create We cover some of the common arguments against JavaScript
192 [below](#debate), JavaScript, the
193 rrelativelye remainder of this document will eded functio another way
194 to accomplish a given end `vi`create # Use of JavaScrip, editor.) If
195 S as it
196 a
197 ...e of JavaScript in Fossil
198
199 ## Philo in Fossil
200
201 block"></a>Blocking Javwholesale or give up on blocking
202 entirely, we recommend that you use] to selectively productively,
203 as it was intended.Use of JavaScript in Fossil
204
205 ## Philosophy & Policy
206
207 The Fossil developmeipt in Fossil
208
209 ## Philosophy & Policy
210
211 The Fossil development project’s�**T�[2cbsd]:snoop"></a>Fos Use of JavaScri JavaScript in Fossil
212
213 ## Philosophy & Policy
214
215 The Fossil developmel
216
217 ## Philosophy &56Use of JavaScript in Fossil
218
219 ## Philosophy & Policy
220
221 The Fossil development project’s policy is to use JavaScript where it
222 helps make its web UI better, but to offer graceful fallbacks wherever
223 practical. The intent is that the U
+1 -1
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -19,11 +19,10 @@
1919
branching.wiki {Branching, Forking, Merging, and Tagging}
2020
bugtheory.wiki {Bug Tracking In Fossil}
2121
build.wiki {Compiling and Installing Fossil}
2222
caps/ {Administering User Capabilities}
2323
caps/admin-v-setup.md {Differences Between Setup and Admin Users}
24
- caps/login-groups.md {Differences Between Setup and Admin Users}
2524
caps/ref.html {User Capability Reference}
2625
cgi.wiki {CGI Script Configuration Options}
2726
changes.wiki {Fossil Changelog}
2827
checkin_names.wiki {Check-in And Version Names}
2928
checkin.wiki {Check-in Checklist}
@@ -57,10 +56,11 @@
5756
/help {Lists of Commands and Webpages}
5857
hints.wiki {Fossil Tips And Usage Hints}
5958
index.wiki {Home Page}
6059
inout.wiki {Import And Export To And From Git}
6160
image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
61
+ javascript.md {Use of JavaScript in Fossil}
6262
makefile.wiki {The Fossil Build Process}
6363
mirrorlimitations.md {Limitations On Git Mirrors}
6464
mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
6565
/md_rules {Markdown Formatting Rules}
6666
newrepo.wiki {How To Create A New Fossil Repository}
6767
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -19,11 +19,10 @@
19 branching.wiki {Branching, Forking, Merging, and Tagging}
20 bugtheory.wiki {Bug Tracking In Fossil}
21 build.wiki {Compiling and Installing Fossil}
22 caps/ {Administering User Capabilities}
23 caps/admin-v-setup.md {Differences Between Setup and Admin Users}
24 caps/login-groups.md {Differences Between Setup and Admin Users}
25 caps/ref.html {User Capability Reference}
26 cgi.wiki {CGI Script Configuration Options}
27 changes.wiki {Fossil Changelog}
28 checkin_names.wiki {Check-in And Version Names}
29 checkin.wiki {Check-in Checklist}
@@ -57,10 +56,11 @@
57 /help {Lists of Commands and Webpages}
58 hints.wiki {Fossil Tips And Usage Hints}
59 index.wiki {Home Page}
60 inout.wiki {Import And Export To And From Git}
61 image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
 
62 makefile.wiki {The Fossil Build Process}
63 mirrorlimitations.md {Limitations On Git Mirrors}
64 mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
65 /md_rules {Markdown Formatting Rules}
66 newrepo.wiki {How To Create A New Fossil Repository}
67
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -19,11 +19,10 @@
19 branching.wiki {Branching, Forking, Merging, and Tagging}
20 bugtheory.wiki {Bug Tracking In Fossil}
21 build.wiki {Compiling and Installing Fossil}
22 caps/ {Administering User Capabilities}
23 caps/admin-v-setup.md {Differences Between Setup and Admin Users}
 
24 caps/ref.html {User Capability Reference}
25 cgi.wiki {CGI Script Configuration Options}
26 changes.wiki {Fossil Changelog}
27 checkin_names.wiki {Check-in And Version Names}
28 checkin.wiki {Check-in Checklist}
@@ -57,10 +56,11 @@
56 /help {Lists of Commands and Webpages}
57 hints.wiki {Fossil Tips And Usage Hints}
58 index.wiki {Home Page}
59 inout.wiki {Import And Export To And From Git}
60 image-format-vs-repo-size.md {Image Format vs Fossil Repo Size}
61 javascript.md {Use of JavaScript in Fossil}
62 makefile.wiki {The Fossil Build Process}
63 mirrorlimitations.md {Limitations On Git Mirrors}
64 mirrortogithub.md {How To Mirror A Fossil Repository On GitHub}
65 /md_rules {Markdown Formatting Rules}
66 newrepo.wiki {How To Create A New Fossil Repository}
67
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -24,11 +24,10 @@
2424
<li><a href="fossil-from-msvc.wiki">2010 IDE &mdash; Integrating Fossil in the Microsoft Express</a></li>
2525
<li><a href="tech_overview.wiki"><b>A Technical Overview Of The Design And Implementation Of Fossil</b></a></li>
2626
<li><a href="serverext.wiki"><b>Adding Extensions To A Fossil Server Using CGI Scripts</b></a></li>
2727
<li><a href="adding_code.wiki"><b>Adding New Features To Fossil</b></a></li>
2828
<li><a href="caps/admin-v-setup.md">Admin Users &mdash; Differences Between Setup and</a></li>
29
-<li><a href="caps/login-groups.md">Admin Users &mdash; Differences Between Setup and</a></li>
3029
<li><a href="caps/"><b>Administering User Capabilities</b></a></li>
3130
<li><a href="copyright-release.html">Agreement &mdash; Contributor License</a></li>
3231
<li><a href="alerts.md">Alerts And Notifications &mdash; Email</a></li>
3332
<li><a href="delta_encoder_algorithm.wiki">Algorithm &mdash; Fossil Delta Encoding</a></li>
3433
<li><a href="blame.wiki">Algorithm Of Fossil &mdash; The Annotate/Blame</a></li>
@@ -38,11 +37,10 @@
3837
<li><a href="password.wiki">Authentication &mdash; Password Management And</a></li>
3938
<li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
4039
<li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
4140
<li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
4241
<li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
43
-<li><a href="caps/login-groups.md">Between Setup and Admin Users &mdash; Differences</a></li>
4442
<li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
4543
<li><a href="blockchain.md">Blockchain &mdash; Fossil As</a></li>
4644
<li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
4745
<li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
4846
<li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
@@ -92,11 +90,10 @@
9290
<li><a href="delta_encoder_algorithm.wiki">Delta Encoding Algorithm &mdash; Fossil</a></li>
9391
<li><a href="delta_format.wiki">Delta Format &mdash; Fossil</a></li>
9492
<li><a href="tech_overview.wiki">Design And Implementation Of Fossil &mdash; A Technical Overview Of The</a></li>
9593
<li><a href="theory1.wiki">Design Of The Fossil DVCS &mdash; Thoughts On The</a></li>
9694
<li><a href="caps/admin-v-setup.md"><b>Differences Between Setup and Admin Users</b></a></li>
97
-<li><a href="caps/login-groups.md"><b>Differences Between Setup and Admin Users</b></a></li>
9895
<li><a href="embeddeddoc.wiki">Documentation &mdash; Embedded Project</a></li>
9996
<li><a href="contribute.wiki">Documentation To The Fossil Project &mdash; Contributing Code or</a></li>
10097
<li><a href="aboutdownload.wiki">Download Page Works &mdash; How The</a></li>
10198
<li><a href="theory1.wiki">DVCS &mdash; Thoughts On The Design Of The Fossil</a></li>
10299
<li><a href="quotes.wiki">DVCSes in General &mdash; Quotes: What People Are Saying About Fossil, Git, and</a></li>
@@ -173,10 +170,11 @@
173170
<li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
174171
<li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
175172
<li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
176173
<li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
177174
<li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
175
+<li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
178176
<li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
179177
<li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
180178
<li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
181179
<li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
182180
<li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
@@ -246,11 +244,10 @@
246244
<li><a href="server/">Server &mdash; How To Configure A Fossil</a></li>
247245
<li><a href="serverext.wiki">Server Extensions &mdash; CGI</a></li>
248246
<li><a href="serverext.wiki">Server Using CGI Scripts &mdash; Adding Extensions To A Fossil</a></li>
249247
<li><a href="settings.wiki">Settings &mdash; Fossil</a></li>
250248
<li><a href="caps/admin-v-setup.md">Setup and Admin Users &mdash; Differences Between</a></li>
251
-<li><a href="caps/login-groups.md">Setup and Admin Users &mdash; Differences Between</a></li>
252249
<li><a href="hashpolicy.wiki">SHA1 and SHA3-256 &mdash; Hash Policy: Choosing Between</a></li>
253250
<li><a href="hashpolicy.wiki">SHA3-256 &mdash; Hash Policy: Choosing Between SHA1 and</a></li>
254251
<li><a href="shunning.wiki"><b>Shunning: Deleting Content From Fossil</b></a></li>
255252
<li><a href="fiveminutes.wiki">Single User &mdash; Up and Running in 5 Minutes as a</a></li>
256253
<li><a href="../../../sitemap"><b>Site Map</b></a></li>
@@ -289,15 +286,15 @@
289286
<li><a href="hints.wiki">Tips And Usage Hints &mdash; Fossil</a></li>
290287
<li><a href="bugtheory.wiki">Tracking In Fossil &mdash; Bug</a></li>
291288
<li><a href="unvers.wiki"><b>Unversioned Files</b></a></li>
292289
<li><a href="fiveminutes.wiki"><b>Up and Running in 5 Minutes as a Single User</b></a></li>
293290
<li><a href="hints.wiki">Usage Hints &mdash; Fossil Tips And</a></li>
291
+<li><a href="javascript.md"><b>Use of JavaScript in Fossil</b></a></li>
294292
<li><a href="fiveminutes.wiki">User &mdash; Up and Running in 5 Minutes as a Single</a></li>
295293
<li><a href="caps/">User Capabilities &mdash; Administering</a></li>
296294
<li><a href="caps/ref.html"><b>User Capability Reference</b></a></li>
297295
<li><a href="caps/admin-v-setup.md">Users &mdash; Differences Between Setup and Admin</a></li>
298
-<li><a href="caps/login-groups.md">Users &mdash; Differences Between Setup and Admin</a></li>
299296
<li><a href="serverext.wiki">Using CGI Scripts &mdash; Adding Extensions To A Fossil Server</a></li>
300297
<li><a href="ssl.wiki"><b>Using SSL with Fossil</b></a></li>
301298
<li><a href="env-opts.md">Variables and Global Options &mdash; Environment</a></li>
302299
<li><a href="whyusefossil.wiki">Version Control &mdash; Benefits Of</a></li>
303300
<li><a href="checkin_names.wiki">Version Names &mdash; Check-in And</a></li>
304301
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -24,11 +24,10 @@
24 <li><a href="fossil-from-msvc.wiki">2010 IDE &mdash; Integrating Fossil in the Microsoft Express</a></li>
25 <li><a href="tech_overview.wiki"><b>A Technical Overview Of The Design And Implementation Of Fossil</b></a></li>
26 <li><a href="serverext.wiki"><b>Adding Extensions To A Fossil Server Using CGI Scripts</b></a></li>
27 <li><a href="adding_code.wiki"><b>Adding New Features To Fossil</b></a></li>
28 <li><a href="caps/admin-v-setup.md">Admin Users &mdash; Differences Between Setup and</a></li>
29 <li><a href="caps/login-groups.md">Admin Users &mdash; Differences Between Setup and</a></li>
30 <li><a href="caps/"><b>Administering User Capabilities</b></a></li>
31 <li><a href="copyright-release.html">Agreement &mdash; Contributor License</a></li>
32 <li><a href="alerts.md">Alerts And Notifications &mdash; Email</a></li>
33 <li><a href="delta_encoder_algorithm.wiki">Algorithm &mdash; Fossil Delta Encoding</a></li>
34 <li><a href="blame.wiki">Algorithm Of Fossil &mdash; The Annotate/Blame</a></li>
@@ -38,11 +37,10 @@
38 <li><a href="password.wiki">Authentication &mdash; Password Management And</a></li>
39 <li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
40 <li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
41 <li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
42 <li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
43 <li><a href="caps/login-groups.md">Between Setup and Admin Users &mdash; Differences</a></li>
44 <li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
45 <li><a href="blockchain.md">Blockchain &mdash; Fossil As</a></li>
46 <li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
47 <li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
48 <li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
@@ -92,11 +90,10 @@
92 <li><a href="delta_encoder_algorithm.wiki">Delta Encoding Algorithm &mdash; Fossil</a></li>
93 <li><a href="delta_format.wiki">Delta Format &mdash; Fossil</a></li>
94 <li><a href="tech_overview.wiki">Design And Implementation Of Fossil &mdash; A Technical Overview Of The</a></li>
95 <li><a href="theory1.wiki">Design Of The Fossil DVCS &mdash; Thoughts On The</a></li>
96 <li><a href="caps/admin-v-setup.md"><b>Differences Between Setup and Admin Users</b></a></li>
97 <li><a href="caps/login-groups.md"><b>Differences Between Setup and Admin Users</b></a></li>
98 <li><a href="embeddeddoc.wiki">Documentation &mdash; Embedded Project</a></li>
99 <li><a href="contribute.wiki">Documentation To The Fossil Project &mdash; Contributing Code or</a></li>
100 <li><a href="aboutdownload.wiki">Download Page Works &mdash; How The</a></li>
101 <li><a href="theory1.wiki">DVCS &mdash; Thoughts On The Design Of The Fossil</a></li>
102 <li><a href="quotes.wiki">DVCSes in General &mdash; Quotes: What People Are Saying About Fossil, Git, and</a></li>
@@ -173,10 +170,11 @@
173 <li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
174 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
175 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
176 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
177 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
 
178 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
179 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
180 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
181 <li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
182 <li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
@@ -246,11 +244,10 @@
246 <li><a href="server/">Server &mdash; How To Configure A Fossil</a></li>
247 <li><a href="serverext.wiki">Server Extensions &mdash; CGI</a></li>
248 <li><a href="serverext.wiki">Server Using CGI Scripts &mdash; Adding Extensions To A Fossil</a></li>
249 <li><a href="settings.wiki">Settings &mdash; Fossil</a></li>
250 <li><a href="caps/admin-v-setup.md">Setup and Admin Users &mdash; Differences Between</a></li>
251 <li><a href="caps/login-groups.md">Setup and Admin Users &mdash; Differences Between</a></li>
252 <li><a href="hashpolicy.wiki">SHA1 and SHA3-256 &mdash; Hash Policy: Choosing Between</a></li>
253 <li><a href="hashpolicy.wiki">SHA3-256 &mdash; Hash Policy: Choosing Between SHA1 and</a></li>
254 <li><a href="shunning.wiki"><b>Shunning: Deleting Content From Fossil</b></a></li>
255 <li><a href="fiveminutes.wiki">Single User &mdash; Up and Running in 5 Minutes as a</a></li>
256 <li><a href="../../../sitemap"><b>Site Map</b></a></li>
@@ -289,15 +286,15 @@
289 <li><a href="hints.wiki">Tips And Usage Hints &mdash; Fossil</a></li>
290 <li><a href="bugtheory.wiki">Tracking In Fossil &mdash; Bug</a></li>
291 <li><a href="unvers.wiki"><b>Unversioned Files</b></a></li>
292 <li><a href="fiveminutes.wiki"><b>Up and Running in 5 Minutes as a Single User</b></a></li>
293 <li><a href="hints.wiki">Usage Hints &mdash; Fossil Tips And</a></li>
 
294 <li><a href="fiveminutes.wiki">User &mdash; Up and Running in 5 Minutes as a Single</a></li>
295 <li><a href="caps/">User Capabilities &mdash; Administering</a></li>
296 <li><a href="caps/ref.html"><b>User Capability Reference</b></a></li>
297 <li><a href="caps/admin-v-setup.md">Users &mdash; Differences Between Setup and Admin</a></li>
298 <li><a href="caps/login-groups.md">Users &mdash; Differences Between Setup and Admin</a></li>
299 <li><a href="serverext.wiki">Using CGI Scripts &mdash; Adding Extensions To A Fossil Server</a></li>
300 <li><a href="ssl.wiki"><b>Using SSL with Fossil</b></a></li>
301 <li><a href="env-opts.md">Variables and Global Options &mdash; Environment</a></li>
302 <li><a href="whyusefossil.wiki">Version Control &mdash; Benefits Of</a></li>
303 <li><a href="checkin_names.wiki">Version Names &mdash; Check-in And</a></li>
304
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -24,11 +24,10 @@
24 <li><a href="fossil-from-msvc.wiki">2010 IDE &mdash; Integrating Fossil in the Microsoft Express</a></li>
25 <li><a href="tech_overview.wiki"><b>A Technical Overview Of The Design And Implementation Of Fossil</b></a></li>
26 <li><a href="serverext.wiki"><b>Adding Extensions To A Fossil Server Using CGI Scripts</b></a></li>
27 <li><a href="adding_code.wiki"><b>Adding New Features To Fossil</b></a></li>
28 <li><a href="caps/admin-v-setup.md">Admin Users &mdash; Differences Between Setup and</a></li>
 
29 <li><a href="caps/"><b>Administering User Capabilities</b></a></li>
30 <li><a href="copyright-release.html">Agreement &mdash; Contributor License</a></li>
31 <li><a href="alerts.md">Alerts And Notifications &mdash; Email</a></li>
32 <li><a href="delta_encoder_algorithm.wiki">Algorithm &mdash; Fossil Delta Encoding</a></li>
33 <li><a href="blame.wiki">Algorithm Of Fossil &mdash; The Annotate/Blame</a></li>
@@ -38,11 +37,10 @@
37 <li><a href="password.wiki">Authentication &mdash; Password Management And</a></li>
38 <li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
39 <li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
40 <li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
41 <li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
 
42 <li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
43 <li><a href="blockchain.md">Blockchain &mdash; Fossil As</a></li>
44 <li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
45 <li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
46 <li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
@@ -92,11 +90,10 @@
90 <li><a href="delta_encoder_algorithm.wiki">Delta Encoding Algorithm &mdash; Fossil</a></li>
91 <li><a href="delta_format.wiki">Delta Format &mdash; Fossil</a></li>
92 <li><a href="tech_overview.wiki">Design And Implementation Of Fossil &mdash; A Technical Overview Of The</a></li>
93 <li><a href="theory1.wiki">Design Of The Fossil DVCS &mdash; Thoughts On The</a></li>
94 <li><a href="caps/admin-v-setup.md"><b>Differences Between Setup and Admin Users</b></a></li>
 
95 <li><a href="embeddeddoc.wiki">Documentation &mdash; Embedded Project</a></li>
96 <li><a href="contribute.wiki">Documentation To The Fossil Project &mdash; Contributing Code or</a></li>
97 <li><a href="aboutdownload.wiki">Download Page Works &mdash; How The</a></li>
98 <li><a href="theory1.wiki">DVCS &mdash; Thoughts On The Design Of The Fossil</a></li>
99 <li><a href="quotes.wiki">DVCSes in General &mdash; Quotes: What People Are Saying About Fossil, Git, and</a></li>
@@ -173,10 +170,11 @@
170 <li><a href="inout.wiki"><b>Import And Export To And From Git</b></a></li>
171 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
172 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
173 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
174 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
175 <li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
176 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
177 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
178 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
179 <li><a href="../../../help"><b>Lists of Commands and Webpages</b></a></li>
180 <li><a href="password.wiki">Management And Authentication &mdash; Password</a></li>
@@ -246,11 +244,10 @@
244 <li><a href="server/">Server &mdash; How To Configure A Fossil</a></li>
245 <li><a href="serverext.wiki">Server Extensions &mdash; CGI</a></li>
246 <li><a href="serverext.wiki">Server Using CGI Scripts &mdash; Adding Extensions To A Fossil</a></li>
247 <li><a href="settings.wiki">Settings &mdash; Fossil</a></li>
248 <li><a href="caps/admin-v-setup.md">Setup and Admin Users &mdash; Differences Between</a></li>
 
249 <li><a href="hashpolicy.wiki">SHA1 and SHA3-256 &mdash; Hash Policy: Choosing Between</a></li>
250 <li><a href="hashpolicy.wiki">SHA3-256 &mdash; Hash Policy: Choosing Between SHA1 and</a></li>
251 <li><a href="shunning.wiki"><b>Shunning: Deleting Content From Fossil</b></a></li>
252 <li><a href="fiveminutes.wiki">Single User &mdash; Up and Running in 5 Minutes as a</a></li>
253 <li><a href="../../../sitemap"><b>Site Map</b></a></li>
@@ -289,15 +286,15 @@
286 <li><a href="hints.wiki">Tips And Usage Hints &mdash; Fossil</a></li>
287 <li><a href="bugtheory.wiki">Tracking In Fossil &mdash; Bug</a></li>
288 <li><a href="unvers.wiki"><b>Unversioned Files</b></a></li>
289 <li><a href="fiveminutes.wiki"><b>Up and Running in 5 Minutes as a Single User</b></a></li>
290 <li><a href="hints.wiki">Usage Hints &mdash; Fossil Tips And</a></li>
291 <li><a href="javascript.md"><b>Use of JavaScript in Fossil</b></a></li>
292 <li><a href="fiveminutes.wiki">User &mdash; Up and Running in 5 Minutes as a Single</a></li>
293 <li><a href="caps/">User Capabilities &mdash; Administering</a></li>
294 <li><a href="caps/ref.html"><b>User Capability Reference</b></a></li>
295 <li><a href="caps/admin-v-setup.md">Users &mdash; Differences Between Setup and Admin</a></li>
 
296 <li><a href="serverext.wiki">Using CGI Scripts &mdash; Adding Extensions To A Fossil Server</a></li>
297 <li><a href="ssl.wiki"><b>Using SSL with Fossil</b></a></li>
298 <li><a href="env-opts.md">Variables and Global Options &mdash; Environment</a></li>
299 <li><a href="whyusefossil.wiki">Version Control &mdash; Benefits Of</a></li>
300 <li><a href="checkin_names.wiki">Version Names &mdash; Check-in And</a></li>
301
--- www/server/windows/service.md
+++ www/server/windows/service.md
@@ -9,36 +9,37 @@
99
2. You have PowerShell 5.1 or above installed.
1010
1111
## Place Fossil on Server
1212
1313
However you obtained your copy of Fossil, it is recommended that you follow
14
-Windows conventions and place it within `\Program Files (x86)\FossilSCM`. Since
15
-Fossil is a 32bit binary, this is the proper location for the executable. This
14
+Windows conventions and place it within `\Program Files\FossilSCM`. Since
15
+Fossil 2.10 is a 64bit binary, this is the proper location for the executable. This
1616
way Fossil is in an expected location and you will have minimal issues with
1717
Windows interfering in your ability to run Fossil as a service. You will need
1818
Administrative rights to place fossil at the recommended location. You do NOT
1919
need to add this location to the path, though you may do so if you wish.
2020
2121
## Make Fossil a Windows Service
2222
2323
Luckily the hard work to use Fossil as a Windows Service has been done by the
2424
Fossil team. We simply have to install it with the proper command line options.
25
-As of Fossil 2.9 the built in `fossil winsrv` command is failing, so an
26
-alternative service install using PowerShell is documented here. The below
27
-should all be entered as a single line in an Administrative PowerShell console.
25
+Fossil on Windows has a command `fossil winsrv` to allow installing Fossil as a
26
+service on Windows, but the options are limited, so an alternative service
27
+install using PowerShell is documented here. The below should all be entered
28
+as a single line in an Administrative PowerShell console.
2829
2930
```PowerShell
30
-New-Service -Name fossil -DisplayName fossil -BinaryPathName '"C:\Program Files (x86)\FossilSCM\fossil.exe"
31
+New-Service -Name fossil -DisplayName fossil -BinaryPathName '"C:\Program Files\FossilSCM\fossil.exe"
3132
server --port 8080 --repolist "D:/Path/to/Repos"' -StartupType Automatic
3233
```
3334
34
-Please note the use of forward slashes in the paths passed to Fossil. Windows
35
-will accept either back slashes or forward slashes in path names, but Fossil has
36
-a preference for forward slashes. The use of `--repolist` will make this a
37
-multiple repository server. If you want to serve only a single repository,
38
-then leave off the `--repolist` parameter and provide the full path to the
39
-proper repository file. Other options are listed in the
35
+Please note the use of forward slashes in the repolist path passed to Fossil.
36
+Windows will accept either back slashes or forward slashes in path names, but
37
+Fossil has a preference for forward slashes. The use of `--repolist` will make
38
+this a multiple repository server. If you want to serve only a single
39
+repository, then leave off the `--repolist` parameter and provide the full path
40
+to the proper repository file. Other options are listed in the
4041
[fossil server](/help?cmd=server) documentation.
4142
4243
The service will be installed by default to use the Local Service account.
4344
Since Fossil only needs access to local files, this is fine and causes no
4445
issues. The service will not be running once installed. You will need to start
4546
--- www/server/windows/service.md
+++ www/server/windows/service.md
@@ -9,36 +9,37 @@
9 2. You have PowerShell 5.1 or above installed.
10
11 ## Place Fossil on Server
12
13 However you obtained your copy of Fossil, it is recommended that you follow
14 Windows conventions and place it within `\Program Files (x86)\FossilSCM`. Since
15 Fossil is a 32bit binary, this is the proper location for the executable. This
16 way Fossil is in an expected location and you will have minimal issues with
17 Windows interfering in your ability to run Fossil as a service. You will need
18 Administrative rights to place fossil at the recommended location. You do NOT
19 need to add this location to the path, though you may do so if you wish.
20
21 ## Make Fossil a Windows Service
22
23 Luckily the hard work to use Fossil as a Windows Service has been done by the
24 Fossil team. We simply have to install it with the proper command line options.
25 As of Fossil 2.9 the built in `fossil winsrv` command is failing, so an
26 alternative service install using PowerShell is documented here. The below
27 should all be entered as a single line in an Administrative PowerShell console.
 
28
29 ```PowerShell
30 New-Service -Name fossil -DisplayName fossil -BinaryPathName '"C:\Program Files (x86)\FossilSCM\fossil.exe"
31 server --port 8080 --repolist "D:/Path/to/Repos"' -StartupType Automatic
32 ```
33
34 Please note the use of forward slashes in the paths passed to Fossil. Windows
35 will accept either back slashes or forward slashes in path names, but Fossil has
36 a preference for forward slashes. The use of `--repolist` will make this a
37 multiple repository server. If you want to serve only a single repository,
38 then leave off the `--repolist` parameter and provide the full path to the
39 proper repository file. Other options are listed in the
40 [fossil server](/help?cmd=server) documentation.
41
42 The service will be installed by default to use the Local Service account.
43 Since Fossil only needs access to local files, this is fine and causes no
44 issues. The service will not be running once installed. You will need to start
45
--- www/server/windows/service.md
+++ www/server/windows/service.md
@@ -9,36 +9,37 @@
9 2. You have PowerShell 5.1 or above installed.
10
11 ## Place Fossil on Server
12
13 However you obtained your copy of Fossil, it is recommended that you follow
14 Windows conventions and place it within `\Program Files\FossilSCM`. Since
15 Fossil 2.10 is a 64bit binary, this is the proper location for the executable. This
16 way Fossil is in an expected location and you will have minimal issues with
17 Windows interfering in your ability to run Fossil as a service. You will need
18 Administrative rights to place fossil at the recommended location. You do NOT
19 need to add this location to the path, though you may do so if you wish.
20
21 ## Make Fossil a Windows Service
22
23 Luckily the hard work to use Fossil as a Windows Service has been done by the
24 Fossil team. We simply have to install it with the proper command line options.
25 Fossil on Windows has a command `fossil winsrv` to allow installing Fossil as a
26 service on Windows, but the options are limited, so an alternative service
27 install using PowerShell is documented here. The below should all be entered
28 as a single line in an Administrative PowerShell console.
29
30 ```PowerShell
31 New-Service -Name fossil -DisplayName fossil -BinaryPathName '"C:\Program Files\FossilSCM\fossil.exe"
32 server --port 8080 --repolist "D:/Path/to/Repos"' -StartupType Automatic
33 ```
34
35 Please note the use of forward slashes in the repolist path passed to Fossil.
36 Windows will accept either back slashes or forward slashes in path names, but
37 Fossil has a preference for forward slashes. The use of `--repolist` will make
38 this a multiple repository server. If you want to serve only a single
39 repository, then leave off the `--repolist` parameter and provide the full path
40 to the proper repository file. Other options are listed in the
41 [fossil server](/help?cmd=server) documentation.
42
43 The service will be installed by default to use the Local Service account.
44 Since Fossil only needs access to local files, this is fine and causes no
45 issues. The service will not be running once installed. You will need to start
46
--- www/server/windows/stunnel.md
+++ www/server/windows/stunnel.md
@@ -24,11 +24,11 @@
2424
Following most of [Fossil as a Windows Service](./service.md), you will need
2525
to change the command to install the Fossil Service to configure it properly for
2626
use with stunnel as an https proxy. Run the following instead:
2727
2828
```PowerShell
29
-New-Service -Name fossil-secure -DisplayName fossil-secure -BinaryPathName '"C:\Program Files (x86)\FossilSCM\fossil.exe"
29
+New-Service -Name fossil-secure -DisplayName fossil-secure -BinaryPathName '"C:\Program Files\FossilSCM\fossil.exe"
3030
server --localhost --port 9000 --https --repolist "D:/Path/to/Repos"' -StartupType Automatic
3131
3232
```
3333
3434
The use of `--localhost` means Fossil will only listen for traffic on the local
3535
--- www/server/windows/stunnel.md
+++ www/server/windows/stunnel.md
@@ -24,11 +24,11 @@
24 Following most of [Fossil as a Windows Service](./service.md), you will need
25 to change the command to install the Fossil Service to configure it properly for
26 use with stunnel as an https proxy. Run the following instead:
27
28 ```PowerShell
29 New-Service -Name fossil-secure -DisplayName fossil-secure -BinaryPathName '"C:\Program Files (x86)\FossilSCM\fossil.exe"
30 server --localhost --port 9000 --https --repolist "D:/Path/to/Repos"' -StartupType Automatic
31
32 ```
33
34 The use of `--localhost` means Fossil will only listen for traffic on the local
35
--- www/server/windows/stunnel.md
+++ www/server/windows/stunnel.md
@@ -24,11 +24,11 @@
24 Following most of [Fossil as a Windows Service](./service.md), you will need
25 to change the command to install the Fossil Service to configure it properly for
26 use with stunnel as an https proxy. Run the following instead:
27
28 ```PowerShell
29 New-Service -Name fossil-secure -DisplayName fossil-secure -BinaryPathName '"C:\Program Files\FossilSCM\fossil.exe"
30 server --localhost --port 9000 --https --repolist "D:/Path/to/Repos"' -StartupType Automatic
31
32 ```
33
34 The use of `--localhost` means Fossil will only listen for traffic on the local
35
--- www/serverext.wiki
+++ www/serverext.wiki
@@ -34,11 +34,11 @@
3434
3535
<blockquote><pre>
3636
extroot: <i>DIRECTORY</i>
3737
</pre></blockquote>
3838
39
-Or, if the Fossil server is begin run as using the
39
+Or, if the Fossil server is being run using the
4040
"[./server/any/none.md|fossil server]" or
4141
"[./server/any/none.md|fossil ui]" or
4242
"[./server/any/inetd.md|fossil http]" commands, then add an extra
4343
"--extroot <i>DIRECTORY</i>" option to that command.
4444
4545
--- www/serverext.wiki
+++ www/serverext.wiki
@@ -34,11 +34,11 @@
34
35 <blockquote><pre>
36 extroot: <i>DIRECTORY</i>
37 </pre></blockquote>
38
39 Or, if the Fossil server is begin run as using the
40 "[./server/any/none.md|fossil server]" or
41 "[./server/any/none.md|fossil ui]" or
42 "[./server/any/inetd.md|fossil http]" commands, then add an extra
43 "--extroot <i>DIRECTORY</i>" option to that command.
44
45
--- www/serverext.wiki
+++ www/serverext.wiki
@@ -34,11 +34,11 @@
34
35 <blockquote><pre>
36 extroot: <i>DIRECTORY</i>
37 </pre></blockquote>
38
39 Or, if the Fossil server is being run using the
40 "[./server/any/none.md|fossil server]" or
41 "[./server/any/none.md|fossil ui]" or
42 "[./server/any/inetd.md|fossil http]" commands, then add an extra
43 "--extroot <i>DIRECTORY</i>" option to that command.
44
45

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button