tidying
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 26 Mar 2024 17:36:59 +0000 (17:36 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 26 Mar 2024 20:01:01 +0000 (20:01 +0000)
30 files changed:
src/src/acl.c
src/src/dbfn.c
src/src/exim.c
src/src/expand.c
src/src/filter.c
src/src/lookups/dnsdb.c
src/src/lookups/ldap.c
src/src/lookups/lsearch.c
src/src/lookups/oracle.c
src/src/lookups/redis.c
src/src/match.c
src/src/moan.c
src/src/parse.c
src/src/pdkim/pdkim.c
src/src/proxy.c
src/src/readconf.c
src/src/receive.c
src/src/rewrite.c
src/src/rfc2047.c
src/src/route.c
src/src/routers/manualroute.c
src/src/routers/queryprogram.c
src/src/smtp_in.c
src/src/smtp_out.c
src/src/tls-openssl.c
src/src/transports/autoreply.c
src/src/transports/pipe.c
src/src/transports/smtp.c
src/src/verify.c
src/src/xclient.c

index 29441dfc10224788569c5da09d05733d2cd5a61c..d719a937b4187d2f8c63c908fa3ca12dc8bf9fd7 100644 (file)
@@ -1366,7 +1366,7 @@ uschar * target = store_get(TARGET_SIZE, GET_TAINTED);
 client's HELO domain. If the client has not said HELO, use its IP address
 instead. If it's a local client (exim -bs), CSA isn't applicable. */
 
-while (isspace(*domain) && *domain != '\0') ++domain;
+while (isspace(*domain) && *domain) ++domain;
 if (*domain == '\0') domain = sender_helo_name;
 if (!domain) domain = sender_host_address;
 if (!sender_host_address) return CSA_UNKNOWN;
@@ -1867,9 +1867,10 @@ switch(vp->value)
       verify_sender_address = sender_address;
     else
       {
-      while (isspace(*s)) s++;
-      if (*s++ != '=') goto BAD_VERIFY;
-      while (isspace(*s)) s++;
+      if (Uskip_whitespace(&s) != '=')
+       goto BAD_VERIFY;
+      s++;
+      Uskip_whitespace(&s);
       verify_sender_address = string_copy(s);
       }
     }
@@ -1911,13 +1912,13 @@ while ((ss = string_nextinlist(&list, &sep, NULL, 0)))
     callout = CALLOUT_TIMEOUT_DEFAULT;
     if (*(ss += 7))
       {
-      while (isspace(*ss)) ss++;
+      Uskip_whitespace(&ss);
       if (*ss++ == '=')
         {
        const uschar * sublist = ss;
         int optsep = ',';
 
-        while (isspace(*sublist)) sublist++;
+       Uskip_whitespace(&sublist);
         for (uschar * opt; opt = string_nextinlist(&sublist, &optsep, NULL, 0); )
           {
          callout_opt_t * op;
@@ -1931,14 +1932,14 @@ while ((ss = string_nextinlist(&list, &sep, NULL, 0)))
          if (op->has_option)
            {
            opt += Ustrlen(op->name);
-            while (isspace(*opt)) opt++;
+            Uskip_whitespace(&opt);
             if (*opt++ != '=')
               {
               *log_msgptr = string_sprintf("'=' expected after "
                 "\"%s\" in ACL verify condition \"%s\"", op->name, arg);
               return ERROR;
               }
-            while (isspace(*opt)) opt++;
+            Uskip_whitespace(&opt);
            }
          if (op->timeval && (period = v_period(opt, arg, log_msgptr)) < 0)
            return ERROR;
@@ -1981,14 +1982,14 @@ while ((ss = string_nextinlist(&list, &sep, NULL, 0)))
     quota = TRUE;
     if (*(ss += 5))
       {
-      while (isspace(*ss)) ss++;
+      Uskip_whitespace(&ss);
       if (*ss++ == '=')
         {
        const uschar * sublist = ss;
         int optsep = ',';
        int period;
 
-        while (isspace(*sublist)) sublist++;
+        Uskip_whitespace(&sublist);
         for (uschar * opt; opt = string_nextinlist(&sublist, &optsep, NULL, 0); )
          if (Ustrncmp(opt, "cachepos=", 9) == 0)
            if ((period = v_period(opt += 9, arg, log_msgptr)) < 0)
@@ -3892,7 +3893,7 @@ for (; cb; cb = cb->next)
           }
         s++;
         }
-      while (isspace(*s)) s++;
+      Uskip_whitespace(&s);
 
       if (logbits == 0) logbits = LOG_MAIN;
       log_write(0, logbits, "%s", string_printing(s));
@@ -4316,19 +4317,17 @@ if (!s)
 /* At top level, we expand the incoming string. At lower levels, it has already
 been expanded as part of condition processing. */
 
-if (acl_level == 0)
+if (acl_level != 0)
+  ss = s;
+else if (!(ss = expand_string(s)))
   {
-  if (!(ss = expand_string(s)))
-    {
-    if (f.expand_string_forcedfail) return OK;
-    *log_msgptr = string_sprintf("failed to expand ACL string \"%s\": %s", s,
-      expand_string_message);
-    return ERROR;
-    }
+  if (f.expand_string_forcedfail) return OK;
+  *log_msgptr = string_sprintf("failed to expand ACL string \"%s\": %s", s,
+    expand_string_message);
+  return ERROR;
   }
-else ss = s;
 
-while (isspace(*ss)) ss++;
+Uskip_whitespace(&ss);
 
 /* If we can't find a named ACL, the default is to parse it as an inline one.
 (Unless it begins with a slash; non-existent files give rise to an error.) */
@@ -4617,8 +4616,8 @@ if (!(tmp = string_dequote(&s)) || !(name = expand_string(tmp)))
 
 for (i = 0; i < 9; i++)
   {
-  while (*s && isspace(*s)) s++;
-  if (!*s) break;
+  if (!Uskip_whitespace(&s))
+    break;
   if (!(tmp = string_dequote(&s)) || !(tmp_arg[i] = expand_string(tmp)))
     {
     tmp = name;
index 460fd8bb763f2d8f6587bfaa5db59d6a9db96e3d..13a3c2d66778b1daeb3b4bfe63716e43d38eb9c7 100644 (file)
@@ -490,7 +490,7 @@ while (Ufgets(buffer, 256, stdin) != NULL)
     {
     count = Uatoi(cmd);
     while (isdigit((uschar)*cmd)) cmd++;
-    while (isspace((uschar)*cmd)) cmd++;
+    Uskip_whitespace(&cmd);
     }
 
   if (Ustrncmp(cmd, "open", 4) == 0)
@@ -498,7 +498,7 @@ while (Ufgets(buffer, 256, stdin) != NULL)
     int i;
     open_db *odb;
     uschar *s = cmd + 4;
-    while (isspace((uschar)*s)) s++;
+    Uskip_whitespace(&s);
 
     for (i = 0; i < max_db; i++)
       if (dbblock[i].dbptr == NULL) break;
@@ -534,8 +534,7 @@ while (Ufgets(buffer, 256, stdin) != NULL)
   else if (Ustrncmp(cmd, "write", 5) == 0)
     {
     int rc = 0;
-    uschar *key = cmd + 5;
-    uschar *data;
+    uschar * key = cmd + 5, * data;
 
     if (current < 0)
       {
@@ -543,11 +542,11 @@ while (Ufgets(buffer, 256, stdin) != NULL)
       continue;
       }
 
-    while (isspace((uschar)*key)) key++;
+    Uskip_whitespace(&key);
     data = key;
-    while (*data != 0 && !isspace((uschar)*data)) data++;
+    while (*data && !isspace((uschar)*data)) data++;
     *data++ = 0;
-    while (isspace((uschar)*data)) data++;
+    Uskip_whitespace(&data);
 
     dbwait = (dbdata_wait *)(&structbuffer);
     Ustrcpy(dbwait->text, data);
@@ -562,13 +561,13 @@ while (Ufgets(buffer, 256, stdin) != NULL)
 
   else if (Ustrncmp(cmd, "read", 4) == 0)
     {
-    uschar *key = cmd + 4;
+    uschar * key = cmd + 4;
     if (current < 0)
       {
       printf("No current database\n");
       continue;
       }
-    while (isspace((uschar)*key)) key++;
+    Uskip_whitespace(&key);
     start = clock();
     while (count-- > 0)
       dbwait = (dbdata_wait *)dbfn_read_with_length(dbblock+ current, key, NULL);
@@ -578,13 +577,13 @@ while (Ufgets(buffer, 256, stdin) != NULL)
 
   else if (Ustrncmp(cmd, "delete", 6) == 0)
     {
-    uschar *key = cmd + 6;
+    uschar * key = cmd + 6;
     if (current < 0)
       {
       printf("No current database\n");
       continue;
       }
-    while (isspace((uschar)*key)) key++;
+    Uskip_whitespace(&key);
     dbfn_delete(dbblock + current, key);
     }
 
@@ -614,8 +613,8 @@ while (Ufgets(buffer, 256, stdin) != NULL)
 
   else if (Ustrncmp(cmd, "close", 5) == 0)
     {
-    uschar *s = cmd + 5;
-    while (isspace((uschar)*s)) s++;
+    uschar * s = cmd + 5;
+    Uskip_whitespace(&s);
     i = Uatoi(s);
     if (i >= max_db || dbblock[i].dbptr == NULL) printf("Not open\n"); else
       {
@@ -629,8 +628,8 @@ while (Ufgets(buffer, 256, stdin) != NULL)
 
   else if (Ustrncmp(cmd, "file", 4) == 0)
     {
-    uschar *s = cmd + 4;
-    while (isspace((uschar)*s)) s++;
+    uschar * s = cmd + 4;
+    Uskip_whitespace(&s);
     i = Uatoi(s);
     if (i >= max_db || dbblock[i].dbptr == NULL) printf("Not open\n");
       else current = i;
@@ -682,3 +681,5 @@ return 0;
 #endif
 
 /* End of dbfn.c */
+/* vi: aw ai sw=2
+*/
index 3170bef98cbd5fbed6f6771496f4a6311eecd6e1..5c9e640218d9e25154827a973a53af2bf3d7ddd5 100644 (file)
@@ -2632,14 +2632,11 @@ on the second character (the one after '-'), to save some effort. */
               reset_point = store_mark();
               while (Ufgets(big_buffer, big_buffer_size, trust_list))
                 {
-                uschar *start = big_buffer, *nl;
-                while (*start && isspace(*start))
-                start++;
-                if (*start != '/')
+                uschar * start = big_buffer, * nl;
+                if (Uskip_whitespace(&start) != '/')
                   continue;
-                nl = Ustrchr(start, '\n');
-                if (nl)
-                  *nl = 0;
+                if ((nl = Ustrchr(start, '\n')))
+                  *nl = '\0';
                 trusted_configs[nr_configs++] = string_copy(start);
                 if (nr_configs == nelem(trusted_configs))
                   break;
@@ -2698,7 +2695,7 @@ on the second character (the one after '-'), to save some effort. */
       const uschar * s = argrest;
 
       opt_D_used = TRUE;
-      while (isspace(*s)) s++;
+      Uskip_whitespace(&s);
 
       if (*s < 'A' || *s > 'Z')
         exim_fail("exim: macro name set by -D must start with "
@@ -2711,11 +2708,10 @@ on the second character (the one after '-'), to save some effort. */
         }
       name[ptr] = 0;
       if (ptr == 0) { badarg = TRUE; break; }
-      while (isspace(*s)) s++;
-      if (*s != 0)
+      if (Uskip_whitespace(&s))
         {
         if (*s++ != '=') { badarg = TRUE; break; }
-        while (isspace(*s)) s++;
+        Uskip_whitespace(&s);
         }
 
       for (m = macros_user; m; m = m->next)
@@ -5918,7 +5914,7 @@ for (BOOL more = TRUE; more; )
         receive_add_recipient(string_copy_taint(recipient, GET_TAINTED), -1);
         s = ss;
         if (!finished)
-          while (*(++s) != 0 && (*s == ',' || isspace(*s)));
+          while (*++s && (*s == ',' || isspace(*s)));
         }
       }
 
index a916eee64175707951c8dbf66a07e3012b011165..5ea4dc6d42e7d2f4550565878d752c30c5cdd941 100644 (file)
@@ -1262,7 +1262,8 @@ while (*s)
 
   while (*s && *s != '=' && !isspace(*s)) s++;
   dkeylength = s - dkey;
-  if (Uskip_whitespace(&s) == '=') while (isspace(*++s));
+  if (Uskip_whitespace(&s) == '=')
+    while (isspace(*++s)) ;
 
   data = string_dequote(&s);
   if (length == dkeylength && strncmpic(key, dkey, length) == 0)
@@ -4114,7 +4115,7 @@ if (!*error)
     if (*s != ')')
       *error = US"expecting closing parenthesis";
     else
-      while (isspace(*++s));
+      while (isspace(*++s)) ;
   else if (*s)
     *error = US"expecting operator";
 *sptr = s;
index b56b593b85656cf8df721772a961198f71bf3acd..18567f17c32d43f9fa0df4e8c0b07636881a4b22 100644 (file)
@@ -276,16 +276,11 @@ nextsigchar(const uschar *ptr, BOOL comment_allowed)
 for (;;)
   {
   while (isspace(*ptr))
-    {
-    if (*ptr == '\n') line_number++;
-    ptr++;
-    }
+    if (*ptr++ == '\n') line_number++;
   if (comment_allowed && *ptr == '#')
-    {
-    while (*(++ptr) != '\n' && *ptr != 0);
-    continue;
-    }
-  else break;
+    while (*++ptr != '\n' && *ptr) ;
+  else
+    break;
   }
 return ptr;
 }
@@ -311,18 +306,19 @@ Returns:    pointer to the next significant character after the word
 static const uschar *
 nextword(const uschar *ptr, uschar *buffer, int size, BOOL bracket)
 {
-uschar *bp = buffer;
-while (*ptr != 0 && !isspace(*ptr) &&
+uschar * bp = buffer;
+while (*ptr && !isspace(*ptr) &&
        (!bracket || (*ptr != '(' && *ptr != ')')))
-  {
-  if (bp - buffer < size - 1) *bp++ = *ptr++; else
+  if (bp - buffer < size - 1)
+    *bp++ = *ptr++;
+  else
     {
     *error_pointer = string_sprintf("word is too long in line %d of "
       "filter file (max = %d chars)", line_number, size);
     break;
     }
-  }
-*bp = 0;
+
+*bp = '\0';
 return nextsigchar(ptr, TRUE);
 }
 
@@ -410,8 +406,8 @@ int value, count;
 if (sscanf(CS s, "%i%n", &value, &count) != 1) return 0;
 if (tolower(s[count]) == 'k') { value *= 1024; count++; }
 if (tolower(s[count]) == 'm') { value *= 1024*1024; count++; }
-while (isspace((s[count]))) count++;
-if (s[count] != 0) return 0;
+while (isspace(s[count])) count++;
+if (s[count]) return 0;
 *ok = TRUE;
 return value;
 }
@@ -2006,8 +2002,7 @@ while (commands)
 
        if (subtype == TRUE)
          {
-         while (isspace(*s)) s++;
-         if (*s)
+         if (Uskip_whitespace(&s))
            {
            header_add(htype_other, "%s%s", s,
              s[Ustrlen(s)-1] == '\n' ? "" : "\n");
@@ -2226,7 +2221,7 @@ while (commands)
          gstring * log_addr = NULL;
 
          if (!to) to = expand_string(US"$reply_address");
-         while (isspace(*to)) to++;
+         Uskip_whitespace(&to);
 
          for (tt = to; *tt; tt++)     /* Get rid of newlines */
            if (*tt == '\n')
@@ -2298,7 +2293,7 @@ while (commands)
            /* Move on past this address */
 
            tt = ss + (*ss ? 1 : 0);
-           while (isspace(*tt)) tt++;
+           Uskip_whitespace(&tt);
            }
 
          if (log_addr)
@@ -2612,3 +2607,5 @@ return yield;
 
 
 /* End of filter.c */
+/* vi: aw ai sw=2
+*/
index 050baa3b7b015118734c7a11abf69f8a8bfadaa0..af1ad9dab5ee2604a9fe756dae2f021b179fb020 100644 (file)
@@ -154,8 +154,7 @@ gstring * yield = string_get(256);
 /* If the string starts with '>' we change the output separator.
 If it's followed by ';' or ',' we set the TXT output separator. */
 
-while (isspace(*keystring)) keystring++;
-if (*keystring == '>')
+if (Uskip_whitespace(&keystring) == '>')
   {
   outsep = keystring + 1;
   keystring += 2;
@@ -169,7 +168,7 @@ if (*keystring == '>')
     outsep2 = US"";
     keystring++;
     }
-  while (isspace(*keystring)) keystring++;
+  Uskip_whitespace(&keystring);
   }
 
 /* Check for a modifier keyword. */
@@ -234,14 +233,14 @@ for (;;)
   else
     break;
 
-  while (isspace(*keystring)) keystring++;
+  Uskip_whitespace(&keystring);
   if (*keystring++ != ',')
     {
     *errmsg = US"dnsdb modifier syntax error";
     rc = DEFER;
     goto out;
     }
-  while (isspace(*keystring)) keystring++;
+  Uskip_whitespace(&keystring);
   }
 
 /* Figure out the "type" value if it is not T_TXT.
@@ -272,7 +271,7 @@ if ((equals = Ustrchr(keystring, '=')) != NULL)
     }
 
   keystring = equals + 1;
-  while (isspace(*keystring)) keystring++;
+  Uskip_whitespace(&keystring);
   }
 
 /* Initialize the resolver in case this is the first time it has been used. */
index b93782cc3c163bb4be476468a1cb65d58aababa2..90cde6c86292863be20cc363142d7b1ea64a8309 100644 (file)
@@ -1083,20 +1083,15 @@ control_ldap_search(const uschar *ldap_url, int search_type, uschar **res,
   uschar **errmsg)
 {
 BOOL defer_break = FALSE;
-int timelimit = LDAP_NO_LIMIT;
-int sizelimit = LDAP_NO_LIMIT;
+int timelimit = LDAP_NO_LIMIT, sizelimit = LDAP_NO_LIMIT;
 int tcplimit = 0;
 int sep = 0;
 int dereference = LDAP_DEREF_NEVER;
-void* referrals = LDAP_OPT_ON;
-const uschar *url = ldap_url;
-const uschar *p;
-uschar *user = NULL;
-uschar *password = NULL;
-uschar *local_servers = NULL;
-const uschar *list;
+void * referrals = LDAP_OPT_ON;
+const uschar * url = ldap_url, * p, * list;
+uschar * user = NULL, * password = NULL, * local_servers = NULL;
 
-while (isspace(*url)) url++;
+Uskip_whitespace(&url);
 
 /* Until the string begins "ldap", search for the other parameter settings that
 are recognized. They are of the form NAME=VALUE, with the value being
@@ -1175,7 +1170,7 @@ while (strncmpic(url, US"ldap", 4) != 0)
         DEBUG(D_lookup) debug_printf_indent("LDAP query error: %s\n", *errmsg);
         return DEFER;
         }
-      while (isspace(*url)) url++;
+      Uskip_whitespace(&url);
       continue;
       }
     }
index 33e8c51571ffb14983da1000e6a9e8a4c8dd4672..7b78de916971b74dd357ff9e10376e233cc113cf 100644 (file)
@@ -291,8 +291,8 @@ for (BOOL this_is_eol, last_was_eol = TRUE;
       this_is_comment = (this_is_comment || (buffer[0] == 0 || buffer[0] == '#'));
       if (this_is_comment) continue;
       if (!isspace((uschar)buffer[0])) break;
-      while (isspace((uschar)*s)) s++;
-      *(--s) = ' ';
+      Uskip_whitespace(&s);
+      *--s = ' ';
       }
     if (this_is_comment) continue;
 
index d0604c2452d9a0ddee873a4ecdccb3df68155afc..c25b7c0ee639384ff14e7ffda907285bee720f0d 100644 (file)
@@ -408,9 +408,9 @@ while (cda->rc != NO_DATA_FOUND)  /* Loop for each row */
   else for (int i = 0; i < num_fields; i++)
     {
     int slen;
-    uschar *s = US desc[i].buf;
+    uschar * s = US desc[i].buf;
 
-    while (*s != 0 && isspace(*s)) s++;
+    Uskip_whitespace(&s);
     slen = Ustrlen(s);
     while (slen > 0 && isspace(s[slen-1])) slen--;
     result = string_catn(result, s, slen);
index 7b680f086996d85ed9f4b79bd4c01f0398dcf9a5..53b479142668ebceec2497cc7726e6c4f6c275f3 100644 (file)
@@ -212,7 +212,7 @@ if(sdata[1])
   int siz, ptr, i;
   uschar c;
 
-  while (isspace(*s)) s++;
+  Uskip_whitespace(&s);
 
   for (i = 0; *s && i < nele(argv); i++)
     {
@@ -224,7 +224,7 @@ if(sdata[1])
     argv[i] = string_from_gstring(g);
 
     DEBUG(D_lookup) debug_printf_indent("REDIS: argv[%d] '%s'\n", i, argv[i]);
-    while (isspace(*s)) s++;
+    Uskip_whitespace(&s);
     }
 
   /* Run the command. We use the argv form rather than plain as that parses
index 8b1a3bef6cc88e44326818aa21b7d792993b0748..2cb4993599188aa1a5349199e2bae27218d534e4 100644 (file)
@@ -599,7 +599,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
   if (*ss == '!')
     {
     yield = FAIL;
-    while (isspace((*(++ss))));
+    while (isspace(*++ss)) ;
     }
   else
     yield = OK;
@@ -825,15 +825,14 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
 
     while (Ufgets(filebuffer, sizeof(filebuffer), f) != NULL)
       {
-      uschar *error;
-      uschar *sss = filebuffer;
+      uschar * error, * sss = filebuffer;
 
       while ((ss = Ustrchr(sss, '#')) != NULL)
         {
         if ((type != MCL_ADDRESS && type != MCL_LOCALPART) ||
               ss == filebuffer || isspace(ss[-1]))
           {
-          *ss = 0;
+          *ss = '\0';
           break;
           }
         sss = ss + 1;
@@ -841,20 +840,19 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
 
       ss = filebuffer + Ustrlen(filebuffer);           /* trailing space */
       while (ss > filebuffer && isspace(ss[-1])) ss--;
-      *ss = 0;
+      *ss = '\0';
 
       ss = filebuffer;
-      while (isspace(*ss)) ss++;                       /* leading space */
-
-      if (!*ss) continue;                              /* ignore empty */
+      if (!Uskip_whitespace(&ss))                      /* leading space */
+       continue;                                       /* ignore empty */
 
       file_yield = yield;                              /* positive yield */
       sss = ss;                                                /* for debugging */
 
       if (*ss == '!')                                  /* negation */
         {
-        file_yield = (file_yield == OK)? FAIL : OK;
-        while (isspace((*(++ss))));
+        file_yield = file_yield == OK ? FAIL : OK;
+        while (isspace(*++ss)) ;
         }
 
       switch ((func)(arg, ss, valueptr, &error))
@@ -1157,7 +1155,7 @@ if (pattern[0] == '@' && pattern[1] == '@')
       if (*ss == '!')
         {
         local_yield = FAIL;
-        while (isspace((*(++ss))));
+        while (isspace(*++ss)) ;
         }
       else local_yield = OK;
 
index 6fe82b29caf2aedce821ebad7654465f43057268..641540839d866924f49badbd4e59c3dd24c2f980 100644 (file)
@@ -762,13 +762,12 @@ llen = domain++ - recipient;
 
 while ((item = string_nextinlist(&listptr, &sep, NULL, 0)))
   {
-  const uschar *newaddress = item;
-  const uschar *pattern = string_dequote(&newaddress);
+  const uschar * newaddress = item;
+  const uschar * pattern = string_dequote(&newaddress);
 
   /* If no new address found, just skip this item. */
 
-  while (isspace(*newaddress)) newaddress++;
-  if (*newaddress == 0) continue;
+  if (!Uskip_whitespace(&newaddress)) continue;
 
   /* We now have an item to match as an address in item, and the additional
   address in newaddress. If the pattern matches, expand the new address string
index ecdbe9f8d5681e0119f7f4fb1f67a9180480b260..4a75d229e8bd5011f8fe1bd0661da1123eba93ae 100644 (file)
@@ -1363,7 +1363,7 @@ for (;;)
       *error = string_sprintf("\"%.*s\" is not permitted", len, s);
       return FF_ERROR;
       }
-    while (*ss && isspace(*ss)) ss++;  /* skip leading whitespace */
+    Uskip_whitespace(&ss);             /* skip leading whitespace */
     if ((len = Ustrlen(ss)) > 0)       /* ignore trailing newlines */
       for (const uschar * t = ss + len - 1; t >= ss && *t == '\n'; t--) len--;
     *error = string_copyn(ss, len);    /* becomes the error */
index 21e17c61e8d4046ef9aef6dfa26202f657484513..565ee068eaec42e5458522c407b464a3e47dafea 100644 (file)
@@ -679,8 +679,7 @@ for (const uschar * ele = raw_record, * tspec, * end, * val; *ele; ele = end)
     DEBUG(D_acl) debug_printf(" %.*s=%s\n", taglen, tspec, val);
     while (taglen > 1 && isspace(tspec[taglen-1]))
       taglen--;                        /* Ignore whitespace before = */
-    while (isspace(*val))
-      val++;                   /* Ignore whitespace after = */
+    Uskip_whitespace(&val);    /* Ignore whitespace after = */
     if (isspace(val[ Ustrlen(val)-1 ]))
       {                                /* Ignore whitespace after value */
       gstring * g = string_cat(NULL, val);
index fbce11163c7d8886c3f56ab46343250a8d774d3a..e2d3bace0c9621e9a38f62c5fcf04ca9aa15e8e4 100644 (file)
@@ -396,7 +396,7 @@ else if (ret >= 8 && memcmp(hdr.v1.line, "PROXY", 5) == 0)
   /* Step through the string looking for the required fields. Ensure
   strict adherence to required formatting, exit for any error. */
   p += 5;
-  if (!isspace(*(p++)))
+  if (!isspace(*p++))
     {
     DEBUG(D_receive) debug_printf("Missing space after PROXY command\n");
     goto proxyfail;
@@ -417,7 +417,7 @@ else if (ret >= 8 && memcmp(hdr.v1.line, "PROXY", 5) == 0)
     }
 
   p += Ustrlen(iptype);
-  if (!isspace(*(p++)))
+  if (!isspace(*p++))
     {
     DEBUG(D_receive) debug_printf("Missing space after TCP4/6 command\n");
     goto proxyfail;
index 5b486d0b69dab40ddb2c8300933e2403ab0565ba..3db3bdd69b687e759b6c2032c665ac4320bb9429 100644 (file)
@@ -1050,7 +1050,7 @@ for (;;)
          (Ustrncmp(ss+8, "_if_exists", 10) == 0 && isspace(ss[18]))))
     {
     uschar *t;
-    int include_if_exists = isspace(ss[8])? 0 : 10;
+    int include_if_exists = isspace(ss[8]) ? 0 : 10;
     config_file_item *save;
     struct stat statbuf;
 
@@ -1644,8 +1644,7 @@ uschar name2[EXIM_DRIVERNAME_MAX];
 /* There may be leading spaces; thereafter, we expect an option name starting
 with a letter. */
 
-while (isspace(*s)) s++;
-if (!isalpha(*s))
+if (!isalpha( Uskip_whitespace(&s) ))
   log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "option setting expected: %s", s);
 
 /* Read the name of the option, and skip any subsequent white space. If
@@ -1660,7 +1659,7 @@ for (int n = 0; n < 2; n++)
     s++;
     }
   name[ptr] = 0;
-  while (isspace(*s)) s++;
+  Uskip_whitespace(&s);
   if (Ustrcmp(name, "hide") != 0) break;
   issecure = opt_secure;
   ptr = 0;
@@ -1720,7 +1719,7 @@ else if (*s && (offset != 0 || *s != '='))
 
 /* Skip white space after = */
 
-if (*s == '=') while (isspace((*(++s))));
+if (*s == '=') while (isspace(*++s));
 
 /* If there is a data block and the opt_public flag is not set, change
 the data block pointer to the private options block. */
@@ -2202,8 +2201,7 @@ switch (type)
        log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN,
          "absolute value of integer \"%s\" is too large (overflow)", s);
 
-      while (isspace(*endptr)) endptr++;
-      if (*endptr)
+      if (Uskip_whitespace(&endptr))
        extra_chars_error(endptr, inttype, US"integer value for ", name);
 
       value = (int)lvalue;
@@ -2251,8 +2249,7 @@ switch (type)
     if (errno == ERANGE) log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN,
       "absolute value of integer \"%s\" is too large (overflow)", s);
 
-    while (isspace(*endptr)) endptr++;
-    if (*endptr != 0)
+    if (Uskip_whitespace(&endptr))
       extra_chars_error(endptr, inttype, US"integer value for ", name);
 
     if (data_block)
@@ -2347,7 +2344,7 @@ switch (type)
       list[count+1] = value;
       if (snext == NULL) break;
       s = snext + 1;
-      while (isspace(*s)) s++;
+      Uskip_whitespace(&s);
       }
 
     if (count > list[0] - 2)
@@ -3570,8 +3567,7 @@ if (host_number_string)
         "failed to expand localhost_number \"%s\": %s",
         host_number_string, expand_string_message);
   n = Ustrtol(s, &end, 0);
-  while (isspace(*end)) end++;
-  if (*end)
+  if (Uskip_whitespace(&end))
     log_write(0, LOG_PANIC_DIE|LOG_CONFIG,
       "localhost_number value is not a number: %s", s);
   if (n > LOCALHOST_MAX)
@@ -4019,10 +4015,9 @@ Returns:    time in seconds or fixed point number * 1000
 */
 
 static int
-retry_arg(const uschar **paddr, int type)
+retry_arg(const uschar ** paddr, int type)
 {
-const uschar *p = *paddr;
-const uschar *pp;
+const uschar * p = *paddr, * pp;
 
 if (*p++ != ',') log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "comma expected");
 
@@ -4030,7 +4025,7 @@ Uskip_whitespace(&p);
 pp = p;
 while (isalnum(*p) || (type == 1 && *p == '.')) p++;
 
-if (*p != 0 && !isspace(*p) && *p != ',' && *p != ';')
+if (*p && !isspace(*p) && *p != ',' && *p != ';')
   log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "comma or semicolon expected");
 
 *paddr = p;
@@ -4433,10 +4428,8 @@ for (const config_line_item * i = config_lines; i; i = i->next)
   r = store_mark();
 
   /* skip over to the first non-space */
-  for (current = string_copy(i->line); *current && isspace(*current); ++current)
-    ;
-
-  if (!*current)
+  current = string_copy(i->line);
+  if (!Uskip_whitespace(&current))
     continue;
 
   /* Collapse runs of spaces. We stop this if we encounter one of the
@@ -4444,11 +4437,10 @@ for (const config_line_item * i = config_lines; i; i = i->next)
 
   for (p = current; *p; p++) if (isspace(*p))
     {
-    uschar *next;
+    uschar * next = p;
     if (*p != ' ') *p = ' ';
 
-    for (next = p; isspace(*next); ++next)
-      ;
+    Uskip_whitespace(&p);
 
     if (next - p > 1)
       memmove(p+1, next, Ustrlen(next)+1);
index a56ff473ecc2296a20ba9b0c09562bee6b7271b3..9dbf45df983e13ce62b19940faef40596bd516ef 100644 (file)
@@ -2251,8 +2251,7 @@ OVERSIZE:
 
     if (isspace(*p)) break;
     while (mac_isgraph(*p) && *p != ':') p++;
-    while (isspace(*p)) p++;
-    if (*p != ':')
+    if (Uskip_whitespace(&p) != ':')
       {
       body_zerocount = had_zero;
       break;
@@ -2453,13 +2452,14 @@ for (header_line * h = header_list->next; h; h = h->next)
        if (!smtp_input)
          {
          int len;
-         uschar *s = Ustrchr(h->text, ':') + 1;
-         while (isspace(*s)) s++;
+         uschar * s = Ustrchr(h->text, ':') + 1;
+
+         Uskip_whitespace(&s);
          len = h->slen - (s - h->text) - 1;
          if (Ustrlen(originator_login) == len &&
              strncmpic(s, originator_login, len) == 0)
            {
-           uschar *name = is_resent? US"Resent-From" : US"From";
+           uschar * name = is_resent ? US"Resent-From" : US"From";
            header_add(htype_from, "%s: %s <%s@%s>\n", name, originator_name,
              originator_login, qualify_domain_sender);
            from_header = header_last;
@@ -2514,15 +2514,13 @@ for (header_line * h = header_list->next; h; h = h->next)
 
       if (filter_test != FTEST_NONE)
        {
-       uschar *start = h->text + 12;
-       uschar *end = start + Ustrlen(start);
-       while (isspace(*start)) start++;
+       uschar * start = h->text + 12;
+       uschar * end = start + Ustrlen(start);
+
+       Uskip_whitespace(&start);
        while (end > start && isspace(end[-1])) end--;
        if (*start == '<' && end[-1] == '>')
-         {
-         start++;
-         end--;
-         }
+         { start++; end--; }
        return_path = string_copyn(start, end - start);
        printf("Return-path taken from \"Return-path:\" header line\n");
        }
@@ -2626,7 +2624,7 @@ if (extract_recip)
         (!contains_resent_headers || strncmpic(h->text, US"resent-", 7) == 0))
       {
       uschar * s = Ustrchr(h->text, ':') + 1;
-      while (isspace(*s)) s++;
+      Uskip_whitespace(&s);
 
       f.parse_allow_group = TRUE;          /* Allow address group syntax */
 
@@ -2706,7 +2704,7 @@ if (extract_recip)
         /* Move on past this address */
 
         s = ss + (*ss ? 1 : 0);
-        while (isspace(*s)) s++;
+        Uskip_whitespace(&s);
         }    /* Next address */
 
       f.parse_allow_group = FALSE;      /* Reset group syntax flags */
index 9ee5a6794a777383461798bafdae7806f1c60a87..ce35c43655dd43fe8ed6f24e4a306d8fade3c12b 100644 (file)
@@ -452,7 +452,7 @@ header_line * newh = NULL;
 rmark function_reset_point = store_mark();
 uschar * s = Ustrchr(h->text, ':') + 1;
 
-while (isspace(*s)) s++;
+Uskip_whitespace(&s);
 
 DEBUG(D_rewrite)       /* The header text includes the trailing newline */
   debug_printf_indent("rewrite_one_header: type=%c:\n  %s", h->type, h->text);
@@ -493,7 +493,7 @@ while (*s)
   recipient = parse_extract_address(s, &errmess, &start, &end, &domain, FALSE);
   *ss1 = terminator;
   s = ss + (*ss ? 1 : 0);
-  while (isspace(*s)) s++;
+  Uskip_whitespace(&s);
 
   /* There isn't much we can do for syntactic disasters at this stage.
   Pro tem (possibly for ever) ignore them.
index 18263f9ab69631588d31043921f01c905f5f555e..1ab25150acece45082d3df6f06564e3a9100c9c6 100644 (file)
@@ -313,8 +313,8 @@ while (mimeword)
   mimeword = decode_mimeword(string, lencheck, &q1, &q2, &endword, &dlen, &dptr);
   if (mimeword)
     {
-    uschar *s = string;
-    while (isspace(*s)) s++;
+    uschar * s = string;
+    Uskip_whitespace(&s);
     if (s == mimeword) string = s;
     }
   }
index 0fdcdf2ed45f47ef768e037bacba578b078f9b3d..afd43d8664e9bf6c4f68dfd464a217fe39cbd441 100644 (file)
@@ -266,12 +266,12 @@ for (router_instance * r = routers; r; r = r->next)
   else if (Ustrncmp(s, "reroute:", 8) == 0)
     {
     s += 8;
-    while (isspace(*s)) s++;
+    Uskip_whitespace(&s);
     if (Ustrncmp(s, "rewrite:", 8) == 0)
       {
       r->self_rewrite = TRUE;
       s += 8;
-      while (isspace(*s)) s++;
+      Uskip_whitespace(&s);
       }
     r->self = s;
     r->self_code = self_reroute;
@@ -693,13 +693,13 @@ while ((check = string_nextinlist(&listptr, &sep, NULL, 0)))
   if (*ss == '+')
     {
     eacces_code = 1;
-    while (isspace((*(++ss))));
+    while (isspace(*++ss));
     }
 
   if (*ss == '!')
     {
     invert = TRUE;
-    while (isspace((*(++ss))));
+    while (isspace(*++ss));
     }
 
   if (*ss != '/')
@@ -1463,7 +1463,7 @@ for (uschar * ele; (ele = string_nextinlist(&varlist, &sep, NULL, 0)); )
     }
   name += 2;
 
-  while (isspace(*assignment)) assignment++;
+  Uskip_whitespace(&assignment);
 
   if (!(val = expand_string(US assignment)))
     if (f.expand_string_forcedfail)
index 45378ce3d820c81d1a5cea1fa1f7bcc832e10e75..ed497336bacfce1b45a709f0ff78965349f8d3d9 100644 (file)
@@ -156,17 +156,17 @@ static BOOL
 parse_route_item(const uschar *s, const uschar **domain, const uschar **hostlist,
   const uschar **options)
 {
-while (*s != 0 && isspace(*s)) s++;
+Uskip_whitespace(&s);
 
 if (domain)
   {
   if (!*s) return FALSE;            /* missing data */
   *domain = string_dequote(&s);
-  while (*s && isspace(*s)) s++;
+  Uskip_whitespace(&s);
   }
 
 *hostlist = string_dequote(&s);
-while (*s && isspace(*s)) s++;
+Uskip_whitespace(&s);
 *options = s;
 return TRUE;
 }
@@ -333,8 +333,9 @@ lookup_type = LK_DEFAULT;
 while (*options)
   {
   unsigned n;
-  const uschar *s = options;
-  while (*options != 0 && !isspace(*options)) options++;
+  const uschar * s = options;
+
+  while (*options && !isspace(*options)) options++;
   n = options-s;
 
   if (Ustrncmp(s, "randomize", n) == 0) randomize = TRUE;
@@ -368,7 +369,7 @@ while (*options)
   if (*options)
     {
     options++;
-    while (*options != 0 && isspace(*options)) options++;
+    while (*options && isspace(*options)) options++;
     }
   }
 
index b1d736f948c1063981b4f64ddc4f97e6b7ca0748..5f0f50cd956d6e2ffbc2af201ffb5cb98e1161ed 100644 (file)
@@ -363,10 +363,10 @@ buffer[len] = 0;
 DEBUG(D_route) debug_printf("command wrote: %s\n", buffer);
 
 rword = buffer;
-while (isspace(*rword)) rword++;
+Uskip_whitespace(&rword);
 rdata = rword;
 while (*rdata && !isspace(*rdata)) rdata++;
-if (*rdata) *rdata++ = 0;
+if (*rdata) *rdata++ = '\0';
 
 /* The word must be a known yield name. If it is "REDIRECT", the rest of the
 line is redirection data, as for a .forward file. It may not contain filter
index f62d6fbf2ebfcb7e837a7b092509f8d1af00449f..79176687dac1638b8b5fcb85ecde970f3fd59807 100644 (file)
@@ -1227,7 +1227,7 @@ for (smtp_cmd_list * p = cmd_list; p < cmd_list + nelem(cmd_list); p++)
     follow the sender address. */
 
     smtp_cmd_argument = smtp_cmd_buffer + p->len;
-    while (isspace(*smtp_cmd_argument)) smtp_cmd_argument++;
+    Uskip_whitespace(&smtp_cmd_argument);
     Ustrcpy(smtp_data_buffer, smtp_cmd_argument);
     smtp_cmd_data = smtp_data_buffer;
 
@@ -3807,8 +3807,8 @@ while (done <= 0)
 
       if (*smtp_cmd_data)
        {
-       *smtp_cmd_data++ = 0;
-       while (isspace(*smtp_cmd_data)) smtp_cmd_data++;
+       *smtp_cmd_data++ = '\0';
+       Uskip_whitespace(&smtp_cmd_data);
        }
 
       /* Search for an authentication mechanism which is configured for use
@@ -3919,10 +3919,10 @@ while (done <= 0)
       if (!f.sender_host_unknown)
        {
        BOOL old_helo_verified = f.helo_verified;
-       uschar *p = smtp_cmd_data;
+       uschar * p = smtp_cmd_data;
 
-       while (*p != 0 && !isspace(*p)) { *p = tolower(*p); p++; }
-       *p = 0;
+       while (*p && !isspace(*p)) { *p = tolower(*p); p++; }
+       *p = '\0';
 
        /* Force a reverse lookup if HELO quoted something in helo_lookup_domains
        because otherwise the log can be confusing. */
index 895b594fce839eae68c169ac0edaed9ce2403387..888a0006e7ae4b227ee2e5148ebfdeadb74c8ae3 100644 (file)
@@ -704,13 +704,13 @@ if (format)
 
   if (outblock->authenticating)
     {
-    uschar *p = big_buffer;
+    uschar * p = big_buffer;
     if (Ustrncmp(big_buffer, "AUTH ", 5) == 0)
       {
       p += 5;
-      while (isspace(*p)) p++;
+      Uskip_whitespace(&p);
       while (!isspace(*p)) p++;
-      while (isspace(*p)) p++;
+      Uskip_whitespace(&p);
       }
     while (*p) *p++ = '*';
     }
index e6a1c6fa4383868e9a85c4a249d2d1ae26c4eb62..64e8c711a402cc0d3c955038737f17054f0efd26 100644 (file)
@@ -5170,8 +5170,7 @@ if (!expand_check(option_spec, US"openssl_options", &exp, &end))
 
 for (uschar * s = exp; *s; /**/)
   {
-  while (isspace(*s)) ++s;
-  if (*s == '\0')
+  if (!Uskip_whitespace(&s))
     break;
   if (*s != '+' && *s != '-')
     {
index 690ec4a92a83756f8be0a6f615f44ec562d6c635..67d48a1cb50884599b25291cb120c43c40d15975 100644 (file)
@@ -235,13 +235,12 @@ that needs to be removed */
 
 s = newlist + Ustrlen(newlist);
 while (s > newlist && (isspace(s[-1]) || s[-1] == ',')) s--;
-*s = 0;
+*s = '\0';
 
 /* Check to see if there any addresses left; if not, return NULL */
 
 s = newlist;
-while (s && isspace(*s)) s++;
-if (*s)
+if (Uskip_whitespace(&s))
   return newlist;
 
 store_reset(reset_point);
@@ -592,7 +591,7 @@ for (h = header_list; h; h = h->next)
 if (h)
   {
   message_id = Ustrchr(h->text, ':') + 1;
-  while (isspace(*message_id)) message_id++;
+  Uskip_whitespace(&message_id);
   fprintf(fp, "In-Reply-To: %s", message_id);
   }
 
index 60a20c8fe87d7500ba418a8e52a700b32df901c2..f8a1427b93b789080570454ebbbb2be7f31d7096 100644 (file)
@@ -562,7 +562,7 @@ if (testflag(addr, af_pfr) && addr->local_part[0] == '|')
   else
     {
     cmd = addr->local_part + 1;
-    while (isspace(*cmd)) cmd++;
+    Uskip_whitespace(&cmd);
     expand_arguments = testflag(addr, af_expand_pipe);
     expand_fail = FAIL;
     }
index 73659235216fea2c8b21678bb2b4e9e89fb5bffe..ed5994241c0530e0763f049afb718abd9666cadf 100644 (file)
@@ -533,7 +533,7 @@ switch(*errno_value)
 
   case ERRNO_SMTPFORMAT:       /* Handle malformed SMTP response */
     s = string_printing(buffer);
-    while (isspace(*s)) s++;
+    Uskip_whitespace(&s);
     *message = *s == 0
       ? string_sprintf("Malformed SMTP reply (an empty line) "
          "in response to %s%s", pl, smtp_command)
@@ -815,8 +815,7 @@ uschar * match;
 if (regex_match(regex_LIMITS, sx->buffer, -1, &match))
   for (const uschar * s = sx->buffer + Ustrlen(match); *s; )
     {
-    while (isspace(*s)) s++;
-    if (*s == '\n') break;
+    if (Uskip_whitespace(&s) == '\n') break;
 
     if (strncmpic(s, US"MAILMAX=", 8) == 0)
       {
@@ -1694,8 +1693,8 @@ if (  sx->esmtp
        {
        DEBUG(D_transport) debug_printf("skipping %s authenticator: %s\n",
          au->name,
-         (au->client)? "client_condition is false" :
-                       "not configured as a client");
+         au->client ? "client_condition is false"
+                   : "not configured as a client");
        continue;
        }
 
@@ -1703,15 +1702,14 @@ if (  sx->esmtp
 
       while (*p)
        {
-       int len = Ustrlen(au->public_name);
-       int rc;
+       int len = Ustrlen(au->public_name), rc;
 
-       while (isspace(*p)) p++;
+       Uskip_whitespace(&p);
 
        if (strncmpic(au->public_name, p, len) != 0 ||
-           (p[len] != 0 && !isspace(p[len])))
+           (p[len] && !isspace(p[len])))
          {
-         while (*p != 0 && !isspace(*p)) p++;
+         while (*p && !isspace(*p)) p++;
          continue;
          }
 
index 78923651c9ebc8fe703e0edd3a2a87aba0c1fac3..4f3bafb04cfd085aca640a76837cee6ff3259a84 100644 (file)
@@ -2612,12 +2612,12 @@ for (int i = 0; i < 3 && !done; i++)
 
     f.parse_allow_group = TRUE;
 
-    while (*s != 0)
+    while (*s)
       {
-      address_item *vaddr;
+      address_item * vaddr;
 
       while (isspace(*s) || *s == ',') s++;
-      if (*s == 0) break;        /* End of header */
+      if (!*s) break;                  /* End of header */
 
       ss = parse_find_address_end(s, FALSE);
 
@@ -2628,7 +2628,7 @@ for (int i = 0; i < 3 && !done; i++)
 
       while (isspace(ss[-1])) ss--;
       terminator = *ss;
-      *ss = 0;
+      *ss = '\0';
 
       HDEBUG(D_verify) debug_printf("verifying %.*s header address %s\n",
         (int)(endname - h->text), h->text, s);
@@ -2873,17 +2873,17 @@ if (sscanf(CS buffer + qlen, "%d , %d%n", &received_sender_port,
   goto END_OFF;
 
 p = buffer + qlen + n;
-while(isspace(*p)) p++;
+Uskip_whitespace(&p);
 if (*p++ != ':') goto END_OFF;
-while(isspace(*p)) p++;
+Uskip_whitespace(&p);
 if (Ustrncmp(p, "USERID", 6) != 0) goto END_OFF;
 p += 6;
-while(isspace(*p)) p++;
+Uskip_whitespace(&p);
 if (*p++ != ':') goto END_OFF;
-while (*p != 0 && *p != ':') p++;
-if (*p++ == 0) goto END_OFF;
-while(isspace(*p)) p++;
-if (*p == 0) goto END_OFF;
+while (*p && *p != ':') p++;
+if (!*p++) goto END_OFF;
+Uskip_whitespace(&p);
+if (!*p) goto END_OFF;
 
 /* The rest of the line is the data we want. We turn it into printing
 characters when we save it, so that it cannot mess up the format of any logging
@@ -3083,7 +3083,7 @@ if (iplookup)
     key = filename;
     while (*key != 0 && !isspace(*key)) key++;
     filename = string_copyn(filename, key - filename);
-    while (isspace(*key)) key++;
+    Uskip_whitespace(&key);
     }
   else if (mac_islookup(search_type, lookup_querystyle))
     {
index 2a8be9b0e7dd04d6ad5b2267682a2da2d7e8cf39..2219cb02732a4e43c65e87444d6444b24b240ecb 100644 (file)
@@ -248,7 +248,7 @@ for (state = XCLIENT_SKIP_SPACES; *s; )
       }
 
     case XCLIENT_SKIP_SPACES:
-      while (*s && isspace (*s)) s++;
+      Uskip_whitespace(&s);
       state = XCLIENT_READ_COMMAND;
       break;