public override void Execute(FileSysEmulator fse) { FileSysEmulator.FileSystemItem item = _treeToRemove.Resolved.ResolvedFsi; if (item is FileSysEmulator.FsLink) { item = fse.GetTargetItemOfLink((FileSysEmulator.FsLink)item); } if (item is FileSysEmulator.FsDrive) { throw new ApplicationException(String.Format("Can't remove '{0}'.", item.GetFullPath())); } FileSysEmulator.FsDir dir = (FileSysEmulator.FsDir)item; if (fse.CurrentDrive.CurrentDir != null) { FileSysEmulator.FileSystemItem drT = fse.CurrentDrive.CurrentDir; Boolean found = false; for ( ; drT != null && !(drT is FileSysEmulator.FsRoot); drT = drT.Parent) { if (drT == dir) { found = true; break; } } if (found) { throw new ApplicationException(String.Format("Can't remove '{0}' with subtree because it contains the current directory.", item.GetFullPath())); } } fse.RemoveItem(item); }
public override void Execute(FileSysEmulator fse) { FileSysEmulator.FileSystemItem item = _sourceFilePath.Resolved.ResolvedFsi; if ((item is FileSysEmulator.FsFile) || (item is FileSysEmulator.FsLink)) { fse.RemoveItem(item); } else { throw new ApplicationException(String.Format("Command 'Del' can't remove '{0}'.", item.GetFullPath())); } }
public override void Execute(FileSysEmulator fse) { FileSysEmulator.FileSystemItem item = _dirPath.Resolved.ResolvedFsi; if (item is FileSysEmulator.FsLink) { item = fse.GetTargetItemOfLink((FileSysEmulator.FsLink)item); } FileSysEmulator.FsDir dir = (FileSysEmulator.FsDir)item; if (!dir.IsEmpty) { throw new ApplicationException(String.Format("Can't remove '{0}' because it isn't empty.", item.GetFullPath())); } if (dir == fse.CurrentDrive.CurrentDir) { throw new ApplicationException(String.Format("Can't remove '{0}' because it is current.", item.GetFullPath())); } fse.RemoveItem(item); }