* optionally ignore invalid (unknown) message flag letters, update callers

This commit is contained in:
djcb 2012-06-01 14:03:43 +02:00
parent 7008e108ae
commit 895ab10a4b
6 changed files with 22 additions and 11 deletions

View File

@ -162,7 +162,8 @@ mu_flags_to_str_s (MuFlags flags, MuFlagType types)
MuFlags MuFlags
mu_flags_from_str (const char *str, MuFlagType types) mu_flags_from_str (const char *str, MuFlagType types,
gboolean ignore_invalid)
{ {
const char *cur; const char *cur;
MuFlags flag; MuFlags flag;
@ -174,6 +175,13 @@ mu_flags_from_str (const char *str, MuFlagType types)
MuFlags f; MuFlags f;
f = mu_flag_from_char (*cur); f = mu_flag_from_char (*cur);
if (f == MU_FLAG_INVALID) {
if (ignore_invalid)
continue;
return MU_FLAG_INVALID;
}
if (mu_flag_type (f) & types) if (mu_flag_type (f) & types)
flag |= f; flag |= f;
} }

View File

@ -115,13 +115,14 @@ const char* mu_flags_to_str_s (MuFlags flags, MuFlagType types);
* Get the (OR'ed) flags corresponding to a string representation * Get the (OR'ed) flags corresponding to a string representation
* *
* @param str the string representation * @param str the string representation
* @param types the flag types to acceps (other will be ignored) * @param types the flag types to accept (other will be ignored)
* @param ignore invalid if TRUE, ignore invalid flags, otherwise return
* MU_FLAG_INVALID if an invalid flag is encountered
* *
* @return the (OR'ed) flags * @return the (OR'ed) flags
*/ */
MuFlags mu_flags_from_str (const char *str, MuFlagType types); MuFlags mu_flags_from_str (const char *str, MuFlagType types,
gboolean ignore_invalid);
/** /**
* Update #oldflags with the flags in #str, where #str consists of the * Update #oldflags with the flags in #str, where #str consists of the

View File

@ -690,8 +690,9 @@ mu_maildir_get_flags_from_path (const char *path)
(info[1] != ',')) (info[1] != ','))
return MU_FLAG_NONE; return MU_FLAG_NONE;
else else
return mu_flags_from_str (&info[2], return mu_flags_from_str
MU_FLAG_TYPE_MAILFILE); (&info[2], MU_FLAG_TYPE_MAILFILE,
TRUE /*ignore invalid */);
} }
} }

View File

@ -677,7 +677,7 @@ mu_msg_contact_foreach (MuMsg *msg, MuMsgContactForeachFunc func,
static int static int
cmp_str (const char* s1, const char *s2) cmp_str (const char *s1, const char *s2)
{ {
if (s1 == s2) if (s1 == s2)
return 0; return 0;

View File

@ -250,8 +250,8 @@ time_t mu_msg_get_date (MuMsg *msg);
* *
* @param msg valid MuMsg* instance * @param msg valid MuMsg* instance
* *
* @return the fileflags as logically OR'd #Mu MsgFlags or 0 if * @return the file/content flags as logically OR'd #MuMsgFlags or 0
* there are none. * if there are none. Non-standard flags are ignored.
*/ */
MuFlags mu_msg_get_flags (MuMsg *msg); MuFlags mu_msg_get_flags (MuMsg *msg);

View File

@ -832,7 +832,8 @@ get_flags (const char *path, const char *flagstr)
return mu_flags_from_str_delta (flagstr, oldflags, return mu_flags_from_str_delta (flagstr, oldflags,
MU_FLAG_TYPE_ANY); MU_FLAG_TYPE_ANY);
} else } else
return mu_flags_from_str (flagstr, MU_FLAG_TYPE_ANY); return mu_flags_from_str (flagstr, MU_FLAG_TYPE_ANY,
TRUE /*ignore invalid*/);
} }
} }