add -q map flag to avoid quote stripping; clean up domain addition
authorEric Allman <eric@ucbvax.Berkeley.EDU>
Fri, 26 May 1995 22:50:03 +0000 (14:50 -0800)
committerEric Allman <eric@ucbvax.Berkeley.EDU>
Fri, 26 May 1995 22:50:03 +0000 (14:50 -0800)
in nis_getcanonname and nisplus_getcanonname

SCCS-vsn: usr.sbin/sendmail/src/parseaddr.c 8.69
SCCS-vsn: usr.sbin/sendmail/src/map.c 8.68

usr/src/usr.sbin/sendmail/src/map.c
usr/src/usr.sbin/sendmail/src/parseaddr.c

index e4bc8e6..e2e01aa 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)map.c      8.67 (Berkeley) %G%";
+static char sccsid[] = "@(#)map.c      8.68 (Berkeley) %G%";
 #endif /* not lint */
 
 #include "sendmail.h"
 #endif /* not lint */
 
 #include "sendmail.h"
@@ -124,6 +124,10 @@ map_parseargs(map, ap)
                        map->map_mflags |= MF_APPEND;
                        break;
 
                        map->map_mflags |= MF_APPEND;
                        break;
 
+                 case 'q':
+                       map->map_mflags |= MF_KEEPQUOTES;
+                       break;
+
                  case 'a':
                        map->map_app = ++p;
                        break;
                  case 'a':
                        map->map_app = ++p;
                        break;
@@ -1254,9 +1258,22 @@ nis_getcanonname(name, hbsize, statp)
                return FALSE;
        }
 
                return FALSE;
        }
 
-       if (hbsize >= strlen(cname))
+       if (strchr(cname, '.') != NULL)
        {
        {
-               strcpy(name, cname);
+               domain = "";
+       }
+       else
+       {
+               domain = macvalue('m', CurEnv);
+               if (domain == NULL)
+                       domain = "";
+       }
+       if (hbsize >= strlen(cname) + strlen(domain) + 1)
+       {
+               if (domain[0] == '\0')
+                       strcpy(name, vp);
+               else
+                       sprintf(name, "%s.%s", vp, domain);
                *statp = EX_OK;
                return TRUE;
        }
                *statp = EX_OK;
                return TRUE;
        }
@@ -1607,9 +1624,16 @@ nisplus_getcanonname(name, hbsize, statp)
                if (tTd(38, 20))
                        printf("nisplus_getcanonname(%s), found %s\n",
                                name, vp);
                if (tTd(38, 20))
                        printf("nisplus_getcanonname(%s), found %s\n",
                                name, vp);
-               domain = macvalue('m', CurEnv);
-               if (domain == NULL)
+               if (strchr(vp, '.') != NULL)
+               {
                        domain = "";
                        domain = "";
+               }
+               else
+               {
+                       domain = macvalue('m', CurEnv);
+                       if (domain == NULL)
+                               domain = "";
+               }
                if (hbsize > vsize + (int) strlen(domain) + 1)
                {
                        if (domain[0] == '\0')
                if (hbsize > vsize + (int) strlen(domain) + 1)
                {
                        if (domain[0] == '\0')
index e0db329..5396fd4 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)parseaddr.c        8.68 (Berkeley) %G%";
+static char sccsid[] = "@(#)parseaddr.c        8.69 (Berkeley) %G%";
 #endif /* not lint */
 
 #include "sendmail.h"
 #endif /* not lint */
 
 #include "sendmail.h"