Update.
[glibc.git] / sysdeps / unix / sysv / linux / chown.c
blobca7b1d063dffbab4ebfb857ec50f6342caf4aceb
1 /* Copyright (C) 1998 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB. If not,
16 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA. */
19 #include <errno.h>
20 #include <unistd.h>
21 #include <sys/syscall.h>
22 #include <sys/types.h>
25 In Linux 2.1.x the chown functions have been changed. A new function lchown
26 was introduced. The new chown now follows symlinks - the old chown and the
27 new lchown do not follow symlinks.
28 The new lchown function has the same number as the old chown had and the
29 new chown has a new number. To preserve compatibility with old glibc 2.0
30 versions we always call the syscall with the old semantic.
33 extern int __syscall_chown (const char *__file,
34 uid_t __owner, gid_t __group);
35 #ifdef __NR_lchown
36 /* running under Linux 2.0 or < 2.1.8x */
37 int
38 __chown (const char *file, uid_t owner, gid_t group)
40 return __lchown (file, owner, group);
42 #else
43 /* compiling under older kernels */
44 int
45 __chown (const char *file, uid_t owner, gid_t group)
47 return __syscall_chown (file, owner, group);
49 #endif
51 weak_alias (__chown, chown)