@@ -2444,12 +2444,18 @@ _select_exec(PyObject *m)
24442444 return -1 ;
24452445 }
24462446
2447+ #define ADD_INT (VAL ) do { \
2448+ if (PyModule_AddIntConstant((m), #VAL, (VAL)) < 0) { \
2449+ return -1; \
2450+ } \
2451+ } while (0)
2452+
24472453#ifdef PIPE_BUF
24482454#ifdef HAVE_BROKEN_PIPE_BUF
24492455#undef PIPE_BUF
24502456#define PIPE_BUF 512
24512457#endif
2452- PyModule_AddIntMacro ( m , PIPE_BUF );
2458+ ADD_INT ( PIPE_BUF );
24532459#endif
24542460
24552461#if defined(HAVE_POLL ) && !defined(HAVE_BROKEN_POLL )
@@ -2468,31 +2474,31 @@ _select_exec(PyObject *m)
24682474 return -1 ;
24692475 }
24702476
2471- PyModule_AddIntMacro ( m , POLLIN );
2472- PyModule_AddIntMacro ( m , POLLPRI );
2473- PyModule_AddIntMacro ( m , POLLOUT );
2474- PyModule_AddIntMacro ( m , POLLERR );
2475- PyModule_AddIntMacro ( m , POLLHUP );
2476- PyModule_AddIntMacro ( m , POLLNVAL );
2477+ ADD_INT ( POLLIN );
2478+ ADD_INT ( POLLPRI );
2479+ ADD_INT ( POLLOUT );
2480+ ADD_INT ( POLLERR );
2481+ ADD_INT ( POLLHUP );
2482+ ADD_INT ( POLLNVAL );
24772483
24782484#ifdef POLLRDNORM
2479- PyModule_AddIntMacro ( m , POLLRDNORM );
2485+ ADD_INT ( POLLRDNORM );
24802486#endif
24812487#ifdef POLLRDBAND
2482- PyModule_AddIntMacro ( m , POLLRDBAND );
2488+ ADD_INT ( POLLRDBAND );
24832489#endif
24842490#ifdef POLLWRNORM
2485- PyModule_AddIntMacro ( m , POLLWRNORM );
2491+ ADD_INT ( POLLWRNORM );
24862492#endif
24872493#ifdef POLLWRBAND
2488- PyModule_AddIntMacro ( m , POLLWRBAND );
2494+ ADD_INT ( POLLWRBAND );
24892495#endif
24902496#ifdef POLLMSG
2491- PyModule_AddIntMacro ( m , POLLMSG );
2497+ ADD_INT ( POLLMSG );
24922498#endif
24932499#ifdef POLLRDHUP
24942500 /* Kernel 2.6.17+ */
2495- PyModule_AddIntMacro ( m , POLLRDHUP );
2501+ ADD_INT ( POLLRDHUP );
24962502#endif
24972503 }
24982504#endif /* HAVE_POLL */
@@ -2515,45 +2521,54 @@ _select_exec(PyObject *m)
25152521 return -1 ;
25162522 }
25172523
2518- PyModule_AddIntMacro ( m , EPOLLIN );
2519- PyModule_AddIntMacro ( m , EPOLLOUT );
2520- PyModule_AddIntMacro ( m , EPOLLPRI );
2521- PyModule_AddIntMacro ( m , EPOLLERR );
2522- PyModule_AddIntMacro ( m , EPOLLHUP );
2524+ ADD_INT ( EPOLLIN );
2525+ ADD_INT ( EPOLLOUT );
2526+ ADD_INT ( EPOLLPRI );
2527+ ADD_INT ( EPOLLERR );
2528+ ADD_INT ( EPOLLHUP );
25232529#ifdef EPOLLRDHUP
25242530 /* Kernel 2.6.17 */
2525- PyModule_AddIntMacro ( m , EPOLLRDHUP );
2531+ ADD_INT ( EPOLLRDHUP );
25262532#endif
2527- PyModule_AddIntMacro ( m , EPOLLET );
2533+ ADD_INT ( EPOLLET );
25282534#ifdef EPOLLONESHOT
25292535 /* Kernel 2.6.2+ */
2530- PyModule_AddIntMacro ( m , EPOLLONESHOT );
2536+ ADD_INT ( EPOLLONESHOT );
25312537#endif
25322538#ifdef EPOLLEXCLUSIVE
2533- PyModule_AddIntMacro ( m , EPOLLEXCLUSIVE );
2539+ ADD_INT ( EPOLLEXCLUSIVE );
25342540#endif
25352541
25362542#ifdef EPOLLRDNORM
2537- PyModule_AddIntMacro ( m , EPOLLRDNORM );
2543+ ADD_INT ( EPOLLRDNORM );
25382544#endif
25392545#ifdef EPOLLRDBAND
2540- PyModule_AddIntMacro ( m , EPOLLRDBAND );
2546+ ADD_INT ( EPOLLRDBAND );
25412547#endif
25422548#ifdef EPOLLWRNORM
2543- PyModule_AddIntMacro ( m , EPOLLWRNORM );
2549+ ADD_INT ( EPOLLWRNORM );
25442550#endif
25452551#ifdef EPOLLWRBAND
2546- PyModule_AddIntMacro ( m , EPOLLWRBAND );
2552+ ADD_INT ( EPOLLWRBAND );
25472553#endif
25482554#ifdef EPOLLMSG
2549- PyModule_AddIntMacro ( m , EPOLLMSG );
2555+ ADD_INT ( EPOLLMSG );
25502556#endif
25512557
25522558#ifdef EPOLL_CLOEXEC
2553- PyModule_AddIntMacro ( m , EPOLL_CLOEXEC );
2559+ ADD_INT ( EPOLL_CLOEXEC );
25542560#endif
25552561#endif /* HAVE_EPOLL */
25562562
2563+ #undef ADD_INT
2564+
2565+ #define ADD_INT_CONST (NAME , VAL ) \
2566+ do { \
2567+ if (PyModule_AddIntConstant(m, NAME, VAL) < 0) { \
2568+ return -1; \
2569+ } \
2570+ } while (0)
2571+
25572572#ifdef HAVE_KQUEUE
25582573 state -> kqueue_event_Type = (PyTypeObject * )PyType_FromModuleAndSpec (
25592574 m , & kqueue_event_Type_spec , NULL );
@@ -2574,80 +2589,83 @@ _select_exec(PyObject *m)
25742589 }
25752590
25762591 /* event filters */
2577- PyModule_AddIntConstant ( m , "KQ_FILTER_READ" , EVFILT_READ );
2578- PyModule_AddIntConstant ( m , "KQ_FILTER_WRITE" , EVFILT_WRITE );
2592+ ADD_INT_CONST ( "KQ_FILTER_READ" , EVFILT_READ );
2593+ ADD_INT_CONST ( "KQ_FILTER_WRITE" , EVFILT_WRITE );
25792594#ifdef EVFILT_AIO
2580- PyModule_AddIntConstant ( m , "KQ_FILTER_AIO" , EVFILT_AIO );
2595+ ADD_INT_CONST ( "KQ_FILTER_AIO" , EVFILT_AIO );
25812596#endif
25822597#ifdef EVFILT_VNODE
2583- PyModule_AddIntConstant ( m , "KQ_FILTER_VNODE" , EVFILT_VNODE );
2598+ ADD_INT_CONST ( "KQ_FILTER_VNODE" , EVFILT_VNODE );
25842599#endif
25852600#ifdef EVFILT_PROC
2586- PyModule_AddIntConstant ( m , "KQ_FILTER_PROC" , EVFILT_PROC );
2601+ ADD_INT_CONST ( "KQ_FILTER_PROC" , EVFILT_PROC );
25872602#endif
25882603#ifdef EVFILT_NETDEV
2589- PyModule_AddIntConstant ( m , "KQ_FILTER_NETDEV" , EVFILT_NETDEV );
2604+ ADD_INT_CONST ( "KQ_FILTER_NETDEV" , EVFILT_NETDEV );
25902605#endif
25912606#ifdef EVFILT_SIGNAL
2592- PyModule_AddIntConstant ( m , "KQ_FILTER_SIGNAL" , EVFILT_SIGNAL );
2607+ ADD_INT_CONST ( "KQ_FILTER_SIGNAL" , EVFILT_SIGNAL );
25932608#endif
2594- PyModule_AddIntConstant ( m , "KQ_FILTER_TIMER" , EVFILT_TIMER );
2609+ ADD_INT_CONST ( "KQ_FILTER_TIMER" , EVFILT_TIMER );
25952610
25962611 /* event flags */
2597- PyModule_AddIntConstant ( m , "KQ_EV_ADD" , EV_ADD );
2598- PyModule_AddIntConstant ( m , "KQ_EV_DELETE" , EV_DELETE );
2599- PyModule_AddIntConstant ( m , "KQ_EV_ENABLE" , EV_ENABLE );
2600- PyModule_AddIntConstant ( m , "KQ_EV_DISABLE" , EV_DISABLE );
2601- PyModule_AddIntConstant ( m , "KQ_EV_ONESHOT" , EV_ONESHOT );
2602- PyModule_AddIntConstant ( m , "KQ_EV_CLEAR" , EV_CLEAR );
2612+ ADD_INT_CONST ( "KQ_EV_ADD" , EV_ADD );
2613+ ADD_INT_CONST ( "KQ_EV_DELETE" , EV_DELETE );
2614+ ADD_INT_CONST ( "KQ_EV_ENABLE" , EV_ENABLE );
2615+ ADD_INT_CONST ( "KQ_EV_DISABLE" , EV_DISABLE );
2616+ ADD_INT_CONST ( "KQ_EV_ONESHOT" , EV_ONESHOT );
2617+ ADD_INT_CONST ( "KQ_EV_CLEAR" , EV_CLEAR );
26032618
26042619#ifdef EV_SYSFLAGS
2605- PyModule_AddIntConstant ( m , "KQ_EV_SYSFLAGS" , EV_SYSFLAGS );
2620+ ADD_INT_CONST ( "KQ_EV_SYSFLAGS" , EV_SYSFLAGS );
26062621#endif
26072622#ifdef EV_FLAG1
2608- PyModule_AddIntConstant ( m , "KQ_EV_FLAG1" , EV_FLAG1 );
2623+ ADD_INT_CONST ( "KQ_EV_FLAG1" , EV_FLAG1 );
26092624#endif
26102625
2611- PyModule_AddIntConstant ( m , "KQ_EV_EOF" , EV_EOF );
2612- PyModule_AddIntConstant ( m , "KQ_EV_ERROR" , EV_ERROR );
2626+ ADD_INT_CONST ( "KQ_EV_EOF" , EV_EOF );
2627+ ADD_INT_CONST ( "KQ_EV_ERROR" , EV_ERROR );
26132628
26142629 /* READ WRITE filter flag */
26152630#ifdef NOTE_LOWAT
2616- PyModule_AddIntConstant ( m , "KQ_NOTE_LOWAT" , NOTE_LOWAT );
2631+ ADD_INT_CONST ( "KQ_NOTE_LOWAT" , NOTE_LOWAT );
26172632#endif
26182633
26192634 /* VNODE filter flags */
26202635#ifdef EVFILT_VNODE
2621- PyModule_AddIntConstant ( m , "KQ_NOTE_DELETE" , NOTE_DELETE );
2622- PyModule_AddIntConstant ( m , "KQ_NOTE_WRITE" , NOTE_WRITE );
2623- PyModule_AddIntConstant ( m , "KQ_NOTE_EXTEND" , NOTE_EXTEND );
2624- PyModule_AddIntConstant ( m , "KQ_NOTE_ATTRIB" , NOTE_ATTRIB );
2625- PyModule_AddIntConstant ( m , "KQ_NOTE_LINK" , NOTE_LINK );
2626- PyModule_AddIntConstant ( m , "KQ_NOTE_RENAME" , NOTE_RENAME );
2627- PyModule_AddIntConstant ( m , "KQ_NOTE_REVOKE" , NOTE_REVOKE );
2636+ ADD_INT_CONST ( "KQ_NOTE_DELETE" , NOTE_DELETE );
2637+ ADD_INT_CONST ( "KQ_NOTE_WRITE" , NOTE_WRITE );
2638+ ADD_INT_CONST ( "KQ_NOTE_EXTEND" , NOTE_EXTEND );
2639+ ADD_INT_CONST ( "KQ_NOTE_ATTRIB" , NOTE_ATTRIB );
2640+ ADD_INT_CONST ( "KQ_NOTE_LINK" , NOTE_LINK );
2641+ ADD_INT_CONST ( "KQ_NOTE_RENAME" , NOTE_RENAME );
2642+ ADD_INT_CONST ( "KQ_NOTE_REVOKE" , NOTE_REVOKE );
26282643#endif
26292644
26302645 /* PROC filter flags */
26312646#ifdef EVFILT_PROC
2632- PyModule_AddIntConstant ( m , "KQ_NOTE_EXIT" , NOTE_EXIT );
2633- PyModule_AddIntConstant ( m , "KQ_NOTE_FORK" , NOTE_FORK );
2634- PyModule_AddIntConstant ( m , "KQ_NOTE_EXEC" , NOTE_EXEC );
2635- PyModule_AddIntConstant ( m , "KQ_NOTE_PCTRLMASK" , NOTE_PCTRLMASK );
2636- PyModule_AddIntConstant ( m , "KQ_NOTE_PDATAMASK" , NOTE_PDATAMASK );
2637-
2638- PyModule_AddIntConstant ( m , "KQ_NOTE_TRACK" , NOTE_TRACK );
2639- PyModule_AddIntConstant ( m , "KQ_NOTE_CHILD" , NOTE_CHILD );
2640- PyModule_AddIntConstant ( m , "KQ_NOTE_TRACKERR" , NOTE_TRACKERR );
2647+ ADD_INT_CONST ( "KQ_NOTE_EXIT" , NOTE_EXIT );
2648+ ADD_INT_CONST ( "KQ_NOTE_FORK" , NOTE_FORK );
2649+ ADD_INT_CONST ( "KQ_NOTE_EXEC" , NOTE_EXEC );
2650+ ADD_INT_CONST ( "KQ_NOTE_PCTRLMASK" , NOTE_PCTRLMASK );
2651+ ADD_INT_CONST ( "KQ_NOTE_PDATAMASK" , NOTE_PDATAMASK );
2652+
2653+ ADD_INT_CONST ( "KQ_NOTE_TRACK" , NOTE_TRACK );
2654+ ADD_INT_CONST ( "KQ_NOTE_CHILD" , NOTE_CHILD );
2655+ ADD_INT_CONST ( "KQ_NOTE_TRACKERR" , NOTE_TRACKERR );
26412656#endif
26422657
26432658 /* NETDEV filter flags */
26442659#ifdef EVFILT_NETDEV
2645- PyModule_AddIntConstant ( m , "KQ_NOTE_LINKUP" , NOTE_LINKUP );
2646- PyModule_AddIntConstant ( m , "KQ_NOTE_LINKDOWN" , NOTE_LINKDOWN );
2647- PyModule_AddIntConstant ( m , "KQ_NOTE_LINKINV" , NOTE_LINKINV );
2660+ ADD_INT_CONST ( "KQ_NOTE_LINKUP" , NOTE_LINKUP );
2661+ ADD_INT_CONST ( "KQ_NOTE_LINKDOWN" , NOTE_LINKDOWN );
2662+ ADD_INT_CONST ( "KQ_NOTE_LINKINV" , NOTE_LINKINV );
26482663#endif
26492664
26502665#endif /* HAVE_KQUEUE */
2666+
2667+ #undef ADD_INT_CONST
2668+
26512669 return 0 ;
26522670}
26532671
0 commit comments