Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

891 lines
37 KiB
XML

<Type Name="UnixSymbolicLinkInfo" FullName="Mono.Unix.UnixSymbolicLinkInfo">
<TypeSignature Language="C#" Value="public sealed class UnixSymbolicLinkInfo : Mono.Unix.UnixFileSystemInfo" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit UnixSymbolicLinkInfo extends Mono.Unix.UnixFileSystemInfo" />
<AssemblyInfo>
<AssemblyName>Mono.Posix</AssemblyName>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
<Base>
<BaseTypeName>Mono.Unix.UnixFileSystemInfo</BaseTypeName>
</Base>
<Interfaces />
<Docs>
<summary>
Provides information about and performs operations on symbolic links.
</summary>
<remarks>
<para>The <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> class provides
information about a symbolic link. It also allows basic
symbolic link manipulation:</para>
<list type="bullet">
<item>
<term>Symbolic link creation with
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />.
</term>
</item>
<item>
<term>Symbolic link deletion with
<see cref="M:Mono.Unix.UnixFileInfo.Delete" />.</term>
</item>
</list>
</remarks>
<altmember cref="T:Mono.Unix.UnixFileInfo" />
<altmember cref="T:Mono.Unix.UnixDirectoryInfo" />
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public UnixSymbolicLinkInfo (string path);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string path) cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="path" Type="System.String" />
</Parameters>
<Docs>
<param name="path">
A <see cref="T:System.String" /> containing the symbolic link to
query.
</param>
<summary>Creates a new <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" />
instance containing information about the symbolic link.</summary>
<remarks>
<para>The <paramref name="path" /> argument is permitted to specify
relative or absolute path information. Relative path information is
interpreted as relative to the current working directory.
<block subset="none" type="note">To obtain the current working
directory, see
<see cref="M:Mono.Unix.UnixDirectoryInfo.GetCurrentDirectory" />.
</block></para>
<para>It is valid to construct
<see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> objects for symbolic
links that do not exist or for files and directories.
However, attempts to use the
<see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> instance may
generate <see cref="T:System.InvalidOperationException" />s
and other exception types.
Use <see cref="P:Mono.Unix.UnixFileSystemInfo.Exists" /> to see if
<paramref name="path" /> exists,
<see cref="P:Mono.Unix.UnixFileSystemInfo.IsSymbolicLink" /> to ensure
that <paramref name="path" /> is a symbolic link, and
Use <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.HasContents" />
to ensure that the symbolic link target is valid.
</para>
</remarks>
<exception cref="T:System.ArgumentNullException">
<paramref name="path" /> is <see langword="null" />.
</exception>
<exception cref="T:System.ArgumentException">
<paramref name="path" /> contains invalid characters; see
<see cref="M:Mono.Unix.UnixPath.GetInvalidPathChars" />.
</exception>
</Docs>
</Member>
<Member MemberName="Contents">
<MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo Contents { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class Mono.Unix.UnixFileSystemInfo Contents" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Attributes>
<Attribute>
<AttributeName>System.Obsolete("Use GetContents()")</AttributeName>
</Attribute>
</Attributes>
<ReturnValue>
<ReturnType>Mono.Unix.UnixFileSystemInfo</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the target of this symbolic link.</summary>
<value>
<para>
A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> reference containing
information about the target of this symbolic link, or
<see langword="null" /> if
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />:
</para>
<list type="bullet">
<item>
<term>does not exist, or</term>
</item>
<item>
<term>is not a symbolic link.</term>
</item>
</list>
<para>
The behavior will be changed in the future to generate an
exception for either of the above error conditions, so current
code needs to deal with both exceptions and a
<see langword="null" /> return value. <see langword="null" />
will not be used by the Mono 1.2 release.
</para>
</value>
<remarks>
<para>
<block subset="none" type="note">
Do not use this method, as it always creates a new
<see cref="T:Mono.Unix.UnixFileSystemInfo" /> instance -- no
caching is performed, even though it's a property. Instead, use
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />,
</block>
</para>
<para>
This really should throw the same exceptions as
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
instead of returning <see langword="null" />.
</para>
<para>
<block subset="none" type="note">
The target may in turn be a symbolic link (nothing prevents
symbolic links from referencing other symbolic links).
To get the actual target, use
<see cref="M:Mono.Unix.UnixPath.GetRealPath" />,
<see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />,
or walk the symbolic link "chain":
<code lang="C#">UnixFileSystemInfo target =
new UnixSymbolicLinkInfo ("symlink").Contents;
while (target != null &amp;&amp;
target.FileType == FileTypes.SymbolicLink) {
target = ((UnixSymbolicLinkInfo) target).Contents;
}</code></block>
</para>
</remarks>
<exception cref="System.ArgumentException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a symbolic link.
[<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
</para>
</exception>
<exception cref="System.IO.DirectoryNotFoundException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
</para>
</exception>
<exception cref="System.IO.FileNotFoundException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
[<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
</para>
</exception>
<exception cref="System.IO.IOException">
<para>
An I/O error occurred while reading from the file system.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
</exception>
<exception cref="System.IO.PathTooLongException">
<para>
A component of a pathname exceeded 255 characters,
or an entire path name exceeded 1023 characters.
[<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
</para>
</exception>
<exception cref="Mono.Unix.UnixIOException">
<para>
Search permission is denied for a component of the path prefix.
[<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
</para>
<para>-or-</para>
<para>
Too many symbolic links were encountered in translating the pathname.
[<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
</para>
</exception>
</Docs>
</Member>
<Member MemberName="ContentsPath">
<MemberSignature Language="C#" Value="public string ContentsPath { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string ContentsPath" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
</ReturnValue>
<Docs>
<summary>
Gets the target of this symbolic link as a
<see cref="T:System.String" />.
</summary>
<value>
A <see cref="T:System.String" /> containing the target of this
symbolic link.
</value>
<remarks>
<para>
<block subset="none" type="note">
The target may in turn be a symbolic link (nothing prevents
symbolic links from referencing other symbolic links).
To get the actual target, use
<see cref="M:Mono.Unix.UnixPath.GetRealPath" /> or
<see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />.
</block>
</para>
</remarks>
<exception cref="System.ArgumentException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a symbolic link.
[<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
</para>
</exception>
<exception cref="System.IO.DirectoryNotFoundException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
</para>
</exception>
<exception cref="System.IO.FileNotFoundException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
[<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
</para>
</exception>
<exception cref="System.IO.IOException">
<para>
An I/O error occurred while reading from the file system.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
</exception>
<exception cref="System.IO.PathTooLongException">
<para>
A component of a pathname exceeded 255 characters,
or an entire path name exceeded 1023 characters.
[<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
</para>
</exception>
<exception cref="Mono.Unix.UnixIOException">
<para>
Search permission is denied for a component of the path prefix.
[<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
</para>
<para>-or-</para>
<para>
Too many symbolic links were encountered in translating the pathname.
[<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
</para>
</exception>
</Docs>
</Member>
<Member MemberName="CreateSymbolicLinkTo">
<MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (Mono.Unix.UnixFileSystemInfo path);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void CreateSymbolicLinkTo(class Mono.Unix.UnixFileSystemInfo path) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="path" Type="Mono.Unix.UnixFileSystemInfo" />
</Parameters>
<Docs>
<param name="path">
A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> instance containing
the target of this symbolic link instance.
</param>
<summary>
Creates the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
to the symbolic link target <paramref name="path" />.
</summary>
<remarks>
<para>
Creates the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
to the target <paramref name="path" />.
</para>
<para>
The <paramref name="path" /> argument is permitted to specify
relative or absolute path information. Relative path information is
interpreted by the file system as relative to the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
</para>
<para>
Using
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />
instead of
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
allows relative path information to be preserved within the
symbolic link.
</para>
<example>
<para>The <c>ln</c>(1) command:</para>
<code lang="sh">ln -s target symlink</code>
<para>
Can be created using <see cref="N:Mono.Unix" /> in two ways.
First, it can be created using
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />:
</para>
<code lang="C#">UnixFileInfo f = new UnixFileInfo ("target.ufi");
f.CreateSymbolicLink ("symlink.ufi");</code>
<para>
Second, it can be created using
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />:
</para>
<code lang="C#">UnixSymbolicLinkInfo s =
new UnixSymbolicLinkInfo ("symlink.usli");
s.CreateSymbolicLinkTo ("target.usli");</code>
<para>
The links created by the above differ; in particular, the target
of
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
is the full path name of the target, while
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" /> contains no extra information:
</para>
<code lang="sh">$ ls -lF symlink* | cut -c 39-
symlink -&gt; target
symlink.ufi -&gt; /full/path/to/target.ufi
symlink.usli -&gt; target.usli</code>
</example>
</remarks>
<exception cref="System.IO.DirectoryNotFoundException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
</para>
</exception>
<exception cref="System.IO.FileNotFoundException">
<para>
<paramref name="path" /> does not exist.
[<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
</para>
</exception>
<exception cref="System.IO.IOException">
<para>
An I/O error occurred while making the directory entry for
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
or allocating the inode for
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
or writing out the link contents of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
<para>-or-</para>
<para>
The file
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
would reside on a read-only file system.
[<see cref="F:Mono.Unix.Native.Errno.EROFS" />]
</para>
<para>-or-</para>
<para>
The directory in which the entry for the new symbolic link is being placed
cannot be extended because there is no space left on the file
system containing the directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
The new symbolic link cannot be created because
there is no space left on the file
system that will contain the symbolic link.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
There are no free inodes on the file system on which the
symbolic link is being created.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
An I/O error occurred while making the directory entry or allocating the inode.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
</exception>
<exception cref="System.IO.PathTooLongException">
<para>
A component of either pathname exceeded 255 characters,
or the entire length of either path name exceeded 1023 characters.
[<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
</para>
</exception>
<exception cref="Mono.Unix.UnixIOException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
denies search permission.
[<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
</para>
<para>-or-</para>
<para>
Too many symbolic links were encountered in translating the pathname.
[<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
</para>
<para>-or-</para>
<para>
The path name pointed at by the
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
argument
already exists.
[<see cref="F:Mono.Unix.Native.Errno.EEXIST" />]
</para>
<para>-or-</para>
<para>
The directory in which the entry for the new symbolic link
is being placed cannot be extended because the
user's quota of disk blocks on the file system
containing the directory has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
<para>-or-</para>
<para>
The new symbolic link cannot be created because the user's
quota of disk blocks on the file system that will
contain the symbolic link has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
<para>-or-</para>
<para>
The user's quota of inodes on the file system on
which the symbolic link is being created has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
</exception>
</Docs>
</Member>
<Member MemberName="CreateSymbolicLinkTo">
<MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (string path);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void CreateSymbolicLinkTo(string path) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="path" Type="System.String" />
</Parameters>
<Docs>
<param name="path">
A <see cref="T:System.String" /> containing the target of this
symbolic link instance.
</param>
<summary>
Creates the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
to the symbolic link target <paramref name="path" />.
</summary>
<remarks>
<para>
Creates the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
to the target <paramref name="path" />.
</para>
<para>
The <paramref name="path" /> argument is permitted to specify
relative or absolute path information. Relative path information is
interpreted by the file system as relative to the symbolic link
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
</para>
<para>
Using
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />
instead of
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
allows relative path information to be preserved within the
symbolic link.
</para>
<example>
<para>The <c>ln</c>(1) command:</para>
<code lang="sh">ln -s target symlink</code>
<para>
Can be created using <see cref="N:Mono.Unix" /> in two ways.
First, it can be created using
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />:
</para>
<code lang="C#">UnixFileInfo f = new UnixFileInfo ("target.ufi");
f.CreateSymbolicLink ("symlink.ufi");</code>
<para>
Second, it can be created using
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />:
</para>
<code lang="C#">UnixSymbolicLinkInfo s =
new UnixSymbolicLinkInfo ("symlink.usli");
s.CreateSymbolicLinkTo ("target.usli");</code>
<para>
The links created by the above differ; in particular, the target
of
<see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
is the full path name of the target, while
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" /> contains no extra information:
</para>
<code lang="sh">$ ls -lF symlink* | cut -c 39-
symlink -&gt; target
symlink.ufi -&gt; /full/path/to/target.ufi
symlink.usli -&gt; target.usli
</code>
</example>
</remarks>
<exception cref="System.IO.DirectoryNotFoundException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
</para>
</exception>
<exception cref="System.IO.FileNotFoundException">
<para>
<paramref name="path" /> does not exist.
[<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
</para>
</exception>
<exception cref="System.IO.IOException">
<para>
An I/O error occurred while making the directory entry for
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
or allocating the inode for
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
or writing out the link contents of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
<para>-or-</para>
<para>
The file
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
would reside on a read-only file system.
[<see cref="F:Mono.Unix.Native.Errno.EROFS" />]
</para>
<para>-or-</para>
<para>
The directory in which the entry for the new symbolic link is being placed
cannot be extended because there is no space left on the file
system containing the directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
The new symbolic link cannot be created because
there is no space left on the file
system that will contain the symbolic link.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
There are no free inodes on the file system on which the
symbolic link is being created.
[<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
</para>
<para>-or-</para>
<para>
An I/O error occurred while making the directory entry or allocating the inode.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
</exception>
<exception cref="System.IO.PathTooLongException">
<para>
A component of either pathname exceeded 255 characters,
or the entire length of either path name exceeded 1023 characters.
[<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
</para>
</exception>
<exception cref="Mono.Unix.UnixIOException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
denies search permission.
[<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
</para>
<para>-or-</para>
<para>
Too many symbolic links were encountered in translating the pathname.
[<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
</para>
<para>-or-</para>
<para>
The path name pointed at by the
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
argument
already exists.
[<see cref="F:Mono.Unix.Native.Errno.EEXIST" />]
</para>
<para>-or-</para>
<para>
The directory in which the entry for the new symbolic link
is being placed cannot be extended because the
user's quota of disk blocks on the file system
containing the directory has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
<para>-or-</para>
<para>
The new symbolic link cannot be created because the user's
quota of disk blocks on the file system that will
contain the symbolic link has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
<para>-or-</para>
<para>
The user's quota of inodes on the file system on
which the symbolic link is being created has been exhausted.
[<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
</para>
</exception>
</Docs>
</Member>
<Member MemberName="Delete">
<MemberSignature Language="C#" Value="public override void Delete ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Delete() cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="GetContents">
<MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo GetContents ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Unix.UnixFileSystemInfo GetContents() cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Mono.Unix.UnixFileSystemInfo</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Gets the target of this symbolic link.</summary>
<returns>
<para>
A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> reference containing
information about the target of this symbolic link, or
<see langword="null" /> if
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />:
</para>
<list type="bullet">
<item>
<term>does not exist, or</term>
</item>
<item>
<term>is not a symbolic link.</term>
</item>
</list>
<para>
The behavior will be changed in the future to generate an
exception for either of the above error conditions, so current
code needs to deal with both exceptions and a
<see langword="null" /> return value. <see langword="null" />
will not be used by the Mono 1.2 release.
</para>
</returns>
<remarks>
<para>
This really should throw the same exceptions as
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
instead of returning <see langword="null" />.
</para>
<para>
<block subset="none" type="note">
The target may in turn be a symbolic link (nothing prevents
symbolic links from referencing other symbolic links).
To get the actual target, use
<see cref="M:Mono.Unix.UnixPath.GetRealPath" />,
<see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />,
or walk the symbolic link "chain":
<code lang="C#">UnixFileSystemInfo target =
new UnixSymbolicLinkInfo ("symlink").GetContents ();
while (target != null &amp;&amp;
target.FileType == FileTypes.SymbolicLink) {
target = ((UnixSymbolicLinkInfo) target).GetContents ();
}</code></block>
</para>
</remarks>
<exception cref="System.ArgumentException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a symbolic link.
[<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
</para>
</exception>
<exception cref="System.IO.DirectoryNotFoundException">
<para>
A component of
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
is not a directory.
[<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
</para>
</exception>
<exception cref="System.IO.FileNotFoundException">
<para>
<see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
[<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
</para>
</exception>
<exception cref="System.IO.IOException">
<para>
An I/O error occurred while reading from the file system.
[<see cref="F:Mono.Unix.Native.Errno.EIO" />]
</para>
</exception>
<exception cref="System.IO.PathTooLongException">
<para>
A component of a pathname exceeded 255 characters,
or an entire path name exceeded 1023 characters.
[<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
</para>
</exception>
<exception cref="Mono.Unix.UnixIOException">
<para>
Search permission is denied for a component of the path prefix.
[<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
</para>
<para>-or-</para>
<para>
Too many symbolic links were encountered in translating the pathname.
[<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
</para>
</exception>
</Docs>
</Member>
<Member MemberName="GetFileStatus">
<MemberSignature Language="C#" Value="protected override bool GetFileStatus (string path, out Mono.Unix.Native.Stat stat);" />
<MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance bool GetFileStatus(string path, valuetype Mono.Unix.Native.Stat stat) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="path" Type="System.String" />
<Parameter Name="stat" Type="Mono.Unix.Native.Stat&amp;" RefType="out" />
</Parameters>
<Docs>
<param name="path">To be added.</param>
<param name="stat">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="HasContents">
<MemberSignature Language="C#" Value="public bool HasContents { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance bool HasContents" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<summary>
Returns a <see cref="T:System.Boolean" /> indicating whether or not
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />
and
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
are valid.
</summary>
<value>
<see langword="true" /> if
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" /> and
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
are valid (i.e. won't return <see langword="null" /> or generate an
exception); otherwise, <see langword="false" />.
</value>
<remarks>
<para>
This method is subject to race conditions in the file system --
it's entirely possible for the symlink to be modified or deleted
between a call to
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.HasContents" />
and
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
<see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />,
or
<see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />.
</para>
</remarks>
</Docs>
</Member>
<Member MemberName="Name">
<MemberSignature Language="C#" Value="public override string Name { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Name" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
<value>To be added.</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="SetOwner">
<MemberSignature Language="C#" Value="public override void SetOwner (long owner, long group);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void SetOwner(int64 owner, int64 group) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.5000.0</AssemblyVersion>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="owner" Type="System.Int64" />
<Parameter Name="group" Type="System.Int64" />
</Parameters>
<Docs>
<param name="owner">To be added.</param>
<param name="group">To be added.</param>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
</Members>
</Type>