/*
*/
/* Solaris includes. */
#include <priv.h>
#include <ctype.h>
/* Perl includes. */
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#define RETPRIVSET(set) \
ST(0) = sv_newmortal(); \
(void*)(set)); \
typedef int sysret;
static priv_set_t *
dupset(const priv_set_t *s)
{
return (NULL);
priv_copyset(s, new);
return (new);
}
/*
* Automatically derive the #define constant from the constant value.
* This is the uppercase value of the constant with "PRIV_" prepended.
* The (name, value) pair computed in that way is stored twice:
* once as constant subroutine in the module's hash table.
* once as (key, value) in a hash table.
*/
static void
{
char upname[128];
int i;
return;
}
/*
* 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.
*
* Inside perl, privilege sets are represented as expanded strings;
* privileges and privilege sets are only known by name.
*/
#
#
BOOT:
{
const char *p;
int i;
/*
* Global constants
*/
/*
* %PRIVILEGES hash and the privilege constants
*/
for (i = 0; (p = priv_getbynum(i++)) != NULL; )
/*
* %PRIVSETS hash and the privset constants
*/
for (i = 0; (p = priv_getsetbynum(i++)) != NULL; )
}
const char *which;
CODE:
RETVAL = priv_allocset();
} else {
}
int op;
const char *which;
CODE:
RETVAL = priv_allocset();
}
CODE:
RETVAL = priv_allocset();
}
const char *priv;
const char *priv;
CODE:
}
CODE:
}
CODE:
}
const char *priv;
CODE:
}
const char *priv;
const char *
int i;
const char *
int i;
char *
priv_set_to_str(s, c, f)
char c;
int f;
const char *buf;
const char *sep;
CODE:
}
char *
const char *priv
void
CODE: