/// <summary> /// Unmounts the specified mount point. /// </summary> /// <param name="mountPoint">The mount point.</param> /// <param name="options">The options.</param> public void Unmount(String mountPoint, String options) { mountPoint.ThrowIfNull("mountPoint"); Device.ThrowIfNull("Device"); CommandErrorReceiver cer = new CommandErrorReceiver(); Device.ExecuteShellCommand("umount {1} {0}", cer, !String.IsNullOrEmpty(options) ? String.Format("-o {0}", options) : String.Empty, mountPoint); }
/// <summary> /// Attempts to mount the mount point to the associated device without knowing the device or the type. /// Some devices may not support this method. /// </summary> /// <param name="mountPoint"></param> public void Mount(String mountPoint) { mountPoint.ThrowIfNull("mountPoint"); Device.ThrowIfNull("Device"); CommandErrorReceiver cer = new CommandErrorReceiver(); Device.ExecuteShellCommand("mount {0}", cer, mountPoint); }
/// <summary> /// Mounts the specified device. /// </summary> /// <param name="mountPoint">The mp.</param> /// <param name="options">The options.</param> public void Mount(MountPoint mountPoint, String options) { mountPoint.ThrowIfNull("mountPoint"); Device.ThrowIfNull("Device"); CommandErrorReceiver cer = new CommandErrorReceiver(); Device.ExecuteShellCommand("mount {0} {4} -t {1} {2} {3}", cer, mountPoint.IsReadOnly ? "-r" : "-w", mountPoint.FileSystem, mountPoint.Block, mountPoint.Name, !String.IsNullOrEmpty(options) ? String.Format("-o {0}", options) : String.Empty); }
/// <summary> /// Creates the specified path. /// </summary> /// <param name="path">The path.</param> /// <returns></returns> public FileEntry Create(String path) { Device.ThrowIfNull("Device"); path.ThrowIfNullOrWhiteSpace("path"); if (!Device.IsOffline) { if (Exists(path)) { throw new ArgumentException("The specified path already exists."); } else { var cer = new CommandErrorReceiver(); var escaped = LinuxPath.Escape(path); // use native touch command if its available. var cmd = ">"; var command = String.Format("{0} {1}", cmd, escaped); if (Device.CanSU()) { Device.ExecuteRootShellCommand(command, cer); } else { Device.ExecuteShellCommand(command, cer); } if (!String.IsNullOrEmpty(cer.ErrorMessage)) { throw new IOException(String.Format("Error creating file: {0}", cer.ErrorMessage)); } else { // at this point, the newly created file should exist. return(this.fileListingService.FindFileEntry(path)); } } } else { throw new IOException("Device is not online"); } }
/// <summary> /// Gets if the specified path exists on the device. /// </summary> /// <param name="path">the path to check</param> /// <returns><see langword="true"/>, if the path exists; otherwise, <see langword="false"/></returns> /// <exception cref="IOException">If the device is not connected.</exception> /// <exception cref="ArgumentNullException">If the device or path is null.</exception> public bool Exists(String path) { Device.ThrowIfNull("Device"); path.ThrowIfNullOrWhiteSpace("path"); if (!Device.IsOffline) { try { FileEntry fe = this.fileListingService.FindFileEntry(path); return(fe != null); } catch (FileNotFoundException e) { return(false); } } else { throw new IOException("Device is not online"); } }