Проблема в команде rm при удалении файлов или каталога в целевом каталоге.
, когда указатель направления обращается к файлам в целевом каталоге, кроме ".", "..",
вызовите системный вызов unlink (поскольку в каталоге нет подкаталога),
и после выхода из цикла будет очищен (я полагаю)
=> Я думаю, проблема в том, что d-> d_name в прямой структуре unlink (имя файла не содержит нулевую строку), но d_name включает в себя пустую строку
это правильное предположение? thx.
НЕ ИСПОЛЬЗУЯ FTW!
void rm_m(char **res){ // pointer array named res
struct stat buf; // (res[0]="rm_m", res[1] =file or directory name)
DIR *dp;
struct dirent *d;
stat(res[1], &buf);
if(buf.st_mode&S_IFREG){ //reg file
unlink(res[1]);
}
else if(buf.st_mode&S_IFDIR){ //directory
dp = opendir(res[1]);
d = readdir(dp);
while(d != NULL){
if(d->d_name[0] != '.'){
unlink(d->d_name);
}
d = readdir(dp);
}
remove(res[1]);
}
return;
}