use m_strdup and m_strlen that are inlined for efficiency
[apps/madmutt.git] / init.c
diff --git a/init.c b/init.c
index 550fcfd..f00ec21 100644 (file)
--- a/init.c
+++ b/init.c
@@ -15,6 +15,7 @@
 #endif
 
 #include <lib-lib/mem.h>
+#include <lib-lib/str.h>
 #include <lib-lib/macros.h>
 
 #include "mutt.h"
@@ -41,7 +42,6 @@
 #include "mx.h"
 #include "init.h"
 
-#include "lib/str.h"
 #include "lib/rx.h"
 #include "lib/list.h"
 #include "lib/debug.h"
@@ -272,7 +272,7 @@ static void sys_to_string (char* dst, size_t dstlen,
   } else if (ascii_strcmp ("muttng_folder_name", option->option) == 0 &&
              CurrentFolder && *CurrentFolder) {
 
-    size_t Maildirlength = str_len (Maildir);
+    size_t Maildirlength = m_strlen(Maildir);
 
     /*
      * if name starts with $folder, just strip it to keep hierarchy
@@ -280,7 +280,7 @@ static void sys_to_string (char* dst, size_t dstlen,
      */
     if (Maildirlength > 0 && str_ncmp (CurrentFolder, Maildir,
                                       Maildirlength) == 0 &&
-       str_len (CurrentFolder) > Maildirlength) {
+       m_strlen(CurrentFolder) > Maildirlength) {
      val = CurrentFolder + Maildirlength;
      if (Maildir[strlen(Maildir)-1]!='/')
        val += 1;
@@ -337,14 +337,14 @@ static int user_from_string (struct option_t* dst, const char* val,
    * just silently ignore it */
   if (!dst)
     return (1);
-  if (str_len ((char*) dst->data) == 0)
-    dst->data = (unsigned long) str_dup (val);
+  if (m_strlen((char*) dst->data) == 0)
+    dst->data = (unsigned long) m_strdup(val);
   else {
     char* s = (char*) dst->data;
     str_replace (&s, val);
   }
-  if (str_len (dst->init) == 0)
-    dst->init = str_dup ((char*) dst->data);
+  if (m_strlen(dst->init) == 0)
+    dst->init = m_strdup((char*) dst->data);
   return (1);
 }
 
@@ -548,7 +548,7 @@ int mutt_option_value (const char* val, char* dst, size_t dstlen) {
   debug_print (1, ("orig == '%s'\n", tmp));
   t = strchr (tmp, '=');
   t++;
-  l = str_len (t);
+  l = m_strlen(t);
   if (l >= 2) {
     if (t[l-1] == '"' && *t == '"') {
       t[l-1] = '\0';
@@ -565,7 +565,7 @@ int mutt_option_value (const char* val, char* dst, size_t dstlen) {
 /* for synonym warning reports: adds synonym to end of list */
 static void syn_add (struct option_t* n, struct option_t* o) {
   syn_t* tmp = p_new(syn_t, 1);
-  tmp->f = str_dup (CurRCFile);
+  tmp->f = m_strdup(CurRCFile);
   tmp->l = CurRCLine;
   tmp->n = n;
   tmp->o = o;
@@ -642,7 +642,7 @@ static void add_to_list (LIST ** list, const char *str)
 
   if (!*list || last) {
     t = p_new(LIST, 1);
-    t->data = str_dup (str);
+    t->data = m_strdup(str);
     if (last) {
       last->next = t;
       last = last->next;
@@ -720,7 +720,7 @@ static int add_to_spam_list (SPAM_LIST ** list, const char *pat,
   }
 
   /* Now t is the SPAM_LIST* that we want to modify. It is prepared. */
-  t->template = str_dup (templ);
+  t->template = m_strdup(templ);
 
   /* Find highest match number in template string */
   t->nmatch = 0;
@@ -841,8 +841,8 @@ static int parse_ifdef (BUFFER * tmp, BUFFER * s, unsigned long data,
         continue;
 
       for (j = 0; b[j].name; j++)
-        if (!ascii_strncasecmp (tmp->data, b[j].name, str_len (tmp->data))
-            && (str_len (b[j].name) == str_len (tmp->data))) {
+        if (!ascii_strncasecmp (tmp->data, b[j].name, m_strlen(tmp->data))
+            && (m_strlen(b[j].name) == m_strlen(tmp->data))) {
           res = 1;
           break;
         }
@@ -850,10 +850,10 @@ static int parse_ifdef (BUFFER * tmp, BUFFER * s, unsigned long data,
   }
   /* check for feature_* */
   if (!res && ascii_strncasecmp (tmp->data, "feature_", 8) == 0 &&
-      (j = str_len (tmp->data)) > 8) {
+      (j = m_strlen(tmp->data)) > 8) {
     i = 0;
     while (Features[i]) {
-      if (str_len (Features[i]) == j-8 &&
+      if (m_strlen(Features[i]) == j-8 &&
           ascii_strncasecmp (Features[i], tmp->data+8, j-8) == 0) {
         res = 1;
         break;
@@ -1108,11 +1108,11 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata,
 
     /* some cheap hacks that I expect to remove */
     if (!str_casecmp(buf->data, "any"))
-      a->major = str_dup("*/.*");
+      a->major = m_strdup("*/.*");
     else if (!str_casecmp(buf->data, "none"))
-      a->major = str_dup("cheap_hack/this_should_never_match");
+      a->major = m_strdup("cheap_hack/this_should_never_match");
     else
-      a->major = str_dup(buf->data);
+      a->major = m_strdup(buf->data);
 
     if ((p = strchr(a->major, '/'))) {
       *p = '\0';
@@ -1122,7 +1122,7 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata,
       a->minor = "unknown";
     }
 
-    len = str_len (a->minor);
+    len = m_strlen(a->minor);
     tmpminor = p_new(char, len + 3);
     strcpy(&tmpminor[1], a->minor); /* __STRCPY_CHECKED__ */
     tmpminor[0] = '^';
@@ -1164,11 +1164,11 @@ static int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *er
     mutt_extract_token (buf, s, 0);
 
     if (!str_casecmp(buf->data, "any"))
-      tmp = str_dup("*/.*");
+      tmp = m_strdup("*/.*");
     else if (!str_casecmp(buf->data, "none"))
-      tmp = str_dup("cheap_hack/this_should_never_match");
+      tmp = m_strdup("cheap_hack/this_should_never_match");
     else
-      tmp = str_dup(buf->data);
+      tmp = m_strdup(buf->data);
 
     if ((minor = strchr(tmp, '/'))) {
       *minor = '\0';
@@ -1432,7 +1432,7 @@ static int parse_alias (BUFFER * buf, BUFFER * s, unsigned long data,
     /* create a new alias */
     tmp = p_new(ALIAS, 1);
     tmp->self = tmp;
-    tmp->name = str_dup (buf->data);
+    tmp->name = m_strdup(buf->data);
     /* give the main addressbook code a chance */
     if (CurrentMenu == MENU_ALIAS)
       set_option (OPTMENUCALLER);
@@ -1489,7 +1489,7 @@ parse_unmy_hdr (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err)
       tmp = UserHeader;
       last = NULL;
 
-      l = str_len (buf->data);
+      l = m_strlen(buf->data);
       if (buf->data[l - 1] == ':')
         l--;
 
@@ -1595,8 +1595,8 @@ static void mutt_set_default(const char *name, void* p, unsigned long more)
         return;
 
     mutt_option_value(ptr->option, buf, sizeof(buf));
-    if (str_len(ptr->init) == 0 && buf && *buf)
-        ptr->init = str_dup(buf);
+    if (m_strlen(ptr->init) == 0 && buf && *buf)
+        ptr->init = m_strdup(buf);
 }
 
 static struct option_t* add_option (const char* name, const char* init,
@@ -1605,10 +1605,10 @@ static struct option_t* add_option (const char* name, const char* init,
 
   debug_print (1, ("adding $%s\n", name));
 
-  option->option = str_dup (name);
+  option->option = m_strdup(name);
   option->type = type;
   if (init)
-    option->init = dodup ? str_dup (init) : (char*) init;
+    option->init = dodup ? m_strdup(init) : (char*) init;
   return (option);
 }
 
@@ -1641,23 +1641,23 @@ static int init_expand (char** dst, struct option_t* src) {
     if (src->init && *src->init) {
       memset (&token, 0, sizeof(BUFFER));
       memset (&in, 0, sizeof(BUFFER));
-      len = str_len (src->init) + 2;
+      len = m_strlen(src->init) + 2;
       in.data = p_new(char, len + 1);
       snprintf (in.data, len, "\"%s\"", src->init);
       in.dptr = in.data;
       in.dsize = len;
       mutt_extract_token (&token, &in, 0);
       if (token.data && *token.data)
-        *dst = str_dup (token.data);
+        *dst = m_strdup(token.data);
       else
-        *dst = str_dup ("");
+        *dst = m_strdup("");
       p_delete(&in.data);
       p_delete(&token.data);
     } else
-      *dst = str_dup ("");
+      *dst = m_strdup("");
   } else
     /* for non-string: take value as is */
-    *dst = str_dup (src->init);
+    *dst = m_strdup(src->init);
   return (1);
 }
 
@@ -2086,7 +2086,7 @@ static int source_rc (const char *rcfile, BUFFER * err)
   while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line)) != NULL) {
     conv = ConfigCharset && (*ConfigCharset) && Charset;
     if (conv) {
-      currentline = str_dup (linebuf);
+      currentline = m_strdup(linebuf);
       if (!currentline)
         continue;
       mutt_convert_string (&currentline, ConfigCharset, Charset, 0);
@@ -2169,7 +2169,7 @@ int mutt_parse_rc_line ( /* const */ char *line, BUFFER * token, BUFFER * err)
 
   memset (&expn, 0, sizeof(expn));
   expn.data = expn.dptr = line;
-  expn.dsize = str_len (line);
+  expn.dsize = m_strlen(line);
 
   *err->data = 0;
 
@@ -2293,8 +2293,8 @@ int mutt_command_complete (char *buffer, size_t len, int pos, int numtabs)
     /* loop through all the possible prefixes (no, inv, ...) */
     if (!str_ncmp (buffer, "set", 3)) {
       for (num = 0; prefixes[num]; num++) {
-        if (!str_ncmp (pt, prefixes[num], str_len (prefixes[num]))) {
-          pt += str_len (prefixes[num]);
+        if (!str_ncmp (pt, prefixes[num], m_strlen(prefixes[num]))) {
+          pt += m_strlen(prefixes[num]);
           break;
         }
       }
@@ -2403,7 +2403,7 @@ int mutt_var_value_complete (char *buffer, size_t len, int pos)
   if (str_ncmp (buffer, "set", 3) == 0) {
     strfcpy (var, pt, sizeof(var));
     /* ignore the trailing '=' when comparing */
-    var[str_len (var) - 1] = 0;
+    var[m_strlen(var) - 1] = 0;
     if (!(option = hash_find (ConfigOptions, var)))
       return 0;                 /* no such variable. */
     else {
@@ -2601,18 +2601,18 @@ void mutt_init (int skip_sys_rc, LIST * commands)
   /* on one of the systems I use, getcwd() does not return the same prefix
      as is listed in the passwd file */
   if ((p = getenv ("HOME")))
-    Homedir = str_dup (p);
+    Homedir = m_strdup(p);
 
   /* Get some information about the user */
   if ((pw = getpwuid (getuid ()))) {
     char rnbuf[STRING];
 
-    Username = str_dup (pw->pw_name);
+    Username = m_strdup(pw->pw_name);
     if (!Homedir)
-      Homedir = str_dup (pw->pw_dir);
+      Homedir = m_strdup(pw->pw_dir);
 
-    Realname = str_dup (mutt_gecos_name (rnbuf, sizeof(rnbuf), pw));
-    Shell = str_dup (pw->pw_shell);
+    Realname = m_strdup(mutt_gecos_name (rnbuf, sizeof(rnbuf), pw));
+    Shell = m_strdup(pw->pw_shell);
     endpwent ();
   }
   else {
@@ -2622,13 +2622,13 @@ void mutt_init (int skip_sys_rc, LIST * commands)
       exit (1);
     }
     if ((p = getenv ("USER")))
-      Username = str_dup (p);
+      Username = m_strdup(p);
     else {
       mutt_endwin (NULL);
       fputs (_("unable to determine username"), stderr);
       exit (1);
     }
-    Shell = str_dup ((p = getenv ("SHELL")) ? p : "/bin/sh");
+    Shell = m_strdup((p = getenv ("SHELL")) ? p : "/bin/sh");
   }
 
   debug_start(Homedir);
@@ -2642,20 +2642,20 @@ void mutt_init (int skip_sys_rc, LIST * commands)
     strfcpy (buffer, p, sizeof(buffer));       /* save the domain for below */
   }
   else
-    Hostname = str_dup (utsname.nodename);
+    Hostname = m_strdup(utsname.nodename);
 
 #ifndef DOMAIN
 #define DOMAIN buffer
   if (!p && getdnsdomainname (buffer, sizeof(buffer)) == -1)
-    Fqdn = str_dup ("@");
+    Fqdn = m_strdup("@");
   else
 #endif /* DOMAIN */
   if (*DOMAIN != '@') {
-    Fqdn = p_new(char, str_len(DOMAIN) + str_len(Hostname) + 2);
+    Fqdn = p_new(char, m_strlen(DOMAIN) + m_strlen(Hostname) + 2);
     sprintf (Fqdn, "%s.%s", NONULL (Hostname), DOMAIN); /* __SPRINTF_CHECKED__ */
   }
   else
-    Fqdn = str_dup (NONULL (Hostname));
+    Fqdn = m_strdup(NONULL (Hostname));
 
 #ifdef USE_NNTP
   {
@@ -2671,37 +2671,37 @@ void mutt_init (int skip_sys_rc, LIST * commands)
       while (*q && !isspace(*q))
         q++;
       *q = '\0';
-      NewsServer = str_dup (p);
+      NewsServer = m_strdup(p);
       fclose (f);
     }
   }
   if ((p = getenv ("NNTPSERVER")))
-    NewsServer = str_dup (p);
+    NewsServer = m_strdup(p);
 #endif
 
   if ((p = getenv ("MAIL")))
-    Spoolfile = str_dup (p);
+    Spoolfile = m_strdup(p);
   else if ((p = getenv ("MAILDIR")))
-    Spoolfile = str_dup (p);
+    Spoolfile = m_strdup(p);
   else {
 #ifdef HOMESPOOL
     mutt_concat_path (buffer, NONULL (Homedir), MAILPATH, sizeof(buffer));
 #else
     mutt_concat_path (buffer, MAILPATH, NONULL (Username), sizeof(buffer));
 #endif
-    Spoolfile = str_dup (buffer);
+    Spoolfile = m_strdup(buffer);
   }
 
   if ((p = getenv ("MAILCAPS")))
-    MailcapPath = str_dup (p);
+    MailcapPath = m_strdup(p);
   else {
     /* Default search path from RFC1524 */
     MailcapPath =
-      str_dup ("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR
+      m_strdup("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR
                    "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap");
   }
 
-  Tempdir = str_dup ((p = getenv ("TMPDIR")) ? p : "/tmp");
+  Tempdir = m_strdup((p = getenv ("TMPDIR")) ? p : "/tmp");
 
   p = getenv ("VISUAL");
   if (!p) {
@@ -2709,8 +2709,8 @@ void mutt_init (int skip_sys_rc, LIST * commands)
     if (!p)
       p = "vi";
   }
-  Editor = str_dup (p);
-  Visual = str_dup (p);
+  Editor = m_strdup(p);
+  Visual = m_strdup(p);
 
   if ((p = getenv ("REPLYTO")) != NULL) {
     BUFFER buf, token;
@@ -2719,7 +2719,7 @@ void mutt_init (int skip_sys_rc, LIST * commands)
 
     memset (&buf, 0, sizeof(buf));
     buf.data = buf.dptr = buffer;
-    buf.dsize = str_len (buffer);
+    buf.dsize = m_strlen(buffer);
 
     memset (&token, 0, sizeof(token));
     parse_my_hdr (&token, &buf, 0, &err);
@@ -2789,16 +2789,16 @@ void mutt_init (int skip_sys_rc, LIST * commands)
                 NONULL (Homedir));
 
     default_rc = 1;
-    Muttrc = str_dup (buffer);
+    Muttrc = m_strdup(buffer);
   }
   else {
     strfcpy (buffer, Muttrc, sizeof(buffer));
     p_delete(&Muttrc);
     mutt_expand_path (buffer, sizeof(buffer));
-    Muttrc = str_dup (buffer);
+    Muttrc = m_strdup(buffer);
   }
   p_delete(&AliasFile);
-  AliasFile = str_dup (NONULL (Muttrc));
+  AliasFile = m_strdup(NONULL (Muttrc));
 
   /* Process the global rc file if it exists and the user hasn't explicity
      requested not to via "-n".  */