extern int force_delete;
STRUCT_STAT st;
int ret;
+ extern int recurse;
if (do_unlink(fname) == 0 || errno == ENOENT) return 0;
}
if (do_rmdir(fname) == 0 || errno == ENOENT) return 0;
- if (!force_delete || (errno != ENOTEMPTY && errno != EEXIST)) {
+ if (!force_delete || !recurse ||
+ (errno != ENOTEMPTY && errno != EEXIST)) {
rprintf(FERROR,"rmdir(%s) : %s\n", fname, strerror(errno));
return -1;
}
{
if (dlist_len == dlist_alloc_len) {
dlist_alloc_len += 1024;
- if (!delete_list) {
- delete_list = (struct delete_list *)malloc(sizeof(delete_list[0])*dlist_alloc_len);
- } else {
- delete_list = (struct delete_list *)realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len);
- }
+ delete_list = (struct delete_list *)Realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len);
if (!delete_list) out_of_memory("add_delete_entry");
}