mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
The following people agreed with the change, in alphabetical order: (people who approved in several ways are listed only once) By email: - Adam (from Anope) - Austin Morton - Brian Campbell - Christian Walde - Daniel Holbert - Daniel Wallace - Falk Seidel - Heiko Hund - Ingmar Runge - Jim Hull - Kyle Fuller - Lee Aylward - Martin Martimeo - Matt Harper - Michael J Edgar - Michael Ziegler - Nick Bebout - Paul Driver - Perry Nguyen - Philippe (cycomate) - Reuben Morais - Roland Hieber - Sebastian Ramacher - Stefan Rado - Stéphan Kochen - Thomas Ward - Toon Schoenmakers - Veit Wahlich - Wulf C. Krueger By IRC: - CNU - Jonas Gorski - Joshua M. Clulow - Prozac/SHiZNO - SilverLeo - Uli Schlachter At https://github.com/znc/znc/issues/311 : - Alexey Sokolov - Elizabeth Myers - flakes - Jens-Andre Koch - Jyzee - KindOne/ineedalifetoday - Lee Williams - Mantas Mikulėnas - md-5 - Reed Loden At the last few pull requests' comments: - Allan Odgaard - Jacob Baines - Lluís Batlle i Rossell - ravomavain - protomouse The following commits' authors didn't respond: Trivial changes: -f70f1086fd-4ca8b50e45The changes which are not presented in master anymore: -5512ed2ea0-960a4498f7-0f739de2c0-7f53cc810bFix #311 Fix #218
55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
/*
|
|
* Copyright (C) 2004-2013 ZNC, see the NOTICE file for details.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <Python.h>
|
|
#include <string>
|
|
|
|
void fail(PyObject* py, int n) {
|
|
// Doesn't clear any variables, but meh, finalize anyway...
|
|
if (!py) {
|
|
PyErr_Print();
|
|
Py_Finalize();
|
|
exit(n);
|
|
}
|
|
}
|
|
|
|
int main(int argc, char** argv) {
|
|
// Don't use this as an example: this has awful memory leaks.
|
|
Py_Initialize();
|
|
|
|
PyObject* pyModule = PyImport_ImportModule("py_compile");
|
|
fail(pyModule, 1);
|
|
|
|
PyObject* pyFunc = PyObject_GetAttrString(pyModule, "compile");
|
|
fail(pyFunc, 2);
|
|
|
|
std::string cfile = argv[2];
|
|
if (cfile.find('/') == std::string::npos) {
|
|
cfile = "./" + cfile;
|
|
}
|
|
PyObject* pyKW = Py_BuildValue("{sssN}", "cfile", cfile.c_str(), "doraise", Py_True);
|
|
fail(pyKW, 3);
|
|
|
|
PyObject* pyArg = Py_BuildValue("(s)", argv[1]);
|
|
fail(pyArg, 4);
|
|
|
|
PyObject* pyRes = PyObject_Call(pyFunc, pyArg, pyKW);
|
|
fail(pyRes, 5);
|
|
|
|
Py_Finalize();
|
|
return 0;
|
|
}
|