summaryrefslogtreecommitdiff
path: root/libmailutils
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2020-11-15 18:42:29 +0200
committerSergey Poznyakoff <gray@gnu.org>2020-11-15 18:46:58 +0200
commit83893fe3aba60d2e61964135e448b30ab7ff3ed5 (patch)
treedf3ace467a693ba8a97c4a91f49b9cb31229e7ba /libmailutils
parent337c75cb685ce96a41d10738f26f04de6a2bebed (diff)
downloadmailutils-83893fe3aba60d2e61964135e448b30ab7ff3ed5.tar.gz
mailutils-83893fe3aba60d2e61964135e448b30ab7ff3ed5.tar.bz2
Rename mu_string_to_flags to mu_attribute_string_to_flags
* include/mailutils/attribute.h (mu_attribute_string_to_flags): New proto. (mu_string_to_flags): Mark as deprecated. (mu_attribute_flags_to_string): New proto. * libmailutils/mailbox/attribute.c (mu_string_to_flags): Rename to mu_attribute_string_to_flags. (mu_attribute_flags_to_string): New function. * libmailutils/base/amd.c: Use mu_attribute_string_to_flags instead of mu_string_to_flags. * libmailutils/mailbox/msgscan.c: Likewise. * libproto/dotmail/message.c: Likewise. * libproto/pop/mbox.c: Likewise.
Diffstat (limited to 'libmailutils')
-rw-r--r--libmailutils/base/amd.c2
-rw-r--r--libmailutils/mailbox/attribute.c50
-rw-r--r--libmailutils/mailbox/msgscan.c2
3 files changed, 35 insertions, 19 deletions
diff --git a/libmailutils/base/amd.c b/libmailutils/base/amd.c
index ddfb965de..aca704dbd 100644
--- a/libmailutils/base/amd.c
+++ b/libmailutils/base/amd.c
@@ -1655,7 +1655,7 @@ amd_scan_message (struct _amd_message *mhm)
mu_c_strncasecmp (buf, "status:", 7) == 0)
{
int deleted = mhm->attr_flags & MU_ATTRIBUTE_DELETED;
- mu_string_to_flags (buf, &mhm->attr_flags);
+ mu_attribute_string_to_flags (buf, &mhm->attr_flags);
mhm->attr_flags |= deleted;
}
}
diff --git a/libmailutils/mailbox/attribute.c b/libmailutils/mailbox/attribute.c
index 475a71024..9f247faaf 100644
--- a/libmailutils/mailbox/attribute.c
+++ b/libmailutils/mailbox/attribute.c
@@ -431,17 +431,17 @@ static struct flagtrans flagtrans[] = {
mu_verify (MU_ARRAY_SIZE (flagtrans) == MU_STATUS_BUF_SIZE);
int
-mu_string_to_flags (const char *buffer, int *pflags)
+mu_attribute_string_to_flags (const char *buffer, int *pflags)
{
const char *sep;
if (pflags == NULL)
return EINVAL;
- /* Set the attribute */
+ /* Skip the header name */
if (mu_c_strncasecmp (buffer, "Status:", 7) == 0)
{
- sep = strchr(buffer, ':'); /* pass the ':' */
+ sep = strchr (buffer, ':'); /* pass the ':' */
sep++;
}
else
@@ -461,6 +461,35 @@ mu_string_to_flags (const char *buffer, int *pflags)
return 0;
}
+int
+mu_attribute_flags_to_string (int flags, char *buffer, size_t len, size_t *pn)
+{
+ int i, j;
+ struct flagtrans *ft;
+
+ if (!buffer || len == 0)
+ return EINVAL;
+
+ len--;
+
+ i = j = 0;
+ for (ft = flagtrans; ft->flag; ft++)
+ {
+ if (ft->flag & flags)
+ {
+ if (buffer && i < len)
+ buffer[i++] = ft->letter;
+ j++;
+ }
+ }
+ if (buffer)
+ buffer[i++] = 0;
+
+ if (pn)
+ *pn = j;
+ return j <= len ? 0 : MU_ERR_BUFSPACE;
+}
+
/* NOTE: When adding/removing flags, make sure to update the
MU_STATUS_BUF_SIZE define in include/mailutils/attribute.h */
int
@@ -468,24 +497,11 @@ mu_attribute_to_string (mu_attribute_t attr, char *buffer, size_t len,
size_t *pn)
{
int flags = 0;
- char buf[MU_STATUS_BUF_SIZE];
- int i;
int rc;
- struct flagtrans *ft;
rc = mu_attribute_get_flags (attr, &flags);
if (rc)
return rc;
-
- i = 0;
- for (ft = flagtrans; ft->flag; ft++)
- if (ft->flag & flags)
- buf[i++] = ft->letter;
- buf[i++] = 0;
-
- i = mu_cpystr (buffer, buf, i);
- if (pn)
- *pn = i;
- return 0;
+ return mu_attribute_flags_to_string (flags, buffer, len, pn);
}
diff --git a/libmailutils/mailbox/msgscan.c b/libmailutils/mailbox/msgscan.c
index 6a3aa9ae7..c35d0d61e 100644
--- a/libmailutils/mailbox/msgscan.c
+++ b/libmailutils/mailbox/msgscan.c
@@ -75,7 +75,7 @@ mu_stream_scan_message (mu_stream_t stream, struct mu_message_scan *sp)
/* Process particular attributes */
if (mu_c_strncasecmp (buf, MU_HEADER_STATUS ":", 7) == 0)
- mu_string_to_flags (buf, &attr_flags);
+ mu_attribute_string_to_flags (buf, &attr_flags);
}
else
{

Return to:

Send suggestions and report system problems to the System administrator.