]> Pileus Git - ~andy/fetchmail/blobdiff - rcfile_y.y
Merge branch 'legacy_63'
[~andy/fetchmail] / rcfile_y.y
index 74e195cd6c2937fedc49805a704ec0de92cd8308..39bb7a99c217e83adde71af8e09cf1d277df1240 100644 (file)
@@ -57,6 +57,7 @@ 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
@@ -65,6 +66,7 @@ extern char * yytext;
 %token SET LOGFILE DAEMON SYSLOG IDFILE PIDFILE INVISIBLE POSTMASTER BOUNCEMAIL
 %token SPAMBOUNCE SOFTBOUNCE SHOWDOTS
 %token BADHEADER ACCEPT REJECT_
+%token RETRIEVEERROR ABORT CONTINUE MARKSEEN
 %token <proto> PROTO AUTHTYPE
 %token <sval>  STRING
 %token <number> NUMBER
@@ -110,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
@@ -167,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        {
@@ -229,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();}
@@ -366,6 +378,22 @@ user_option        : TO mapping_list HERE
                | EXPUNGE NUMBER        {current.expunge     = NUM_VALUE_IN($2);}
 
                | 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
+                                       }
                ;
 %%
 
@@ -475,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);