@@ -618,10 +618,33 @@
618 618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
619 619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
620 620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(db, "COMMIT", 0, 0, 0);
621 621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_close(db);
622 622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Open a database file. Return a pointer to the new database
626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection. An error results in process abort.
627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static sqlite3 *openDatabase(const char *zDbName){
629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc;
630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zVfs;
631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *db;
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zVfs = getenv("FOSSIL_VFS");
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = sqlite3_open_v2(
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbName, &db,
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zVfs
638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rc!=SQLITE_OK ){
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_err(sqlite3_errmsg(db));
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_busy_timeout(db, 5000);
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return db;
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
623 646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
624 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
625 648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** zDbName is the name of a database file. If no other database
626 649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** file is open, then open this one. If another database file is
627 650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** already open, then attach zDbName using the name zLabel.
@@ -629,34 +652,30 @@
629 652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_open_or_attach(const char *zDbName, const char *zLabel){
630 653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef __MINGW32__
631 654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDbName = mbcsToUtf8(zDbName);
632 655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
633 656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.db ){
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rc;
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zVfs;
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zVfs = getenv("FOSSIL_VFS");
638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rc = sqlite3_open_v2(
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDbName, &g.db,
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zVfs
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( rc!=SQLITE_OK ){
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_err(sqlite3_errmsg(g.db));
645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_busy_timeout(g.db, 5000);
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.db = openDatabase(zDbName);
647 658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_connection_init();
648 659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
649 660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ATTACH DATABASE %Q AS %s", zDbName, zLabel);
650 661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
651 662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
652 663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
653 664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
654 665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Open the user database in "~/.fossil". Create the database anew if
655 666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** it does not already exist.
667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
668 { 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
669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** opened on a separate database connection g.dbConfig. This prevents
670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the ~/.fossil database from becoming locked on long check-in or sync
671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** operations which hold an exclusive transaction. In a few cases, though,
672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it is convenient for the ~/.fossil to be attached to the main database
673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** connection so that we can join between the various databases. In that
674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** case, invoke this routine with useAttach as 1.
656 675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void db_open_config(void){
676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void db_open_config(int useAttach){
658 677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zDbName;
659 678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zHome;
660 679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.configOpen ) return;
661 680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef __MINGW32__
662 681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHome = getenv("LOCALAPPDATA");
@@ -684,11 +703,17 @@
684 703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDbName = mprintf("%s/.fossil", zHome);
685 704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
686 705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( file_size(zDbName)<1024*3 ){
687 706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_init_database(zDbName, zConfigSchema, (char*)0);
688 707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_or_attach(zDbName, "configdb");
708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.useAttach = useAttach;
709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useAttach ){
710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_or_attach(zDbName, "configdb");
711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.dbConfig = 0;
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.dbConfig = openDatabase(zDbName);
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
690 715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.configOpen = 1;
691 716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
692 717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
693 718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
694 719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If zDbName is a valid local database file, open it and return
@@ -702,11 +727,11 @@
702 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( access(zDbName, F_OK) ) return 0;
703 728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lsize = file_size(zDbName);
704 729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( lsize%1024!=0 || lsize<4096 ) return 0;
705 730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_or_attach(zDbName, "localdb");
706 731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.localOpen = 1;
707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_config();
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_config(0);
708 733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_repository(0);
709 734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
710 735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the "mtime" column is missing from the vfile table, then
711 736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** add it now. This code added on 2008-12-06. After all users have
712 737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** upgraded, this code can be safely deleted.
@@ -987,11 +1012,11 @@
987 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc!=3 ){
988 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage("REPOSITORY-NAME");
989 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
990 1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_create_repository(g.argv[2]);
991 1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_repository(g.argv[2]);
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_config();
1017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_config(0);
993 1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
994 1019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_initial_setup(zDate, 1);
995 1020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
996 1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("project-id: %s\n", db_get("project-code", 0));
997 1022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf("server-id: %s\n", db_get("server-code", 0));
@@ -1145,10 +1170,27 @@
1145 1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<sizeof(azOff)/sizeof(azOff[0]); i++){
1146 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( strcmp(zVal,azOff[i])==0 ) return 1;
1147 1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1148 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
1149 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1177 { 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
1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** work on the ~/.fossil database instead of on the repository database.
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Be sure to swap them back after doing the operation.
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If g.useAttach that means the ~/.fossil database was opened with
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the useAttach flag set to 1. In that case no connection swap is required
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** so this routine is a no-op.
1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void db_swap_connections(void){
1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.useAttach ){
1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3 *dbTemp = g.db;
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.db = g.dbConfig;
1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.dbConfig = dbTemp;
1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1150 1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1151 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1152 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Get and set values from the CONFIG, GLOBAL_CONFIG and VVAR table in the
1153 1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** repository and local databases.
1154 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -1156,41 +1198,57 @@
1156 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = 0;
1157 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.repositoryOpen ){
1158 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = db_text(0, "SELECT value FROM config WHERE name=%Q", zName);
1159 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1160 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z==0 && g.configOpen ){
1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1161 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = db_text(0, "SELECT value FROM global_config WHERE name=%Q", zName);
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1162 1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1163 1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z==0 ){
1164 1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = zDefault;
1165 1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1166 1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return z;
1167 1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1168 1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_set(const char *zName, const char *zValue, int globalFlag){
1169 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("REPLACE INTO %sconfig(name,value) VALUES(%Q,%Q)",
1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- globalFlag ? "global_" : "", zName, zValue);
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( globalFlag ){
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("REPLACE INTO global_config(name,value) VALUES(%Q,%Q)",
1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, zValue);
1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("REPLACE INTO config(name,value) VALUES(%Q,%Q)",
1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, zValue);
1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1172 1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( globalFlag && g.repositoryOpen ){
1173 1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
1174 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1175 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
1176 1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1177 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_unset(const char *zName, int globalFlag){
1178 1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("DELETE FROM %sconfig WHERE name=%Q",
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- globalFlag ? "global_" : "", zName);
1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( globalFlag ){
1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("DELETE INTO global_config WHERE name=%Q", zName);
1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("DELETE INTO config WHERE name=%Q", zName);
1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1181 1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( globalFlag && g.repositoryOpen ){
1182 1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
1183 1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1184 1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
1185 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1186 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int db_is_global(const char *zName){
1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rc = 0;
1187 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.configOpen ){
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return db_exists("SELECT 1 FROM global_config WHERE name=%Q", zName);
1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rc = db_exists("SELECT 1 FROM global_config WHERE name=%Q", zName);
1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1191 1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return rc;
1192 1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1193 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int db_get_int(const char *zName, int dflt){
1194 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int v = dflt;
1195 1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
1196 1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.repositoryOpen ){
@@ -1203,22 +1261,29 @@
1203 1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1204 1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1205 1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = SQLITE_DONE;
1206 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1207 1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_DONE && g.configOpen ){
1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1208 1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = db_int(dflt, "SELECT value FROM global_config WHERE name=%Q", zName);
1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1209 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1210 1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return v;
1211 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1212 1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_set_int(const char *zName, int value, int globalFlag){
1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_begin_transaction();
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec("REPLACE INTO %sconfig(name,value) VALUES(%Q,%d)",
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- globalFlag ? "global_" : "", zName, value);
1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( globalFlag ){
1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("REPLACE INTO global_config(name,value) VALUES(%Q,%d)",
1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, value);
1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("REPLACE INTO config(name,value) VALUES(%Q,%d)",
1280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, value);
1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1216 1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( globalFlag && g.repositoryOpen ){
1217 1283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
1218 1284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_end_transaction(0);
1220 1285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1221 1286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int db_get_boolean(const char *zName, int dflt){
1222 1287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zVal = db_get(zName, dflt ? "on" : "off");
1223 1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( is_truth(zVal) ) return 1;
1224 1289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( is_false(zVal) ) return 0;
@@ -1252,15 +1317,17 @@
1252 1317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName==0 ){
1253 1318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.localOpen ) return;
1254 1319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = db_lget("repository", 0);
1255 1320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1256 1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_canonical_name(zName, &full);
1322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1257 1323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1258 1324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"INSERT OR IGNORE INTO global_config(name,value)"
1259 1325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"VALUES('repo:%q',1)",
1260 1326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_str(&full)
1261 1327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_swap_connections();
1262 1329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&full);
1263 1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1264 1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1265 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1266 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: open
@@ -1412,15 +1479,15 @@
1412 1479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"web-browser",
1413 1480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
1414 1481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
1415 1482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int globalFlag = find_option("global","g",0)!=0;
1416 1483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int unsetFlag = g.argv[1][0]=='u';
1484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_config(1);
1417 1485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(0);
1418 1486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.repositoryOpen ){
1419 1487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
globalFlag = 1;
1420 1488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_config();
1422 1489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( unsetFlag && g.argc!=3 ){
1423 1490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
usage("PROPERTY ?-global?");
1424 1491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1425 1492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc==2 ){
1426 1493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){
1427 1494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!