]> diplodocus.org Git - nmh/blobdiff - sbr/utils.c
mhn.defaults: make fetch less agressive on FreeBSD.
[nmh] / sbr / utils.c
index 99207e3258092c70d1d953362b067faeca140f40..9dece994980ae44cea38f51e188d4af4713913a6 100644 (file)
@@ -79,7 +79,9 @@ pwd(void)
         if (!mypath || !*mypath
                 || (strcpy (curwd, mypath), chdir (curwd)) == -1) {
             strcpy (curwd, "/");
         if (!mypath || !*mypath
                 || (strcpy (curwd, mypath), chdir (curwd)) == -1) {
             strcpy (curwd, "/");
-            chdir (curwd);
+            if (chdir (curwd) < 0) {
+                advise (curwd, "chdir");
+            }
         }
         return curwd;
     }
         }
         return curwd;
     }
@@ -328,7 +330,10 @@ nmh_strcasestr (const char *s1, const char *s2) {
 
 int
 nmh_init(const char *argv0, int read_context) {
 
 int
 nmh_init(const char *argv0, int read_context) {
-    setlocale(LC_ALL, "");
+    if (! setlocale(LC_ALL, "")) {
+        admonish(NULL, "setlocale failed, check your LC_ALL, LC_CTYPE, and "
+                 "LANG environment variables");
+    }
 
     invo_name = r1bindex ((char *) argv0, '/');
 
 
     invo_name = r1bindex ((char *) argv0, '/');
 
@@ -353,6 +358,20 @@ nmh_init(const char *argv0, int read_context) {
     }
 }
 
     }
 }
 
+
+/* Returns copy of argument str with all characters converted to upper
+   case, and trimmed whitespace (see cpytrim()) . */
+char *
+upcase (const char *str) {
+    char *up = cpytrim (str);
+    char *cp;
+
+    for (cp = up; *cp; ++cp) { *cp = toupper ((unsigned char) *cp); }
+
+    return up;
+}
+
+
 /*
  * Scan for any 8-bit characters.  Return 1 if they exist.
  *
 /*
  * Scan for any 8-bit characters.  Return 1 if they exist.
  *
@@ -363,6 +382,9 @@ nmh_init(const char *argv0, int read_context) {
 int
 contains8bit(const char *start, const char *end)
 {
 int
 contains8bit(const char *start, const char *end)
 {
+    if (! start)
+       return 0;
+
     while (*start != '\0' && (!end || (start < end)))
        if (! isascii((unsigned char) *start++))
            return 1;
     while (*start != '\0' && (!end || (start < end)))
        if (! isascii((unsigned char) *start++))
            return 1;