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