diff options
author | Detlev Casanova <detlev.casanova@gmail.com> | 2010-07-05 12:19:47 +0200 |
---|---|---|
committer | Detlev Casanova <detlev.casanova@gmail.com> | 2010-07-05 12:19:47 +0200 |
commit | 1fa0da3323562b7bfc74501d4b20a12bdfe5d094 (patch) | |
tree | f5b1eb7c4c3b45d89139f5a263ac02cfcbf2b32e | |
parent | Runner working (diff) | |
download | layman-1fa0da3323562b7bfc74501d4b20a12bdfe5d094.tar.gz layman-1fa0da3323562b7bfc74501d4b20a12bdfe5d094.tar.bz2 layman-1fa0da3323562b7bfc74501d4b20a12bdfe5d094.zip |
Add interpreter version : shorter, more reliable
-rw-r--r-- | src/interpreter.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/interpreter.c b/src/interpreter.c new file mode 100644 index 0000000..6ab2843 --- /dev/null +++ b/src/interpreter.c @@ -0,0 +1,58 @@ +#include <Python.h> +#include <stdio.h> +#include <string.h> + +int main(int argc, char *argv[]) +{ + PyObject *pP1, *pP2, *pArgs, *pName, *pModule, *pDict, *pFunc, *pValue; + + Py_Initialize(); + + //printf("%s\n", Py_GetVersion()); + + //pName = PyByteArray_FromStringAndSize("portage", strlen("portage")); + pModule = PyModule_New("portage"); + + pDict = PyModule_GetDict(pModule); + pFunc = PyDict_GetItemString(pDict, "pkgcmp"); + + if (PyCallable_Check(pFunc)) + { + pP1 = PyByteArray_FromStringAndSize("app-portage/kuroo4-4.2", strlen("app-portage/kuroo4-4.2")); + pP2 = PyByteArray_FromStringAndSize("app-portage/kuroo4-4.3", strlen("app-portage/kuroo4-4.3")); + + pArgs = PyTuple_New(2); + + PyTuple_SetItem(pArgs, 0, pP1); + PyTuple_SetItem(pArgs, 0, pP2); + + pValue = PyObject_CallObject(pFunc, pArgs); + + if (pArgs != NULL) + { + Py_DECREF(pArgs); + } + } + else + PyErr_Print(); + + int ret = PyLong_AsLong(pValue); + switch(ret) + { + case -1: + printf("less"); + break; + case 0: + printf("same"); + break; + case 1: + printf("more"); + break; + } + + printf("\n"); + + Py_DECREF(pModule); + + Py_Finalize(); +} |