コード例 #1
0
bool FileUtilsExtension::delete_folder_tree(const std::string& directory_name) {
#ifndef WIN32
    DIR*            dp;
    struct dirent*  ep;
    
    dp = opendir(directory_name.c_str());
    
    while ((ep = readdir(dp)) != NULL) {
        if (std::string(ep->d_name) == "." || std::string(ep->d_name) == "..") continue;
        
        std::string p_buf = directory_name + "/" + ep->d_name; //"%s/%s"
        if (path_is_directory(p_buf))
            delete_folder_tree(p_buf);
        else
            unlink(p_buf.c_str());
    }
    
    closedir(dp);
    return (0 == rmdir(directory_name.c_str()));
#else
	BOOL ret = RemoveDirectory((LPCWSTR)directory_name.c_str());
	if (!ret) {
		cocos2d::log("FileUtilsExtension::delete_folder_tree failed with error %ld", GetLastError());
	}

	return !!ret;
#endif
}
コード例 #2
0
ファイル: init.c プロジェクト: chch1028/rtems
static void delete_folder_tree( const char *directory_name )
{
  DIR           *dp;
  struct dirent *ep;
  char           p_buf[1024] = {0};
  int            rc          = 0;


  dp = opendir( directory_name );
  rtems_test_assert( dp != NULL );

  while ( ( ep = readdir( dp ) ) != NULL && rc == 0 ) {
    if ( 0 != strcmp( ".", ep->d_name )
         && 0 != strcmp( "..", ep->d_name ) ) {
      snprintf( p_buf, sizeof( p_buf ), "%s/%s", directory_name, ep->d_name );

      if ( path_is_directory( p_buf ) ) {
        delete_folder_tree( p_buf );
        rc = rmdir( p_buf );
        rtems_test_assert( rc == 0 );
        rewinddir( dp );
      } else {
        rc = unlink( p_buf );
        rtems_test_assert( rc == 0 );
        rewinddir( dp );
      }
    }
  }

  rc = closedir( dp );
  rtems_test_assert( rc == 0 );
}
コード例 #3
0
ファイル: AssetsUpdateLayer.cpp プロジェクト: sharpfforg/us
void delete_folder_tree(const char *dirname)
{
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
    DIR *dir;
    struct dirent *entry;
    char path[PATH_MAX];

    if (path == NULL) {
        CCLOG("Out of memory error\n");
        return;
    }
    dir = opendir(dirname);
    if (dir == NULL) {
        CCLOG("Error opendir()");
        return;
    }

    while ((entry = readdir(dir)) != NULL) {
        if (strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")) {
            snprintf(path, (size_t) PATH_MAX, "%s/%s", dirname, entry->d_name);
            if (entry->d_type == DT_DIR) {
                delete_folder_tree(path);
            } else {
                unlink(path);
            }
        }

    }
    closedir(dir);

    CCLOG("(not really) Deleting: %s\n", dirname);

    return;
#endif
}
コード例 #4
0
ファイル: AssetsUpdateLayer.cpp プロジェクト: sharpfforg/us
void AssetsUpdateLayer::removeDownloadedDir()
{
    CCLOG("version remove download dir");
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
    DIR *pDir = NULL;
    pDir = opendir (m_pathToSave.c_str());
    if (pDir)
    {
        //char command[128];
        //sprintf(command, "rm -rf %s", m_pathToSave.c_str());
        //system(command);
        delete_folder_tree(m_pathToSave.c_str());
    }
#else
#endif
}
コード例 #5
0
ファイル: init.c プロジェクト: chch1028/rtems
static void unmount_and_close_device( void )
{
  int                     rc;
  rtems_resource_snapshot now;
  bool                    are_resources_freed;


  delete_folder_tree( MOUNT_DIR );

  rc = unmount( MOUNT_DIR );
  rtems_test_assert( rc == 0 );

  are_resources_freed = rtems_resource_snapshot_check( &before_mount );

  if ( !are_resources_freed )
    rtems_resource_snapshot_take( &now );

  rtems_test_assert( are_resources_freed );
}