a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
891 lines
37 KiB
XML
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 &&
|
|
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 -> target
|
|
symlink.ufi -> /full/path/to/target.ufi
|
|
symlink.usli -> 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 -> target
|
|
symlink.ufi -> /full/path/to/target.ufi
|
|
symlink.usli -> 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 &&
|
|
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&" 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>
|