/[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.2 by gray, Fri Mar 14 14:46:46 2003 UTC revision 1.3 by gray, Thu Aug 21 16:22:34 2003 UTC
# Line 53  ismydomain (char *p) Line 53  ismydomain (char *p)
53  static void  static void
54  scan_addrs (char *str, int isbcc)  scan_addrs (char *str, int isbcc)
55  {  {
56    address_t addr;    address_t addr = NULL, exaddr = NULL;
57    size_t i, count;    size_t i, count;
58                    size_t argc;
59    if (address_create (&addr, str))    char **argv;
60      char *buf;
61      int rc;
62    
63      if (!str)
64      return;      return;
65    address_get_count (addr, &count);    argcv_get (str, ",", NULL, &argc, &argv);
66      for (i = 0; i < argc;)
67        {
68          if (i + 1 == argc)
69            {
70              if (mh_alias_get_address (argv[i], &exaddr) == 0)
71                {
72                  free (argv[i]);
73                  memcpy (&argv[i], &argv[i+1],
74                          (argc - i + 1) * sizeof (argv[0]));
75                  argc--;
76                }
77              else
78                i++;
79            }
80          else if (argv[i + 1][0] == ',')
81            {
82              if (mh_alias_get_address (argv[i], &exaddr) == 0)
83                {
84                  free (argv[i]);
85                  free (argv[i+1]);
86                  memcpy (&argv[i], &argv[i+2],
87                          (argc - i) * sizeof (argv[0]));
88                  argc -= 2;
89                }
90              else
91                i += 2;
92            }
93          else
94            {
95              for (; i < argc; i++)
96                if (argv[i][0] == ',')
97                  {
98                    i++;
99                    break;
100                  }
101            }
102        }
103    
104      if (argc)
105        {
106          int status;
107          argcv_string (argc, argv, &buf);
108          if (status = address_create (&addr, buf))
109            mh_error (_("Bad address `%s': %s"), buf, mu_strerror (status));
110          free (buf);
111        }
112    
113      argcv_free (argc, argv);
114      
115      address_union (&addr, exaddr);
116      address_destroy (&exaddr);
117      
118      if (addr == NULL || address_get_count (addr, &count))
119        return;
120        
121    for (i = 1; i <= count; i++)    for (i = 1; i <= count; i++)
122      {      {
123        char *buf, *p;        char *p;
124        int rc;  
125        rc = address_aget_email (addr, i, &buf);        rc = address_aget_email (addr, i, &buf);
126        if (rc)        if (rc)
127          {          {
128            mh_error ("address_aget_email: %s", mu_strerror (rc));            mh_error ("address_aget_email: %s", mu_strerror (rc));
129            continue;            continue;
130          }          }
131    
132        p = strchr (buf, '@');        p = strchr (buf, '@');
133                
134        if (ismydomain (p))        if (ismydomain (p))
135          addrcp (&local_rcp, buf, isbcc);          addrcp (&local_rcp, buf, isbcc);
136        else        else
# Line 146  mh_whom (char *filename, int check) Line 207  mh_whom (char *filename, int check)
207    int rc = 0;    int rc = 0;
208    mh_context_t *ctx;    mh_context_t *ctx;
209    
210      mh_read_aliases ();
211    ctx = mh_context_create (filename, 1);    ctx = mh_context_create (filename, 1);
212    if (mh_context_read (ctx))    if (mh_context_read (ctx))
213      {      {

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

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