void CopyFile(ProgressMonitor monitor, string src, string dest, DeployFileAttributes atts) { dest = FileService.GetFullPath(dest); monitor.Log.WriteLine(GettextCatalog.GetString("Deploying file {0}.", dest)); string targetDir = Path.GetDirectoryName(dest); if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } FileService.CopyFile(src, dest); Mono.Unix.Native.FilePermissions perms = Mono.Unix.Native.FilePermissions.DEFFILEMODE; if ((atts & DeployFileAttributes.Executable) != 0) { perms |= Mono.Unix.Native.FilePermissions.S_IXGRP | Mono.Unix.Native.FilePermissions.S_IXUSR | Mono.Unix.Native.FilePermissions.S_IXOTH; } if ((atts & DeployFileAttributes.ReadOnly) != 0) { perms &= ~(Mono.Unix.Native.FilePermissions.S_IWGRP | Mono.Unix.Native.FilePermissions.S_IWOTH | Mono.Unix.Native.FilePermissions.S_IWUSR); } if (perms != Mono.Unix.Native.FilePermissions.DEFFILEMODE) { Mono.Unix.Native.Syscall.chmod(dest, perms); } }
public void Create(Mono.Unix.Native.FilePermissions mode) { int r = Mono.Unix.Native.Syscall.mkdir(FullPath, mode); UnixMarshal.ThrowExceptionForLastErrorIf(r); base.Refresh(); }
public static void MakeExecutable(string filename) { Mono.Unix.Native.Stat stat; if (0 == Mono.Unix.Native.Syscall.stat(filename, out stat)) { Mono.Unix.Native.FilePermissions fp = stat.st_mode | Mono.Unix.Native.FilePermissions.S_IXUSR; Mono.Unix.Native.Syscall.chmod(filename, fp); } }
public static bool IsWritable(string path) { Mono.Unix.Native.Stat stat; Mono.Unix.Native.Syscall.lstat(path, out stat); Mono.Unix.Native.FilePermissions type = (stat.st_mode & Mono.Unix.Native.FilePermissions.S_IFMT); if (type == Mono.Unix.Native.FilePermissions.S_IWUSR || type == Mono.Unix.Native.FilePermissions.S_IWGRP || type == Mono.Unix.Native.FilePermissions.S_IWOTH) { return(true); } return(false); }
public static void makedirs(string path, Mono.Unix.Native.FilePermissions permissions = Mono.Unix.Native.FilePermissions.ALLPERMS) { string[] pathParts = path.Split(Path.PathSeparator); for (int i = 0; i < pathParts.Length; i++) { if (i > 0) { pathParts[i] = Path.Combine(pathParts[i - 1], pathParts[i]); } if (!Directory.Exists(pathParts[i])) { Mono.Unix.Native.Syscall.mkdir(pathParts[i], permissions); } } }
static public bool IsSpecialFile(string path) { Mono.Unix.Native.Stat stat; Mono.Unix.Native.Syscall.lstat(path, out stat); Mono.Unix.Native.FilePermissions type = (stat.st_mode & Mono.Unix.Native.FilePermissions.S_IFMT); if (type == Mono.Unix.Native.FilePermissions.S_IFLNK || type == Mono.Unix.Native.FilePermissions.S_IFCHR || type == Mono.Unix.Native.FilePermissions.S_IFBLK || type == Mono.Unix.Native.FilePermissions.S_IFIFO || type == Mono.Unix.Native.FilePermissions.S_IFSOCK) { return(true); } return(false); }
public void Create() { Mono.Unix.Native.FilePermissions mode = Mono.Unix.Native.FilePermissions.ACCESSPERMS; Create(mode); }