Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Python/mactoolboxglue.c

    r2 r388  
    55                        All Rights Reserved
    66
    7 Permission to use, copy, modify, and distribute this software and its 
    8 documentation for any purpose and without fee is hereby granted, 
     7Permission to use, copy, modify, and distribute this software and its
     8documentation for any purpose and without fee is hereby granted,
    99provided that the above copyright notice appear in all copies and that
    10 both that copyright notice and this permission notice appear in 
     10both that copyright notice and this permission notice appear in
    1111supporting documentation, and that the names of Stichting Mathematisch
    1212Centrum or CWI not be used in advertising or publicity pertaining to
     
    2626#include "Python.h"
    2727#include "pymactoolbox.h"
    28 #include <arpa/inet.h>  /* for ntohl, htonl */
     28#include <arpa/inet.h>  /* for ntohl, htonl */
    2929
    3030
     
    3333PyMac_StrError(int err)
    3434{
    35         static char buf[256];
    36         PyObject *m;
    37         PyObject *rv;
    38 
    39         m = PyImport_ImportModuleNoBlock("MacOS");
    40         if (!m) {
    41                 if (Py_VerboseFlag)
    42                         PyErr_Print();
    43                 PyErr_Clear();
    44                 rv = NULL;
    45         }
    46         else {
    47                 rv = PyObject_CallMethod(m, "GetErrorString", "i", err);
    48                 if (!rv)
    49                         PyErr_Clear();
    50         }
    51         if (!rv) {
    52                 buf[0] = '\0';
    53         }
    54         else {
    55                 char *input = PyString_AsString(rv);
    56                 if (!input) {
    57                         PyErr_Clear();
    58                         buf[0] = '\0';
    59                 } else {
    60                         strncpy(buf, input, sizeof(buf) - 1);
    61                         buf[sizeof(buf) - 1] = '\0';
    62                 }
    63                 Py_DECREF(rv);
    64         }
    65         Py_XDECREF(m);
    66         return buf;
     35    static char buf[256];
     36    PyObject *m;
     37    PyObject *rv;
     38
     39    m = PyImport_ImportModuleNoBlock("MacOS");
     40    if (!m) {
     41        if (Py_VerboseFlag)
     42            PyErr_Print();
     43        PyErr_Clear();
     44        rv = NULL;
     45    }
     46    else {
     47        rv = PyObject_CallMethod(m, "GetErrorString", "i", err);
     48        if (!rv)
     49            PyErr_Clear();
     50    }
     51    if (!rv) {
     52        buf[0] = '\0';
     53    }
     54    else {
     55        char *input = PyString_AsString(rv);
     56        if (!input) {
     57            PyErr_Clear();
     58            buf[0] = '\0';
     59        } else {
     60            strncpy(buf, input, sizeof(buf) - 1);
     61            buf[sizeof(buf) - 1] = '\0';
     62        }
     63        Py_DECREF(rv);
     64    }
     65    Py_XDECREF(m);
     66    return buf;
    6767}
    6868
     
    7474PyMac_GetOSErrException(void)
    7575{
    76         if (PyMac_OSErrException == NULL)
    77                 PyMac_OSErrException = PyErr_NewException("MacOS.Error", NULL, NULL);
    78         return PyMac_OSErrException;
     76    if (PyMac_OSErrException == NULL)
     77        PyMac_OSErrException = PyErr_NewException("MacOS.Error", NULL, NULL);
     78    return PyMac_OSErrException;
    7979}
    8080
    8181/* Set a MAC-specific error from errno, and return NULL; return None if no error */
    82 PyObject * 
     82PyObject *
    8383PyErr_Mac(PyObject *eobj, int err)
    8484{
    85         char *msg;
    86         PyObject *v;
    87        
    88         if (err == 0 && !PyErr_Occurred()) {
    89                 Py_INCREF(Py_None);
    90                 return Py_None;
    91         }
    92         if (err == -1 && PyErr_Occurred())
    93                 return NULL;
    94         msg = PyMac_StrError(err);
    95         v = Py_BuildValue("(is)", err, msg);
    96         PyErr_SetObject(eobj, v);
    97         Py_DECREF(v);
    98         return NULL;
     85    char *msg;
     86    PyObject *v;
     87
     88    if (err == 0 && !PyErr_Occurred()) {
     89        Py_INCREF(Py_None);
     90        return Py_None;
     91    }
     92    if (err == -1 && PyErr_Occurred())
     93        return NULL;
     94    msg = PyMac_StrError(err);
     95    v = Py_BuildValue("(is)", err, msg);
     96    PyErr_SetObject(eobj, v);
     97    Py_DECREF(v);
     98    return NULL;
    9999}
    100100
     
    103103PyMac_Error(OSErr err)
    104104{
    105         return PyErr_Mac(PyMac_GetOSErrException(), err);
     105    return PyErr_Mac(PyMac_GetOSErrException(), err);
    106106}
    107107
     
    111111PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
    112112{
    113         PyObject *fs, *exc;
    114         PyObject *rv = NULL;
    115         char *input;
    116         OSErr err = noErr;
    117 
    118         *path = '\0';
    119 
    120         fs = PyMac_BuildFSSpec(fss);
    121         if (!fs)
    122                 goto error;
    123 
    124         rv = PyObject_CallMethod(fs, "as_pathname", "");
    125         if (!rv)
    126                 goto error;
    127 
    128         input = PyString_AsString(rv);
    129         if (!input)
    130                 goto error;
    131 
    132         strncpy(path, input, len - 1);
    133         path[len - 1] = '\0';
    134 
    135         Py_XDECREF(rv);
    136         Py_XDECREF(fs);
    137         return err;
     113    PyObject *fs, *exc;
     114    PyObject *rv = NULL;
     115    char *input;
     116    OSErr err = noErr;
     117
     118    *path = '\0';
     119
     120    fs = PyMac_BuildFSSpec(fss);
     121    if (!fs)
     122        goto error;
     123
     124    rv = PyObject_CallMethod(fs, "as_pathname", "");
     125    if (!rv)
     126        goto error;
     127
     128    input = PyString_AsString(rv);
     129    if (!input)
     130        goto error;
     131
     132    strncpy(path, input, len - 1);
     133    path[len - 1] = '\0';
     134
     135    Py_XDECREF(rv);
     136    Py_XDECREF(fs);
     137    return err;
    138138
    139139  error:
    140         exc = PyErr_Occurred();
    141         if (exc  && PyErr_GivenExceptionMatches(exc,
    142                                                 PyMac_GetOSErrException())) {
    143                 PyObject *args = PyObject_GetAttrString(exc, "args");
    144                 if (args) {
    145                         char *ignore;
    146                         PyArg_ParseTuple(args, "is", &err, &ignore);
    147                         Py_XDECREF(args);
    148                 }
    149         }
    150         if (err == noErr)
    151                 err = -1;
    152         PyErr_Clear();
    153         Py_XDECREF(rv);
    154         Py_XDECREF(fs);
    155         return err;
     140    exc = PyErr_Occurred();
     141    if (exc  && PyErr_GivenExceptionMatches(exc,
     142                                            PyMac_GetOSErrException())) {
     143        PyObject *args = PyObject_GetAttrString(exc, "args");
     144        if (args) {
     145            char *ignore;
     146            PyArg_ParseTuple(args, "is", &err, &ignore);
     147            Py_XDECREF(args);
     148        }
     149    }
     150    if (err == noErr)
     151        err = -1;
     152    PyErr_Clear();
     153    Py_XDECREF(rv);
     154    Py_XDECREF(fs);
     155    return err;
    156156}
    157157#endif /* !__LP64__ */
     
    161161PyMac_GetOSType(PyObject *v, OSType *pr)
    162162{
    163         uint32_t tmp;
    164         if (!PyString_Check(v) || PyString_Size(v) != 4) {
    165                 PyErr_SetString(PyExc_TypeError,
    166                         "OSType arg must be string of 4 chars");
    167                 return 0;
    168         }
    169         memcpy((char *)&tmp, PyString_AsString(v), 4);
    170         *pr = (OSType)ntohl(tmp);
    171         return 1;
     163    uint32_t tmp;
     164    if (!PyString_Check(v) || PyString_Size(v) != 4) {
     165        PyErr_SetString(PyExc_TypeError,
     166            "OSType arg must be string of 4 chars");
     167        return 0;
     168    }
     169    memcpy((char *)&tmp, PyString_AsString(v), 4);
     170    *pr = (OSType)ntohl(tmp);
     171    return 1;
    172172}
    173173
     
    176176PyMac_BuildOSType(OSType t)
    177177{
    178         uint32_t tmp = htonl((uint32_t)t);
    179         return PyString_FromStringAndSize((char *)&tmp, 4);
     178    uint32_t tmp = htonl((uint32_t)t);
     179    return PyString_FromStringAndSize((char *)&tmp, 4);
    180180}
    181181
     
    184184PyMac_BuildNumVersion(NumVersion t)
    185185{
    186         return Py_BuildValue("(hhhh)", t.majorRev, t.minorAndBugRev, t.stage, t.nonRelRev);
     186    return Py_BuildValue("(hhhh)", t.majorRev, t.minorAndBugRev, t.stage, t.nonRelRev);
    187187}
    188188
     
    192192PyMac_GetStr255(PyObject *v, Str255 pbuf)
    193193{
    194         int len;
    195         if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
    196                 PyErr_SetString(PyExc_TypeError,
    197                         "Str255 arg must be string of at most 255 chars");
    198                 return 0;
    199         }
    200         pbuf[0] = len;
    201         memcpy((char *)(pbuf+1), PyString_AsString(v), len);
    202         return 1;
     194    int len;
     195    if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
     196        PyErr_SetString(PyExc_TypeError,
     197            "Str255 arg must be string of at most 255 chars");
     198        return 0;
     199    }
     200    pbuf[0] = len;
     201    memcpy((char *)(pbuf+1), PyString_AsString(v), len);
     202    return 1;
    203203}
    204204
     
    207207PyMac_BuildStr255(Str255 s)
    208208{
    209         if ( s == NULL ) {
    210                 PyErr_SetString(PyExc_SystemError, "Str255 pointer is NULL");
    211                 return NULL;
    212         }
    213         return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
     209    if ( s == NULL ) {
     210        PyErr_SetString(PyExc_SystemError, "Str255 pointer is NULL");
     211        return NULL;
     212    }
     213    return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
    214214}
    215215
     
    217217PyMac_BuildOptStr255(Str255 s)
    218218{
    219         if ( s == NULL ) {
    220                 Py_INCREF(Py_None);
    221                 return Py_None;
    222         }
    223         return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
     219    if ( s == NULL ) {
     220        Py_INCREF(Py_None);
     221        return Py_None;
     222    }
     223    return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
    224224}
    225225
     
    233233PyMac_GetRect(PyObject *v, Rect *r)
    234234{
    235         return PyArg_Parse(v, "(hhhh)", &r->left, &r->top, &r->right, &r->bottom);
     235    return PyArg_Parse(v, "(hhhh)", &r->left, &r->top, &r->right, &r->bottom);
    236236}
    237237
     
    240240PyMac_BuildRect(Rect *r)
    241241{
    242         return Py_BuildValue("(hhhh)", r->left, r->top, r->right, r->bottom);
     242    return Py_BuildValue("(hhhh)", r->left, r->top, r->right, r->bottom);
    243243}
    244244
     
    251251PyMac_GetPoint(PyObject *v, Point *p)
    252252{
    253         return PyArg_Parse(v, "(hh)", &p->h, &p->v);
     253    return PyArg_Parse(v, "(hh)", &p->h, &p->v);
    254254}
    255255
     
    258258PyMac_BuildPoint(Point p)
    259259{
    260         return Py_BuildValue("(hh)", p.h, p.v);
     260    return Py_BuildValue("(hh)", p.h, p.v);
    261261}
    262262
     
    267267PyMac_GetEventRecord(PyObject *v, EventRecord *e)
    268268{
    269         return PyArg_Parse(v, "(Hkk(hh)H)",
    270                            &e->what,
    271                            &e->message,
    272                            &e->when,
    273                            &e->where.h,
    274                            &e->where.v,                   
    275                            &e->modifiers);
     269    return PyArg_Parse(v, "(Hkk(hh)H)",
     270                       &e->what,
     271                       &e->message,
     272                       &e->when,
     273                       &e->where.h,
     274                       &e->where.v,
     275                       &e->modifiers);
    276276}
    277277
     
    280280PyMac_BuildEventRecord(EventRecord *e)
    281281{
    282         return Py_BuildValue("(hll(hh)h)",
    283                              e->what,
    284                              e->message,
    285                              e->when,
    286                              e->where.h,
    287                              e->where.v,
    288                              e->modifiers);
     282    return Py_BuildValue("(hll(hh)h)",
     283                         e->what,
     284                         e->message,
     285                         e->when,
     286                         e->where.h,
     287                         e->where.v,
     288                         e->modifiers);
    289289}
    290290
     
    293293PyMac_GetFixed(PyObject *v, Fixed *f)
    294294{
    295         double d;
    296        
    297         if( !PyArg_Parse(v, "d", &d))
    298                 return 0;
    299         *f = (Fixed)(d * 0x10000);
    300         return 1;
     295    double d;
     296
     297    if( !PyArg_Parse(v, "d", &d))
     298        return 0;
     299    *f = (Fixed)(d * 0x10000);
     300    return 1;
    301301}
    302302
     
    305305PyMac_BuildFixed(Fixed f)
    306306{
    307         double d;
    308        
    309         d = f;
    310         d = d / 0x10000;
    311         return Py_BuildValue("d", d);
     307    double d;
     308
     309    d = f;
     310    d = d / 0x10000;
     311    return Py_BuildValue("d", d);
    312312}
    313313
     
    316316PyMac_Getwide(PyObject *v, wide *rv)
    317317{
    318         if (PyInt_Check(v)) {
    319                 rv->hi = 0;
    320                 rv->lo = PyInt_AsLong(v);
    321                 if( rv->lo & 0x80000000 )
    322                         rv->hi = -1;
    323                 return 1;
    324         }
    325         return PyArg_Parse(v, "(kk)", &rv->hi, &rv->lo);
     318    if (PyInt_Check(v)) {
     319        rv->hi = 0;
     320        rv->lo = PyInt_AsLong(v);
     321        if( rv->lo & 0x80000000 )
     322            rv->hi = -1;
     323        return 1;
     324    }
     325    return PyArg_Parse(v, "(kk)", &rv->hi, &rv->lo);
    326326}
    327327
     
    330330PyMac_Buildwide(wide *w)
    331331{
    332         if ( (w->hi == 0 && (w->lo & 0x80000000) == 0) ||
    333              (w->hi == -1 && (w->lo & 0x80000000) ) )
    334                 return PyInt_FromLong(w->lo);
    335         return Py_BuildValue("(ll)", w->hi, w->lo);
     332    if ( (w->hi == 0 && (w->lo & 0x80000000) == 0) ||
     333         (w->hi == -1 && (w->lo & 0x80000000) ) )
     334        return PyInt_FromLong(w->lo);
     335    return Py_BuildValue("(ll)", w->hi, w->lo);
    336336}
    337337
     
    359359       if (!PyImport_ImportModule(module)) return NULL; \
    360360       if (!PyMacGluePtr_##routinename) { \
    361            PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
    362            return NULL; \
     361       PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
     362       return NULL; \
    363363       } \
    364364    } \
     
    373373       if (!PyImport_ImportModule(module)) return 0; \
    374374       if (!PyMacGluePtr_##routinename) { \
    375            PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
    376            return 0; \
     375       PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
     376       return 0; \
    377377       } \
    378378    } \
Note: See TracChangeset for help on using the changeset viewer.