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 && 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 -> target 359symlink.ufi -> /full/path/to/target.ufi 360symlink.usli -> 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 -> target 542symlink.ufi -> /full/path/to/target.ufi 543symlink.usli -> 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 && 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&" 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