}
/* Update all service_info fields that are overridden in profile. */
-static boolean
+static bool
update_svc(mh_oauth_service_info *svc, const char *svc_name, char *errbuf,
size_t errbuflen)
{
if (svc->name == NULL) { \
snprintf(errbuf, errbuflen, "%s", #name " is missing"); \
errbuf[errbuflen - 1] = '\0'; \
- return FALSE; \
+ return false; \
}
update(scope);
update(client_id);
svc->display_name = svc->name;
}
- return TRUE;
+ return true;
}
-boolean
+bool
mh_oauth_get_service_info(const char *svc_name, mh_oauth_service_info *svcinfo,
char *errbuf, size_t errbuflen)
{
}
}
- if (!update_svc(svcinfo, svc_name, errbuf, errbuflen)) {
- return FALSE;
- }
-
- return TRUE;
+ return update_svc(svcinfo, svc_name, errbuf, errbuflen);
}
-const char *
+/* Return value must be free(3)'d. */
+char *
mh_oauth_cred_fn(const char *svc)
{
- char *result, *result_if_allocated;
-
- char *component = mh_oauth_node_name_for_svc("credential-file", svc);
- result = context_find(component);
- free(component);
-
- if (result == NULL) {
- result = concat("oauth-", svc, NULL);
- result_if_allocated = result;
- } else {
- result_if_allocated = NULL;
- }
-
- if (result[0] != '/') {
- const char *tmp = m_maildir(result);
- free(result_if_allocated);
- result = getcpy(tmp);
- }
-
- return result;
+ char *key = mh_oauth_node_name_for_svc("credential-file", svc);
+ char *value = context_find(key);
+ free(key);
+
+ bool found = value;
+ if (found) {
+ if (*value == '/')
+ return mh_xstrdup(value);
+ } else
+ value = concat("oauth-", svc, NULL);
+
+ const char *md = m_maildir(value);
+ if (!found)
+ free(value);
+
+ return mh_xstrdup(md);
}
#endif