31
31
#include "pfolder.h"
32
32
33
33
#include <stdio.h>
34
+
34
35
typedef struct _email_vis_params {
35
36
char * * email ;
36
37
size_t * length ;
@@ -680,12 +681,12 @@ static int check_write_permissions (psync_folderid_t folderid) {
680
681
psync_uint_row row ;
681
682
int ret = 0 ;
682
683
683
- res = psync_sql_query_nolock ("SELECT permissions, flags, name FROM folder WHERE id=?" );
684
+ res = psync_sql_query ("SELECT permissions, flags, name FROM folder WHERE id=?" );
684
685
psync_sql_bind_uint (res , 1 , folderid );
685
686
row = psync_sql_fetch_rowint (res );
686
687
if (unlikely (!row ))
687
688
debug (D_ERROR , "could not find folder of folderid %lu" , (unsigned long )folderid );
688
- else if ((( row [1 ])& 3 ) != P_O_RDONLY && ! ((row [0 ]) & ( PSYNC_PERM_MODIFY | PSYNC_PERM_CREATE )))
689
+ else if (/*((( row[1]) & 3) != O_RDONLY) &&*/ ((row [0 ]& PSYNC_PERM_MODIFY ) && ( row [ 0 ] & PSYNC_PERM_CREATE )))
689
690
ret = 1 ;
690
691
691
692
psync_sql_free_result (res );
@@ -695,25 +696,27 @@ static int check_write_permissions (psync_folderid_t folderid) {
695
696
psync_folderid_t psync_check_and_create_folder (const char * path ) {
696
697
psync_folderid_t folderid = psync_get_folderid_by_path_or_create (path );
697
698
if (folderid == PSYNC_INVALID_FOLDERID || (!check_write_permissions (folderid ))){
698
- char * buff ;
699
+ char * buff = NULL ;
699
700
uint32_t bufflen ;
700
701
int ind = 1 ;
701
- char * err ;
702
+ char * err = NULL ;
702
703
703
704
while (ind < 100 ) {
704
705
folderid = PSYNC_INVALID_FOLDERID ;
705
706
bufflen = strlen (path ) + 1 /*zero char*/ + 3 /*parenthesis*/ + 3 /*up to 3 digit index*/ ;
706
707
buff = (char * ) psync_malloc (bufflen );
707
708
snprintf (buff , bufflen - 1 , "%s (%d)" , path , ind );
708
- if (psync_create_remote_folder_by_path (buff , & err )!= 0 ) {
709
- folderid = psync_get_folderid_by_path_or_create (buff );
710
- if ((folderid != PSYNC_INVALID_FOLDERID )&& check_write_permissions (folderid )) {
711
- psync_free (buff );
712
- break ;
713
- }
714
- } else
715
- debug (D_NOTICE ,"Unable to create folder %s error is %s." , buff , err );
709
+ if (psync_create_remote_folder_by_path (buff , & err )!= 0 )
710
+ debug (D_NOTICE , "Unable to create folder %s error is %s." , buff , err );
711
+ folderid = psync_get_folderid_by_path_or_create (buff );
712
+ if ((folderid != PSYNC_INVALID_FOLDERID )&& check_write_permissions (folderid )) {
713
+ psync_free (buff );
714
+ break ;
715
+ }
716
716
++ ind ;
717
+
718
+ if (err )
719
+ psync_free (err );
717
720
psync_free (buff );
718
721
}
719
722
}
0 commit comments