/[mailutils]/mailutils/mh/mh_whom.c
ViewVC logotype

Diff of /mailutils/mh/mh_whom.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by gray, Thu Aug 21 16:22:34 2003 UTC revision 1.4 by gray, Fri Aug 22 14:03:35 2003 UTC
# Line 43  addrcp (list_t *list, char *addr, int is Line 43  addrcp (list_t *list, char *addr, int is
43  static int  static int
44  ismydomain (char *p)  ismydomain (char *p)
45  {  {
46    char *domain;    const char *domain;
47    if (!p)    if (!p)
48      return 1;      return 1;
49    mu_get_user_email_domain (&domain);    mu_get_user_email_domain (&domain);
50    return strcasecmp (domain, p + 1) == 0;    return strcasecmp (domain, p + 1) == 0;
51  }  }
52    
53  static void  int
54  scan_addrs (char *str, int isbcc)  mh_alias_expand (char *str, address_t *paddr, int *incl)
55  {  {
   address_t addr = NULL, exaddr = NULL;  
   size_t i, count;  
56    size_t argc;    size_t argc;
57    char **argv;    char **argv;
58      size_t i;
59    char *buf;    char *buf;
60    int rc;    address_t exaddr = NULL;
61      
   if (!str)  
     return;  
62    argcv_get (str, ",", NULL, &argc, &argv);    argcv_get (str, ",", NULL, &argc, &argv);
63    for (i = 0; i < argc;)    for (i = 0; i < argc;)
64      {      {
65        if (i + 1 == argc)        if (i + 1 == argc)
66          {          {
67            if (mh_alias_get_address (argv[i], &exaddr) == 0)            if (mh_alias_get_address (argv[i], &exaddr, incl) == 0)
68              {              {
69                free (argv[i]);                free (argv[i]);
70                memcpy (&argv[i], &argv[i+1],                memcpy (&argv[i], &argv[i+1],
# Line 79  scan_addrs (char *str, int isbcc) Line 76  scan_addrs (char *str, int isbcc)
76          }          }
77        else if (argv[i + 1][0] == ',')        else if (argv[i + 1][0] == ',')
78          {          {
79            if (mh_alias_get_address (argv[i], &exaddr) == 0)            if (mh_alias_get_address (argv[i], &exaddr, incl) == 0)
80              {              {
81                free (argv[i]);                free (argv[i]);
82                free (argv[i+1]);                free (argv[i+1]);
# Line 105  scan_addrs (char *str, int isbcc) Line 102  scan_addrs (char *str, int isbcc)
102      {      {
103        int status;        int status;
104        argcv_string (argc, argv, &buf);        argcv_string (argc, argv, &buf);
105        if (status = address_create (&addr, buf))        if (status = address_create (paddr, buf))
106          mh_error (_("Bad address `%s': %s"), buf, mu_strerror (status));          mh_error (_("Bad address `%s': %s"), buf, mu_strerror (status));
107        free (buf);        free (buf);
108      }      }
109    
110    argcv_free (argc, argv);    argcv_free (argc, argv);
111        
112    address_union (&addr, exaddr);    address_union (paddr, exaddr);
113    address_destroy (&exaddr);    address_destroy (&exaddr);
114        return 0;
115    }
116    
117    
118    static void
119    scan_addrs (char *str, int isbcc)
120    {
121      address_t addr = NULL;
122      size_t i, count;
123      char *buf;
124      int rc;
125    
126      if (!str)
127        return;
128    
129      mh_alias_expand (str, &addr, NULL);
130        
131    if (addr == NULL || address_get_count (addr, &count))    if (addr == NULL || address_get_count (addr, &count))
132      return;      return;
133            
# Line 130  scan_addrs (char *str, int isbcc) Line 143  scan_addrs (char *str, int isbcc)
143          }          }
144    
145        p = strchr (buf, '@');        p = strchr (buf, '@');
146                    
147        if (ismydomain (p))        if (ismydomain (p))
148          addrcp (&local_rcp, buf, isbcc);          addrcp (&local_rcp, buf, isbcc);
149        else        else

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26