diff options
Diffstat (limited to 'libmu_scm/mu_address.c')
-rw-r--r-- | libmu_scm/mu_address.c | 89 |
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); |