]> Pileus Git - ~andy/fetchmail/blobdiff - rcfile_y.y
RC file syntax change, folder->mailbox, remote->remotename.
[~andy/fetchmail] / rcfile_y.y
index f3adc0e894be0c2a809bbbef86be328d992de5f9..94b81d8b15a0e632e65b5432310a840d6afa3aa6 100644 (file)
@@ -1,78 +1,43 @@
 %{
-/* Copyright 1993-95 by Carl Harris, Jr.
- * All rights reserved
- *
- * Distribute freely, except: don't remove my name from the source or
- * documentation (don't take credit for my work), mark your changes (don't
- * get me blamed for your possible bugs), don't alter or remove this
- * notice.  May be sold if buildable source is provided to buyer.  No
- * warrantee of any kind, express or implied, is included with this
- * software; use at your own risk, responsibility for damages (if any) to
- * anyone resulting from the use of this software rests entirely with the
- * user.
- *
- * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
- * I'll try to keep a version up to date.  I can be reached as follows:
- * Carl Harris <ceharris@mal.com>
+/* Copyright 1993-95 by Carl Harris, Jr. Copyright 1996 by Eric S. Raymond
+ * All rights reserved.
+ * For license terms, see the file COPYING in this directory.
  */
 
-
 /***********************************************************************
-  module:       poprc_y.y
-  project:      popclient
+  module:       rcfile_y.y
+  project:      fetchmail
   programmer:   Carl Harris, ceharris@mal.com
-  description:  .poprc parser
-
-  $Log: rcfile_y.y,v $
-  Revision 1.1  1996/06/24 18:17:24  esr
-  Initial revision
-
-  Revision 1.4  1995/08/10 00:32:45  ceharris
-  Preparation for 3.0b3 beta release:
-  -    added code for --kill/--keep, --limit, --protocol, --flush
-       options; --pop2 and --pop3 options now obsoleted by --protocol.
-  -    added support for APOP authentication, including --with-APOP
-       argument for configure.
-  -    provisional and broken support for RPOP
-  -    added buffering to SockGets and SockRead functions.
-  -    fixed problem of command-line options not being correctly
-       carried into the merged options record.
-
-  Revision 1.3  1995/08/09 01:33:02  ceharris
-  Version 3.0 beta 2 release.
-  Added
-  -    .poprc functionality
-  -    GNU long options
-  -    multiple servers on the command line.
-  Fixed
-  -    Passwords showing up in ps output.
-
-  Revision 1.2  1995/08/08 01:01:36  ceharris
-  Added GNU-style long options processing.
-  Fixed password in 'ps' output problem.
-  Fixed various RCS tag blunders.
-  Integrated .poprc parser, lexer, etc into Makefile processing.
+               Extensively hacked and fixed by esr.
+  description:  configuration file parser
 
  ***********************************************************************/
 
 #include <config.h>
 #include <stdio.h>
-extern char *prc_pathname;
+extern char *rcfile;
 extern int prc_lineno;
 extern int prc_errflag;
-extern char yytext[];
+extern char *yytext;
+
+int yydebug;   /* in case we didn't generate with -- debug */
 %}
 
 %union {
   int proto;
+  int flag;
   char *sval;
 }
 
-%token KW_SERVER KW_PROTOCOL KW_USERNAME KW_PASSWORD
-%token KW_REMOTEFOLDER KW_LOCALFOLDER KW_EOL
-%token <proto> PROTO_POP2 PROTO_POP3 PROTO_IMAP PROTO_APOP PROTO_RPOP
-%token <sval> PARAM_STRING
-%type <proto> proto;
+%token KW_SERVER KW_PROTOCOL KW_LOCALNAME KW_REMOTENAME KW_PASSWORD
+%token KW_MAILBOX KW_SMTPHOST KW_MDA KW_DEFAULTS
+%token <proto> KW_PROTO
+%token <sval>  PARAM_STRING
+%token <flag>  KW_KEEP KW_FLUSH KW_FETCHALL KW_REWRITE KW_PORT KW_SKIP
+
+/* these are actually used by the lexer */
+%token FLAG_TRUE       2
+%token FLAG_FALSE      1
 
 %%
 
@@ -80,15 +45,16 @@ rcfile:             rcline
        |       rcfile rcline
   ;
 
-rcline:                statement KW_EOL
+rcline:                statement
   ;
 
 statement:
        |       define_server                   {prc_register(); prc_reset();}
   ;
 
-define_server: KW_SERVER PARAM_STRING server_options   {prc_setserver($2);}    
+define_server: KW_SERVER PARAM_STRING server_options   {prc_setserver($2);}
        |       KW_SERVER PARAM_STRING                  {prc_setserver($2);}
+       |       KW_DEFAULTS server_options      {prc_setserver("defaults");}
   ;
 
 server_options:        serv_option_clause
@@ -96,26 +62,26 @@ server_options:     serv_option_clause
   ;
 
 serv_option_clause: 
-               KW_PROTOCOL proto               {prc_setproto($2);}
-       |       KW_USERNAME PARAM_STRING        {prc_setusername($2);}
-       |       KW_PASSWORD PARAM_STRING        {prc_setpassword($2);}
-       |       KW_REMOTEFOLDER PARAM_STRING    {prc_setremote($2);}
-       |       KW_LOCALFOLDER PARAM_STRING     {prc_setlocal($2);}
-  ;
-
-proto:         PROTO_POP2
-       |       PROTO_POP3
-       |       PROTO_IMAP
-       |       PROTO_APOP
-       |       PROTO_RPOP
+               KW_PROTOCOL KW_PROTO         {prc_setproto($2);}
+       |       KW_LOCALNAME PARAM_STRING    {prc_localname($2);}
+       |       KW_REMOTENAME PARAM_STRING   {prc_remotename($2);}
+       |       KW_PASSWORD PARAM_STRING     {prc_setpassword($2);}
+       |       KW_MAILBOX PARAM_STRING      {prc_setmailbox($2);}
+       |       KW_SMTPHOST PARAM_STRING     {prc_setsmtphost($2);}
+       |       KW_MDA PARAM_STRING          {prc_setmda($2);}
+       |       KW_KEEP                      {prc_setkeep($1==FLAG_TRUE);}
+       |       KW_FLUSH                     {prc_setflush($1==FLAG_TRUE);}
+       |       KW_FETCHALL                  {prc_setfetchall($1==FLAG_TRUE);}
+       |       KW_REWRITE                   {prc_setrewrite($1==FLAG_TRUE);}
+       |       KW_SKIP                      {prc_setskip($1==FLAG_TRUE);}
+       |       KW_PORT PARAM_STRING         {prc_setport($2);}
   ;
 
 %%
 
-
 yyerror (s)
 char *s;
 {
-  fprintf(stderr,"%s line %d: %s at %s\n", prc_pathname, prc_lineno, s, yytext);
+  fprintf(stderr,"%s line %d: %s at %s\n", rcfile, prc_lineno, s, yytext);
   prc_errflag++;
 }