]> Pileus Git - ~andy/fetchmail/blobdiff - rcfile_y.y
Add Esperanto-language translation.
[~andy/fetchmail] / rcfile_y.y
index dc103dce6043b2cb41a908cff474b73b116200ef..39bb7a99c217e83adde71af8e09cf1d277df1240 100644 (file)
@@ -9,17 +9,11 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/file.h>
-#if defined(HAVE_SYS_WAIT_H)
 #include <sys/wait.h>
-#endif
 #include <sys/stat.h>
 #include <errno.h>
-#if defined(STDC_HEADERS)
 #include <stdlib.h>
-#endif
-#if defined(HAVE_UNISTD_H)
 #include <unistd.h>
-#endif
 #include <string.h>
 
 #if defined(__CYGWIN__)
@@ -27,7 +21,7 @@
 #endif /* __CYGWIN__ */
 
 #include "fetchmail.h"
-#include "i18n.h"
+#include "gettext.h"
   
 /* parser reads these */
 char *rcfile;                  /* path name of rc file */
@@ -63,10 +57,11 @@ extern char * yytext;
 
 %token DEFAULTS POLL SKIP VIA AKA LOCALDOMAINS PROTOCOL
 %token AUTHENTICATE TIMEOUT KPOP SDPS ENVELOPE QVIRTUAL
+%token PINENTRY_TIMEOUT PWMD_SOCKET PWMD_FILE
 %token USERNAME PASSWORD FOLDER SMTPHOST FETCHDOMAINS MDA BSMTP LMTP
 %token SMTPADDRESS SMTPNAME SPAMRESPONSE PRECONNECT POSTCONNECT LIMIT WARNINGS
 %token INTERFACE MONITOR PLUGIN PLUGOUT
-%token IS HERE THERE TO MAP WILDCARD
+%token IS HERE THERE TO MAP
 %token BATCHLIMIT FETCHLIMIT FETCHSIZELIMIT FASTUIDL EXPUNGE PROPERTIES
 %token SET LOGFILE DAEMON SYSLOG IDFILE PIDFILE INVISIBLE POSTMASTER BOUNCEMAIL
 %token SPAMBOUNCE SOFTBOUNCE SHOWDOTS
@@ -117,6 +112,13 @@ statement  : SET LOGFILE optmap STRING     {run.logfile = prependdir ($4, rcfiledir);
                | SET NO INVISIBLE              {run.invisible = FALSE;}
                | SET SHOWDOTS                  {run.showdots = FLAG_TRUE;}
                | SET NO SHOWDOTS               {run.showdots = FLAG_FALSE;}
+               | SET PINENTRY_TIMEOUT optmap NUMBER {
+#ifdef HAVE_LIBPWMD
+                   run.pinentry_timeout = $4;
+#else
+                   yyerror(GT_("pwmd not enabled"));
+#endif
+                   }
 
 /* 
  * The way the next two productions are written depends on the fact that
@@ -155,14 +157,13 @@ serv_option       : AKA alias_list
                | PROTOCOL PROTO        {current.server.protocol = $2;}
                | PROTOCOL KPOP         {
                                            current.server.protocol = P_POP3;
-
-                                           if (current.server.authenticate == A_PASSWORD)
 #ifdef KERBEROS_V5
+                                           if (current.server.authenticate == A_PASSWORD)
                                                current.server.authenticate = A_KERBEROS_V5;
-#else
-                                               current.server.authenticate = A_KERBEROS_V4;
-#endif /* KERBEROS_V5 */
                                            current.server.service = KPOP_PORT;
+#else
+                                           yyerror(GT_("Kerberos not enabled."));
+#endif
                                        }
                | PRINCIPAL STRING      {current.server.principal = $2;}
                | ESMTPNAME STRING      {current.server.esmtp_name = $2;}
@@ -175,8 +176,8 @@ serv_option : AKA alias_list
                                            yyerror(GT_("SDPS not enabled."));
 #endif /* SDPS_ENABLE */
                                        }
-               | UIDL                  {current.server.uidl = FLAG_TRUE;}
-               | NO UIDL               {current.server.uidl  = FLAG_FALSE;}
+               | UIDL                  {/* EMPTY - removed in 7.0.0 */}
+               | NO UIDL               {/* EMPTY - removed in 7.0.0 */}
                | CHECKALIAS            {current.server.checkalias = FLAG_TRUE;}
                | NO CHECKALIAS         {current.server.checkalias  = FLAG_FALSE;}
                | SERVICE STRING        {
@@ -237,6 +238,9 @@ serv_option : AKA alias_list
                | NO TRACEPOLLS         {current.server.tracepolls = FLAG_FALSE;}
                | BADHEADER ACCEPT      {current.server.badheader = BHACCEPT;}
                | BADHEADER REJECT_     {current.server.badheader = BHREJECT;}
+               | RETRIEVEERROR ABORT   {current.server.retrieveerror = RE_ABORT;}
+               | RETRIEVEERROR CONTINUE {current.server.retrieveerror = RE_CONTINUE;}
+               | RETRIEVEERROR MARKSEEN {current.server.retrieveerror = RE_MARKSEEN;}
                ;
 
 userspecs      : user1opts             {record_current(); user_reset();}
@@ -263,16 +267,16 @@ user1opts : user_option
                | user1opts user_option
                ;
 
-localnames     : WILDCARD              {current.wildcard =  TRUE;}
-               | mapping_list          {current.wildcard =  FALSE;}
-               | mapping_list WILDCARD {current.wildcard =  TRUE;}
-               ;
-
 mapping_list   : mapping               
                | mapping_list mapping
                ;
 
-mapping                : STRING                {save_str_pair(&current.localnames, $1, NULL); free($1);}
+mapping                : STRING                {if (0 == strcmp($1, "*")) {
+                                             current.wildcard = TRUE;
+                                         } else {
+                                           save_str_pair(&current.localnames, $1, NULL);
+                                         }
+                                        free($1);}
                | STRING MAP STRING     {save_str_pair(&current.localnames, $1, $3); free($1); free($3);}
                ;
 
@@ -302,10 +306,10 @@ num_list  : NUMBER
                        }
                ;
 
-user_option    : TO localnames HERE
-               | TO localnames
-               | IS localnames HERE
-               | IS localnames
+user_option    : TO mapping_list HERE
+               | TO mapping_list
+               | IS mapping_list HERE
+               | IS mapping_list
 
                | IS STRING THERE       {current.remotename  = $2;}
                | PASSWORD STRING       {current.password    = $2;}
@@ -372,11 +376,24 @@ user_option       : TO localnames HERE
                | FASTUIDL NUMBER       {current.fastuidl    = NUM_VALUE_IN($2);}
                | BATCHLIMIT NUMBER     {current.batchlimit  = NUM_VALUE_IN($2);}
                | EXPUNGE NUMBER        {current.expunge     = NUM_VALUE_IN($2);}
-               | RETRIEVEERROR ABORT   {current.retrieveerror = REABORT;}
-               | RETRIEVEERROR CONTINUE {current.retrieveerror = RECONTINUE;}
-               | RETRIEVEERROR MARKSEEN {current.retrieveerror = REMARKSEEN;}
 
                | PROPERTIES STRING     {current.properties  = $2;}
+
+               | PWMD_SOCKET STRING    {
+#ifdef HAVE_LIBPWMD
+                   current.pwmd_socket = xstrdup($2);
+#else
+                   yyerror(GT_("pwmd not enabled"));
+#endif
+                                       }
+
+               | PWMD_FILE STRING      {
+#ifdef HAVE_LIBPWMD
+                   current.pwmd_file = xstrdup($2);
+#else
+                   yyerror(GT_("pwmd not enabled"));
+#endif
+                                       }
                ;
 %%
 
@@ -400,7 +417,6 @@ void yyerror (const char *s)
 int prc_filecheck(const char *pathname,
                  const flag securecheck /** shortcuts permission, filetype and uid tests if false */)
 {
-#ifndef __EMX__
     struct stat statbuf;
 
     errno = 0;
@@ -434,7 +450,6 @@ int prc_filecheck(const char *pathname,
        return(PS_IOERR);
     }
 
-#ifndef __BEOS__
 #ifdef __CYGWIN__
     if (cygwin_internal(CW_CHECK_NTSEC, pathname))
 #endif /* __CYGWIN__ */
@@ -444,18 +459,12 @@ int prc_filecheck(const char *pathname,
                pathname);
        return(PS_IOERR);
     }
-#endif /* __BEOS__ */
 
-#ifdef HAVE_GETEUID
     if (statbuf.st_uid != geteuid())
-#else
-    if (statbuf.st_uid != getuid())
-#endif /* HAVE_GETEUID */
     {
        fprintf(stderr, GT_("File %s must be owned by you.\n"), pathname);
        return(PS_IOERR);
     }
-#endif
     return(PS_SUCCESS);
 }
 
@@ -494,7 +503,8 @@ int prc_parse_file (const char *pathname, const flag securecheck)
 
     yyparse();         /* parse entire file */
 
-    fclose(yyin);      /* not checking this should be safe, file mode was r */
+    if (yyin != stdin)
+       fclose(yyin);   /* not checking this should be safe, file mode was r */
 
     if (prc_errflag) 
        return(PS_SYNTAX);