]> git.saurik.com Git - apple/xnu.git/blame - bsd/man/man2/symlink.2
xnu-4903.270.47.tar.gz
[apple/xnu.git] / bsd / man / man2 / symlink.2
CommitLineData
9bccf70c
A
1.\" $NetBSD: symlink.2,v 1.7 1995/02/27 12:38:34 cgd Exp $
2.\"
3.\" Copyright (c) 1983, 1991, 1993
4.\" The Regents of the University of California. All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\" notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\" notice, this list of conditions and the following disclaimer in the
13.\" documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\" must display the following acknowledgement:
16.\" This product includes software developed by the University of
17.\" California, Berkeley and its contributors.
18.\" 4. Neither the name of the University nor the names of its contributors
19.\" may be used to endorse or promote products derived from this software
20.\" without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\" @(#)symlink.2 8.1 (Berkeley) 6/4/93
35.\"
36.Dd June 4, 1993
37.Dt SYMLINK 2
38.Os BSD 4.2
39.Sh NAME
fe8ab488
A
40.Nm symlink ,
41.Nm symlinkat
9bccf70c
A
42.Nd make symbolic link to a file
43.Sh SYNOPSIS
44.Fd #include <unistd.h>
45.Ft int
2d21ac55
A
46.Fo symlink
47.Fa "const char *path1"
48.Fa "const char *path2"
49.Fc
fe8ab488
A
50.Ft int
51.Fn symlinkat "const char *name1" "int fd" "const char *name2"
9bccf70c
A
52.Sh DESCRIPTION
53A symbolic link
2d21ac55 54.Fa path2
9bccf70c 55is created to
2d21ac55
A
56.Fa path1
57.Pf ( Fa path2
9bccf70c
A
58is the name of the
59file created,
2d21ac55 60.Fa path1
9bccf70c
A
61is the string
62used in creating the symbolic link).
63Either name may be an arbitrary path name; the files need not
64be on the same file system.
fe8ab488
A
65.Pp
66The
67.Fn symlinkat
68system call is equivalent to
69.Fn symlink
70except in the case where
71.Fa name2
72specifies a relative path.
73In this case the symbolic link is created relative to the directory
74associated with the file descriptor
75.Fa fd
76instead of the current working directory.
77If
78.Fn symlinkat
79is passed the special value
80.Dv AT_FDCWD
81in the
82.Fa fd
83parameter, the current working directory is used and the behavior is
84identical to a call to
85.Fn symlink .
9bccf70c
A
86.Sh RETURN VALUES
87Upon successful completion, a zero value is returned.
88If an error occurs, the error code is stored in
89.Va errno
90and a -1 value is returned.
91.Sh ERRORS
92The symbolic link succeeds unless:
93.Bl -tag -width Er
2d21ac55
A
94.\" ===========
95.It Bq Er EACCES
96Write permission is denied in the directory
97where the symbolic link is being created.
98.\" ===========
9bccf70c
A
99.It Bq Er EACCES
100A component of the
2d21ac55 101.Fa path2
9bccf70c 102path prefix denies search permission.
2d21ac55
A
103.\" ===========
104.It Bq Er EDQUOT
105The directory in which the entry for the new symbolic link
106is being placed cannot be extended because the
107user's quota of disk blocks on the file system
108containing the directory has been exhausted.
109.\" ===========
110.It Bq Er EDQUOT
111The new symbolic link cannot be created because the user's
112quota of disk blocks on the file system that will
113contain the symbolic link has been exhausted.
114.\" ===========
115.It Bq Er EDQUOT
116The user's quota of inodes on the file system on
117which the symbolic link is being created has been exhausted.
118.\" ===========
9bccf70c 119.It Bq Er EEXIST
2d21ac55 120.Fa Path2
9bccf70c 121already exists.
2d21ac55
A
122.\" ===========
123.It Bq Er EFAULT
124.Fa Path1
125or
126.Fa path2
127points outside the process's allocated address space.
128.\" ===========
129.It Bq Er EIO
130An I/O error occurs while making the directory entry
131or allocating the inode.
132.\" ===========
9bccf70c 133.It Bq Er EIO
2d21ac55
A
134An I/O error occurs while making the directory entry for
135.Fa path2 ,
9bccf70c 136or allocating the inode for
2d21ac55 137.Fa path2 ,
9bccf70c 138or writing out the link contents of
2d21ac55
A
139.Fa path2 .
140.\" ===========
141.It Bq Er ELOOP
142Too many symbolic links are encountered in translating the pathname.
143This is taken to be indicative of a looping symbolic link.
144.\" ===========
145.It Bq Er ENAMETOOLONG
146A component of a pathname exceeds
147.Dv {NAME_MAX}
148characters, or an entire path name exceeds
149.Dv {PATH_MAX}
150characters.
151.\" ===========
152.It Bq Er ENOENT
153A component of
154.Fa path2
155does not name an existing file or
156.Fa path2
157is an empty string.
158.\" ===========
9bccf70c
A
159.It Bq Er ENOSPC
160The directory in which the entry for the new symbolic link is being placed
161cannot be extended because there is no space left on the file
162system containing the directory.
2d21ac55 163.\" ===========
9bccf70c
A
164.It Bq Er ENOSPC
165The new symbolic link cannot be created because there
166there is no space left on the file
167system that will contain the symbolic link.
2d21ac55 168.\" ===========
9bccf70c
A
169.It Bq Er ENOSPC
170There are no free inodes on the file system on which the
171symbolic link is being created.
2d21ac55
A
172.\" ===========
173.It Bq Er ENOTDIR
174A component of the
175.Fa path2
176prefix is not a directory.
177.\" ===========
178.It Bq Er EROFS
179The file
180.Fa path2
181would reside on a read-only file system.
9bccf70c 182.El
fe8ab488
A
183.Pp
184In addition to the errors returned by the
185.Fn symlink ,
186the
187.Fn symlinkat
188may fail if:
189.Bl -tag -width Er
190.It Bq Er EBADF
191The
192.Fa name2
193argument does not specify an absolute path and the
194.Fa fd
195argument is neither
196.Dv AT_FDCWD
197nor a valid file descriptor open for searching.
198.It Bq Er ENOTDIR
199The
200.Fa name2
201argument is not an absolute path and
202.Fa fd
203is neither
204.Dv AT_FDCWD
205nor a file descriptor associated with a directory.
206.El
9bccf70c
A
207.Sh SEE ALSO
208.Xr ln 1 ,
209.Xr link 2 ,
2d21ac55
A
210.Xr unlink 2 ,
211.Xr symlink 7
fe8ab488
A
212.Sh STANDARDS
213The
214.Fn symlinkat
215system call is expected to conform to POSIX.1-2008 .
9bccf70c
A
216.Sh HISTORY
217The
218.Fn symlink
219function call appeared in
220.Bx 4.2 .
fe8ab488
A
221The
222.Fn symlinkat
223system call appeared in OS X 10.10