Ucred.xs revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Ucred.xs contains XS wrappers for the process privilege maniplulation
* functions.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/* Solaris includes. */
#include <ucred.h>
#include <priv.h>
/* Perl includes. */
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
typedef int sysret;
typedef ucred_t Sun__Solaris__Ucred__Ucred;
static priv_set_t *
dupset(const priv_set_t *s)
{
return (NULL);
priv_copyset(s, new);
return (new);
}
#define RETPRIVSET(set) \
ST(0) = sv_newmortal(); \
(void*)(set)); \
ST(0) = sv_newmortal(); \
(void*)(uc)); \
/*
* The XS code exported to perl is below here. Note that the XS preprocessor
* has its own commenting syntax, so all comments from this point on are in
* that form.
*/
const char *which;
const priv_set_t *val;
CODE:
/*
* Since this function returns a pointer into the ucred_t, we need
* to copy it or perl may free one before the other; and the
* priv_set_t * returned by it doesn't react kindly to free().
*/
int fd;
CODE:
void
int n;
if (n < 0)
XSRETURN(1);
int i;
for (i = 0; i < n; i++)
XSRETURN(n);
} else {
XSRETURN(0);
}
void
CODE:
ucred_free(uc);