xref: /aosp_15_r20/external/selinux/libselinux/src/selinuxswig_ruby.i (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker /* Author: Dan Walsh
2*2d543d20SAndroid Build Coastguard Worker    Based on selinuxswig_python.i by James Athey
3*2d543d20SAndroid Build Coastguard Worker  */
4*2d543d20SAndroid Build Coastguard Worker 
5*2d543d20SAndroid Build Coastguard Worker /* Never build rpm_execcon interface */
6*2d543d20SAndroid Build Coastguard Worker #ifndef DISABLE_RPM
7*2d543d20SAndroid Build Coastguard Worker #define DISABLE_RPM
8*2d543d20SAndroid Build Coastguard Worker #endif
9*2d543d20SAndroid Build Coastguard Worker 
10*2d543d20SAndroid Build Coastguard Worker %module selinux
11*2d543d20SAndroid Build Coastguard Worker %{
12*2d543d20SAndroid Build Coastguard Worker 	#include "selinux/selinux.h"
13*2d543d20SAndroid Build Coastguard Worker %}
14*2d543d20SAndroid Build Coastguard Worker 
15*2d543d20SAndroid Build Coastguard Worker /* return a sid along with the result */
16*2d543d20SAndroid Build Coastguard Worker %typemap(argout) (security_id_t * sid) {
17*2d543d20SAndroid Build Coastguard Worker 	if (*$1) {
18*2d543d20SAndroid Build Coastguard Worker                 %append_output(SWIG_NewPointerObj(*$1, $descriptor(security_id_t), 0));
19*2d543d20SAndroid Build Coastguard Worker 	}
20*2d543d20SAndroid Build Coastguard Worker }
21*2d543d20SAndroid Build Coastguard Worker 
22*2d543d20SAndroid Build Coastguard Worker %typemap(in,numinputs=0) security_id_t *(security_id_t temp) {
23*2d543d20SAndroid Build Coastguard Worker   $1 = &temp;
24*2d543d20SAndroid Build Coastguard Worker }
25*2d543d20SAndroid Build Coastguard Worker 
26*2d543d20SAndroid Build Coastguard Worker %typemap(in,noblock=1,numinputs=0) char ** (char * temp = 0) {
27*2d543d20SAndroid Build Coastguard Worker 	$1 = &temp;
28*2d543d20SAndroid Build Coastguard Worker }
29*2d543d20SAndroid Build Coastguard Worker %typemap(freearg,match="in") char ** "";
30*2d543d20SAndroid Build Coastguard Worker %typemap(argout,noblock=1) char ** {
31*2d543d20SAndroid Build Coastguard Worker 	if (*$1) {
32*2d543d20SAndroid Build Coastguard Worker 		%append_output(SWIG_FromCharPtr(*$1));
33*2d543d20SAndroid Build Coastguard Worker 		freecon(*$1);
34*2d543d20SAndroid Build Coastguard Worker 	}
35*2d543d20SAndroid Build Coastguard Worker }
36*2d543d20SAndroid Build Coastguard Worker 
37*2d543d20SAndroid Build Coastguard Worker %typemap(in,noblock=1,numinputs=0) char ** (char * temp = 0) {
38*2d543d20SAndroid Build Coastguard Worker 	$1 = &temp;
39*2d543d20SAndroid Build Coastguard Worker }
40*2d543d20SAndroid Build Coastguard Worker %typemap(freearg,match="in") char ** "";
41*2d543d20SAndroid Build Coastguard Worker %typemap(argout,noblock=1) char ** {
42*2d543d20SAndroid Build Coastguard Worker 	if (*$1) {
43*2d543d20SAndroid Build Coastguard Worker 		%append_output(SWIG_FromCharPtr(*$1));
44*2d543d20SAndroid Build Coastguard Worker 		free(*$1);
45*2d543d20SAndroid Build Coastguard Worker 	}
46*2d543d20SAndroid Build Coastguard Worker }
47*2d543d20SAndroid Build Coastguard Worker 
48*2d543d20SAndroid Build Coastguard Worker %include "selinuxswig.i"
49