psss / rpms / libselinux

Forked from rpms/libselinux 5 years ago
Clone
35bc5a8
diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-2.0.15/src/selinuxswig.i
35bc5a8
--- nsalibselinux/src/selinuxswig.i	2007-05-18 09:58:34.000000000 -0400
35bc5a8
+++ libselinux-2.0.15/src/selinuxswig.i	2007-05-15 15:07:02.000000000 -0400
35bc5a8
@@ -41,6 +40,36 @@
35bc5a8
 	$1 = (security_context_t)PyString_AsString($input);
35bc5a8
 }
35bc5a8
 
35bc5a8
+%typemap(python,argout) security_context_t ** {
35bc5a8
+	int i;
35bc5a8
+	PyObject *security_context_string;
35bc5a8
+
35bc5a8
+	PyObject *list_security_context = PyList_New(0); // Create the list.
35bc5a8
+	if (list_security_context) {
35bc5a8
+		security_context_t *p_security_context_t = *arg3;
35bc5a8
+		for (i=0; i < result; i++) { 
35bc5a8
+			security_context_string = PyString_FromString(strdup((char *)p_security_context_t[i]));
35bc5a8
+			if (PyList_Append(list_security_context, security_context_string) < 0) {
35bc5a8
+				PyErr_SetString(PyExc_MemoryError,"typemap(argout) security_context_t **: Fail to insert item in list.");
35bc5a8
+				Py_DECREF(list_security_context);
35bc5a8
+				$result = SWIG_From_int(STATUS_ERR);
35bc5a8
+				break;
35bc5a8
+			}
35bc5a8
+		}
35bc5a8
+		freeconary(p_security_context_t);
35bc5a8
+	}
4dca0c4
+	else {
35bc5a8
+		PyErr_SetString(PyExc_MemoryError,"typemap(argout) security_context_t **: Fail to create list.");
35bc5a8
+		$result = SWIG_From_int(STATUS_ERR);
4dca0c4
+	}
4dca0c4
+
35bc5a8
+	%append_output(list_security_context);
4dca0c4
+}
4dca0c4
+
35bc5a8
+%typemap(in, numinputs=0) security_context_t **(security_context_t *temp=NULL) {
35bc5a8
+	$1 = &tem;;
4dca0c4
+}
4dca0c4
+
35bc5a8
 %typedef unsigned mode_t;
4dca0c4
 
35bc5a8
 %include "../include/selinux/get_context_list.h"