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