Fossil SCM

The allow-symlinks setting is disabled by default and is not versionable, unless Fossil is compiled with the FOSSIL_LEGACY_ALLOW_SYMLINKS flag, in which case it follows the historic behavior.

drh 2020-08-19 21:08 sec2020-2.12-patch
Commit cdc90f0c3b0f6eafc0a73ecb0d2cc92a54b9ffc1c69daf8ecde47a7c8cae52b8
--- src/checkin.c
+++ src/checkin.c
@@ -856,12 +856,14 @@
856856
857857
if( zIgnoreFlag==0 ){
858858
zIgnoreFlag = db_get("ignore-glob", 0);
859859
}
860860
pIgnore = glob_create(zIgnoreFlag);
861
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
861862
/* Always consider symlinks. */
862863
g.allowSymlinks = db_allow_symlinks_by_default();
864
+#endif
863865
locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
864866
glob_free(pIgnore);
865867
866868
blob_zero(&report);
867869
status_report(&report, flags);
@@ -1015,12 +1017,14 @@
10151017
verify_all_options();
10161018
pIgnore = glob_create(zIgnoreFlag);
10171019
pKeep = glob_create(zKeepFlag);
10181020
pClean = glob_create(zCleanFlag);
10191021
nRoot = (int)strlen(g.zLocalRoot);
1022
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
10201023
/* Always consider symlinks. */
10211024
g.allowSymlinks = db_allow_symlinks_by_default();
1025
+#endif
10221026
if( !dirsOnlyFlag ){
10231027
Stmt q;
10241028
Blob repo;
10251029
if( !dryRunFlag && !disableUndo ) undo_begin();
10261030
locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
10271031
--- src/checkin.c
+++ src/checkin.c
@@ -856,12 +856,14 @@
856
857 if( zIgnoreFlag==0 ){
858 zIgnoreFlag = db_get("ignore-glob", 0);
859 }
860 pIgnore = glob_create(zIgnoreFlag);
 
861 /* Always consider symlinks. */
862 g.allowSymlinks = db_allow_symlinks_by_default();
 
863 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
864 glob_free(pIgnore);
865
866 blob_zero(&report);
867 status_report(&report, flags);
@@ -1015,12 +1017,14 @@
1015 verify_all_options();
1016 pIgnore = glob_create(zIgnoreFlag);
1017 pKeep = glob_create(zKeepFlag);
1018 pClean = glob_create(zCleanFlag);
1019 nRoot = (int)strlen(g.zLocalRoot);
 
1020 /* Always consider symlinks. */
1021 g.allowSymlinks = db_allow_symlinks_by_default();
 
1022 if( !dirsOnlyFlag ){
1023 Stmt q;
1024 Blob repo;
1025 if( !dryRunFlag && !disableUndo ) undo_begin();
1026 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
1027
--- src/checkin.c
+++ src/checkin.c
@@ -856,12 +856,14 @@
856
857 if( zIgnoreFlag==0 ){
858 zIgnoreFlag = db_get("ignore-glob", 0);
859 }
860 pIgnore = glob_create(zIgnoreFlag);
861 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
862 /* Always consider symlinks. */
863 g.allowSymlinks = db_allow_symlinks_by_default();
864 #endif
865 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
866 glob_free(pIgnore);
867
868 blob_zero(&report);
869 status_report(&report, flags);
@@ -1015,12 +1017,14 @@
1017 verify_all_options();
1018 pIgnore = glob_create(zIgnoreFlag);
1019 pKeep = glob_create(zKeepFlag);
1020 pClean = glob_create(zCleanFlag);
1021 nRoot = (int)strlen(g.zLocalRoot);
1022 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
1023 /* Always consider symlinks. */
1024 g.allowSymlinks = db_allow_symlinks_by_default();
1025 #endif
1026 if( !dirsOnlyFlag ){
1027 Stmt q;
1028 Blob repo;
1029 if( !dryRunFlag && !disableUndo ) undo_begin();
1030 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore);
1031
--- src/configure.c
+++ src/configure.c
@@ -143,11 +143,13 @@
143143
{ "keep-glob", CONFIGSET_PROJ },
144144
{ "crlf-glob", CONFIGSET_PROJ },
145145
{ "crnl-glob", CONFIGSET_PROJ },
146146
{ "encoding-glob", CONFIGSET_PROJ },
147147
{ "empty-dirs", CONFIGSET_PROJ },
148
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
148149
{ "allow-symlinks", CONFIGSET_PROJ },
150
+#endif
149151
{ "dotfiles", CONFIGSET_PROJ },
150152
{ "parent-project-code", CONFIGSET_PROJ },
151153
{ "parent-project-name", CONFIGSET_PROJ },
152154
{ "hash-policy", CONFIGSET_PROJ },
153155
{ "comment-format", CONFIGSET_PROJ },
154156
--- src/configure.c
+++ src/configure.c
@@ -143,11 +143,13 @@
143 { "keep-glob", CONFIGSET_PROJ },
144 { "crlf-glob", CONFIGSET_PROJ },
145 { "crnl-glob", CONFIGSET_PROJ },
146 { "encoding-glob", CONFIGSET_PROJ },
147 { "empty-dirs", CONFIGSET_PROJ },
 
148 { "allow-symlinks", CONFIGSET_PROJ },
 
149 { "dotfiles", CONFIGSET_PROJ },
150 { "parent-project-code", CONFIGSET_PROJ },
151 { "parent-project-name", CONFIGSET_PROJ },
152 { "hash-policy", CONFIGSET_PROJ },
153 { "comment-format", CONFIGSET_PROJ },
154
--- src/configure.c
+++ src/configure.c
@@ -143,11 +143,13 @@
143 { "keep-glob", CONFIGSET_PROJ },
144 { "crlf-glob", CONFIGSET_PROJ },
145 { "crnl-glob", CONFIGSET_PROJ },
146 { "encoding-glob", CONFIGSET_PROJ },
147 { "empty-dirs", CONFIGSET_PROJ },
148 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
149 { "allow-symlinks", CONFIGSET_PROJ },
150 #endif
151 { "dotfiles", CONFIGSET_PROJ },
152 { "parent-project-code", CONFIGSET_PROJ },
153 { "parent-project-name", CONFIGSET_PROJ },
154 { "hash-policy", CONFIGSET_PROJ },
155 { "comment-format", CONFIGSET_PROJ },
156
+29 -3
--- src/db.c
+++ src/db.c
@@ -1825,11 +1825,11 @@
18251825
/*
18261826
** Returns non-zero if the default value for the "allow-symlinks" setting
18271827
** is "on". When on Windows, this always returns false.
18281828
*/
18291829
int db_allow_symlinks_by_default(void){
1830
-#if defined(_WIN32)
1830
+#if defined(_WIN32) || !defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
18311831
return 0;
18321832
#else
18331833
return 1;
18341834
#endif
18351835
}
@@ -2956,17 +2956,19 @@
29562956
dflt = 0;
29572957
}
29582958
fossil_free(zVal);
29592959
return dflt;
29602960
}
2961
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
29612962
int db_get_versioned_boolean(const char *zName, int dflt){
29622963
char *zVal = db_get_versioned(zName, 0);
29632964
if( zVal==0 ) return dflt;
29642965
if( is_truth(zVal) ) return 1;
29652966
if( is_false(zVal) ) return 0;
29662967
return dflt;
29672968
}
2969
+#endif /* FOSSIL_LEGACY_ALLOW_SYMLINK */
29682970
char *db_lget(const char *zName, const char *zDefault){
29692971
return db_text(zDefault,
29702972
"SELECT value FROM vvar WHERE name=%Q", zName);
29712973
}
29722974
void db_lset(const char *zName, const char *zValue){
@@ -3165,11 +3167,13 @@
31653167
void cmd_open(void){
31663168
int emptyFlag;
31673169
int keepFlag;
31683170
int forceMissingFlag;
31693171
int allowNested;
3172
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
31703173
int allowSymlinks;
3174
+#endif
31713175
int setmtimeFlag; /* --setmtime. Set mtimes on files */
31723176
int bForce = 0; /* --force. Open even if non-empty dir */
31733177
static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0, 0 };
31743178
const char *zWorkDir; /* --workdir value */
31753179
const char *zRepo = 0; /* Name of the repository file */
@@ -3276,10 +3280,11 @@
32763280
}else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
32773281
g.zOpenRevision = db_get("main-branch", 0);
32783282
}
32793283
}
32803284
3285
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
32813286
if( g.zOpenRevision ){
32823287
/* Since the repository is open and we know the revision now,
32833288
** refresh the allow-symlinks flag. Since neither the local
32843289
** checkout nor the configuration database are open at this
32853290
** point, this should always return the versioned setting,
@@ -3289,10 +3294,11 @@
32893294
** repository or global configuration databases only. */
32903295
allowSymlinks = db_get_versioned_boolean("allow-symlinks", -1);
32913296
}else{
32923297
allowSymlinks = -1; /* Use non-versioned settings only. */
32933298
}
3299
+#endif
32943300
32953301
#if defined(_WIN32) || defined(__CYGWIN__)
32963302
# define LOCALDB_NAME "./_FOSSIL_"
32973303
#else
32983304
# define LOCALDB_NAME "./.fslckout"
@@ -3302,10 +3308,11 @@
33023308
"COMMIT; PRAGMA journal_mode=WAL; BEGIN;",
33033309
#endif
33043310
(char*)0);
33053311
db_delete_on_failure(LOCALDB_NAME);
33063312
db_open_local(0);
3313
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
33073314
if( allowSymlinks>=0 ){
33083315
/* Use the value from the versioned setting, which was read
33093316
** prior to opening the local checkout (i.e. which is most
33103317
** likely empty and does not actually contain any versioned
33113318
** setting files yet). Normally, this value would be given
@@ -3318,10 +3325,11 @@
33183325
** point, this will probably be the setting value from the
33193326
** repository or global configuration databases. */
33203327
g.allowSymlinks = db_get_boolean("allow-symlinks",
33213328
db_allow_symlinks_by_default());
33223329
}
3330
+#endif /* FOSSIL_LEGACY_ALLOW_SYMLINKS */
33233331
db_lset("repository", zRepo);
33243332
db_record_repository_filename(zRepo);
33253333
db_set_checkout(0);
33263334
azNewArgv[0] = g.argv[0];
33273335
g.argv = azNewArgv;
@@ -3429,11 +3437,29 @@
34293437
** SETTING: admin-log boolean default=off
34303438
**
34313439
** When the admin-log setting is enabled, configuration changes are recorded
34323440
** in the "admin_log" table of the repository.
34333441
*/
3434
-#if defined(_WIN32)
3442
+#if !defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
3443
+/*
3444
+** SETTING: allow-symlinks boolean default=off
3445
+**
3446
+** When allow-symlinks is OFF (which is the default and recommended setting)
3447
+** symbolic links are treated like text files that contain a single line of
3448
+** content which is the name of their target. If allow-symlinks is ON,
3449
+** the symbolic links are actually followed.
3450
+**
3451
+** The use of symbolic links is dangerous. If you checkout a maliciously
3452
+** crafted checkin that contains symbolic links, it is possible that files
3453
+** outside of the working directory might be overwritten.
3454
+**
3455
+** Keep this setting OFF unless you have a very good reason to turn it
3456
+** on and you implicitly trust the integrity of the repositories you
3457
+** open.
3458
+*/
3459
+#endif
3460
+#if defined(_WIN32) && defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
34353461
/*
34363462
** SETTING: allow-symlinks boolean default=off versionable
34373463
**
34383464
** When allow-symlinks is OFF, symbolic links in the repository are followed
34393465
** and treated no differently from real files. When allow-symlinks is ON,
@@ -3440,11 +3466,11 @@
34403466
** the object to which the symbolic link points is ignored, and the content
34413467
** of the symbolic link that is stored in the repository is the name of the
34423468
** object to which the symbolic link points.
34433469
*/
34443470
#endif
3445
-#if !defined(_WIN32)
3471
+#if !defined(_WIN32) && defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
34463472
/*
34473473
** SETTING: allow-symlinks boolean default=on versionable
34483474
**
34493475
** When allow-symlinks is OFF, symbolic links in the repository are followed
34503476
** and treated no differently from real files. When allow-symlinks is ON,
34513477
--- src/db.c
+++ src/db.c
@@ -1825,11 +1825,11 @@
1825 /*
1826 ** Returns non-zero if the default value for the "allow-symlinks" setting
1827 ** is "on". When on Windows, this always returns false.
1828 */
1829 int db_allow_symlinks_by_default(void){
1830 #if defined(_WIN32)
1831 return 0;
1832 #else
1833 return 1;
1834 #endif
1835 }
@@ -2956,17 +2956,19 @@
2956 dflt = 0;
2957 }
2958 fossil_free(zVal);
2959 return dflt;
2960 }
 
2961 int db_get_versioned_boolean(const char *zName, int dflt){
2962 char *zVal = db_get_versioned(zName, 0);
2963 if( zVal==0 ) return dflt;
2964 if( is_truth(zVal) ) return 1;
2965 if( is_false(zVal) ) return 0;
2966 return dflt;
2967 }
 
2968 char *db_lget(const char *zName, const char *zDefault){
2969 return db_text(zDefault,
2970 "SELECT value FROM vvar WHERE name=%Q", zName);
2971 }
2972 void db_lset(const char *zName, const char *zValue){
@@ -3165,11 +3167,13 @@
3165 void cmd_open(void){
3166 int emptyFlag;
3167 int keepFlag;
3168 int forceMissingFlag;
3169 int allowNested;
 
3170 int allowSymlinks;
 
3171 int setmtimeFlag; /* --setmtime. Set mtimes on files */
3172 int bForce = 0; /* --force. Open even if non-empty dir */
3173 static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0, 0 };
3174 const char *zWorkDir; /* --workdir value */
3175 const char *zRepo = 0; /* Name of the repository file */
@@ -3276,10 +3280,11 @@
3276 }else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
3277 g.zOpenRevision = db_get("main-branch", 0);
3278 }
3279 }
3280
 
3281 if( g.zOpenRevision ){
3282 /* Since the repository is open and we know the revision now,
3283 ** refresh the allow-symlinks flag. Since neither the local
3284 ** checkout nor the configuration database are open at this
3285 ** point, this should always return the versioned setting,
@@ -3289,10 +3294,11 @@
3289 ** repository or global configuration databases only. */
3290 allowSymlinks = db_get_versioned_boolean("allow-symlinks", -1);
3291 }else{
3292 allowSymlinks = -1; /* Use non-versioned settings only. */
3293 }
 
3294
3295 #if defined(_WIN32) || defined(__CYGWIN__)
3296 # define LOCALDB_NAME "./_FOSSIL_"
3297 #else
3298 # define LOCALDB_NAME "./.fslckout"
@@ -3302,10 +3308,11 @@
3302 "COMMIT; PRAGMA journal_mode=WAL; BEGIN;",
3303 #endif
3304 (char*)0);
3305 db_delete_on_failure(LOCALDB_NAME);
3306 db_open_local(0);
 
3307 if( allowSymlinks>=0 ){
3308 /* Use the value from the versioned setting, which was read
3309 ** prior to opening the local checkout (i.e. which is most
3310 ** likely empty and does not actually contain any versioned
3311 ** setting files yet). Normally, this value would be given
@@ -3318,10 +3325,11 @@
3318 ** point, this will probably be the setting value from the
3319 ** repository or global configuration databases. */
3320 g.allowSymlinks = db_get_boolean("allow-symlinks",
3321 db_allow_symlinks_by_default());
3322 }
 
3323 db_lset("repository", zRepo);
3324 db_record_repository_filename(zRepo);
3325 db_set_checkout(0);
3326 azNewArgv[0] = g.argv[0];
3327 g.argv = azNewArgv;
@@ -3429,11 +3437,29 @@
3429 ** SETTING: admin-log boolean default=off
3430 **
3431 ** When the admin-log setting is enabled, configuration changes are recorded
3432 ** in the "admin_log" table of the repository.
3433 */
3434 #if defined(_WIN32)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3435 /*
3436 ** SETTING: allow-symlinks boolean default=off versionable
3437 **
3438 ** When allow-symlinks is OFF, symbolic links in the repository are followed
3439 ** and treated no differently from real files. When allow-symlinks is ON,
@@ -3440,11 +3466,11 @@
3440 ** the object to which the symbolic link points is ignored, and the content
3441 ** of the symbolic link that is stored in the repository is the name of the
3442 ** object to which the symbolic link points.
3443 */
3444 #endif
3445 #if !defined(_WIN32)
3446 /*
3447 ** SETTING: allow-symlinks boolean default=on versionable
3448 **
3449 ** When allow-symlinks is OFF, symbolic links in the repository are followed
3450 ** and treated no differently from real files. When allow-symlinks is ON,
3451
--- src/db.c
+++ src/db.c
@@ -1825,11 +1825,11 @@
1825 /*
1826 ** Returns non-zero if the default value for the "allow-symlinks" setting
1827 ** is "on". When on Windows, this always returns false.
1828 */
1829 int db_allow_symlinks_by_default(void){
1830 #if defined(_WIN32) || !defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
1831 return 0;
1832 #else
1833 return 1;
1834 #endif
1835 }
@@ -2956,17 +2956,19 @@
2956 dflt = 0;
2957 }
2958 fossil_free(zVal);
2959 return dflt;
2960 }
2961 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
2962 int db_get_versioned_boolean(const char *zName, int dflt){
2963 char *zVal = db_get_versioned(zName, 0);
2964 if( zVal==0 ) return dflt;
2965 if( is_truth(zVal) ) return 1;
2966 if( is_false(zVal) ) return 0;
2967 return dflt;
2968 }
2969 #endif /* FOSSIL_LEGACY_ALLOW_SYMLINK */
2970 char *db_lget(const char *zName, const char *zDefault){
2971 return db_text(zDefault,
2972 "SELECT value FROM vvar WHERE name=%Q", zName);
2973 }
2974 void db_lset(const char *zName, const char *zValue){
@@ -3165,11 +3167,13 @@
3167 void cmd_open(void){
3168 int emptyFlag;
3169 int keepFlag;
3170 int forceMissingFlag;
3171 int allowNested;
3172 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
3173 int allowSymlinks;
3174 #endif
3175 int setmtimeFlag; /* --setmtime. Set mtimes on files */
3176 int bForce = 0; /* --force. Open even if non-empty dir */
3177 static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0, 0 };
3178 const char *zWorkDir; /* --workdir value */
3179 const char *zRepo = 0; /* Name of the repository file */
@@ -3276,10 +3280,11 @@
3280 }else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
3281 g.zOpenRevision = db_get("main-branch", 0);
3282 }
3283 }
3284
3285 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
3286 if( g.zOpenRevision ){
3287 /* Since the repository is open and we know the revision now,
3288 ** refresh the allow-symlinks flag. Since neither the local
3289 ** checkout nor the configuration database are open at this
3290 ** point, this should always return the versioned setting,
@@ -3289,10 +3294,11 @@
3294 ** repository or global configuration databases only. */
3295 allowSymlinks = db_get_versioned_boolean("allow-symlinks", -1);
3296 }else{
3297 allowSymlinks = -1; /* Use non-versioned settings only. */
3298 }
3299 #endif
3300
3301 #if defined(_WIN32) || defined(__CYGWIN__)
3302 # define LOCALDB_NAME "./_FOSSIL_"
3303 #else
3304 # define LOCALDB_NAME "./.fslckout"
@@ -3302,10 +3308,11 @@
3308 "COMMIT; PRAGMA journal_mode=WAL; BEGIN;",
3309 #endif
3310 (char*)0);
3311 db_delete_on_failure(LOCALDB_NAME);
3312 db_open_local(0);
3313 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
3314 if( allowSymlinks>=0 ){
3315 /* Use the value from the versioned setting, which was read
3316 ** prior to opening the local checkout (i.e. which is most
3317 ** likely empty and does not actually contain any versioned
3318 ** setting files yet). Normally, this value would be given
@@ -3318,10 +3325,11 @@
3325 ** point, this will probably be the setting value from the
3326 ** repository or global configuration databases. */
3327 g.allowSymlinks = db_get_boolean("allow-symlinks",
3328 db_allow_symlinks_by_default());
3329 }
3330 #endif /* FOSSIL_LEGACY_ALLOW_SYMLINKS */
3331 db_lset("repository", zRepo);
3332 db_record_repository_filename(zRepo);
3333 db_set_checkout(0);
3334 azNewArgv[0] = g.argv[0];
3335 g.argv = azNewArgv;
@@ -3429,11 +3437,29 @@
3437 ** SETTING: admin-log boolean default=off
3438 **
3439 ** When the admin-log setting is enabled, configuration changes are recorded
3440 ** in the "admin_log" table of the repository.
3441 */
3442 #if !defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
3443 /*
3444 ** SETTING: allow-symlinks boolean default=off
3445 **
3446 ** When allow-symlinks is OFF (which is the default and recommended setting)
3447 ** symbolic links are treated like text files that contain a single line of
3448 ** content which is the name of their target. If allow-symlinks is ON,
3449 ** the symbolic links are actually followed.
3450 **
3451 ** The use of symbolic links is dangerous. If you checkout a maliciously
3452 ** crafted checkin that contains symbolic links, it is possible that files
3453 ** outside of the working directory might be overwritten.
3454 **
3455 ** Keep this setting OFF unless you have a very good reason to turn it
3456 ** on and you implicitly trust the integrity of the repositories you
3457 ** open.
3458 */
3459 #endif
3460 #if defined(_WIN32) && defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
3461 /*
3462 ** SETTING: allow-symlinks boolean default=off versionable
3463 **
3464 ** When allow-symlinks is OFF, symbolic links in the repository are followed
3465 ** and treated no differently from real files. When allow-symlinks is ON,
@@ -3440,11 +3466,11 @@
3466 ** the object to which the symbolic link points is ignored, and the content
3467 ** of the symbolic link that is stored in the repository is the name of the
3468 ** object to which the symbolic link points.
3469 */
3470 #endif
3471 #if !defined(_WIN32) && defined(FOSSIL_LEGACY_ALLOW_SYMLINKS)
3472 /*
3473 ** SETTING: allow-symlinks boolean default=on versionable
3474 **
3475 ** When allow-symlinks is OFF, symbolic links in the repository are followed
3476 ** and treated no differently from real files. When allow-symlinks is ON,
3477
--- src/json_config.c
+++ src/json_config.c
@@ -83,11 +83,13 @@
8383
{ "keep-glob", CONFIGSET_PROJ },
8484
{ "crlf-glob", CONFIGSET_PROJ },
8585
{ "crnl-glob", CONFIGSET_PROJ },
8686
{ "encoding-glob", CONFIGSET_PROJ },
8787
{ "empty-dirs", CONFIGSET_PROJ },
88
+#ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
8889
{ "allow-symlinks", CONFIGSET_PROJ },
90
+#endif
8991
{ "dotfiles", CONFIGSET_PROJ },
9092
9193
{ "ticket-table", CONFIGSET_TKT },
9294
{ "ticket-common", CONFIGSET_TKT },
9395
{ "ticket-change", CONFIGSET_TKT },
9496
--- src/json_config.c
+++ src/json_config.c
@@ -83,11 +83,13 @@
83 { "keep-glob", CONFIGSET_PROJ },
84 { "crlf-glob", CONFIGSET_PROJ },
85 { "crnl-glob", CONFIGSET_PROJ },
86 { "encoding-glob", CONFIGSET_PROJ },
87 { "empty-dirs", CONFIGSET_PROJ },
 
88 { "allow-symlinks", CONFIGSET_PROJ },
 
89 { "dotfiles", CONFIGSET_PROJ },
90
91 { "ticket-table", CONFIGSET_TKT },
92 { "ticket-common", CONFIGSET_TKT },
93 { "ticket-change", CONFIGSET_TKT },
94
--- src/json_config.c
+++ src/json_config.c
@@ -83,11 +83,13 @@
83 { "keep-glob", CONFIGSET_PROJ },
84 { "crlf-glob", CONFIGSET_PROJ },
85 { "crnl-glob", CONFIGSET_PROJ },
86 { "encoding-glob", CONFIGSET_PROJ },
87 { "empty-dirs", CONFIGSET_PROJ },
88 #ifdef FOSSIL_LEGACY_ALLOW_SYMLINKS
89 { "allow-symlinks", CONFIGSET_PROJ },
90 #endif
91 { "dotfiles", CONFIGSET_PROJ },
92
93 { "ticket-table", CONFIGSET_TKT },
94 { "ticket-common", CONFIGSET_TKT },
95 { "ticket-change", CONFIGSET_TKT },
96

Keyboard Shortcuts

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