@@ -145,39 +145,49 @@
145 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the file has changed without having the check the on-disk image.
146 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
147 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void vfile_check_signature(int vid){
148 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
149 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob fileCksum, origCksum;
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int checkMtime = db_get_boolean("mtime-changes", 0);
150 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
151 152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
152 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "SELECT id, %Q || pathname,"
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " vfile.mrid, deleted, chnged, uuid"
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " vfile.mrid, deleted, chnged, uuid, mtime"
154 155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM vfile LEFT JOIN blob ON vfile.mrid=blob.rid"
155 156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE vid=%d ", g.zLocalRoot, vid);
156 157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
157 158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int id, rid, isDeleted;
158 159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName;
159 160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int chnged = 0;
160 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int oldChnged;
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 oldMtime;
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 currentMtime;
161 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
id = db_column_int(&q, 0);
163 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = db_column_text(&q, 1);
164 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = db_column_int(&q, 2);
165 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isDeleted = db_column_int(&q, 3);
166 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
oldChnged = db_column_int(&q, 4);
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ oldMtime = db_column_int64(&q, 6);
167 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( oldChnged>=2 ){
168 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chnged = oldChnged;
169 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( isDeleted || rid==0 ){
170 174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chnged = 1;
171 175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
172 176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( chnged!=1 ){
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ currentMtime = file_mtime(zName);
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( chnged!=1 && (checkMtime==0 || currentMtime!=oldMtime) ){
173 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_ephemeral_blob(&q, 5, &origCksum);
174 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( sha1sum_file(zName, &fileCksum) ){
175 182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&fileCksum);
176 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
177 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_compare(&fileCksum, &origCksum) ){
178 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chnged = 1;
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( currentMtime!=oldMtime ){
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("UPDATE vfile SET mtime=%lld WHERE id=%d",
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ currentMtime, id);
179 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
180 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&origCksum);
181 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&fileCksum);
182 192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
183 193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( chnged!=oldChnged ){
@@ -217,10 +227,12 @@
217 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = db_column_text(&q, 1);
218 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = db_column_int(&q, 2);
219 229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(rid, &content);
220 230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( verbose ) printf("%s\n", &zName[nRepos]);
221 231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_write_to_file(&content, zName);
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("UPDATE vfile SET mtime=%lld WHERE id=%d",
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_mtime(zName), id);
222 234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
223 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
224 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
225 237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
226 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -236,10 +248,11 @@
236 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
237 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = db_column_text(&q, 0);
238 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unlink(zName);
239 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
240 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("UPDATE vfile SET mtime=NULL HERE vid=%d AND mrid>0", vid);
241 254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
242 255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
243 256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
244 257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Load into table SFILE the name of every ordinary file in
245 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the directory pPath. Omit the first nPrefix characters of
246 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!