summaryrefslogtreecommitdiff
path: root/libmu_scm/mu_address.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmu_scm/mu_address.c')
-rw-r--r--libmu_scm/mu_address.c89
1 files changed, 40 insertions, 49 deletions
diff --git a/libmu_scm/mu_address.c b/libmu_scm/mu_address.c
index 9ced92c8c..2df7dcb51 100644
--- a/libmu_scm/mu_address.c
+++ b/libmu_scm/mu_address.c
@@ -19,30 +19,29 @@
#include "mu_scm.h"
-typedef int (*address_get_fp) (mu_address_t, size_t, char *, size_t, size_t *);
+typedef int (*address_get_fp) (mu_address_t, size_t, char **);
static SCM
_get_address_part (const char *func_name, address_get_fp fun,
- SCM ADDRESS, SCM NUM)
+ SCM address, SCM num)
{
mu_address_t addr;
- int length;
char *str;
SCM ret;
- int num;
+ int n;
int status;
- SCM_ASSERT (scm_is_string (ADDRESS), ADDRESS, SCM_ARG1, func_name);
+ SCM_ASSERT (scm_is_string (address), address, SCM_ARG1, func_name);
- if (!SCM_UNBNDP (NUM))
+ if (!SCM_UNBNDP (num))
{
- SCM_ASSERT (scm_is_integer (NUM), NUM, SCM_ARG1, func_name);
- num = scm_to_int (NUM);
+ SCM_ASSERT (scm_is_integer (num), num, SCM_ARG1, func_name);
+ n = scm_to_int (num);
}
else
- num = 1;
+ n = 1;
- str = scm_to_locale_string (ADDRESS);
+ str = scm_to_locale_string (address);
if (!str[0])
{
free (str);
@@ -54,15 +53,7 @@ _get_address_part (const char *func_name, address_get_fp fun,
if (status)
mu_scm_error (func_name, status, "Cannot create address", SCM_BOOL_F);
- str = malloc (length + 1);
- if (!str)
- {
- mu_address_destroy (&addr);
- mu_scm_error (func_name, ENOMEM,
- "Cannot allocate memory", SCM_BOOL_F);
- }
-
- status = (*fun) (addr, num, str, length + 1, NULL);
+ status = (*fun) (addr, n, &str);
mu_address_destroy (&addr);
if (status == 0)
@@ -79,58 +70,58 @@ _get_address_part (const char *func_name, address_get_fp fun,
}
SCM_DEFINE_PUBLIC (scm_mu_address_get_personal, "mu-address-get-personal", 1, 1, 0,
- (SCM ADDRESS, SCM NUM),
- "Return personal part of the NUMth email address from ADDRESS.\n")
+ (SCM address, SCM num),
+ "Return personal part of the @var{num}th email address from @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_personal
{
return _get_address_part (FUNC_NAME,
- mu_address_get_personal, ADDRESS, NUM);
+ mu_address_aget_personal, address, num);
}
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_address_get_comments, "mu-address-get-comments", 1, 1, 0,
- (SCM ADDRESS, SCM NUM),
- "Return comment part of the NUMth email address from ADDRESS.\n")
+ (SCM address, SCM num),
+ "Return comment part of the @var{num}th email address from @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_comments
{
return _get_address_part (FUNC_NAME,
- mu_address_get_comments, ADDRESS, NUM);
+ mu_address_aget_comments, address, num);
}
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_address_get_email, "mu-address-get-email", 1, 1, 0,
- (SCM ADDRESS, SCM NUM),
- "Return email part of the NUMth email address from ADDRESS.\n")
+ (SCM address, SCM num),
+ "Return email part of the @var{num}th email address from @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_email
{
return _get_address_part (FUNC_NAME,
- mu_address_get_email, ADDRESS, NUM);
+ mu_address_aget_email, address, num);
}
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_address_get_domain, "mu-address-get-domain", 1, 1, 0,
- (SCM ADDRESS, SCM NUM),
- "Return domain part of the NUMth email address from ADDRESS.\n")
+ (SCM address, SCM num),
+ "Return domain part of the @var{num}th email address from @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_domain
{
return _get_address_part (FUNC_NAME,
- mu_address_get_domain, ADDRESS, NUM);
+ mu_address_aget_domain, address, num);
}
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_address_get_local, "mu-address-get-local", 1, 1, 0,
- (SCM ADDRESS, SCM NUM),
- "Return local part of the NUMth email address from ADDRESS.\n")
+ (SCM address, SCM num),
+ "Return local part of the @var{num}th email address from @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_local
{
return _get_address_part (FUNC_NAME,
- mu_address_get_local_part, ADDRESS, NUM);
+ mu_address_aget_local_part, address, num);
}
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_address_get_count, "mu-address-get-count", 1, 0, 0,
- (SCM ADDRESS),
- "Return number of parts in email address ADDRESS.\n")
+ (SCM address),
+ "Return number of parts in email address @var{address}.\n")
#define FUNC_NAME s_scm_mu_address_get_count
{
mu_address_t addr;
@@ -138,15 +129,15 @@ SCM_DEFINE_PUBLIC (scm_mu_address_get_count, "mu-address-get-count", 1, 0, 0,
int status;
char *str;
- SCM_ASSERT (scm_is_string (ADDRESS), ADDRESS, SCM_ARG1, FUNC_NAME);
+ SCM_ASSERT (scm_is_string (address), address, SCM_ARG1, FUNC_NAME);
- str = scm_to_locale_string (ADDRESS);
+ str = scm_to_locale_string (address);
status = mu_address_create (&addr, str);
free (str);
if (status)
mu_scm_error (FUNC_NAME, status,
"Cannot create address for ~A",
- scm_list_1 (ADDRESS));
+ scm_list_1 (address));
mu_address_get_count (addr, &count);
mu_address_destroy (&addr);
@@ -155,29 +146,29 @@ SCM_DEFINE_PUBLIC (scm_mu_address_get_count, "mu-address-get-count", 1, 0, 0,
#undef FUNC_NAME
SCM_DEFINE_PUBLIC (scm_mu_username_to_email, "mu-username->email", 0, 1, 0,
- (SCM NAME),
-"Deduce user's email address from his username. If NAME is omitted, \n"
+ (SCM name),
+"Deduce user's email address from his username. If @var{name} is omitted, \n"
"current username is assumed\n")
#define FUNC_NAME s_scm_mu_username_to_email
{
- char *name;
+ char *username;
char *email;
SCM ret;
- if (SCM_UNBNDP (NAME))
- name = NULL;
+ if (SCM_UNBNDP (name))
+ username = NULL;
else
{
- SCM_ASSERT (scm_is_string (NAME), NAME, SCM_ARG1, FUNC_NAME);
- name = scm_to_locale_string (NAME);
+ SCM_ASSERT (scm_is_string (name), name, SCM_ARG1, FUNC_NAME);
+ username = scm_to_locale_string (name);
}
- email = mu_get_user_email (name);
- free (name);
+ email = mu_get_user_email (username);
+ free (username);
if (!email)
mu_scm_error (FUNC_NAME, 0,
"Cannot get user email for ~A",
- scm_list_1 (NAME));
+ scm_list_1 (name));
ret = scm_from_locale_string (email);
free (email);

Return to:

Send suggestions and report system problems to the System administrator.