aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-11-20 19:11:22 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-11-20 19:11:22 +0000
commit8bca5e05b8e96bbfaaef9cc8dcecc33ce7ef6a15 (patch)
treefe24e8525de7d67e07efcef122d3842e68e1e111
parentf68505ee23d37afa31d908e146beab33935b7eed (diff)
Kjetil Jacobsen's patch that introduces CURLOPT_PRIVATE and CURLINFO_PRIVATE
for storage and retrieval of private data in the curl handle.
-rw-r--r--docs/libcurl/curl_easy_getinfo.36
-rw-r--r--docs/libcurl/curl_easy_setopt.37
-rw-r--r--include/curl/curl.h6
-rw-r--r--lib/getinfo.c3
-rw-r--r--lib/url.c7
-rw-r--r--lib/urldata.h2
6 files changed, 29 insertions, 2 deletions
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index 9f1e6a07e..ae149264d 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -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.
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 1d17ebb8e..b387445f4 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -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
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 94c2cd048..bf7b4852d 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -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
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 01d6dda85..009a3c10a 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -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;
}
diff --git a/lib/url.c b/lib/url.c
index 7083490be..c07c50861 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -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 */
diff --git a/lib/urldata.h b/lib/urldata.h
index 8d20a78f8..f123a770c 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -686,6 +686,8 @@ struct UserDefined {
int dns_cache_timeout; /* DNS cache timeout */
long buffer_size; /* size of receive buffer to use */
+
+ char *private; /* Private data */
/* Here follows boolean settings that define how to behave during
this session. They are STATIC, set by libcurl users or at least initially