Exemple #1
0
 internal UnixFileSystemInfo(String path, Native.Stat stat)
 {
     this.originalPath = path;
     this.fullPath     = UnixPath.GetFullPath(path);
     this.stat         = stat;
     this.valid        = true;
 }
Exemple #2
0
    private void UpdateDetailPermissions()
    {
        Stat buf = new Mono.Unix.Native.Stat();

        Syscall.stat(slices.ActiveSlice.GetActiveNode().File, out buf);

        permissionCheckOR.Active = false;
        permissionCheckGR.Active = false;
        permissionCheckUR.Active = false;
        permissionCheckOW.Active = false;
        permissionCheckGW.Active = false;
        permissionCheckUW.Active = false;
        permissionCheckOX.Active = false;
        permissionCheckGX.Active = false;
        permissionCheckUX.Active = false;

        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IRUSR) != 0)
        {
            permissionCheckOR.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IRGRP) != 0)
        {
            permissionCheckGR.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IROTH) != 0)
        {
            permissionCheckUR.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWUSR) != 0)
        {
            permissionCheckOW.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWGRP) != 0)
        {
            permissionCheckGW.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWOTH) != 0)
        {
            permissionCheckUW.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXUSR) != 0)
        {
            permissionCheckOX.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXGRP) != 0)
        {
            permissionCheckGX.Active = true;
        }
        if ((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXOTH) != 0)
        {
            permissionCheckUX.Active = true;
        }
    }
Exemple #3
0
 protected virtual bool GetFileStatus(string path, out Native.Stat stat)
 {
     return(Native.Syscall.stat(path, out stat) == 0);
 }
 internal UnixDirectoryInfo(string path, Native.Stat stat)
     : base(path, stat)
 {
 }
 internal UnixFileInfo(string path, Native.Stat stat)
     : base(path, stat)
 {
 }
Exemple #6
0
    private void UpdateDetailPermissions()
    {
        Stat buf = new Mono.Unix.Native.Stat() ;

        Syscall.stat(slices.ActiveSlice.GetActiveNode().File, out buf);

        permissionCheckOR.Active = false;
        permissionCheckGR.Active = false;
        permissionCheckUR.Active = false;
        permissionCheckOW.Active = false;
        permissionCheckGW.Active = false;
        permissionCheckUW.Active = false;
        permissionCheckOX.Active = false;
        permissionCheckGX.Active = false;
        permissionCheckUX.Active = false;

        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IRUSR) != 0) {
            permissionCheckOR.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IRGRP) != 0) {
            permissionCheckGR.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IROTH) != 0) {
            permissionCheckUR.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWUSR) != 0) {
            permissionCheckOW.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWGRP) != 0) {
            permissionCheckGW.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IWOTH) != 0) {
            permissionCheckUW.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXUSR) != 0) {
            permissionCheckOX.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXGRP) != 0) {
            permissionCheckGX.Active = true;
        }
        if((buf.st_mode & Mono.Unix.Native.FilePermissions.S_IXOTH) != 0) {
            permissionCheckUX.Active = true;
        }
    }
Exemple #7
0
		/// <summary>
		/// Set chmod a+x on a path in Linux. No-op in Windows.
		/// The x mode bit will make a file executable or a directory searchable.
		/// </summary>
		public static void SetExecutable(string path)
		{
			#if __MonoCS__
			if (!FileUtils.FileExists(path) && !FileUtils.DirectoryExists(path))
				throw new FileNotFoundException();

			var fileStat = new Mono.Unix.Native.Stat();
			Mono.Unix.Native.Syscall.stat(path, out fileStat);
			var originalMode = fileStat.st_mode;
			var modeWithExecute = originalMode | FilePermissions.S_IXUSR |
				FilePermissions.S_IXGRP | FilePermissions.S_IXOTH;
			Mono.Unix.Native.Syscall.chmod(path, modeWithExecute);
			#endif
		}
Exemple #8
0
 internal UnixSymbolicLinkInfo(string path, Native.Stat stat)
     : base(path, stat)
 {
 }
Exemple #9
0
 protected override bool GetFileStatus(string path, out Native.Stat stat)
 {
     return(Native.Syscall.lstat(path, out stat) == 0);
 }
Exemple #10
0
		/// <summary>
		/// Helper for tests. Remove execute or searchable mode bit from a file or directory.
		/// </summary>
		private void RemoveExecuteBit(string path)
		{
			#if __MonoCS__
			var fileStat = new Mono.Unix.Native.Stat();
			Mono.Unix.Native.Syscall.stat(path, out fileStat);
			var originalMode = fileStat.st_mode;
			var xModeBits = FilePermissions.S_IXUSR | FilePermissions.S_IXGRP |
				FilePermissions.S_IXOTH;
			var modeWithoutX = originalMode & ~xModeBits;
			Mono.Unix.Native.Syscall.chmod(path, modeWithoutX);
			#endif
		}
Exemple #11
0
 public static bool TryCopy(IntPtr source, out Stat destination)
 {
     return(ToStat(source, out destination) == 0);
 }
Exemple #12
0
 public static bool TryCopy(ref Stat source, IntPtr destination)
 {
     return(FromStat(ref source, destination) == 0);
 }
 private static extern int ToStat(IntPtr source, out Stat destination);
 private static extern int FromStat(ref Stat source, IntPtr destination);