<Type Name="UnixSymbolicLinkInfo" FullName="Mono.Unix.UnixSymbolicLinkInfo">
  <TypeSignature Language="C#" Value="public sealed class UnixSymbolicLinkInfo : Mono.Unix.UnixFileSystemInfo" />
  <AssemblyInfo>
    <AssemblyName>Mono.Posix</AssemblyName>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.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);" />
      <MemberType>Constructor</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Contents">
      <MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo Contents { get; }" />
      <MemberType>Property</MemberType>
      <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>
      <Attributes>
        <Attribute>
          <AttributeName>System.Obsolete("Use GetContents()")</AttributeName>
        </Attribute>
      </Attributes>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="ContentsPath">
      <MemberSignature Language="C#" Value="public string ContentsPath { get; }" />
      <MemberType>Property</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="CreateSymbolicLinkTo">
      <MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (Mono.Unix.UnixFileSystemInfo path);" />
      <MemberType>Method</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="CreateSymbolicLinkTo">
      <MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (string path);" />
      <MemberType>Method</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Delete">
      <MemberSignature Language="C#" Value="public override void Delete ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetContents">
      <MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo GetContents ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Mono.Unix.UnixFileSystemInfo</ReturnType>
      </ReturnValue>
      <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>
      <Parameters />
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetFileStatus">
      <MemberSignature Language="C#" Value="protected override bool GetFileStatus (string path, out Mono.Unix.Native.Stat stat);" />
      <MemberType>Method</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="HasContents">
      <MemberSignature Language="C#" Value="public bool HasContents { get; }" />
      <MemberType>Property</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Name">
      <MemberSignature Language="C#" Value="public override string Name { get; }" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="SetOwner">
      <MemberSignature Language="C#" Value="public override void SetOwner (long owner, long group);" />
      <MemberType>Method</MemberType>
      <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>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
  </Members>
</Type>
