Request to un-deprecate tevent_loop_allow_nesting()

Stefan (metze) Metzmacher metze at samba.org
Mon Nov 22 03:00:06 MST 2010


Hi Brad,

doesn't

#define TEVENT_DEPRECATED 1
#ifdef _DEPRECATED_
#undef _DEPRECATED_
#endif
#define _DEPRECATED_
#include <tevent.h>

doesn't help?

metze

> In OpenChange, we use Samba4 for a lot of things, including authentication. We 
> recently had a problem where it just died if you used kerberos (didn't affect 
> me, since I don't usually set it up, but a user filed a bug report, and I could 
> repeat it).
> 
> See http://tracker.openchange.org/issues/336 for the details of the problem.
> 
> The fix would appear to be to use tevent_loop_allow_nesting(). However that 
> isn't accessible unless you define TEVENT_DEPRECATED, and then it produces 
> deprecation warnings. The code from tevent.h:
> 
> #ifdef TEVENT_DEPRECATED
> #ifndef _DEPRECATED_
> #if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1 )
> #define _DEPRECATED_ __attribute__ ((deprecated))
> #else
> #define _DEPRECATED_
> #endif
> #endif
> void tevent_loop_allow_nesting(struct tevent_context *ev) _DEPRECATED_;
> void tevent_loop_set_nesting_hook(struct tevent_context *ev,
>                                   tevent_nesting_hook hook,
>                                   void *private_data) _DEPRECATED_;
> int _tevent_loop_until(struct tevent_context *ev,
>                        bool (*finished)(void *private_data),
>                        void *private_data,
>                        const char *location) _DEPRECATED_;
> #define tevent_loop_until(ev, finished, private_data) \
>         _tevent_loop_until(ev, finished, private_data, __location__)
> #endif
> 
> I'd hoped to work around the warning by just setting the flag directly, but of 
> course the struct tevent_context is opaque to the user....
> 
> I understand that this is a point of some contention within the samba team, 
> but I would like to kerberos work, and I would like to have no warnings in 
> openchange. I understand that there is no alternative that we can use at this 
> time. So I request that tevent_loop_allow_nesting be un-deprecated.
> 
> The easiest solution would just be to change it to something like:
> void tevent_loop_allow_nesting(struct tevent_context *ev);
> void tevent_loop_set_nesting_hook(struct tevent_context *ev,
>                                   tevent_nesting_hook hook,
>                                   void *private_data);
> int _tevent_loop_until(struct tevent_context *ev,
>                        bool (*finished)(void *private_data),
>                        void *private_data,
>                        const char *location);
> #define tevent_loop_until(ev, finished, private_data) \
>         _tevent_loop_until(ev, finished, private_data, __location__)
> (i.e. remove the while deprecation thing).
> 
> Another alternative would be another preprocessor #define (perhaps something 
> like TEVENT_ALLOW_NESTING) to do:
> #ifndef TEVENT_ALLOW_NESTING
> #ifndef _DEPRECATED_
> #if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1 )
> #define _DEPRECATED_ __attribute__ ((deprecated))
> #else
> #define _DEPRECATED_
> #endif
> #endif
> #else
> #ifndef _DEPRECATED_
> #define _DEPRECATED_
> #endif
> 
> that is, only emit deprecation warnings if TEVENT_ALLOW_NESTING is not set 
> (and we have a gcc that supports it).
> 
> I'm open to other suggestions.
> 
> For your consideration.
> 
> Brad

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20101122/fda4de6e/attachment.pgp>


More information about the samba-technical mailing list