ยปCore Development>Code coverage>Modules/_gestalt.c

Python code coverage for Modules/_gestalt.c

#countcontent
1n/a/***********************************************************
2n/aCopyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
3n/aThe Netherlands.
4n/a
5n/a All Rights Reserved
6n/a
7n/aPermission to use, copy, modify, and distribute this software and its
8n/adocumentation for any purpose and without fee is hereby granted,
9n/aprovided that the above copyright notice appear in all copies and that
10n/aboth that copyright notice and this permission notice appear in
11n/asupporting documentation, and that the names of Stichting Mathematisch
12n/aCentrum or CWI not be used in advertising or publicity pertaining to
13n/adistribution of the software without specific, written prior permission.
14n/a
15n/aSTICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
16n/aTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17n/aFITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
18n/aFOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19n/aWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20n/aACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21n/aOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22n/a
23n/a******************************************************************/
24n/a
25n/a/* Macintosh Gestalt interface */
26n/a
27n/a#include "Python.h"
28n/a
29n/a#include <Carbon/Carbon.h>
30n/a
31n/a/* Convert a 4-char string object argument to an OSType value */
32n/astatic int
33n/aconvert_to_OSType(PyObject *v, OSType *pr)
34n/a{
35n/a uint32_t tmp;
36n/a if (!PyUnicode_Check(v) || PyUnicode_GetLength(v) != 4) {
37n/a PyErr_SetString(PyExc_TypeError,
38n/a "OSType arg must be string of 4 chars");
39n/a return 0;
40n/a }
41n/a memcpy((char *)&tmp, _PyUnicode_AsString(v), 4);
42n/a *pr = (OSType)ntohl(tmp);
43n/a return 1;
44n/a}
45n/a
46n/astatic PyObject *
47n/agestalt_gestalt(PyObject *self, PyObject *args)
48n/a{
49n/a OSErr iErr;
50n/a OSType selector;
51n/a SInt32 response;
52n/a if (!PyArg_ParseTuple(args, "O&", convert_to_OSType, &selector))
53n/a return NULL;
54n/a iErr = Gestalt(selector, &response);
55n/a if (iErr != 0) {
56n/a PyErr_SetString(PyExc_OSError,
57n/a "non-zero exit code!");
58n/a return NULL;
59n/a }
60n/a return PyLong_FromLong(response);
61n/a}
62n/a
63n/astatic struct PyMethodDef gestalt_methods[] = {
64n/a {"gestalt", gestalt_gestalt, METH_VARARGS},
65n/a {NULL, NULL} /* Sentinel */
66n/a};
67n/a
68n/astatic struct PyModuleDef gestaltmodule = {
69n/a PyModuleDef_HEAD_INIT,
70n/a "_gestalt",
71n/a NULL,
72n/a -1,
73n/a gestalt_methods,
74n/a NULL,
75n/a NULL,
76n/a NULL,
77n/a NULL
78n/a};
79n/a
80n/aPyMODINIT_FUNC
81n/aPyInit__gestalt(void)
82n/a{
83n/a return PyModule_Create(&gestaltmodule);
84n/a}