]> diplodocus.org Git - nmh/blobdiff - sbr/oauth_prof.c
Escape literal leading full stop in man/new.man.
[nmh] / sbr / oauth_prof.c
index 4f9e2a2ffa33b9b03aa5251a911fcc140c1892aa..ab8bc5aafc299724e9063b40040f469a49828766 100644 (file)
@@ -56,14 +56,8 @@ copy_svc(mh_oauth_service_info *to, const mh_oauth_service_info *from)
 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. */
@@ -74,7 +68,7 @@ update_svc_field(char **field, const char *base_name, const char *svc)
     const char *value = context_find(name);
     if (value != NULL) {
         free(*field);
-        *field = getcpy(value);
+        *field = mh_xstrdup(value);
     }
     free(name);
 }
@@ -134,4 +128,29 @@ mh_oauth_get_service_info(const char *svc_name, mh_oauth_service_info *svcinfo,
 
     return TRUE;
 }
+
+const 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;
+}
 #endif