/* parse the find parameters, and return the values as out params */ static MuError get_find_params (GSList *args, gboolean *threads, MuMsgFieldId *sortfield, gboolean *reverse, int *maxnum, GError **err) { const char *maxnumstr, *sortfieldstr; /* maximum number of results */ maxnumstr = get_string_from_args (args, "maxnum", TRUE, NULL); *maxnum = maxnumstr ? atoi (maxnumstr) : 0; /* whether to show threads or not */ *threads = get_bool_from_args (args, "threads", TRUE, NULL); *reverse = get_bool_from_args (args, "reverse", TRUE, NULL); /* field to sort by */ sortfieldstr = get_string_from_args (args, "sortfield", TRUE, NULL); if (sortfieldstr) { *sortfield = mu_msg_field_id_from_name (sortfieldstr, FALSE); /* note: shortcuts are not allowed here */ if (*sortfield == MU_MSG_FIELD_ID_NONE) { mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, "not a valid sort field: '%s'", sortfield); return MU_G_ERROR_CODE(err); } } else *sortfield = MU_MSG_FIELD_ID_DATE; return MU_OK; }
/* returns MU_MSG_FIELD_ID_NONE if there is an error */ static MuMsgFieldId sort_field_from_string (const char* fieldstr, GError **err) { MuMsgFieldId mfid; mfid = mu_msg_field_id_from_name (fieldstr, FALSE); /* not found? try a shortcut */ if (mfid == MU_MSG_FIELD_ID_NONE && strlen(fieldstr) == 1) mfid = mu_msg_field_id_from_shortcut(fieldstr[0], FALSE); if (mfid == MU_MSG_FIELD_ID_NONE) g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, "not a valid sort field: '%s'\n", fieldstr); return mfid; }
/* parse the find parameters, and return the values as out params */ static MuError get_find_params (GSList *args, MuMsgFieldId *sortfield, int *maxnum, MuQueryFlags *qflags, GError **err) { const char *maxnumstr, *sortfieldstr; /* defaults */ *maxnum = 500; *qflags = MU_QUERY_FLAG_NONE; *sortfield = MU_MSG_FIELD_ID_NONE; /* field to sort by */ sortfieldstr = get_string_from_args (args, "sortfield", TRUE, NULL); if (sortfieldstr) { *sortfield = mu_msg_field_id_from_name (sortfieldstr, FALSE); /* note: shortcuts are not allowed here */ if (*sortfield == MU_MSG_FIELD_ID_NONE) { mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS, "not a valid sort field: '%s'", sortfield); return MU_G_ERROR_CODE(err); } } else *sortfield = MU_MSG_FIELD_ID_DATE; /* maximum number of results */ maxnumstr = get_string_from_args (args, "maxnum", TRUE, NULL); *maxnum = maxnumstr ? atoi (maxnumstr) : 0; if (get_bool_from_args (args, "reverse", TRUE, NULL)) *qflags |= MU_QUERY_FLAG_DESCENDING; if (get_bool_from_args (args, "skip-dups", TRUE, NULL)) *qflags |= MU_QUERY_FLAG_SKIP_DUPS; if (get_bool_from_args (args, "include-related", TRUE, NULL)) *qflags |= MU_QUERY_FLAG_INCLUDE_RELATED; if (get_bool_from_args (args, "include-related", TRUE, NULL)) *qflags |= MU_QUERY_FLAG_INCLUDE_RELATED; if (get_bool_from_args (args, "threads", TRUE, NULL)) *qflags |= MU_QUERY_FLAG_THREADS; return MU_OK; }