| 207 | }; |
| 208 | |
| 209 | void recursive_remove(const ACE_TString& dirname) |
| 210 | { |
| 211 | using namespace OpenDDS::FileSystemStorage; |
| 212 | DDS_Dirent dir(dirname.c_str()); |
| 213 | { |
| 214 | CwdGuard cg(dirname); |
| 215 | |
| 216 | for (DDS_DIRENT* ent = dir.read(); ent; ent = dir.read()) { |
| 217 | if (ent->d_name[0] == ACE_TEXT('.') && (!ent->d_name[1] || |
| 218 | (ent->d_name[1] == ACE_TEXT('.') && !ent->d_name[2]))) { |
| 219 | continue; // skip '.' and '..' |
| 220 | } |
| 221 | |
| 222 | if (is_dir(ent->d_name)) { |
| 223 | recursive_remove(ent->d_name); |
| 224 | |
| 225 | } else { // regular file |
| 226 | ACE_OS::unlink(ent->d_name); |
| 227 | } |
| 228 | } |
| 229 | } |
| 230 | dds_rmdir(dirname.c_str()); |
| 231 | } |
| 232 | |
| 233 | } // namespace |
| 234 | |