1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
41 symlink(const char* a
, char* b
)
43 if (*a
== '/' && (*(a
+ 1) == 'd' || *(a
+ 1) == 'p' || *(a
+ 1) == 'n') && (!strncmp(a
, "/dev/tcp/", 9) || !strncmp(a
, "/dev/udp/", 9) || !strncmp(a
, "/proc/", 6) || !strncmp(a
, "/n/", 3)))
48 if ((fd
= open(b
, O_CREAT
|O_TRUNC
|O_WRONLY
, S_IRUSR
|S_IWUSR
|S_IRGRP
|S_IWGRP
|S_IROTH
|S_IWOTH
)) < 0)
51 n
= (write(fd
, FAKELINK_MAGIC
, sizeof(FAKELINK_MAGIC
)) != sizeof(FAKELINK_MAGIC
) || write(fd
, a
, n
) != n
) ? -1 : 0;