aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2008-04-03 20:28:32 +0000
committerDan Fandrich <dan@coneharvesters.com>2008-04-03 20:28:32 +0000
commitbf52cef16fd2cc1ad83f760059d27f49f036c3eb (patch)
tree8cc62150d2ff3c5662130f0490cd720d5a5a62dc
parent16a9c5e02be15c1dde3aa21b3ced5a71c6fae53c (diff)
Made sure that curl_global_init is called in all the multithreaded
example programs.
-rw-r--r--CHANGES4
-rw-r--r--docs/examples/curlgtk.c7
-rw-r--r--docs/examples/multithread.c16
-rw-r--r--docs/examples/smooth-gtk-thread.c7
-rw-r--r--docs/examples/threaded-ssl.c13
5 files changed, 33 insertions, 14 deletions
diff --git a/CHANGES b/CHANGES
index 0ebb5ad71..4a528958f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
Changelog
+Daniel Fandrich (3 Apr 2008)
+- Made sure that curl_global_init is called in all the multithreaded
+ example programs.
+
Michal Marek (31 Mar 2008)
- Removed the generated ca-bundle.h file. The verbatim value of $ca and
$capath is known to configure, so it can be defined in config.h instead.
diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c
index 37c47f417..19f7b1712 100644
--- a/docs/examples/curlgtk.c
+++ b/docs/examples/curlgtk.c
@@ -29,7 +29,7 @@ size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
return fread(ptr, size, nmemb, stream);
}
-int my_progress_func(GtkWidget *Bar,
+int my_progress_func(GtkWidget *bar,
double t, /* dltotal */
double d, /* dlnow */
double ultotal,
@@ -37,7 +37,7 @@ int my_progress_func(GtkWidget *Bar,
{
/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
gdk_threads_enter();
- gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t);
+ gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t);
gdk_threads_leave();
return 0;
}
@@ -77,6 +77,9 @@ int main(int argc, char **argv)
GtkWidget *Window, *Frame, *Frame2;
GtkAdjustment *adj;
+ /* Must initialize libcurl before any threads are started */
+ curl_global_init(CURL_GLOBAL_ALL);
+
/* Init thread */
g_thread_init(NULL);
diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c
index 78c3a157a..939e9daef 100644
--- a/docs/examples/multithread.c
+++ b/docs/examples/multithread.c
@@ -15,6 +15,8 @@
#include <pthread.h>
#include <curl/curl.h>
+#define NUMT 4
+
/*
List of URLs to fetch.
@@ -24,14 +26,14 @@
http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
*/
-const char *urls[]= {
+const char * const urls[NUMT]= {
"http://curl.haxx.se/",
"ftp://cool.haxx.se/",
"http://www.contactor.se/",
"www.haxx.se"
};
-void *pull_one_url(void *url)
+static void *pull_one_url(void *url)
{
CURL *curl;
@@ -52,10 +54,14 @@ void *pull_one_url(void *url)
int main(int argc, char **argv)
{
- pthread_t tid[4];
+ pthread_t tid[NUMT];
int i;
int error;
- for(i=0; i< 4; i++) {
+
+ /* Must initialize libcurl before any threads are started */
+ curl_global_init(CURL_GLOBAL_ALL);
+
+ for(i=0; i< NUMT; i++) {
error = pthread_create(&tid[i],
NULL, /* default attributes please */
pull_one_url,
@@ -67,7 +73,7 @@ int main(int argc, char **argv)
}
/* now wait for all threads to terminate */
- for(i=0; i< 4; i++) {
+ for(i=0; i< NUMT; i++) {
error = pthread_join(tid[i], NULL);
fprintf(stderr, "Thread %d terminated\n", i);
}
diff --git a/docs/examples/smooth-gtk-thread.c b/docs/examples/smooth-gtk-thread.c
index 271939cea..2d41aa248 100644
--- a/docs/examples/smooth-gtk-thread.c
+++ b/docs/examples/smooth-gtk-thread.c
@@ -33,7 +33,7 @@
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int j = 0;
gint num_urls = 9; /* Just make sure this is less than urls[]*/
-char *urls[]= {
+const char * const urls[]= {
"90022",
"90023",
"90024",
@@ -58,7 +58,6 @@ void *pull_one_url(void *NaN)
CURLcode res;
gchar *http;
FILE *outfile;
- gint i;
/* Stop threads from entering unless j is incremented */
pthread_mutex_lock(&lock);
@@ -167,7 +166,9 @@ static gboolean cb_delete(GtkWidget *window, gpointer data)
int main(int argc, char **argv)
{
GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar;
- GtkAdjustment *adj;
+
+ /* Must initialize libcurl before any threads are started */
+ curl_global_init(CURL_GLOBAL_ALL);
/* Init thread */
g_thread_init(NULL);
diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c
index c3455369b..afc609551 100644
--- a/docs/examples/threaded-ssl.c
+++ b/docs/examples/threaded-ssl.c
@@ -23,6 +23,8 @@
#include <pthread.h>
#include <curl/curl.h>
+#define NUMT 4
+
/* we have this global to let the callback get easy access to it */
static pthread_mutex_t *lockarray;
@@ -89,7 +91,7 @@ void init_locks(void)
#endif
/* List of URLs to fetch.*/
-const char *urls[]= {
+const char * const urls[]= {
"https://www.sf.net/",
"https://www.openssl.org/",
"https://www.sf.net/",
@@ -114,15 +116,18 @@ static void *pull_one_url(void *url)
int main(int argc, char **argv)
{
- pthread_t tid[4];
+ pthread_t tid[NUMT];
int i;
int error;
(void)argc; /* we don't use any arguments in this example */
(void)argv;
+ /* Must initialize libcurl before any threads are started */
+ curl_global_init(CURL_GLOBAL_ALL);
+
init_locks();
- for(i=0; i< 4; i++) {
+ for(i=0; i< NUMT; i++) {
error = pthread_create(&tid[i],
NULL, /* default attributes please */
pull_one_url,
@@ -134,7 +139,7 @@ int main(int argc, char **argv)
}
/* now wait for all threads to terminate */
- for(i=0; i< 4; i++) {
+ for(i=0; i< NUMT; i++) {
error = pthread_join(tid[i], NULL);
fprintf(stderr, "Thread %d terminated\n", i);
}