xref: /titanic_51/usr/src/lib/libc/port/sys/chmod.c (revision 794f0adb050e571bbfde4d2a19b9f88b852079dd)
1  /*
2   * CDDL HEADER START
3   *
4   * The contents of this file are subject to the terms of the
5   * Common Development and Distribution License (the "License").
6   * You may not use this file except in compliance with the License.
7   *
8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9   * or http://www.opensolaris.org/os/licensing.
10   * See the License for the specific language governing permissions
11   * and limitations under the License.
12   *
13   * When distributing Covered Code, include this CDDL HEADER in each
14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15   * If applicable, add the following below this CDDL HEADER, with the
16   * fields enclosed by brackets "[]" replaced with your own identifying
17   * information: Portions Copyright [yyyy] [name of copyright owner]
18   *
19   * CDDL HEADER END
20   */
21  
22  /*
23   * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24   */
25  
26  #include "lint.h"
27  #include <stdio.h>
28  #include <unistd.h>
29  #include <sys/types.h>
30  #include <sys/stat.h>
31  #include <sys/syscall.h>
32  #include <sys/fcntl.h>
33  
34  int
35  fchmodat(int fd, const char *path, mode_t mode, int flag)
36  {
37  	return (syscall(SYS_fchmodat, fd, path, mode, flag));
38  }
39  
40  #pragma weak _chmod = chmod
41  int
42  chmod(const char *path, mode_t mode)
43  {
44  #if defined(_RETAIN_OLD_SYSCALLS)
45  	return (syscall(SYS_chmod, path, mode));
46  #else
47  	return (fchmodat(AT_FDCWD, path, mode, 0));
48  #endif
49  }
50  
51  #pragma weak _fchmod = fchmod
52  int
53  fchmod(int fd, mode_t mode)
54  {
55  #if defined(_RETAIN_OLD_SYSCALLS)
56  	return (syscall(SYS_fchmod, fd, mode));
57  #else
58  	return (fchmodat(fd, NULL, mode, 0));
59  #endif
60  }
61