17c478bdstevel@tonic-gate/*
27c478bdstevel@tonic-gate * CDDL HEADER START
37c478bdstevel@tonic-gate *
47c478bdstevel@tonic-gate * The contents of this file are subject to the terms of the
5da6c28aamw * Common Development and Distribution License (the "License").
6da6c28aamw * You may not use this file except in compliance with the License.
77c478bdstevel@tonic-gate *
87c478bdstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bdstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
107c478bdstevel@tonic-gate * See the License for the specific language governing permissions
117c478bdstevel@tonic-gate * and limitations under the License.
127c478bdstevel@tonic-gate *
137c478bdstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
147c478bdstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bdstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
167c478bdstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
177c478bdstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bdstevel@tonic-gate *
197c478bdstevel@tonic-gate * CDDL HEADER END
207c478bdstevel@tonic-gate */
217257d1braf
227c478bdstevel@tonic-gate/*
238fd04b8Roger A. Faulkner * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
247c478bdstevel@tonic-gate * Use is subject to license terms.
257c478bdstevel@tonic-gate */
267c478bdstevel@tonic-gate
277257d1braf#include "lint.h"
288fd04b8Roger A. Faulkner#include <stdio.h>
298fd04b8Roger A. Faulkner#include <unistd.h>
307c478bdstevel@tonic-gate#include <sys/types.h>
317c478bdstevel@tonic-gate#include <sys/syscall.h>
328fd04b8Roger A. Faulkner#include <sys/fcntl.h>
337c478bdstevel@tonic-gate
348fd04b8Roger A. Faulkner#pragma weak _fchownat = fchownat
357c478bdstevel@tonic-gateint
367c478bdstevel@tonic-gatefchownat(int fd, const char *name, uid_t uid, gid_t gid, int flags)
377c478bdstevel@tonic-gate{
388fd04b8Roger A. Faulkner	return (syscall(SYS_fchownat, fd, name, uid, gid, flags));
397c478bdstevel@tonic-gate}
407c478bdstevel@tonic-gate
418fd04b8Roger A. Faulkner#pragma weak _chown = chown
427c478bdstevel@tonic-gateint
438fd04b8Roger A. Faulknerchown(const char *name, uid_t uid, gid_t gid)
447c478bdstevel@tonic-gate{
458fd04b8Roger A. Faulkner#if defined(_RETAIN_OLD_SYSCALLS)
468fd04b8Roger A. Faulkner	return (syscall(SYS_chown, name, uid, gid));
478fd04b8Roger A. Faulkner#else
488fd04b8Roger A. Faulkner	return (fchownat(AT_FDCWD, name, uid, gid, 0));
498fd04b8Roger A. Faulkner#endif
507c478bdstevel@tonic-gate}
51da6c28aamw
528fd04b8Roger A. Faulkner#pragma weak _lchown = lchown
53da6c28aamwint
548fd04b8Roger A. Faulknerlchown(const char *name, uid_t uid, gid_t gid)
55b2b3ca1Sumanth Naropanth{
568fd04b8Roger A. Faulkner#if defined(_RETAIN_OLD_SYSCALLS)
578fd04b8Roger A. Faulkner	return (syscall(SYS_lchown, name, uid, gid));
588fd04b8Roger A. Faulkner#else
598fd04b8Roger A. Faulkner	return (fchownat(AT_FDCWD, name, uid, gid, AT_SYMLINK_NOFOLLOW));
608fd04b8Roger A. Faulkner#endif
61b2b3ca1Sumanth Naropanth}
62b2b3ca1Sumanth Naropanth
638fd04b8Roger A. Faulkner#pragma weak _fchown = fchown
64b2b3ca1Sumanth Naropanthint
658fd04b8Roger A. Faulknerfchown(int filedes, uid_t uid, gid_t gid)
66da6c28aamw{
678fd04b8Roger A. Faulkner#if defined(_RETAIN_OLD_SYSCALLS)
688fd04b8Roger A. Faulkner	return (syscall(SYS_fchown, filedes, uid, gid));
698fd04b8Roger A. Faulkner#else
708fd04b8Roger A. Faulkner	return (fchownat(filedes, NULL, uid, gid, 0));
718fd04b8Roger A. Faulkner#endif
72da6c28aamw}
73