/[anubis]/anubis/src/rc.c
ViewVC logotype

Diff of /anubis/src/rc.c

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

revision 1.16 by gray, Mon Mar 3 07:41:40 2003 UTC revision 1.17 by gray, Thu Mar 6 18:43:33 2003 UTC
# Line 157  process_rcfile(int method) Line 157  process_rcfile(int method)
157  #define KW_SOCKS_AUTH         11  #define KW_SOCKS_AUTH         11
158  #define KW_READ_ENTIRE_BODY   12  #define KW_READ_ENTIRE_BODY   12
159    
160    char **
161    list_to_argv(struct list *list)
162    {
163            int i, argc;
164            char **argv, *p;
165    
166            argc = list_count(list);
167            argv = xmalloc((argc + 1) * sizeof(argv[0]));
168            for (i = 0, p = list_first(list); p; i++, p = list_next(list))
169                    argv[i] = strdup(p);
170            argv[i] = NULL;
171            return argv;
172    }
173    
174  int  int
175  control_parser(int method, int key, char *arg, void *inv_data, void *func_data,  control_parser(int method, int key, struct list *arglist,
176                 MESSAGE *msg)                 void *inv_data, void *func_data, MESSAGE *msg)
177  {  {
178            char *arg = list_item(arglist, 0);
179            
180          switch (key) {          switch (key) {
181          case KW_BIND:                          case KW_BIND:                
182                  parse_mtahost(arg, session.tunnel, &session.tunnel_port);                  parse_mtahost(arg, session.tunnel, &session.tunnel_port);
# Line 214  control_parser(int method, int key, char Line 230  control_parser(int method, int key, char
230                  parse_mtaport(arg, session.mta, &session.mta_port);                  parse_mtaport(arg, session.mta, &session.mta_port);
231                  break;                  break;
232                                    
233          case KW_LOCAL_MTA: {          case KW_LOCAL_MTA:
                 char *a = 0;  
                 char *p = 0;  
                 char tmp[LINEBUFFER+1];  
   
                 a = strchr(arg, ' '); /* an extra arguments */  
                 if (a) {  
                         *a++ = '\0';  
                         p = strrchr(arg, '/');  
                         if (p)  
                                 p++;  
                         else  
                                 p = arg;  
                         snprintf(tmp, sizeof(tmp), "%s %s", p, a);  
                         p = arg;  
                         a = tmp;  
                 } else { /* no arguments */  
                         p = arg;  
                         a = strrchr(arg, '/');  
                         if (a)  
                                 a++;  
                         else  
                                 a = arg;  
                 }  
234                  xfree(session.execpath);                  xfree(session.execpath);
                 session.execpath = allocbuf(p, MAXPATHLEN);  
                 topt |= T_LOCAL_MTA;  
235                  xfree_pptr(session.execargs);                  xfree_pptr(session.execargs);
236                  session.execargs = gen_execargs(a);                  session.execpath = strdup(arg);
237          }                  session.execargs = list_to_argv(arglist);
238          break;                  topt |= T_LOCAL_MTA;
239                    break;
240                                    
241          case KW_ESMTP_AUTH: {          case KW_ESMTP_AUTH: {
242                  char *p = strchr(arg, ':');                  char *p = strchr(arg, ':');
# Line 358  static struct rc_secdef_child control_se Line 350  static struct rc_secdef_child control_se
350  #define KW_CAFILE              5  #define KW_CAFILE              5
351    
352  int  int
353  tls_parser(int method, int key, char *arg, void *inv_data, void *func_data,  tls_parser(int method, int key, struct list *arglist,
354             MESSAGE *msg)             void *inv_data, void *func_data, MESSAGE *msg)
355  {  {
356            char *arg = list_item(arglist, 0);
357          switch (key) {          switch (key) {
358          case KW_SSL:          case KW_SSL:
359                  setbool(arg, topt, T_SSL);                  setbool(arg, topt, T_SSL);
# Line 440  control_section_init() Line 433  control_section_init()
433  #define KW_EXTERNAL_BODY_PROCESSOR 11  #define KW_EXTERNAL_BODY_PROCESSOR 11
434    
435  int  int
436  rule_parser(int method, int key, char *arg, void *inv_data, void *func_data,  rule_parser(int method, int key, struct list *arglist,
437              MESSAGE *msg)              void *inv_data, void *func_data, MESSAGE *msg)
438  {  {
439            char *arg = list_item(arglist, 0);
440            char **argv;
441            
442          switch (key) {          switch (key) {
443          case KW_SIGNATURE_FILE_APPEND:          case KW_SIGNATURE_FILE_APPEND:
444                  message_append_signature_file(msg, arg);                  message_append_signature_file(msg, arg);
# Line 478  rule_parser(int method, int key, char *a Line 474  rule_parser(int method, int key, char *a
474                  break;                  break;
475                                    
476          case KW_EXTERNAL_BODY_PROCESSOR:          case KW_EXTERNAL_BODY_PROCESSOR:
477                  message_external_proc(msg, arg);                  session.execargs = list_to_argv(arglist);
478                    message_external_proc(msg, argv);
479                    xfree_pptr(argv);
480                  break;                  break;
481                                    
482          default:          default:

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

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