1<Type Name="UnixSymbolicLinkInfo" FullName="Mono.Unix.UnixSymbolicLinkInfo">
2  <TypeSignature Language="C#" Value="public sealed class UnixSymbolicLinkInfo : Mono.Unix.UnixFileSystemInfo" />
3  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit UnixSymbolicLinkInfo extends Mono.Unix.UnixFileSystemInfo" />
4  <AssemblyInfo>
5    <AssemblyName>Mono.Posix</AssemblyName>
6    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
7    <AssemblyVersion>2.0.0.0</AssemblyVersion>
8    <AssemblyVersion>4.0.0.0</AssemblyVersion>
9  </AssemblyInfo>
10  <ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
11  <Base>
12    <BaseTypeName>Mono.Unix.UnixFileSystemInfo</BaseTypeName>
13  </Base>
14  <Interfaces />
15  <Docs>
16    <summary>
17      Provides information about and performs operations on symbolic links.
18    </summary>
19    <remarks>
20      <para>The <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> class provides
21      information about a symbolic link.  It also allows basic
22      symbolic link manipulation:</para>
23      <list type="bullet">
24        <item>
25          <term>Symbolic link creation with
26          <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />.
27          </term>
28        </item>
29        <item>
30          <term>Symbolic link deletion with
31          <see cref="M:Mono.Unix.UnixFileInfo.Delete" />.</term>
32        </item>
33      </list>
34    </remarks>
35    <altmember cref="T:Mono.Unix.UnixFileInfo" />
36    <altmember cref="T:Mono.Unix.UnixDirectoryInfo" />
37  </Docs>
38  <Members>
39    <Member MemberName=".ctor">
40      <MemberSignature Language="C#" Value="public UnixSymbolicLinkInfo (string path);" />
41      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string path) cil managed" />
42      <MemberType>Constructor</MemberType>
43      <AssemblyInfo>
44        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
45        <AssemblyVersion>2.0.0.0</AssemblyVersion>
46        <AssemblyVersion>4.0.0.0</AssemblyVersion>
47      </AssemblyInfo>
48      <Parameters>
49        <Parameter Name="path" Type="System.String" />
50      </Parameters>
51      <Docs>
52        <param name="path">
53          A <see cref="T:System.String" /> containing the symbolic link to
54          query.
55        </param>
56        <summary>Creates a new <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" />
57          instance containing information about the symbolic link.</summary>
58        <remarks>
59          <para>The <paramref name="path" /> argument is permitted to specify
60          relative or absolute path information. Relative path information is
61          interpreted as relative to the current working directory.
62          <block subset="none" type="note">To obtain the current working
63          directory, see
64          <see cref="M:Mono.Unix.UnixDirectoryInfo.GetCurrentDirectory" />.
65          </block></para>
66          <para>It is valid to construct
67          <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> objects for symbolic
68          links that do not exist or for files and directories.
69          However, attempts to use the
70          <see cref="T:Mono.Unix.UnixSymbolicLinkInfo" /> instance may
71          generate <see cref="T:System.InvalidOperationException" />s
72          and other exception types.
73          Use <see cref="P:Mono.Unix.UnixFileSystemInfo.Exists" /> to see if
74          <paramref name="path" /> exists,
75          <see cref="P:Mono.Unix.UnixFileSystemInfo.IsSymbolicLink" /> to ensure
76          that <paramref name="path" /> is a symbolic link, and
77          Use <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.HasContents" />
78          to ensure that the symbolic link target is valid.
79          </para>
80        </remarks>
81        <exception cref="T:System.ArgumentNullException">
82          <paramref name="path" /> is <see langword="null" />.
83        </exception>
84        <exception cref="T:System.ArgumentException">
85          <paramref name="path" /> contains invalid characters; see
86          <see cref="M:Mono.Unix.UnixPath.GetInvalidPathChars" />.
87        </exception>
88      </Docs>
89    </Member>
90    <Member MemberName="Contents">
91      <MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo Contents { get; }" />
92      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Unix.UnixFileSystemInfo Contents" />
93      <MemberType>Property</MemberType>
94      <AssemblyInfo>
95        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
96        <AssemblyVersion>2.0.0.0</AssemblyVersion>
97        <AssemblyVersion>4.0.0.0</AssemblyVersion>
98      </AssemblyInfo>
99      <Attributes>
100        <Attribute>
101          <AttributeName>System.Obsolete("Use GetContents()")</AttributeName>
102        </Attribute>
103      </Attributes>
104      <ReturnValue>
105        <ReturnType>Mono.Unix.UnixFileSystemInfo</ReturnType>
106      </ReturnValue>
107      <Docs>
108        <summary>Gets the target of this symbolic link.</summary>
109        <value>
110          <para>
111            A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> reference containing
112            information about the target of this symbolic link, or
113            <see langword="null" /> if
114            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />:
115          </para>
116          <list type="bullet">
117            <item>
118              <term>does not exist, or</term>
119            </item>
120            <item>
121              <term>is not a symbolic link.</term>
122            </item>
123          </list>
124          <para>
125            The behavior will be changed in the future to generate an
126            exception for either of the above error conditions, so current
127            code needs to deal with both exceptions and a
128            <see langword="null" /> return value.  <see langword="null" />
129            will not be used by the Mono 1.2 release.
130          </para>
131        </value>
132        <remarks>
133          <para>
134            <block subset="none" type="note">
135              Do not use this method, as it always creates a new
136              <see cref="T:Mono.Unix.UnixFileSystemInfo" /> instance -- no
137              caching is performed, even though it's a property.  Instead, use
138              <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />,
139            </block>
140          </para>
141          <para>
142            This really should throw the same exceptions as
143            <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
144            instead of returning <see langword="null" />.
145          </para>
146          <para>
147            <block subset="none" type="note">
148              The target may in turn be a symbolic link (nothing prevents
149              symbolic links from referencing other symbolic links).
150              To get the actual target, use
151              <see cref="M:Mono.Unix.UnixPath.GetRealPath" />,
152              <see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />,
153              or walk the symbolic link "chain":
154              <code lang="C#">UnixFileSystemInfo target =
155    new UnixSymbolicLinkInfo ("symlink").Contents;
156while (target != null &amp;&amp;
157        target.FileType == FileTypes.SymbolicLink) {
158    target = ((UnixSymbolicLinkInfo) target).Contents;
159}</code></block>
160          </para>
161        </remarks>
162        <exception cref="System.ArgumentException">
163          <para>
164            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
165            is not a symbolic link.
166            [<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
167          </para>
168        </exception>
169        <exception cref="System.IO.DirectoryNotFoundException">
170          <para>
171            A component of
172            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
173            is not a directory.
174            [<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
175          </para>
176        </exception>
177        <exception cref="System.IO.FileNotFoundException">
178          <para>
179            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
180            [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
181          </para>
182        </exception>
183        <exception cref="System.IO.IOException">
184          <para>
185            An I/O error occurred while reading from the file system.
186            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
187          </para>
188        </exception>
189        <exception cref="System.IO.PathTooLongException">
190          <para>
191            A component of a pathname exceeded 255 characters,
192            or an entire path name exceeded 1023 characters.
193            [<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
194          </para>
195        </exception>
196        <exception cref="Mono.Unix.UnixIOException">
197          <para>
198            Search permission is denied for a component of the path prefix.
199            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
200          </para>
201          <para>-or-</para>
202          <para>
203            Too many symbolic links were encountered in translating the pathname.
204            [<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
205          </para>
206        </exception>
207      </Docs>
208    </Member>
209    <Member MemberName="ContentsPath">
210      <MemberSignature Language="C#" Value="public string ContentsPath { get; }" />
211      <MemberSignature Language="ILAsm" Value=".property instance string ContentsPath" />
212      <MemberType>Property</MemberType>
213      <AssemblyInfo>
214        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
215        <AssemblyVersion>2.0.0.0</AssemblyVersion>
216        <AssemblyVersion>4.0.0.0</AssemblyVersion>
217      </AssemblyInfo>
218      <ReturnValue>
219        <ReturnType>System.String</ReturnType>
220      </ReturnValue>
221      <Docs>
222        <summary>
223          Gets the target of this symbolic link as a
224          <see cref="T:System.String" />.
225        </summary>
226        <value>
227          A <see cref="T:System.String" /> containing the target of this
228          symbolic link.
229        </value>
230        <remarks>
231          <para>
232            <block subset="none" type="note">
233              The target may in turn be a symbolic link (nothing prevents
234              symbolic links from referencing other symbolic links).
235              To get the actual target, use
236              <see cref="M:Mono.Unix.UnixPath.GetRealPath" /> or
237              <see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />.
238            </block>
239          </para>
240        </remarks>
241        <exception cref="System.ArgumentException">
242          <para>
243            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
244            is not a symbolic link.
245            [<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
246          </para>
247        </exception>
248        <exception cref="System.IO.DirectoryNotFoundException">
249          <para>
250            A component of
251            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
252            is not a directory.
253            [<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
254          </para>
255        </exception>
256        <exception cref="System.IO.FileNotFoundException">
257          <para>
258            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
259            [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
260          </para>
261        </exception>
262        <exception cref="System.IO.IOException">
263          <para>
264            An I/O error occurred while reading from the file system.
265            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
266          </para>
267        </exception>
268        <exception cref="System.IO.PathTooLongException">
269          <para>
270            A component of a pathname exceeded 255 characters,
271            or an entire path name exceeded 1023 characters.
272            [<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
273          </para>
274        </exception>
275        <exception cref="Mono.Unix.UnixIOException">
276          <para>
277            Search permission is denied for a component of the path prefix.
278            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
279          </para>
280          <para>-or-</para>
281          <para>
282            Too many symbolic links were encountered in translating the pathname.
283            [<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
284          </para>
285        </exception>
286      </Docs>
287    </Member>
288    <Member MemberName="CreateSymbolicLinkTo">
289      <MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (Mono.Unix.UnixFileSystemInfo path);" />
290      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void CreateSymbolicLinkTo(class Mono.Unix.UnixFileSystemInfo path) cil managed" />
291      <MemberType>Method</MemberType>
292      <AssemblyInfo>
293        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
294        <AssemblyVersion>2.0.0.0</AssemblyVersion>
295        <AssemblyVersion>4.0.0.0</AssemblyVersion>
296      </AssemblyInfo>
297      <ReturnValue>
298        <ReturnType>System.Void</ReturnType>
299      </ReturnValue>
300      <Parameters>
301        <Parameter Name="path" Type="Mono.Unix.UnixFileSystemInfo" />
302      </Parameters>
303      <Docs>
304        <param name="path">
305          A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> instance containing
306          the target of this symbolic link instance.
307        </param>
308        <summary>
309          Creates the symbolic link
310          <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
311          to the symbolic link target <paramref name="path" />.
312        </summary>
313        <remarks>
314          <para>
315            Creates the symbolic link
316            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
317            to the target <paramref name="path" />.
318          </para>
319          <para>
320            The <paramref name="path" /> argument is permitted to specify
321            relative or absolute path information. Relative path information is
322            interpreted by the file system as relative to the symbolic link
323            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
324          </para>
325          <para>
326            Using
327            <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />
328            instead of
329            <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
330            allows relative path information to be preserved within the
331            symbolic link.
332          </para>
333          <example>
334            <para>The <c>ln</c>(1) command:</para>
335            <code lang="sh">ln -s target symlink</code>
336            <para>
337              Can be created using <see cref="N:Mono.Unix" /> in two ways.
338              First, it can be created using
339              <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />:
340            </para>
341            <code lang="C#">UnixFileInfo f = new UnixFileInfo ("target.ufi");
342f.CreateSymbolicLink ("symlink.ufi");</code>
343            <para>
344              Second, it can be created using
345              <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />:
346            </para>
347            <code lang="C#">UnixSymbolicLinkInfo s =
348    new UnixSymbolicLinkInfo ("symlink.usli");
349s.CreateSymbolicLinkTo ("target.usli");</code>
350            <para>
351              The links created by the above differ; in particular, the target
352              of
353              <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
354              is the full path name of the target, while
355              <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" /> contains no extra information:
356            </para>
357            <code lang="sh">$ ls -lF symlink* | cut -c 39-
358symlink -&gt; target
359symlink.ufi -&gt; /full/path/to/target.ufi
360symlink.usli -&gt; target.usli</code>
361          </example>
362        </remarks>
363        <exception cref="System.IO.DirectoryNotFoundException">
364          <para>
365            A component of
366            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
367            is not a directory.
368            [<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
369          </para>
370        </exception>
371        <exception cref="System.IO.FileNotFoundException">
372          <para>
373            <paramref name="path" /> does not exist.
374            [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
375          </para>
376        </exception>
377        <exception cref="System.IO.IOException">
378          <para>
379            An I/O error occurred while making the directory entry for
380            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
381            or allocating the inode for
382            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
383            or writing out the link contents of
384            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
385            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
386          </para>
387          <para>-or-</para>
388          <para>
389            The file
390            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
391            would reside on a read-only file system.
392            [<see cref="F:Mono.Unix.Native.Errno.EROFS" />]
393          </para>
394          <para>-or-</para>
395          <para>
396            The directory in which the entry for the new symbolic link is being placed
397            cannot be extended because there is no space left on the file
398            system containing the directory.
399            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
400          </para>
401          <para>-or-</para>
402          <para>
403            The new symbolic link cannot be created because
404            there is no space left on the file
405            system that will contain the symbolic link.
406            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
407          </para>
408          <para>-or-</para>
409          <para>
410            There are no free inodes on the file system on which the
411            symbolic link is being created.
412            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
413          </para>
414          <para>-or-</para>
415          <para>
416            An I/O error occurred while making the directory entry or allocating the inode.
417            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
418          </para>
419        </exception>
420        <exception cref="System.IO.PathTooLongException">
421          <para>
422            A component of either pathname exceeded 255 characters,
423            or the entire length of either path name exceeded 1023 characters.
424            [<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
425          </para>
426        </exception>
427        <exception cref="Mono.Unix.UnixIOException">
428          <para>
429            A component of
430            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
431            denies search permission.
432            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
433          </para>
434          <para>-or-</para>
435          <para>
436            Too many symbolic links were encountered in translating the pathname.
437            [<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
438          </para>
439          <para>-or-</para>
440          <para>
441            The path name pointed at by the
442            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
443            argument
444            already exists.
445            [<see cref="F:Mono.Unix.Native.Errno.EEXIST" />]
446          </para>
447          <para>-or-</para>
448          <para>
449            The directory in which the entry for the new symbolic link
450            is being placed cannot be extended because the
451            user's quota of disk blocks on the file system
452            containing the directory has been exhausted.
453            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
454          </para>
455          <para>-or-</para>
456          <para>
457            The new symbolic link cannot be created because the user's
458            quota of disk blocks on the file system that will
459            contain the symbolic link has been exhausted.
460            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
461          </para>
462          <para>-or-</para>
463          <para>
464            The user's quota of inodes on the file system on
465            which the symbolic link is being created has been exhausted.
466            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
467          </para>
468        </exception>
469      </Docs>
470    </Member>
471    <Member MemberName="CreateSymbolicLinkTo">
472      <MemberSignature Language="C#" Value="public void CreateSymbolicLinkTo (string path);" />
473      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void CreateSymbolicLinkTo(string path) cil managed" />
474      <MemberType>Method</MemberType>
475      <AssemblyInfo>
476        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
477        <AssemblyVersion>2.0.0.0</AssemblyVersion>
478        <AssemblyVersion>4.0.0.0</AssemblyVersion>
479      </AssemblyInfo>
480      <ReturnValue>
481        <ReturnType>System.Void</ReturnType>
482      </ReturnValue>
483      <Parameters>
484        <Parameter Name="path" Type="System.String" />
485      </Parameters>
486      <Docs>
487        <param name="path">
488          A <see cref="T:System.String" /> containing the target of this
489          symbolic link instance.
490        </param>
491        <summary>
492          Creates the symbolic link
493          <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
494          to the symbolic link target <paramref name="path" />.
495        </summary>
496        <remarks>
497          <para>
498            Creates the symbolic link
499            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" /> which refers
500            to the target <paramref name="path" />.
501          </para>
502          <para>
503            The <paramref name="path" /> argument is permitted to specify
504            relative or absolute path information. Relative path information is
505            interpreted by the file system as relative to the symbolic link
506            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
507          </para>
508          <para>
509            Using
510            <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />
511            instead of
512            <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
513            allows relative path information to be preserved within the
514            symbolic link.
515          </para>
516          <example>
517            <para>The <c>ln</c>(1) command:</para>
518            <code lang="sh">ln -s target symlink</code>
519            <para>
520              Can be created using <see cref="N:Mono.Unix" /> in two ways.
521              First, it can be created using
522              <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />:
523            </para>
524            <code lang="C#">UnixFileInfo f = new UnixFileInfo ("target.ufi");
525f.CreateSymbolicLink ("symlink.ufi");</code>
526            <para>
527              Second, it can be created using
528              <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" />:
529            </para>
530            <code lang="C#">UnixSymbolicLinkInfo s =
531    new UnixSymbolicLinkInfo ("symlink.usli");
532s.CreateSymbolicLinkTo ("target.usli");</code>
533            <para>
534              The links created by the above differ; in particular, the target
535              of
536              <see cref="M:Mono.Unix.UnixFileSystemInfo.CreateSymbolicLink" />
537              is the full path name of the target, while
538              <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.CreateSymbolicLinkTo" /> contains no extra information:
539            </para>
540            <code lang="sh">$ ls -lF symlink* | cut -c 39-
541symlink -&gt; target
542symlink.ufi -&gt; /full/path/to/target.ufi
543symlink.usli -&gt; target.usli
544            </code>
545          </example>
546        </remarks>
547        <exception cref="System.IO.DirectoryNotFoundException">
548          <para>
549            A component of
550            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
551            is not a directory.
552            [<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
553          </para>
554        </exception>
555        <exception cref="System.IO.FileNotFoundException">
556          <para>
557            <paramref name="path" /> does not exist.
558            [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
559          </para>
560        </exception>
561        <exception cref="System.IO.IOException">
562          <para>
563            An I/O error occurred while making the directory entry for
564            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
565            or allocating the inode for
566            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
567            or writing out the link contents of
568            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
569            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
570          </para>
571          <para>-or-</para>
572          <para>
573            The file
574            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
575            would reside on a read-only file system.
576            [<see cref="F:Mono.Unix.Native.Errno.EROFS" />]
577          </para>
578          <para>-or-</para>
579          <para>
580            The directory in which the entry for the new symbolic link is being placed
581            cannot be extended because there is no space left on the file
582            system containing the directory.
583            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
584          </para>
585          <para>-or-</para>
586          <para>
587            The new symbolic link cannot be created because
588            there is no space left on the file
589            system that will contain the symbolic link.
590            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
591          </para>
592          <para>-or-</para>
593          <para>
594            There are no free inodes on the file system on which the
595            symbolic link is being created.
596            [<see cref="F:Mono.Unix.Native.Errno.ENOSPC" />]
597          </para>
598          <para>-or-</para>
599          <para>
600            An I/O error occurred while making the directory entry or allocating the inode.
601            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
602          </para>
603        </exception>
604        <exception cref="System.IO.PathTooLongException">
605          <para>
606            A component of either pathname exceeded 255 characters,
607            or the entire length of either path name exceeded 1023 characters.
608            [<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
609          </para>
610        </exception>
611        <exception cref="Mono.Unix.UnixIOException">
612          <para>
613            A component of
614            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
615            denies search permission.
616            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
617          </para>
618          <para>-or-</para>
619          <para>
620            Too many symbolic links were encountered in translating the pathname.
621            [<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
622          </para>
623          <para>-or-</para>
624          <para>
625            The path name pointed at by the
626            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
627            argument
628            already exists.
629            [<see cref="F:Mono.Unix.Native.Errno.EEXIST" />]
630          </para>
631          <para>-or-</para>
632          <para>
633            The directory in which the entry for the new symbolic link
634            is being placed cannot be extended because the
635            user's quota of disk blocks on the file system
636            containing the directory has been exhausted.
637            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
638          </para>
639          <para>-or-</para>
640          <para>
641            The new symbolic link cannot be created because the user's
642            quota of disk blocks on the file system that will
643            contain the symbolic link has been exhausted.
644            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
645          </para>
646          <para>-or-</para>
647          <para>
648            The user's quota of inodes on the file system on
649            which the symbolic link is being created has been exhausted.
650            [<see cref="F:Mono.Unix.Native.Errno.EDQUOT" />]
651          </para>
652        </exception>
653      </Docs>
654    </Member>
655    <Member MemberName="Delete">
656      <MemberSignature Language="C#" Value="public override void Delete ();" />
657      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Delete() cil managed" />
658      <MemberType>Method</MemberType>
659      <AssemblyInfo>
660        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
661        <AssemblyVersion>2.0.0.0</AssemblyVersion>
662        <AssemblyVersion>4.0.0.0</AssemblyVersion>
663      </AssemblyInfo>
664      <ReturnValue>
665        <ReturnType>System.Void</ReturnType>
666      </ReturnValue>
667      <Parameters />
668      <Docs>
669        <summary>To be added.</summary>
670        <remarks>To be added.</remarks>
671      </Docs>
672    </Member>
673    <Member MemberName="GetContents">
674      <MemberSignature Language="C#" Value="public Mono.Unix.UnixFileSystemInfo GetContents ();" />
675      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Unix.UnixFileSystemInfo GetContents() cil managed" />
676      <MemberType>Method</MemberType>
677      <AssemblyInfo>
678        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
679        <AssemblyVersion>2.0.0.0</AssemblyVersion>
680        <AssemblyVersion>4.0.0.0</AssemblyVersion>
681      </AssemblyInfo>
682      <ReturnValue>
683        <ReturnType>Mono.Unix.UnixFileSystemInfo</ReturnType>
684      </ReturnValue>
685      <Parameters />
686      <Docs>
687        <summary>Gets the target of this symbolic link.</summary>
688        <returns>
689          <para>
690            A <see cref="T:Mono.Unix.UnixFileSystemInfo" /> reference containing
691            information about the target of this symbolic link, or
692            <see langword="null" /> if
693            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />:
694          </para>
695          <list type="bullet">
696            <item>
697              <term>does not exist, or</term>
698            </item>
699            <item>
700              <term>is not a symbolic link.</term>
701            </item>
702          </list>
703          <para>
704            The behavior will be changed in the future to generate an
705            exception for either of the above error conditions, so current
706            code needs to deal with both exceptions and a
707            <see langword="null" /> return value.  <see langword="null" />
708            will not be used by the Mono 1.2 release.
709          </para>
710        </returns>
711        <remarks>
712          <para>
713            This really should throw the same exceptions as
714            <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
715            instead of returning <see langword="null" />.
716          </para>
717          <para>
718            <block subset="none" type="note">
719              The target may in turn be a symbolic link (nothing prevents
720              symbolic links from referencing other symbolic links).
721              To get the actual target, use
722              <see cref="M:Mono.Unix.UnixPath.GetRealPath" />,
723              <see cref="M:Mono.Unix.UnixPath.GetCompleteRealPath" />,
724              or walk the symbolic link "chain":
725              <code lang="C#">UnixFileSystemInfo target =
726    new UnixSymbolicLinkInfo ("symlink").GetContents ();
727while (target != null &amp;&amp;
728        target.FileType == FileTypes.SymbolicLink) {
729    target = ((UnixSymbolicLinkInfo) target).GetContents ();
730}</code></block>
731          </para>
732        </remarks>
733        <exception cref="System.ArgumentException">
734          <para>
735            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
736            is not a symbolic link.
737            [<see cref="F:Mono.Unix.Native.Errno.EINVAL" />]
738          </para>
739        </exception>
740        <exception cref="System.IO.DirectoryNotFoundException">
741          <para>
742            A component of
743            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
744            is not a directory.
745            [<see cref="F:Mono.Unix.Native.Errno.ENOTDIR" />]
746          </para>
747        </exception>
748        <exception cref="System.IO.FileNotFoundException">
749          <para>
750            <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />
751            [<see cref="F:Mono.Unix.Native.Errno.ENOENT" />]
752          </para>
753        </exception>
754        <exception cref="System.IO.IOException">
755          <para>
756            An I/O error occurred while reading from the file system.
757            [<see cref="F:Mono.Unix.Native.Errno.EIO" />]
758          </para>
759        </exception>
760        <exception cref="System.IO.PathTooLongException">
761          <para>
762            A component of a pathname exceeded 255 characters,
763            or an entire path name exceeded 1023 characters.
764            [<see cref="F:Mono.Unix.Native.Errno.ENAMETOOLONG" />]
765          </para>
766        </exception>
767        <exception cref="Mono.Unix.UnixIOException">
768          <para>
769            Search permission is denied for a component of the path prefix.
770            [<see cref="F:Mono.Unix.Native.Errno.EACCES" />]
771          </para>
772          <para>-or-</para>
773          <para>
774            Too many symbolic links were encountered in translating the pathname.
775            [<see cref="F:Mono.Unix.Native.Errno.ELOOP" />]
776          </para>
777        </exception>
778      </Docs>
779    </Member>
780    <Member MemberName="GetFileStatus">
781      <MemberSignature Language="C#" Value="protected override bool GetFileStatus (string path, out Mono.Unix.Native.Stat stat);" />
782      <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance bool GetFileStatus(string path, valuetype Mono.Unix.Native.Stat stat) cil managed" />
783      <MemberType>Method</MemberType>
784      <AssemblyInfo>
785        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
786        <AssemblyVersion>2.0.0.0</AssemblyVersion>
787        <AssemblyVersion>4.0.0.0</AssemblyVersion>
788      </AssemblyInfo>
789      <ReturnValue>
790        <ReturnType>System.Boolean</ReturnType>
791      </ReturnValue>
792      <Parameters>
793        <Parameter Name="path" Type="System.String" />
794        <Parameter Name="stat" Type="Mono.Unix.Native.Stat&amp;" RefType="out" />
795      </Parameters>
796      <Docs>
797        <param name="path">To be added.</param>
798        <param name="stat">To be added.</param>
799        <summary>To be added.</summary>
800        <returns>To be added.</returns>
801        <remarks>To be added.</remarks>
802      </Docs>
803    </Member>
804    <Member MemberName="HasContents">
805      <MemberSignature Language="C#" Value="public bool HasContents { get; }" />
806      <MemberSignature Language="ILAsm" Value=".property instance bool HasContents" />
807      <MemberType>Property</MemberType>
808      <AssemblyInfo>
809        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
810        <AssemblyVersion>2.0.0.0</AssemblyVersion>
811        <AssemblyVersion>4.0.0.0</AssemblyVersion>
812      </AssemblyInfo>
813      <ReturnValue>
814        <ReturnType>System.Boolean</ReturnType>
815      </ReturnValue>
816      <Docs>
817        <summary>
818          Returns a <see cref="T:System.Boolean" /> indicating whether or not
819          <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
820          <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />
821          and
822          <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
823          are valid.
824        </summary>
825        <value>
826          <see langword="true" /> if
827          <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
828          <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" /> and
829          <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />
830          are valid (i.e. won't return <see langword="null" /> or generate an
831          exception); otherwise, <see langword="false" />.
832        </value>
833        <remarks>
834          <para>
835            This method is subject to race conditions in the file system --
836            it's entirely possible for the symlink to be modified or deleted
837            between a call to
838            <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.HasContents" />
839            and
840            <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.Contents" />,
841            <see cref="M:Mono.Unix.UnixSymbolicLinkInfo.GetContents" />,
842            or
843            <see cref="P:Mono.Unix.UnixSymbolicLinkInfo.ContentsPath" />.
844          </para>
845        </remarks>
846      </Docs>
847    </Member>
848    <Member MemberName="Name">
849      <MemberSignature Language="C#" Value="public override string Name { get; }" />
850      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
851      <MemberType>Property</MemberType>
852      <AssemblyInfo>
853        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
854        <AssemblyVersion>2.0.0.0</AssemblyVersion>
855        <AssemblyVersion>4.0.0.0</AssemblyVersion>
856      </AssemblyInfo>
857      <ReturnValue>
858        <ReturnType>System.String</ReturnType>
859      </ReturnValue>
860      <Docs>
861        <summary>To be added.</summary>
862        <value>To be added.</value>
863        <remarks>To be added.</remarks>
864      </Docs>
865    </Member>
866    <Member MemberName="SetOwner">
867      <MemberSignature Language="C#" Value="public override void SetOwner (long owner, long group);" />
868      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void SetOwner(int64 owner, int64 group) cil managed" />
869      <MemberType>Method</MemberType>
870      <AssemblyInfo>
871        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
872        <AssemblyVersion>2.0.0.0</AssemblyVersion>
873        <AssemblyVersion>4.0.0.0</AssemblyVersion>
874      </AssemblyInfo>
875      <ReturnValue>
876        <ReturnType>System.Void</ReturnType>
877      </ReturnValue>
878      <Parameters>
879        <Parameter Name="owner" Type="System.Int64" />
880        <Parameter Name="group" Type="System.Int64" />
881      </Parameters>
882      <Docs>
883        <param name="owner">To be added.</param>
884        <param name="group">To be added.</param>
885        <summary>To be added.</summary>
886        <remarks>To be added.</remarks>
887      </Docs>
888    </Member>
889  </Members>
890</Type>
891