Mercurial > masqmail
diff src/expand.c @ 10:26e34ae9a3e3
changed indention and line wrapping to a more consistent style
author | meillo@marmaro.de |
---|---|
date | Mon, 27 Oct 2008 16:23:10 +0100 |
parents | 08114f7dcc23 |
children | f671821d8222 |
line wrap: on
line diff
--- a/src/expand.c Mon Oct 27 16:21:27 2008 +0100 +++ b/src/expand.c Mon Oct 27 16:23:10 2008 +0100 @@ -20,106 +20,110 @@ #define MAX_VAR 50 -GList *var_table_rcpt(GList *var_table, address *rcpt) +GList* +var_table_rcpt(GList * var_table, address * rcpt) { - gchar *tmp_str; - - var_table = g_list_prepend(var_table, create_pair_string("rcpt_local", rcpt->local_part)); - var_table = g_list_prepend(var_table, create_pair_string("rcpt_domain", rcpt->domain)); - - tmp_str = g_strdup_printf("%s@%s", rcpt->local_part, rcpt->domain); - var_table = g_list_prepend(var_table, create_pair_string("rcpt", tmp_str)); - g_free(tmp_str); + gchar *tmp_str; + + var_table = g_list_prepend(var_table, create_pair_string("rcpt_local", rcpt->local_part)); + var_table = g_list_prepend(var_table, create_pair_string("rcpt_domain", rcpt->domain)); - return var_table; + tmp_str = g_strdup_printf("%s@%s", rcpt->local_part, rcpt->domain); + var_table = g_list_prepend(var_table, create_pair_string("rcpt", tmp_str)); + g_free(tmp_str); + + return var_table; } -GList *var_table_msg(GList *var_table, message *msg) +GList* +var_table_msg(GList * var_table, message * msg) { - address *ret_path = msg->return_path; - gchar *tmp_str; - - var_table = g_list_prepend(var_table, create_pair_string("uid", msg->uid)); - var_table = g_list_prepend(var_table, create_pair_string("received_host", - msg->received_host ? msg->received_host : "")); - var_table = g_list_prepend(var_table, create_pair_string("ident", msg->ident ? msg->ident : "")); - var_table = g_list_prepend(var_table, create_pair_string("return_path_local", ret_path->local_part)); - var_table = g_list_prepend(var_table, create_pair_string("return_path_domain", ret_path->domain)); - - tmp_str = g_strdup_printf("%s@%s", ret_path->local_part, ret_path->domain); - var_table = g_list_prepend(var_table, create_pair_string("return_path", tmp_str)); - g_free(tmp_str); + address *ret_path = msg->return_path; + gchar *tmp_str; - return var_table; + var_table = g_list_prepend(var_table, create_pair_string("uid", msg->uid)); + var_table = g_list_prepend(var_table, create_pair_string("received_host", msg->received_host ? msg->received_host : "")); + var_table = g_list_prepend(var_table, create_pair_string("ident", msg->ident ? msg->ident : "")); + var_table = g_list_prepend(var_table, create_pair_string("return_path_local", ret_path->local_part)); + var_table = g_list_prepend(var_table, create_pair_string("return_path_domain", ret_path->domain)); + + tmp_str = g_strdup_printf("%s@%s", ret_path->local_part, ret_path->domain); + var_table = g_list_prepend(var_table, create_pair_string("return_path", tmp_str)); + g_free(tmp_str); + + return var_table; } -GList *var_table_conf(GList *var_table) +GList* +var_table_conf(GList * var_table) { - var_table = g_list_prepend(var_table, create_pair_string("host_name", conf.host_name)); - var_table = g_list_prepend(var_table, create_pair_string("package", PACKAGE)); - var_table = g_list_prepend(var_table, create_pair_string("version", VERSION)); + var_table = g_list_prepend(var_table, create_pair_string("host_name", conf.host_name)); + var_table = g_list_prepend(var_table, create_pair_string("package", PACKAGE)); + var_table = g_list_prepend(var_table, create_pair_string("version", VERSION)); - return var_table; + return var_table; } -gint expand(GList *var_list, gchar *format, gchar *result, gint result_len) +gint +expand(GList * var_list, gchar * format, gchar * result, gint result_len) { - gchar *p = format, *q = result; - gchar *vq; - gint i = 0; - gboolean escape = FALSE; + gchar *p = format, *q = result; + gchar *vq; + gint i = 0; + gboolean escape = FALSE; - while(*p && (i < (result_len -1))){ - if((*p == '$') && !escape){ - gchar *value; - gchar var[MAX_VAR+1]; - int j = 0; + while (*p && (i < (result_len - 1))) { + if ((*p == '$') && !escape) { + gchar *value; + gchar var[MAX_VAR + 1]; + int j = 0; + + p++; /* skip '$' */ + vq = var; - p++; /* skip '$' */ - vq = var; + if (*p == '{') { + /* ${var} style */ + p++; /* skip '{' */ + while (*p && (*p != '}') && (j < MAX_VAR)) { + *(vq++) = *(p++); + j++; + } + p++; + } else { + /* $var style */ + while (*p && (isalnum(*p) || (*p == '_') || (*p == '-')) && (j < MAX_VAR)) { + *(vq++) = *(p++); + j++; + } + } + *vq = 0; - if(*p == '{'){ - /* ${var} style */ - p++; /* skip '{' */ - while(*p && (*p != '}') && (j < MAX_VAR)){ - *(vq++) = *(p++); - j++; - } - p++; - }else{ - /* $var style */ - while(*p && (isalnum(*p) || (*p == '_') || (*p == '-')) && (j < MAX_VAR)){ - *(vq++) = *(p++); - j++; + if (j < MAX_VAR) { + /* search var */ + value = (gchar *) table_find(var_list, var); + if (value) { + gchar *vp = value; + while (*vp && (i < (result_len - 1))) { + *(q++) = *(vp++); + i++; + } + } + } + } else { + if ((*p == '\\') && (!escape)) { + escape = TRUE; + } else { + *(q++) = *p; + i++; + escape = FALSE; + } + p++; + } } - } - *vq = 0; + *q = 0; - if(j < MAX_VAR){ - /* search var */ - value = (gchar *)table_find(var_list, var); - if(value){ - gchar *vp = value; - while(*vp && (i < (result_len -1))){ - *(q++) = *(vp++); i++; - } - } - } - }else{ - if((*p == '\\') && (!escape)){ - escape = TRUE; - }else{ - *(q++) = *p; i++; - escape = FALSE; - } - p++; - } - } - *q = 0; + if (i >= (result_len - 1)) + return -3; - if(i >= (result_len -1)) - return -3; - - return i; + return i; } -