-/*
+/* oauth_prof.c -- OAuth 2.0 implementation for XOAUTH2 in SMTP and POP3.
+ *
* This code is Copyright (c) 2014, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
#include <h/oauth.h>
#include <h/utils.h>
+#include "m_maildir.h"
static const struct mh_oauth_service_info SERVICES[] = {
/* https://developers.google.com/accounts/docs/OAuth2InstalledApp */
char *
mh_oauth_node_name_for_svc(const char *base_name, const char *svc)
{
- char *result = mh_xmalloc(sizeof "oauth-" - 1
- + strlen(svc)
- + 1 /* '-' */
- + strlen(base_name)
- + 1 /* '\0' */);
- sprintf(result, "oauth-%s-%s", svc, base_name);
/* TODO: s/_/-/g ? */
- return result;
+ return concat("oauth-", svc, "-", base_name, NULL);
}
/* Update one service_info field if overridden in profile. */
const char *value = context_find(name);
if (value != NULL) {
free(*field);
- *field = getcpy(value);
+ *field = mh_xstrdup(value);
}
free(name);
}
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;
free(component);
if (result == NULL) {
- result = mh_xmalloc(sizeof "oauth-" - 1
- + strlen(svc)
- + 1 /* '\0' */);
- sprintf(result, "oauth-%s", svc);
+ result = concat("oauth-", svc, NULL);
result_if_allocated = result;
} else {
result_if_allocated = NULL;