Skip to content

Commit f7113c6

Browse files
author
virco
committed
fix PCS-566
1 parent 000bb62 commit f7113c6

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

gitcommit.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#ifndef _GITCOMMIT_H
22
#define _GITCOMMIT_H
33

4-
#define GIT_PREV_COMMIT_ID "cd1b259fc6415d7ba9078da20941d4da65a02bf6"
5-
#define GIT_PREV_COMMIT_DATE "2016-12-12 20:33:28 +0200"
6-
#define GIT_COMMIT_DATE "2016-12-19 16:02:18 +0200"
4+
#define GIT_PREV_COMMIT_ID "000bb627cc93bd35aff38ededb644d324403e10c"
5+
#define GIT_PREV_COMMIT_DATE "2016-12-19 16:02:18 +0200"
6+
#define GIT_COMMIT_DATE "2016-12-20 15:50:08 +0200"
77

88
#endif

plocalscan.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,25 @@ static int scanner_local_folder_to_list(const char *localpath, psync_list *lst){
156156
return psync_list_dir(localpath, scanner_local_entry_to_list, lst);
157157
}
158158

159+
static void delete_local_folder_rec(psync_folderid_t localfolderid);
160+
161+
static void try_delete_localfolder(psync_folderid_t localfolderid){
162+
if (psync_sql_tryupgradelock())
163+
return;
164+
psync_sql_start_transaction();
165+
delete_local_folder_rec(localfolderid);
166+
psync_sql_commit_transaction();
167+
}
168+
169+
static void try_delete_localfile(psync_fileid_t localfileid){
170+
psync_sql_res *res;
171+
if (psync_sql_tryupgradelock())
172+
return;
173+
res=psync_sql_prep_statement("DELETE FROM localfile WHERE id=?");
174+
psync_sql_bind_uint(res, 1, localfileid);
175+
psync_sql_run_free(res);
176+
}
177+
159178
static void scanner_db_folder_to_list(psync_syncid_t syncid, psync_folderid_t localfolderid, psync_list *lst){
160179
psync_sql_res *res;
161180
psync_variant_row row;
@@ -168,6 +187,11 @@ static void scanner_db_folder_to_list(psync_syncid_t syncid, psync_folderid_t lo
168187
psync_sql_bind_uint(res, 2, syncid);
169188
while ((row=psync_sql_fetch_row(res))){
170189
name=psync_get_lstring(row[5], &namelen);
190+
if (unlikely(psync_is_lname_to_ignore(name, namelen))){
191+
debug(D_NOTICE, "found a name %s matching ignore pattern in localfolder, will try to delete", name);
192+
try_delete_localfolder(psync_get_number(row[0]));
193+
continue;
194+
}
171195
namelen++;
172196
e=(sync_folderlist *)psync_malloc(offsetof(sync_folderlist, name)+namelen);
173197
e->localid=psync_get_number(row[0]);
@@ -186,6 +210,11 @@ static void scanner_db_folder_to_list(psync_syncid_t syncid, psync_folderid_t lo
186210
psync_sql_bind_uint(res, 2, syncid);
187211
while ((row=psync_sql_fetch_row(res))){
188212
name=psync_get_lstring(row[5], &namelen);
213+
if (unlikely(psync_is_lname_to_ignore(name, namelen))){
214+
debug(D_NOTICE, "found a name %s matching ignore pattern in localfile, will try to delete", name);
215+
try_delete_localfile(psync_get_number(row[0]));
216+
continue;
217+
}
189218
namelen++;
190219
e=(sync_folderlist *)psync_malloc(offsetof(sync_folderlist, name)+namelen);
191220
e->localid=psync_get_number(row[0]);

0 commit comments

Comments
 (0)