%module PyRealpath %{ #include char *pyrealpath(const char* file_name) { static char real_name[PATH_MAX+1]; return realpath(file_name, real_name); } %} %typemap(python, in) char* { if ($source == Py_None) { $target = 0; } else if (!PyString_Check($source)) { PyErr_SetString(PyExc_TypeError, "not a string"); return NULL; } else $target = PyString_AsString($source); } %typemap(python, out) char * { $target = Py_BuildValue("s", $source); } char *pyrealpath(const char* file_name);