je n'arrive pas à supprimer un repertoire et ses sous repertoires fils avec libssh.
j'avais d'abord fait une fonction recursive qui supprime à la fois les fichiers et les sous repertoires puis comme ca ne fonctionnait pas, j'ai fait deux fonctions,une premiere qui fonctionne et supprime tous les fichiers dans le repertoire et ses sous repertoires, et une deuxieme qui ne fonctionne pas qui supprime le repertoire et ses sous repertoires (qui ne contienne alors qu eventuellement des sous repertoires ou rien)
quelqu un a t'il deja utilisé libssh pour supprimer des repertoires et leurs sous repertoires ?
voila le code de la derniere fonction qui supprime les repertoires et qui ne fonctionne pas (je l'avais aussi fait de deux facons) :
PS: le parametre destdir est le chemin du repertoire sur le serveur sftp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 bool sshobj::supprimerepserveur(QString destdir) { int rc; char * p; char dat[10000]; bool res=true; p=destdir.toUtf8().data(); strcpy(dat,p); sftp_dir dir; sftp_attributes attributes; dir = sftp_opendir(m_sftp, dat); if (!dir) { return false; } while ((attributes = sftp_readdir(m_sftp, dir)) != NULL) { switch(attributes->type) { case SSH_FILEXFER_TYPE_DIRECTORY: { QString rep=QString::fromUtf8(attributes->name); bool res2=supprimerepserveur(rep); if (res2==false) res=false; break; } case SSH_FILEXFER_TYPE_REGULAR: { break; } case SSH_FILEXFER_TYPE_SYMLINK: { break; } case SSH_FILEXFER_TYPE_SPECIAL: { break; } case SSH_FILEXFER_TYPE_UNKNOWN:{ break; } } sftp_attributes_free(attributes); } if (!sftp_dir_eof(dir)) { sftp_closedir(dir); } rc = sftp_closedir(dir); rc = sftp_rmdir(m_sftp,dat); if (rc<0) res =false; return res; }
Partager