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

Diff of /anubis/src/map.c

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

revision 1.6 by gray, Wed Feb 26 16:52:00 2003 UTC revision 1.7 by gray, Fri Mar 7 15:03:36 2003 UTC
# Line 88  struct rc_kwdef translate_kw[] = { Line 88  struct rc_kwdef translate_kw[] = {
88    
89    
90  int  int
91  translate_parser(int method, int key, char *arg, void *inv_data,  translate_parser(int method, int key, struct list *arglist, void *inv_data,
92                   void *func_data, MESSAGE *msg)                   void *func_data, MESSAGE *msg)
93  {  {
94          struct translate_env *env = inv_data;          struct translate_env *env = func_data;
95          char *p = 0;          char *p = 0;
96          char *ptr1 = 0;          int cu = 0; /* check a user name */
97          char *ptr2 = 0;          char a1[65];
         char a1[65];  
98          char a2[65];          char a2[65];
99          char user[65];          char user[65];
100          char address[65];          char address[65];
         int cu = 0; /* check a user name */  
101          unsigned long inaddr;          unsigned long inaddr;
102          struct sockaddr_in addr;          struct sockaddr_in addr;
103            size_t argc;
104            
105          if (!env || env->stop)          if (!env || env->stop)
106                  return RC_KW_HANDLED;                  return RC_KW_HANDLED;
107                    
108          switch (key) {          switch (key) {
109          case KW_TRANSLATE:          case KW_TRANSLATE:
110                    /* translate [=] [USER@]ADDRESS into [=] USERNAME
111                       argv[0] = [USER@]ADDRESS
112                       argv[1] = "into"
113                       argv[2] = USERNAME */
114    
115                  safe_strcpy(a1, env->extaddr);                  safe_strcpy(a1, env->extaddr);
116                  memset(&addr, 0, sizeof(addr));                  memset(&addr, 0, sizeof(addr));
   
                 for (ptr1 = arg; *ptr1 && isspace(*ptr1); ptr1++)  
                         ;  
                 if (!*ptr1) {  
                         info(VERBOSE, _("Translation map: incorrect syntax."));  
                         break;  
                 }  
117                                    
118                  for (ptr2 = ptr1; *ptr2 && !isspace(*ptr2); ptr2++)                  argc = list_count(arglist);
119                          ;                  if (argc < 3 || argc > 4
120                  if (!*ptr2) {                      || strcmp(list_item(arglist, 1), "into")) {
121                          info(VERBOSE, _("Translation map: incorrect syntax."));                          info(VERBOSE, _("Translation map: incorrect syntax."));
122                          break;                          break;
123                  }                  }
124    
125                  *ptr2++ = 0;                  safe_strcpy(env->translate, list_item(arglist, 0));
126                  for (; *ptr2 && isspace(*ptr2); ptr2++)                  p = list_item(arglist, 2);
127                          ;                  if (p[0] == '=')
128                  if (!*ptr2 || strncmp(ptr2, "into", 4)) {                          p = list_item(arglist, 3);
129                          info(VERBOSE, _("Translation map: incorrect syntax."));                  safe_strcpy(env->into, p);
                         break;  
                 }  
   
                 for (ptr2 += 4; *ptr2 && isspace(*ptr2); ptr2++)  
                         ;  
                   
                 if (*ptr2 != '=') {  
                         info(VERBOSE, _("Translation map: incorrect syntax."));  
                         break;  
                 }  
   
                 for (ptr2++; *ptr2 && isspace(*ptr2); ptr2++)  
                         ;  
   
                 safe_strcpy(env->translate, ptr1);  
                 safe_strcpy(env->into, ptr2);  
130    
131                  if (strchr(env->translate, '@')) {                  if (strchr(env->translate, '@')) {
132                          if (env->extuser == 0)                          if (env->extuser == 0)

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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