47 lines
1.1 KiB
Diff
47 lines
1.1 KiB
Diff
Index: libselinux/src/selinuxswig_python.i
|
|
===================================================================
|
|
--- libselinux/src/selinuxswig_python.i (revision 2549)
|
|
+++ libselinux/src/selinuxswig_python.i (working copy)
|
|
@@ -98,4 +98,41 @@
|
|
}
|
|
}
|
|
|
|
+%typemap(in) char * const [] {
|
|
+ int i, size;
|
|
+ PyObject * s;
|
|
+
|
|
+ if (!PySequence_Check($input)) {
|
|
+ PyErr_SetString(PyExc_ValueError, "Expected a sequence");
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ size = PySequence_Size($input);
|
|
+
|
|
+ $1 = (char**) malloc(size + 1);
|
|
+
|
|
+ for(i = 0; i < size; i++) {
|
|
+ if (!PyString_Check(PySequence_GetItem($input, i))) {
|
|
+ PyErr_SetString(PyExc_ValueError, "Sequence must contain only strings");
|
|
+ return NULL;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ for(i = 0; i < size; i++) {
|
|
+ s = PySequence_GetItem($input, i);
|
|
+ $1[i] = (char*) malloc(PyString_Size(s) + 1);
|
|
+ strcpy($1[i], PyString_AsString(s));
|
|
+ }
|
|
+ $1[size] = NULL;
|
|
+}
|
|
+
|
|
+%typemap(freearg,match="in") char * const [] {
|
|
+ int i = 0;
|
|
+ while($1[i]) {
|
|
+ free($1[i]);
|
|
+ i++;
|
|
+ }
|
|
+ free($1);
|
|
+}
|
|
+
|
|
%include "selinuxswig.i"
|