/* vim: set sw=4 ts=4 sts=4 et : */ #include "Python.h" static const char* command = "import gentoo_img; gentoo_img.main()"; static wchar_t** arr_char2wchar(int argc, char* argv[]) { int i; wchar_t** r = calloc(argc, sizeof(wchar_t*)); for (i = 0; i < argc; ++i) { size_t l = strlen(argv[i]); wchar_t* m = calloc(1, sizeof(wchar_t) * (l + 1)); mbstowcs(m, argv[i], l); r[i] = m; } return r; } int main(int argc, char* argv[]) { int rc = 0; wchar_t** argv_; if (setresuid(0, 0, 0) == -1) { perror("setuid"); return 1; } if (setresgid(0, 0, 0) == -1) { perror("setgid"); return 1; } setenv("PATH", "/usr/bin:/bin:/usr/sbin:/sbin", 1); argv_ = arr_char2wchar(argc, argv); Py_IgnoreEnvironmentFlag = 1; #ifndef DEBUG Py_NoUserSiteDirectory = 1; #endif Py_Initialize(); PySys_SetArgv(argc, argv_); PyRun_SimpleString(command); Py_Finalize(); return rc; }