X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=rcfile_y.y;h=91de6146178f10fd7c6ea66cc6789fe3b8056cbc;hb=82a9a7dd5fc4b8febfa27ee77e0fec141c56b840;hp=607e6bd31da38cbf41743d21ac10c86304e79c0b;hpb=42e440f3bf4698e3ad273b4eb28bc504656573a1;p=~andy%2Ffetchmail diff --git a/rcfile_y.y b/rcfile_y.y index 607e6bd3..91de6146 100644 --- a/rcfile_y.y +++ b/rcfile_y.y @@ -66,7 +66,7 @@ extern char * yytext; %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 @@ -77,7 +77,7 @@ extern char * yytext; %token NO KEEP FLUSH LIMITFLUSH FETCHALL REWRITE FORCECR STRIPCR PASS8BITS %token DROPSTATUS DROPDELIVERED %token DNS SERVICE PORT UIDL INTERVAL MIMEDECODE IDLE CHECKALIAS -%token SSL SSLKEY SSLCERT SSLPROTO SSLCERTCK SSLCERTPATH SSLCOMMONNAME SSLFINGERPRINT +%token SSL SSLKEY SSLCERT SSLPROTO SSLCERTCK SSLCERTFILE SSLCERTPATH SSLCOMMONNAME SSLFINGERPRINT %token PRINCIPAL ESMTPNAME ESMTPPASSWORD %token TRACEPOLLS @@ -262,16 +262,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(¤t.localnames, $1, NULL); free($1);} +mapping : STRING {if (0 == strcmp($1, "*")) { + current.wildcard = TRUE; + } else { + save_str_pair(¤t.localnames, $1, NULL); + } + free($1);} | STRING MAP STRING {save_str_pair(¤t.localnames, $1, $3); free($1); free($3);} ; @@ -301,10 +301,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;} @@ -344,6 +344,7 @@ user_option : TO localnames HERE | SSLCERT STRING {current.sslcert = prependdir ($2, rcfiledir); free($2);} | SSLPROTO STRING {current.sslproto = $2;} | SSLCERTCK {current.sslcertck = FLAG_TRUE;} + | SSLCERTFILE STRING {current.sslcertfile = prependdir($2, rcfiledir); free($2);} | SSLCERTPATH STRING {current.sslcertpath = prependdir($2, rcfiledir); free($2);} | SSLCOMMONNAME STRING {current.sslcommonname = $2;} | SSLFINGERPRINT STRING {current.sslfingerprint = $2;} @@ -489,7 +490,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);