aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog16
-rw-r--r--camel/camel-service.c6
-rw-r--r--camel/camel-url.c8
-rw-r--r--camel/camel-url.h6
-rw-r--r--camel/providers/imap/camel-imap-store.c22
-rw-r--r--camel/tests/misc/url.c4
6 files changed, 38 insertions, 24 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index ccb68df5ea..bfcfe693a1 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,19 @@
+2001-03-29 Dan Winship <danw@ximian.com>
+
+ * camel-url.c (camel_url_to_string): change "gboolean show_passwd"
+ to "guint32 flags".
+
+ * tests/misc/url.c (main): Update calls to camel_url_to_string
+
+ * providers/imap/camel-imap-store.c (construct): Call
+ camel_url_to_string with flags to hide password, authtype, and
+ params to create the base_url.
+ (etc): Update for the fact that the base_url no longer has the "/"
+ at the end.
+
+ * camel-service.c (construct): Update calls to camel_url_to_string
+ (pass CAMEL_URL_HIDE_PASSWORD)
+
2001-03-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-pgp-context.[c,h]: New class for PGP encrypting,
diff --git a/camel/camel-service.c b/camel/camel-service.c
index cbf0e5b681..b0e8c1ec59 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -134,7 +134,7 @@ construct (CamelService *service, CamelSession *session,
if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_USER) &&
(url->user == NULL || url->user[0] == '\0')) {
- url_string = camel_url_to_string (url, FALSE);
+ url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
_("URL '%s' needs a username component"),
url_string);
@@ -142,7 +142,7 @@ construct (CamelService *service, CamelSession *session,
return;
} else if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_HOST) &&
(url->host == NULL || url->host[0] == '\0')) {
- url_string = camel_url_to_string (url, FALSE);
+ url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
_("URL '%s' needs a host component"),
url_string);
@@ -150,7 +150,7 @@ construct (CamelService *service, CamelSession *session,
return;
} else if (CAMEL_PROVIDER_NEEDS (provider, CAMEL_URL_PART_PATH) &&
(url->path == NULL || url->path[0] == '\0')) {
- url_string = camel_url_to_string (url, FALSE);
+ url_string = camel_url_to_string (url, CAMEL_URL_HIDE_PASSWORD);
camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_URL_INVALID,
_("URL '%s' needs a path component"),
url_string);
diff --git a/camel/camel-url.c b/camel/camel-url.c
index 28f913495d..535564f28e 100644
--- a/camel/camel-url.c
+++ b/camel/camel-url.c
@@ -292,12 +292,12 @@ camel_url_new (const char *url_string, CamelException *ex)
/**
* camel_url_to_string:
* @url: a CamelURL
- * @show_password: whether or not to include the password in the output
+ * @flags: additional translation options.
*
* Return value: a string representing @url, which the caller must free.
**/
char *
-camel_url_to_string (CamelURL *url, gboolean show_passwd)
+camel_url_to_string (CamelURL *url, guint32 flags)
{
GString *str;
char *enc, *return_result;
@@ -322,7 +322,7 @@ camel_url_to_string (CamelURL *url, gboolean show_passwd)
g_string_sprintfa (str, ";auth=%s", enc);
g_free (enc);
}
- if (show_passwd && url->passwd) {
+ if (url->passwd && !(flags & CAMEL_URL_HIDE_PASSWORD)) {
enc = camel_url_encode (url->passwd, TRUE, "@/");
g_string_sprintfa (str, ":%s", enc);
g_free (enc);
@@ -342,7 +342,7 @@ camel_url_to_string (CamelURL *url, gboolean show_passwd)
g_string_sprintfa (str, "%s", enc);
g_free (enc);
}
- if (url->params)
+ if (url->params && !(flags & CAMEL_URL_HIDE_PARAMS))
g_datalist_foreach (&url->params, output_param, str);
if (url->query) {
enc = camel_url_encode (url->query, FALSE, "#");
diff --git a/camel/camel-url.h b/camel/camel-url.h
index 85464a2fd0..9465da06a1 100644
--- a/camel/camel-url.h
+++ b/camel/camel-url.h
@@ -49,9 +49,13 @@ typedef struct {
char *fragment;
} CamelURL;
+#define CAMEL_URL_HIDE_PASSWORD (1 << 0)
+#define CAMEL_URL_HIDE_PARAMS (1 << 1)
+#define CAMEL_URL_HIDE_AUTH (1 << 2)
+
CamelURL *camel_url_new_with_base (CamelURL *base, const char *url_string);
CamelURL *camel_url_new (const char *url_string, CamelException *ex);
-char *camel_url_to_string (CamelURL *url, gboolean show_password);
+char *camel_url_to_string (CamelURL *url, guint32 flags);
void camel_url_free (CamelURL *url);
char *camel_url_encode (char *part, gboolean escape_unsafe, char *escape_extra);
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index d9466e120e..daa9871539 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -198,7 +198,6 @@ construct (CamelService *service, CamelSession *session,
{
CamelImapStore *imap_store = CAMEL_IMAP_STORE (service);
CamelStore *store = CAMEL_STORE (service);
- CamelURL *base_url;
CAMEL_SERVICE_CLASS (remote_store_class)->construct (service, session, provider, url, ex);
if (camel_exception_is_set (ex))
@@ -208,14 +207,9 @@ construct (CamelService *service, CamelSession *session,
if (camel_exception_is_set (ex))
return;
- base_url = g_new0 (CamelURL, 1);
- camel_url_set_protocol (base_url, service->url->protocol);
- camel_url_set_user (base_url, service->url->user);
- camel_url_set_host (base_url, service->url->host);
- camel_url_set_port (base_url, service->url->port);
- camel_url_set_path (base_url, "/");
- imap_store->base_url = camel_url_to_string (base_url, FALSE);
- camel_url_free (base_url);
+ imap_store->base_url = camel_url_to_string (service->url, (CAMEL_URL_HIDE_PASSWORD |
+ CAMEL_URL_HIDE_PARAMS |
+ CAMEL_URL_HIDE_AUTH));
imap_store->parameters = 0;
if (camel_url_get_param (url, "use_lsub"))
@@ -950,7 +944,7 @@ parse_list_response_as_folder_info (CamelImapStore *imap_store,
else
fi->name = g_strdup (dir);
if (!(flags & IMAP_LIST_FLAG_NOSELECT))
- fi->url = g_strdup_printf ("%s%s", imap_store->base_url, dir);
+ fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, dir);
if (!(flags & IMAP_LIST_FLAG_UNMARKED))
fi->unread_message_count = -1;
@@ -1086,7 +1080,7 @@ get_folders_offline (CamelImapStore *imap_store, GPtrArray *folders,
fi->name = g_strdup (fi->name + 1);
else
fi->name = g_strdup (fi->full_name);
- fi->url = g_strdup_printf ("%s%s", imap_store->base_url,
+ fi->url = g_strdup_printf ("%s/%s", imap_store->base_url,
fi->full_name);
fi->unread_message_count = -1;
folders->pdata[i++] = fi;
@@ -1182,7 +1176,7 @@ get_folder_info (CamelStore *store, const char *top, gboolean fast,
fi = g_new0 (CamelFolderInfo, 1);
fi->full_name = g_strdup ("INBOX");
fi->name = g_strdup ("INBOX");
- fi->url = g_strdup_printf ("%sINBOX", imap_store->base_url);
+ fi->url = g_strdup_printf ("%s/INBOX", imap_store->base_url);
fi->unread_message_count = -1;
g_ptr_array_add (folders, fi);
@@ -1275,7 +1269,7 @@ subscribe_folder (CamelStore *store, const char *folder_name,
fi = g_new0 (CamelFolderInfo, 1);
fi->full_name = g_strdup (folder_name);
fi->name = g_strdup (name);
- fi->url = g_strdup_printf ("%s%s", imap_store->base_url, folder_name);
+ fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, folder_name);
fi->unread_message_count = -1;
camel_object_trigger_event (CAMEL_OBJECT (store),
@@ -1320,7 +1314,7 @@ unsubscribe_folder (CamelStore *store, const char *folder_name,
fi = g_new0 (CamelFolderInfo, 1);
fi->full_name = g_strdup (folder_name);
fi->name = g_strdup (name);
- fi->url = g_strdup_printf ("%s%s", imap_store->base_url, folder_name);
+ fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, folder_name);
fi->unread_message_count = -1;
camel_object_trigger_event (CAMEL_OBJECT (store),
diff --git a/camel/tests/misc/url.c b/camel/tests/misc/url.c
index 128eb29fc5..cc61ef3cd6 100644
--- a/camel/tests/misc/url.c
+++ b/camel/tests/misc/url.c
@@ -73,7 +73,7 @@ main (int argc, char **argv)
camel_test_pull ();
camel_test_push ("base URL unparsing");
- url_string = camel_url_to_string (base_url, TRUE);
+ url_string = camel_url_to_string (base_url, 0);
if (strcmp (url_string, base) != 0) {
camel_test_fail ("URL <%s> unparses to <%s>\n",
base, url_string);
@@ -90,7 +90,7 @@ main (int argc, char **argv)
continue;
}
- url_string = camel_url_to_string (url, TRUE);
+ url_string = camel_url_to_string (url, 0);
if (strcmp (url_string, tests[i].result) != 0)
camel_test_fail ("got <%s>!", url_string);
g_free (url_string);