]> diplodocus.org Git - nmh/blobdiff - sbr/credentials.c
Rename local enum to avoid clashing with NEW() macro.
[nmh] / sbr / credentials.c
index 9f3faa95eec3ee6c2efc872006167275436ab4cc..9b5dd537791be7ce8406b93a11342796c6e8f842 100644 (file)
@@ -17,9 +17,10 @@ init_credentials_file () {
             char *hdir = getenv ("HOME");
 
             credentials_file = concat (hdir ? hdir : ".", "/.netrc", NULL);
-        } else if (! strncasecmp (cred_style, "file:", 5)) {
+        } else if (! strncasecmp (cred_style, "file:", 5) ||
+                  ! strncasecmp (cred_style, "file-nopermcheck:", 17)) {
             struct stat st;
-            char *filename = cred_style + 5;
+            char *filename = strchr(cred_style, ':') + 1;
 
             while (*filename && isspace ((unsigned char) *filename)) ++filename;
 
@@ -36,6 +37,9 @@ init_credentials_file () {
                     }
                 }
             }
+
+           if (! strncasecmp (cred_style, "file-nopermcheck:", 17))
+               credentials_no_perm_check = 1;
         }
     }
 }
@@ -48,13 +52,15 @@ nmh_get_credentials (char *host, char *user, int sasl, nmh_creds_t creds) {
     creds->host = host;
 
     if (cred_style == NULL  ||  ! strcmp (cred_style, "legacy")) {
+       creds->user = user == NULL  ?  getusername ()  :  user;
         if (sasl) {
+
             /* This is what inc.c and msgchk.c used to contain. */
             /* Only inc.c and msgchk.c do this.  smtp.c doesn't. */
-            creds->user = user == NULL  ?  getusername ()  :  user;
             creds->password = getusername ();
         }
-    } else if (! strncasecmp (cred_style, "file:", 5)) {
+    } else if (! strncasecmp (cred_style, "file:", 5) ||
+              ! strncasecmp (cred_style, "file-nopermcheck:", 17)) {
         /*
          * Determine user using the first of:
          * 1) -user switch