aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils.h
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-09-01 20:01:41 -0700
committerEric Wong <normalperson@yhbt.net>2008-09-01 20:07:50 -0700
commitbbe4560b180e8c432c7eb7f53664605390bf67ca (patch)
tree38a4f310408726002c9b0a89b51d6684bc604265 /src/utils.h
parent36984e9e8c7ccb33f43a9f096e848d28e532dc6e (diff)
downloadmpd-bbe4560b180e8c432c7eb7f53664605390bf67ca.tar.gz
mpd-bbe4560b180e8c432c7eb7f53664605390bf67ca.tar.xz
mpd-bbe4560b180e8c432c7eb7f53664605390bf67ca.zip
provide a generic deconst_ptr function
This is generic enough to be used for various purposes. It will only deconst their argument to work around various braindead APIs without having to write a new wrapper each time we use one of those braindead APIs. It does not cast nor do do anything other than quietly remove the const qualifier for those braindead APIs.
Diffstat (limited to '')
-rw-r--r--src/utils.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/utils.h b/src/utils.h
index 6a6e562cf..0001ba3c8 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -90,4 +90,15 @@ void xpthread_mutex_destroy(pthread_mutex_t *mutex);
void xpthread_cond_destroy(pthread_cond_t *cond);
+/*
+ * Work-arounds for braindead APIs that require non-const pointers:
+ * ao_play(), free(), vorbis_comment_add_tag(), iconv()
+ */
+static inline void * deconst_ptr(const void *ptr)
+{
+ union { const void *in; void *out; } u;
+ u.in = ptr;
+ return u.out;
+}
+
#endif