On Wed, 15 Mar 2006 09:52:13 -0500
solar <[EMAIL PROTECTED]> wrote:
> On Wed, 2006-03-15 at 10:51 +0100, Paul de Vrieze wrote:
>
> [snip]
>
> > Actually, C++ being strongly related to C, can just use the C
> > python api's. As such it could directly interface with python, and
> > use the python portage api.
>
> If you could demonstrate an 'import portage' and a simple
> printf("PORTDIR=%s\n", PORTDIR); in C I'd be highly interested.Try attached :) Had a go 'coz I was curious. Compile with: gcc -o getportdir getportdir.c -lpython2.4 Does the equivalent of: #!/usr/bin/portage import portage; print portage.settings["PORTDIR"]; (more or less). Docs on the API itself (which comes with Python) are at http://docs.python.org/api/api.html -- Kevin F. Quinn
#include <python2.4/Python.h>
#include <stdio.h>
int main(int argc, char **argv) {
PyObject *portage, *portage_const, *portdir, *portage_dict, *portage_const_dict, portage_db;
PyObject *portage_settings, *portage_settings_dict;
PyObject *key, *value;
int pos;
Py_Initialize();
portage = PyImport_ImportModule ("portage");
portage_dict = PyModule_GetDict (portage);
portage_settings = PyDict_GetItemString (portage_dict, "settings");
// it's an instance of a class
portdir = PyObject_GetItem (portage_settings, PyString_FromString("PORTDIR"));
if (portdir == NULL) {
fprintf(stderr, "Failed to find portdir\n");
} else {
fprintf(stdout, "PORTDIR=\"%s\"\n", PyString_AsString(portdir)); fflush(stdout);
}
Py_Finalize();
}
signature.asc
Description: PGP signature
