@@ -785,40 +785,41 @@
785 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
786 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( file_access(zDbName, F_OK) ) return 0;
787 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lsize = file_size(zDbName);
788 788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( lsize%1024!=0 || lsize<4096 ) return 0;
789 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_or_attach(zDbName, "localdb");
790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.localOpen = 1;
791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_config(0);
792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_open_repository(0);
793 790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
794 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If the "isexe" column is missing from the vfile table, then
795 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** add it now. This code added on 2010-03-06. After all users have
796 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** upgraded, this code can be safely deleted.
797 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db_local_column_exists("vfile", "isexe") )
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db_local_column_exists("vfile", "isexe") ){
799 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE vfile ADD COLUMN isexe BOOLEAN DEFAULT 0");
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
800 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
801 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If "islink"/"isLink" columns are missing from tables, then
802 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** add them now. This code added on 2011-01-17 and 2011-08-27.
803 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** After all users have upgraded, this code can be safely deleted.
804 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db_local_column_exists("vfile", "islink") )
803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !db_local_column_exists("vfile", "islink") ){
806 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE vfile ADD COLUMN islink BOOLEAN DEFAULT 0");
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
807 806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
808 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db_local_column_exists("stashfile", "isLink") &&
809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_local_table_exists("stashfile") )
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_local_table_exists("stashfile") ){
810 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE stashfile ADD COLUMN isLink BOOLEAN DEFAULT 0");
810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
811 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
812 812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db_local_column_exists("undo", "isLink") &&
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_local_table_exists("undo") )
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_local_table_exists("undo") ){
814 814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE undo ADD COLUMN isLink BOOLEAN DEFAULT 0");
815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
815 816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
816 817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db_local_column_exists("undo_vfile", "islink") &&
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_local_table_exists("undo_vfile") )
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_local_table_exists("undo_vfile") ){
818 819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE undo_vfile ADD COLUMN islink BOOLEAN DEFAULT 0");
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
820 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
821 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
822 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
823 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
824 825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Locate the root directory of the local repository tree. The root
@@ -853,10 +854,13 @@
853 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( n>1 && zPwd[n-1]=='/' ){
854 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n--;
855 856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPwd[n] = 0;
856 857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
857 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zLocalRoot = mprintf("%s/", zPwd);
859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.localOpen = 1;
860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_config(0);
861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_open_repository(0);
858 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
859 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
860 864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
861 865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n--;
862 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( n>0 && zPwd[n]!='/' ){ n--; }
@@ -865,20 +869,38 @@
865 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
866 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
867 871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A checkout database file could not be found */
868 872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
869 873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Get the full pathname to the repository database file. The
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** local database (the _FOSSIL_ or .fos database) must have already
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** been opened before this routine is called.
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *db_repository_filename(void){
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char *zRepo = 0;
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( g.localOpen );
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( g.zLocalRoot );
884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zRepo==0 ){
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRepo = db_lget("repository", 0);
886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zRepo && !file_is_absolute_path(zRepo) ){
887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRepo = mprintf("%s%s", g.zLocalRoot, zRepo);
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zRepo;
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
870 892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
871 893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
872 894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Open the repository database given by zDbName. If zDbName==NULL then
873 895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** get the name from the already open local database.
874 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
875 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_open_repository(const char *zDbName){
876 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.repositoryOpen ) return;
877 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDbName==0 ){
878 900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.localOpen ){
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDbName = db_lget("repository", 0);
901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDbName = db_repository_filename();
880 902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
881 903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDbName==0 ){
882 904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_err("unable to find the name of a repository database");
883 905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
884 906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -930,11 +952,11 @@
930 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
931 953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRep==0 ){
932 954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_open_local()==0 ){
933 955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto rep_not_found;
934 956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zRep = db_lget("repository", 0)/*leak here*/;
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zRep = db_repository_filename();
936 958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zRep==0 ){
937 959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto rep_not_found;
938 960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
939 961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
940 962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_repository(zRep);
@@ -1667,11 +1689,11 @@
1667 1689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1668 1690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_record_repository_filename(const char *zName){
1669 1691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob full;
1670 1692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName==0 ){
1671 1693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.localOpen ) return;
1672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zName = db_lget("repository", 0);
1694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = db_repository_filename();
1673 1695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1674 1696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_canonical_name(zName, &full);
1675 1697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_swap_connections();
1676 1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1677 1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"INSERT OR IGNORE INTO global_config(name,value)"
@@ -1725,11 +1747,11 @@
1725 1747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_canonical_name(g.argv[2], &path);
1726 1748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_repository(blob_str(&path));
1727 1749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_init_database("./_FOSSIL_", zLocalSchema, (char*)0);
1728 1750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_delete_on_failure("./_FOSSIL_");
1729 1751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_open_local();
1730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_lset("repository", blob_str(&path));
1752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_lset("repository", g.argv[2]);
1731 1753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_record_repository_filename(blob_str(&path));
1732 1754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = db_int(0, "SELECT pid FROM plink y"
1733 1755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE NOT EXISTS(SELECT 1 FROM plink x WHERE x.cid=y.pid)");
1734 1756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( vid==0 ){
1735 1757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_lset_int("checkout", 1);
1736 1758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!