Commit d6604524 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

include: revert 9adf3c47 and make public types void * again

Many applications assume the actual contents of the public types and use
that do for example forward declarations (saving them from including our
public header) which then breaks when we switch from void * to a struct
*.

I'm not convinced we were wrong, but since this practise seems
widespread enough I'm willing to (partly) step down.

Now libcurl uses the struct itself when it is built and it allows
applications to use the struct type if CURL_STRICTER is defined at the
time of the #include.

Reported-by: Peter Frühberger
Fixes #926
parent 2bbed9c4
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -91,7 +91,13 @@
extern "C" {
#endif

#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
typedef struct Curl_easy CURL;
typedef struct Curl_share CURLSH;
#else
typedef void CURL;
typedef void CURLSH;
#endif

/*
 * libcurl external API function linkage decorations.
@@ -2258,7 +2264,6 @@ typedef void (*curl_unlock_function)(CURL *handle,
                                     curl_lock_data data,
                                     void *userptr);

typedef struct Curl_share CURLSH;

typedef enum {
  CURLSHE_OK,  /* all is fine */
+4 −0
Original line number Diff line number Diff line
@@ -52,7 +52,11 @@
extern "C" {
#endif

#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
typedef struct Curl_multi CURLM;
#else
typedef void CURLM;
#endif

typedef enum {
  CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or