2 libloc - A library to determine the location of someone on the Internet
4 Copyright (C) 2017 IPFire Development Team <info@ipfire.org>
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
20 #include "locationmodule.h"
26 /* Declare global context */
27 struct loc_ctx
* loc_ctx
;
29 PyMODINIT_FUNC
PyInit_location(void);
31 static void location_free(void) {
37 static PyObject
* set_log_level(PyObject
* m
, PyObject
* args
) {
38 int priority
= LOG_INFO
;
40 if (!PyArg_ParseTuple(args
, "i", &priority
))
43 loc_set_log_priority(loc_ctx
, priority
);
48 static PyMethodDef location_module_methods
[] = {
51 (PyCFunction
)set_log_level
,
58 static struct PyModuleDef location_module
= {
59 .m_base
= PyModuleDef_HEAD_INIT
,
62 .m_doc
= "Python module for libloc",
63 .m_methods
= location_module_methods
,
64 .m_free
= (freefunc
)location_free
,
67 PyMODINIT_FUNC
PyInit_location(void) {
68 // Initialise loc context
69 int r
= loc_new(&loc_ctx
);
73 PyObject
* m
= PyModule_Create(&location_module
);
78 if (PyType_Ready(&ASType
) < 0)
82 PyModule_AddObject(m
, "AS", (PyObject
*)&ASType
);
85 if (PyType_Ready(&DatabaseType
) < 0)
88 Py_INCREF(&DatabaseType
);
89 PyModule_AddObject(m
, "Database", (PyObject
*)&DatabaseType
);
91 // Database Enumerator
92 if (PyType_Ready(&DatabaseEnumeratorType
) < 0)
95 Py_INCREF(&DatabaseEnumeratorType
);
96 //PyModule_AddObject(m, "DatabaseEnumerator", (PyObject *)&DatabaseEnumeratorType);
99 if (PyType_Ready(&NetworkType
) < 0)
102 Py_INCREF(&NetworkType
);
103 PyModule_AddObject(m
, "Network", (PyObject
*)&NetworkType
);
106 if (PyType_Ready(&WriterType
) < 0)
109 Py_INCREF(&WriterType
);
110 PyModule_AddObject(m
, "Writer", (PyObject
*)&WriterType
);
113 PyObject
* d
= PyModule_GetDict(m
);
116 PyDict_SetItemString(d
, "__version__", PyUnicode_FromString(VERSION
));