X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0509728c8a506f287fa3483d8e8ffaf8fb66d41d..94187a80bd60baab4b9c4b949ad820d730578123:/sbr/oauth_prof.c diff --git a/sbr/oauth_prof.c b/sbr/oauth_prof.c index 7dbd4fdb..51a5f7ac 100644 --- a/sbr/oauth_prof.c +++ b/sbr/oauth_prof.c @@ -76,7 +76,7 @@ update_svc_field(char **field, const char *base_name, const char *svc) } /* 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) { @@ -85,7 +85,7 @@ update_svc(mh_oauth_service_info *svc, const char *svc_name, char *errbuf, if (svc->name == NULL) { \ snprintf(errbuf, errbuflen, "%s", #name " is missing"); \ errbuf[errbuflen - 1] = '\0'; \ - return FALSE; \ + return false; \ } update(scope); update(client_id); @@ -103,10 +103,10 @@ update_svc(mh_oauth_service_info *svc, const char *svc_name, char *errbuf, 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) { @@ -117,42 +117,35 @@ mh_oauth_get_service_info(const char *svc_name, mh_oauth_service_info *svcinfo, svcinfo->client_secret = svcinfo->auth_endpoint = NULL; svcinfo->token_endpoint = svcinfo->redirect_uri = NULL; - for (i = 0; i < (int) (sizeof SERVICES / sizeof SERVICES[0]); i++) { + for (i = 0; i < (int)DIM(SERVICES); i++) { if (strcmp(SERVICES[i].name, svc_name) == 0) { copy_svc(svcinfo, &SERVICES[i]); break; } } - 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