@@ -18,11 +18,12 @@
18 18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Code for interfacing to the various databases.
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** There are three separate database files that fossil interacts
21 21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** with:
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** (1) The "user" database in ~/.fossil
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) The "configdb" database in ~/.fossil or ~/.config/fossil.db
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or in %LOCALAPPDATA%/_fossil
24 25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
25 26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (2) The "repository" database
26 27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
27 28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** (3) A local checkout database named "_FOSSIL_" or ".fslckout"
28 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and located at the root of the local copy of the source tree.
@@ -1369,11 +1370,11 @@
1369 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_attach(zDbName, zLabel);
1370 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1371 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1372 1373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1373 1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Close the per-user database file in ~/.fossil
1375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Close the per-user configuration database file
1375 1376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1376 1377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_close_config(){
1377 1378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iSlot = db_database_slot("configdb");
1378 1379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iSlot>0 ){
1379 1380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_detach("configdb");
@@ -1393,33 +1394,30 @@
1393 1394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(g.zConfigDbName);
1394 1395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zConfigDbName = 0;
1395 1396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1396 1397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1397 1398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Open the user database in "~/.fossil". Create the database anew if
1399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** it does not already exist.
1399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Compute the name of the configuration database. If unable to find the
1400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database, return 0 if isOptional is true, or panic if isOptional is false.
1400 1401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the useAttach flag is 0 (the usual case) then the user database is
1402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** opened on a separate database connection g.dbConfig. This prevents
1403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the ~/.fossil database from becoming locked on long check-in or sync
1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** operations which hold an exclusive transaction. In a few cases, though,
1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** it is convenient for the ~/.fossil to be attached to the main database
1406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** connection so that we can join between the various databases. In that
1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** case, invoke this routine with useAttach as 1.
1402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Space to hold the result comes from fossil_malloc().
1408 1403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int db_open_config(int useAttach, int isOptional){
1410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zDbName;
1411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zHome;
1412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zRoot;
1413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.zConfigDbName ){
1414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int alreadyAttached = db_database_slot("configdb")>0;
1415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( useAttach==alreadyAttached ) return 1; /* Already open. */
1416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_close_config();
1417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zHome = fossil_getenv("FOSSIL_HOME");
1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *db_configdb_name(int isOptional){
1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zHome; /* Home directory */
1406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDbName; /* Name of the database file */
1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* On Windows, look for these directories, in order:
1410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** FOSSIL_HOME
1412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** LOCALAPPDATA
1413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** APPDATA
1414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** USERPROFILE
1415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** HOMEDRIVE HOMEPATH
1416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1419 1417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32) || defined(__CYGWIN__)
1420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRoot = "_fossil";
1418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zHome = fossil_getenv("FOSSIL_HOME");
1421 1419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHome==0 ){
1422 1420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHome = fossil_getenv("LOCALAPPDATA");
1423 1421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHome==0 ){
1424 1422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHome = fossil_getenv("APPDATA");
1425 1423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHome==0 ){
@@ -1430,47 +1428,90 @@
1430 1428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDrive && zPath ) zHome = mprintf("%s%s", zDrive, zPath);
1431 1429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1432 1430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1433 1431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1434 1432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zHome==0 ){
1436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isOptional ) return 0;
1437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_panic("cannot locate home directory - please set the "
1438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "FOSSIL_HOME, LOCALAPPDATA, APPDATA, USERPROFILE, "
1439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "or HOMEDRIVE / HOMEPATH environment variables");
1440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
1442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRoot = ".fossil";
1443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zHome==0 ){
1444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zHome = fossil_getenv("XDG_CONFIG_HOME");
1445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zHome ){
1446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRoot = "fossil.db";
1447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zHome = fossil_getenv("HOME");
1449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zHome==0 ){
1450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isOptional ) return 0;
1451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_panic("cannot locate home directory - please set one of the "
1452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "FOSSIL_HOME, XDG_CONFIG_HOME, or HOME environment "
1453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "variables");
1454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
1458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( file_isdir(zHome, ExtFILE)!=1 ){
1459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isOptional ) return 0;
1460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_panic("invalid home directory: %s", zHome);
1461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #if defined(_WIN32) || defined(__CYGWIN__)
1463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* . filenames give some window systems problems and many apps problems */
1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDbName = mprintf("%//%s", zHome, zRoot);
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #else
1466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDbName = mprintf("%s/%s", zHome, zRoot);
1467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #endif
1468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( file_size(zDbName, ExtFILE)<1024*3 ){
1469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( file_access(zHome, W_OK) ){
1470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isOptional ) return 0;
1471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_panic("home directory %s must be writeable", zHome);
1433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbName = mprintf("%//_fossil", zHome);
1434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zHome);
1435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zDbName;
1436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #else /* if unix */
1438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zXdgHome;
1439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* For unix. a 5-step algorithm is used.
1441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** See ../www/tech_overview.wiki for discussion.
1442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Step 1: If FOSSIL_HOME exists -> $FOSSIL_HOME/.fossil
1444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zHome = fossil_getenv("FOSSIL_HOME");
1446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zHome!=0 ) return mprintf("%s/.fossil", zHome);
1447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Step 2: If HOME exists and file $HOME/.fossil exists -> $HOME/.fossil
1449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zHome = fossil_getenv("HOME");
1451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zHome ){
1452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbName = mprintf("%s/.fossil", zHome);
1453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( file_size(zDbName, ExtFILE)>1024*3 ){
1454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zDbName;
1455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zDbName);
1457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Step 3: if XDG_CONFIG_HOME exists -> $XDG_CONFIG_HOME/fossil.db
1460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zXdgHome = fossil_getenv("XDG_CONFIG_HOME");
1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zXdgHome!=0 ){
1463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return mprintf("%s/fossil.db", zXdgHome);
1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Step 4: If HOME does not exist -> ERROR
1467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zHome==0 ){
1469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isOptional ) return 0;
1470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_panic("cannot locate home directory - please set one of the "
1471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "FOSSIL_HOME, XDG_CONFIG_HOME, or HOME environment "
1472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "variables");
1473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Step 5: Otherwise -> $HOME/.config/fossil.db
1476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return mprintf("%s/.config/fossil.db", zHome);
1478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif /* unix */
1479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Open the configuration database. Create the database anew if
1483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it does not already exist.
1484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the useAttach flag is 0 (the usual case) then the configuration
1486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database is opened on a separate database connection g.dbConfig.
1487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This prevents the database from becoming locked on long check-in or sync
1488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operations which hold an exclusive transaction. In a few cases, though,
1489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is convenient for the database to be attached to the main database
1490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection so that we can join between the various databases. In that
1491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** case, invoke this routine with useAttach as 1.
1492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int db_open_config(int useAttach, int isOptional){
1494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDbName;
1495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.zConfigDbName ){
1496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int alreadyAttached = db_database_slot("configdb")>0;
1497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useAttach==alreadyAttached ) return 1; /* Already open. */
1498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_close_config();
1499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbName = db_configdb_name(isOptional);
1501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zDbName==0 ) return 0;
1502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( file_size(zDbName, ExtFILE)<1024*3 ){
1503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zHome = file_dirname(zDbName);
1504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
1505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( file_isdir(zHome, ExtFILE)==0 ){
1506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_mkdir(zHome, ExtFILE, 0);
1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = file_access(zHome, W_OK);
1509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zHome);
1510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc ){
1511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isOptional ) return 0;
1512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_panic("home directory \"%s\" must be writeable", zHome);
1472 1513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1473 1514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_init_database(zDbName, zConfigSchema, (char*)0);
1474 1515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1475 1516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( file_access(zDbName, W_OK) ){
1476 1517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isOptional ) return 0;
@@ -2515,16 +2556,16 @@
2515 2556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
2516 2557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2517 2558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2518 2559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2519 2560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Swap the g.db and g.dbConfig connections so that the various db_* routines
2520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** work on the ~/.fossil database instead of on the repository database.
2561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** work on the configuration database instead of on the repository database.
2521 2562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Be sure to swap them back after doing the operation.
2522 2563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If the ~/.fossil database has already been opened as the main database or
2524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** is attached to the main database, no connection swaps are required so this
2525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** routine is a no-op.
2564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the configuration database has already been opened as the main database
2565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or is attached to the main database, no connection swaps are required so
2566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** this routine is a no-op.
2526 2567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
2527 2568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_swap_connections(void){
2528 2569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2529 2570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When swapping the main database connection with the config database
2530 2571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection, the config database connection must be open (not simply
@@ -3729,14 +3770,13 @@
3729 3770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The "unset" command clears a setting.
3730 3771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3731 3772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Settings can have both a "local" repository-only value and "global" value
3732 3773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that applies to all repositories. The local values are stored in the
3733 3774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "config" table of the repository and the global values are stored in the
3734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** $HOME/.fossil file on unix or in the %LOCALAPPDATA%/_fossil file on Windows.
3735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** If both a local and a global value exists for a setting, the local value
3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** takes precedence. This command normally operates on the local settings.
3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Use the --global option to change global settings.
3775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** configuration database. If both a local and a global value exists for a
3776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** setting, the local value takes precedence. This command normally operates
3777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** on the local settings. Use the --global option to change global settings.
3738 3778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3739 3779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
3740 3780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --global set or unset the given property globally instead of
3741 3781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** setting or unsetting it for the open repository only.
3742 3782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -3867,12 +3907,12 @@
3867 3907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-without-rowid
3868 3908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3869 3909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Usage: %fossil test-without-rowid FILENAME...
3870 3910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3871 3911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Change the Fossil repository FILENAME to make use of the WITHOUT ROWID
3872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** optimization. FILENAME can also be the ~/.fossil file or a local
3873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** .fslckout or _FOSSIL_ file.
3912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** optimization. FILENAME can also be the configuration database file
3913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (~/.fossil or ~/.config/fossil.db) or a local .fslckout or _FOSSIL_ file.
3874 3914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3875 3915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The purpose of this command is for testing the WITHOUT ROWID capabilities
3876 3916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of SQLite. There is no big advantage to using WITHOUT ROWID in Fossil.
3877 3917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3878 3918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
3879 3919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!