35
35
#include "pfolder.h"
36
36
#include "pfs.h"
37
37
#include "pcloudcrypto.h"
38
+ #include "ppathstatus.h"
38
39
#include <string.h>
39
40
#include <stddef.h>
40
41
#include <stdio.h>
@@ -386,6 +387,8 @@ int psync_fstask_mkdir(psync_fsfolderid_t folderid, const char *name, uint32_t f
386
387
psync_fstask_release_folder_tasks_locked (folder );
387
388
if (!depend )
388
389
psync_fsupload_wake ();
390
+ if (folderid >=0 )
391
+ psync_path_status_drive_folder_changed (folderid );
389
392
return 0 ;
390
393
}
391
394
@@ -609,6 +612,8 @@ psync_fstask_creat_t *psync_fstask_add_creat(psync_fstask_folder_t *folder, cons
609
612
memcpy (task -> name , name , len );
610
613
psync_fstask_insert_into_tree (& folder -> creats , offsetof(psync_fstask_creat_t , name ), & task -> tree );
611
614
folder -> taskscnt += 2 ;
615
+ if (folder -> folderid >=0 )
616
+ psync_path_status_drive_folder_changed (folder -> folderid );
612
617
return task ;
613
618
}
614
619
@@ -667,6 +672,8 @@ psync_fstask_creat_t *psync_fstask_add_modified_file(psync_fstask_folder_t *fold
667
672
task -> fileid = - (psync_fsfileid_t )taskid ;
668
673
memcpy (task -> name , name , len );
669
674
psync_fstask_insert_into_tree (& folder -> creats , offsetof(psync_fstask_creat_t , name ), & task -> tree );
675
+ if (folder -> folderid >=0 )
676
+ psync_path_status_drive_folder_changed (folder -> folderid );
670
677
folder -> taskscnt += 2 ;
671
678
return task ;
672
679
}
@@ -1007,6 +1014,8 @@ int psync_fstask_rename_file(psync_fsfileid_t fileid, psync_fsfolderid_t parentf
1007
1014
psync_fsupload_wake ();
1008
1015
if (fileid > 0 && parentfolderid >=0 )
1009
1016
add_history_record (fileid , parentfolderid , name );
1017
+ if (folder -> folderid >=0 )
1018
+ psync_path_status_drive_folder_changed (folder -> folderid );
1010
1019
return 0 ;
1011
1020
}
1012
1021
@@ -1173,6 +1182,8 @@ int psync_fstask_rename_folder(psync_fsfolderid_t folderid, psync_fsfolderid_t p
1173
1182
folder -> taskscnt += 2 ;
1174
1183
psync_fstask_release_folder_tasks_locked (folder );
1175
1184
psync_fsupload_wake ();
1185
+ if (to_folderid >=0 )
1186
+ psync_path_status_drive_folder_changed (to_folderid );
1176
1187
return 0 ;
1177
1188
}
1178
1189
@@ -1189,13 +1200,16 @@ static int folder_cmp(const psync_tree *t1, const psync_tree *t2){
1189
1200
void psync_fstask_folder_created (psync_folderid_t parentfolderid , uint64_t taskid , psync_folderid_t folderid , const char * name ){
1190
1201
psync_fstask_folder_t * folder ;
1191
1202
psync_fstask_mkdir_t * mk ;
1203
+ int pchg ;
1204
+ pchg = 0 ;
1192
1205
folder = psync_fstask_get_folder_tasks_locked (parentfolderid );
1193
1206
if (folder ){
1194
1207
mk = psync_fstask_find_mkdir (folder , name , taskid );
1195
1208
if (mk ){
1196
1209
psync_tree_del (& folder -> mkdirs , & mk -> tree );
1197
1210
psync_free (mk );
1198
1211
folder -> taskscnt -- ;
1212
+ pchg = 1 ;
1199
1213
}
1200
1214
psync_fstask_release_folder_tasks_locked (folder );
1201
1215
}
@@ -1230,7 +1244,10 @@ void psync_fstask_folder_created(psync_folderid_t parentfolderid, uint64_t taski
1230
1244
folder -> folderid = folderid ;
1231
1245
psync_tree_add (& folders , & folder -> tree , folder_cmp );
1232
1246
psync_fstask_release_folder_tasks_locked (folder );
1247
+ psync_path_status_drive_folder_changed (folderid );
1233
1248
}
1249
+ if (pchg )
1250
+ psync_path_status_drive_folder_changed (parentfolderid );
1234
1251
}
1235
1252
1236
1253
void psync_fstask_folder_deleted (psync_folderid_t parentfolderid , uint64_t taskid , const char * name ){
@@ -1298,6 +1315,8 @@ void psync_fstask_file_created(psync_folderid_t parentfolderid, uint64_t taskid,
1298
1315
else
1299
1316
debug (D_NOTICE , "could not find unlink for file %s in folderid %lu" , name , (unsigned long )parentfolderid );
1300
1317
psync_fstask_release_folder_tasks_locked (folder );
1318
+ if (cr )
1319
+ psync_path_status_drive_folder_changed (parentfolderid );
1301
1320
}
1302
1321
else
1303
1322
debug (D_NOTICE , "could not find unlink for file %s in folderid %lu" , name , (unsigned long )parentfolderid );
@@ -1324,6 +1343,8 @@ void psync_fstask_file_modified(psync_folderid_t parentfolderid, uint64_t taskid
1324
1343
folder -> taskscnt -- ;
1325
1344
}
1326
1345
psync_fstask_release_folder_tasks_locked (folder );
1346
+ if (cr )
1347
+ psync_path_status_drive_folder_changed (parentfolderid );
1327
1348
}
1328
1349
if (!folder || !cr )
1329
1350
psync_fstask_look_for_creat_in_db (parentfolderid , taskid , name , fileid );
@@ -1365,6 +1386,8 @@ void psync_fstask_file_renamed(psync_folderid_t folderid, uint64_t taskid, const
1365
1386
folder -> taskscnt -- ;
1366
1387
}
1367
1388
psync_fstask_release_folder_tasks_locked (folder );
1389
+ if (cr )
1390
+ psync_path_status_drive_folder_changed (folderid );
1368
1391
}
1369
1392
res = psync_sql_query ("SELECT id, folderid, text1 FROM fstask WHERE id=?" );
1370
1393
psync_sql_bind_uint (res , 1 , frtaskid );
@@ -1412,6 +1435,8 @@ void psync_fstask_folder_renamed(psync_folderid_t parentfolderid, uint64_t taski
1412
1435
folder -> taskscnt -- ;
1413
1436
}
1414
1437
psync_fstask_release_folder_tasks_locked (folder );
1438
+ if (mk )
1439
+ psync_path_status_drive_folder_changed (parentfolderid );
1415
1440
}
1416
1441
res = psync_sql_query ("SELECT id, folderid, text1 FROM fstask WHERE id=?" );
1417
1442
psync_sql_bind_uint (res , 1 , frtaskid );
@@ -1462,6 +1487,8 @@ static void psync_init_task_mkdir(psync_variant_row row){
1462
1487
psync_fstask_insert_into_tree (& folder -> mkdirs , offsetof(psync_fstask_mkdir_t , name ), & task -> tree );
1463
1488
folder -> taskscnt ++ ;
1464
1489
psync_fstask_release_folder_tasks_locked (folder );
1490
+ if (folderid >=0 )
1491
+ psync_path_status_drive_folder_changed (folderid );
1465
1492
}
1466
1493
1467
1494
static void psync_init_task_rmdir (psync_variant_row row ){
@@ -1518,6 +1545,8 @@ static void psync_init_task_creat(psync_variant_row row){
1518
1545
psync_fstask_insert_into_tree (& folder -> creats , offsetof(psync_fstask_creat_t , name ), & task -> tree );
1519
1546
folder -> taskscnt += 2 ;
1520
1547
psync_fstask_release_folder_tasks_locked (folder );
1548
+ if (folderid >=0 )
1549
+ psync_path_status_drive_folder_changed (folderid );
1521
1550
}
1522
1551
1523
1552
@@ -1613,6 +1642,8 @@ static void psync_init_task_renfile_to(psync_variant_row row){
1613
1642
folder -> taskscnt += 2 ;
1614
1643
psync_fstask_release_folder_tasks_locked (folder );
1615
1644
psync_fs_rename_openfile_locked (cr -> fileid , folderid , name );
1645
+ if (folderid >=0 )
1646
+ psync_path_status_drive_folder_changed (folderid );
1616
1647
}
1617
1648
1618
1649
static void psync_init_task_renfolder_from (psync_variant_row row ){
@@ -1665,6 +1696,8 @@ static void psync_init_task_renfolder_to(psync_variant_row row){
1665
1696
psync_fstask_insert_into_tree (& folder -> mkdirs , offsetof(psync_fstask_mkdir_t , name ), & mk -> tree );
1666
1697
folder -> taskscnt += 2 ;
1667
1698
psync_fstask_release_folder_tasks_locked (folder );
1699
+ if (folderid >=0 )
1700
+ psync_path_status_drive_folder_changed (folderid );
1668
1701
}
1669
1702
1670
1703
static void psync_init_task_modify (psync_variant_row row ){
@@ -1695,6 +1728,8 @@ static void psync_init_task_modify(psync_variant_row row){
1695
1728
memcpy (cr -> name , name , len );
1696
1729
psync_fstask_insert_into_tree (& folder -> creats , offsetof(psync_fstask_creat_t , name ), & cr -> tree );
1697
1730
folder -> taskscnt += 2 ;
1731
+ if (folder -> folderid >=0 )
1732
+ psync_path_status_drive_folder_changed (folder -> folderid );
1698
1733
psync_fstask_release_folder_tasks_locked (folder );
1699
1734
}
1700
1735
0 commit comments