Commit 8bca5e05 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Kjetil Jacobsen's patch that introduces CURLOPT_PRIVATE and CURLINFO_PRIVATE

for storage and retrieval of private data in the curl handle.
parent f68505ee
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -115,8 +115,12 @@ Pass a pointer to a 'char *' to receive the content-type of the downloaded
object. This is the value read from the Content-Type: field. If you get NULL,
it means that the server didn't send a valid Content-Type header or that the
protocol used doesn't support this.  (Added in 7.9.4)
.TP
.B CURLINFO_PRIVATE
Pass a pointer to a 'char *' to receive the pointer to the private data
associated with the curl handle (set with the CURLOPT_PRIVATE option to curl_easy_setopt).
(Added in 7.10.3)
.PP

.SH RETURN VALUE
If the operation was successful, CURLE_OK is returned. Otherwise an
appropriate error code will be returned.
+7 −0
Original line number Diff line number Diff line
@@ -763,6 +763,13 @@ krb4 awareness. This is a string, 'clear', 'safe', 'confidential' or
will be used. Set the string to NULL to disable kerberos4. The kerberos
support only works for FTP. (Added in 7.3)
.PP
.SH OTHER OPTIONS
.TP 0.4i
.B CURLOPT_PRIVATE
Pass a char * as parameter, pointing to data that should be
associated with the curl handle.  The pointer can be subsequently retrieved using
the CURLINFO_PRIVATE options to curl_easy_getinfo. (Added in 7.10.3)
.PP
.SH RETURN VALUE
CURLE_OK (zero) means that the option was set properly, non-zero means an
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
+5 −1
Original line number Diff line number Diff line
@@ -610,6 +610,8 @@ typedef enum {
     the response to be compressed. */
  CINIT(ENCODING, OBJECTPOINT, 102),
 
  /* Set pointer to private data */
  CINIT(PRIVATE, OBJECTPOINT, 103),

  CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -861,9 +863,11 @@ typedef enum {
  CURLINFO_REDIRECT_TIME   = CURLINFO_DOUBLE + 19,
  CURLINFO_REDIRECT_COUNT  = CURLINFO_LONG + 20,

  CURLINFO_PRIVATE = CURLINFO_STRING + 21,

  /* Fill in new entries here! */

  CURLINFO_LASTONE          = 21
  CURLINFO_LASTONE          = 22
} CURLINFO;

/* unfortunately, the easy.h and multi.h include files need options and info
+3 −0
Original line number Diff line number Diff line
@@ -158,6 +158,9 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
  case CURLINFO_CONTENT_TYPE:
    *param_charp = data->info.contenttype;
    break;
  case CURLINFO_PRIVATE:
    *param_charp = data->set.private?data->set.private:(char *)"";
    break;
  default:
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }
+7 −0
Original line number Diff line number Diff line
@@ -1088,6 +1088,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...)
    data->set.proxytype = va_arg(param, long);
    break;

  case CURLOPT_PRIVATE:
    /*
     * Set private data pointer.
     */
    data->set.private = va_arg(param, char *);
    break;

  default:
    /* unknown tag and its companion, just ignore: */
    return CURLE_FAILED_INIT; /* correct this */
Loading